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

正文內(nèi)容

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

2025-06-24 15:38本頁(yè)面
  

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