freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于avr單片機物聯(lián)網(wǎng)系統(tǒng)設計畢業(yè)設計-資料下載頁

2025-06-24 15:38本頁面
  

【正文】 0:允許 3)RAM地址映射圖內部帶有80X8位(80字節(jié))的RAM緩沖區(qū),映射關系如圖55所示。 圖55 RAM緩沖區(qū) 2指令說明 1)初始化設置 設置顯示模式如表52。表52 顯示模式設置指令碼功能00111000設置16X2顯示,5X7點陣顯示光標及開/關設置如表53。表53 顯示光標及開/關設置指令碼功能00001DCBD=1顯示開; D=0 顯示關C=1光標開; C=0光標關B=1閃爍光標; B=0光標不閃爍000001NSN=1光標加一,地址指針在讀寫1個字符后加1N=0光標減一,地址指針在讀寫1個字符后減1S=1屏幕移動,光標不移,整屏左移(N=1)或右移(N=0)S=0 當寫1個字符時,整屏不移動 2)數(shù)據(jù)控制 通過數(shù)據(jù)地址的指針,可以訪問內部RAM。數(shù)據(jù)地址指針設置如表54。 表54 數(shù)據(jù)地址指針設置指令碼功能80H+地址碼(027H,40H67H)設置數(shù)據(jù)地址指針其它設置如表是55。表55 其它設置指令碼功能01H顯示清屏:02H顯示回車: 液晶寫命令、寫數(shù)據(jù)、初始化程序如下:void write_(uchar ){lcdrs=0。 //選擇寫指令P0=。 //寫入需要的指令delay(5)。 lcden=1。 //打開使能,寫入命令delay(5)。 lcden=0。 //關閉使能}void write_data(uchar date){lcdrs=1。 //選擇寫數(shù)據(jù)P0=date。 //寫入需要寫入的數(shù)據(jù)delay(5)。lcden=1。 //打開使能,寫入數(shù)據(jù)delay(5)。lcden=0。 //關閉使能}void init_lcd(){ rw=0。 //選擇向液晶寫入lcden=0。 //使能關閉write_(0x38)。 //設置16X2顯示,5X7點陣,8位數(shù)據(jù)接口write_(0x0e)。 //開顯示并顯示光標write_(0x06)。 //當讀或寫一個字符后地址指針加一,且光標加一write_(0x01)。 //顯示清屏:write_(0x80)。 //設置數(shù)據(jù)地址指針} DS18B20溫度傳感器驅動程序 DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉換時的延時時間由2s 減為750ms。計數(shù)器1和溫度寄存器被預置在-55℃所對應的一個基數(shù)值。計數(shù)器1對低溫度系數(shù)晶振產生的脈沖信號進行減法計數(shù),當計數(shù)器1的預置值減到0時,溫度寄存器的值將加1,重新轉入計數(shù)器1的預置值,于是,計數(shù)器1對低溫系數(shù)晶振產生的脈沖信號進行重新計數(shù),當計數(shù)器2計到0時,溫度寄存器停止數(shù)值累加,此時所測溫度為寄存器中的數(shù)值。溫度與輸出數(shù)值的關系如表56:表56 DS18B20溫度數(shù)據(jù)表由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,在讀寫數(shù)據(jù)時要遵循一定的時序。并且遵循通信DS18B20的通信協(xié)議,該協(xié)議定義了:讀時序、寫時序、初始化時序。每次都是主機發(fā)送命令進行寫時序和讀時序的,數(shù)據(jù)傳輸時,低位在前,高位在后。DS18B20的復位時序如圖56:圖56 DS18B20復位時序圖DS18B20具有讀1時序和讀0時序。是在從機把單總線拉低之后,15秒之內釋放總線,讓DS18B20把數(shù)據(jù)傳輸?shù)娇偩€上。這一個過程至少需要60us才能完成。時序圖如圖57:圖57 DS18B20讀時序圖 對于DS18B20具有寫1時序和寫0時序。當要寫0時序時,拉低總線60us,保證DS18B20在15us到45us之間能夠準確的采樣“0”電平,寫1時,總線拉低后,在15us之內放開。時序圖如圖58:58 DS18B20寫時序圖根據(jù)DS18B20的通訊協(xié)議要求,單片機控制DS18B20來完成溫度轉換需要經過三個步驟:每一次讀寫之前都要對DS18B20進行復位,復位成功之后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預定操作。ROM指令表和RAM指令表如表511和表512所示。表511 ROM指令表指 令約定代碼功 能讀ROM33H讀DS1820的8位產品系列編碼、唯一的48位序列號及8位CRC符合 ROM 55H此命令后繼以64位的ROM數(shù)據(jù)序列,允許總線主機對多點總線上特定的DS18B20尋址搜索 ROM 0FOH搜索ROM命令允許總線控制器用排除法識別總線上所有從機的64位編碼 跳過 ROM 0CCH允許通過總線主機不提供64位ROM編碼而訪問存儲器操作來節(jié)省時間告警搜索命令 0ECH僅在最近一次溫度測量出現(xiàn)告警的情況下,DS18B20才對此命令做出相應 表512 RAM指令表指 令 約定代碼功 能溫度變換44H啟動DS1820溫度轉換而無需其他數(shù)據(jù)讀暫存器 0BEH 從0開始直到9字節(jié)讀內部RAM寫暫存器 4EH 寫上、下限溫度數(shù)據(jù)命令,之后是傳送兩字節(jié)的數(shù)據(jù)。 復制暫存器 48H 將暫存器的內容拷貝到DS18B20的E2中。 重調EEPROM 0B8H 把存儲在E2中溫度觸發(fā)器的值重新調至暫存存儲器。 讀供電方式 0B4H 對于在此命令發(fā)送至DS18B20之后發(fā)出的第一個讀數(shù)據(jù)時間片,器件都會給出其電源方式的信號:0=寄生電源供電,1=外部電源供電。 DS18B20驅動程序如下:void dsreset(void) //發(fā)送初始化命令 { uint i。 DS=0。 i=103。 while(i0)i。 //復位脈沖,總線拉低480微妙 DS=1。 i=4。 while(i0)i。}bit tmpreadbit(void) //讀位{ uint i。 bit dat。 DS=0。i++。 //單總線拉低15微妙之內釋放總線,讓DS18B20把數(shù)據(jù)傳到單總線上 DS=1。i++。i++。 dat=DS。 i=8。while(i0)i。 return (dat)。}uchar tmpread(void) //讀數(shù)據(jù){ uchar i,j,dat。 dat=0。 for(i=1。i=8。i++) { j=tmpreadbit()。 dat=(j7)|(dat1)。 //讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個字節(jié)在DAT里 } return(dat)。}void tmpwritebyte(uchar dat) //寫數(shù)據(jù)到DS18B20{ uint i。 uchar j。 bit testb。 for(j=1。j=8。j++) { testb=datamp。0x01。 dat=dat1。 if(testb) //寫“1” { DS=0。 i++。i++。 //單總線拉低5微妙 DS=1。 //釋放單總線 i=8。while(i0)i。 } else { DS=0。 //寫“0” i=8。while(i0)i。 //單總線拉低60微妙 DS=1。 //釋放總線 i++。i++。 } }}void tmpchange(void) { dsreset()。 delay(1)。 tmpwritebyte(0xcc)。 //跳過ROM tmpwritebyte(0x44)。 //啟動溫度轉換}uint tmp() { float tt。 //獲取溫度 uchar a,b。 dsreset()。 delay(1)。 tmpwritebyte(0xcc)。 //跳過ROM tmpwritebyte(0xbe)。 //發(fā)出讀溫度命令 a=tmpread()。 b=tmpread()。 temp=b。 temp=8。 temp=temp|a。 tt=temp*。 temp=tt*10+。 return temp。}void display(uint temp) //溫度送液晶顯示器顯示{ uint temp_ge,temp_shi,temp_fen。 int fasong。 fasong=temp/10。 temp_shi=temp/100。 temp_ge=temp%100/10。 temp_fen=temp%100%10?!瓆 單片機與Kingview 單片機與組態(tài)王通信協(xié)議格式:讀寫格式如表513。表513 組態(tài)王讀寫格式字頭設備地址標志數(shù)據(jù)地址數(shù)據(jù)字節(jié)數(shù)數(shù)據(jù)…異或CR說明: 字頭:1個字節(jié)1個ASCII碼,40H; 設備地址:0—255(即00x0ffH); 標志:2個ASCII碼1個字節(jié)表示,bit0~bit7; bit0=0:讀,bit0= 1:寫; bit1=0:不打包; bit3bit2=00,字節(jié); bit3bit2=01,字; bit3bit2=1x,浮點; 數(shù)據(jù)地址:0x0000~0xffff; 數(shù)據(jù)字節(jié)的個數(shù):1—100; 數(shù)據(jù)…:實際數(shù)值轉成ASCII碼,字節(jié)數(shù)乘2為其個數(shù); 異或:從設備地址異或到異或字節(jié)前,其值轉成2個ASCII碼; CR:0x0d; 讀命令如表514所示。表514 讀命令格式字頭設備地址標志數(shù)據(jù)地址數(shù)據(jù)字節(jié)個數(shù)異或CR 應答:若正常,則應答格式如表515。表514 正常情況下下位機應答格式字頭設備地址數(shù)據(jù)字節(jié)數(shù)數(shù)據(jù)…異或CR 若不正常,則應答格式如表516:表516 不正常情況下下位機應答格式字頭設備地址**異或CR 上位機發(fā)送寫命令,格式如表517。表517 上位機發(fā)送寫命令格式字頭設備地址標志數(shù)據(jù)地址數(shù)據(jù)字節(jié)數(shù)數(shù)據(jù)…異或CR 若正常,下位機應答格式如表518。表518 正常情況下下位機應答格式字頭設備地址異或CR 不正常情況下,下位機應答格式如表519。表519 不正常情況下下位機應答格式字頭設備地址**異或CR程序如下:if(RecDat==HEAD) //如果檢測到字頭,則開始接收{ Count1=0。king=1。} else{ if(RecDat==0x0d) //檢測到結束標志,表明接收結束 { RecOk=1。 } else { RecBuf[Count1]=RecDat。 //將接收到的數(shù)據(jù)放入數(shù)組中Count1++。 } } 主程序主程序里主要包含對室內環(huán)境測試的變換,其流程圖如圖55所示:圖55 主程序流程圖主程序如下:void main(void){init_lcd()。 //各部分初始化程序init_hongwai_uart()。mode=1?!瓀hile(1){ …… if(mode==1){ …… //步進電機轉動相應的轉角 }if(mode==2) //溫度顯示{if(changemode==0){write_(0x01)。lcd_write_te
點擊復制文檔內容
法律信息相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1