




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 目 錄第一部分 設(shè)計(jì)任務(wù)1.1設(shè)計(jì)題目及求要求31.2.1 方案一31.2.4 方案分析3第二部分 設(shè)計(jì)方案2.1 總體設(shè)計(jì)方案說(shuō)明32.2 實(shí)物電路圖4第三部分 電路設(shè)計(jì)與器件選擇3.1 DS18B20工作原理和功能說(shuō)明······························4 3.2 LC
2、D1602工作原理和功能說(shuō)明16第四部分4.1實(shí)驗(yàn)程序28 第五部分5.1課程設(shè)計(jì)總結(jié) (心得體會(huì))34第六部分 6.1參考文獻(xiàn)341.1設(shè)計(jì)題目及求要求用電子元器件和單片機(jī)通過(guò)編寫(xiě)程序做成能實(shí)時(shí)顯示溫度的儀器。1.2.1 方案用通用型1602液晶顯示器和DS18B20溫度傳感器組成溫度顯示儀,并編寫(xiě)程序用51單片機(jī)來(lái)控制和連接1602液晶顯示器和DS18B20溫度傳感器。1.2.2 方案分析1602液晶顯示器能顯示ASCII碼字符,數(shù)字、大小寫(xiě)字母、和各種符號(hào)。而且其體積小、功耗低、顯示操作簡(jiǎn)單,顯示值清晰,正常溫度范圍為-20+60。DS18B20溫度傳感器采用單總線(xiàn)協(xié)議,與單片機(jī)接口僅需
3、用一個(gè)I/O接口無(wú)需任何外部元件,直接將環(huán)境溫度轉(zhuǎn)化成數(shù)字信號(hào),從而大大簡(jiǎn)化了傳感器于微處理機(jī)的接口。DS18B20溫度傳感器支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線(xiàn)上,其測(cè)試范圍在-50+125.C。測(cè)試結(jié)果直接輸出數(shù)字溫度信號(hào),以“一位總線(xiàn)”串行傳送給CPU,同時(shí)可傳送CRC效驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力。電源板極性接反時(shí),芯片不會(huì)因發(fā)熱而燒毀。且它具有微型化、低功耗、高新能、抗干擾能力強(qiáng)、一賠微處理器等優(yōu)點(diǎn)??紤]到1602液晶顯示器和DS18B20溫度傳感器有諸多優(yōu)點(diǎn),顧用二者來(lái)完成實(shí)驗(yàn)。2.1總體設(shè)計(jì)方案說(shuō)明分別用DS18B20溫度傳感器和1602液晶顯示器來(lái)測(cè)試溫度
4、和現(xiàn)實(shí)數(shù)據(jù)。編寫(xiě)程序和利用51單片機(jī)來(lái)控制電路。2.2實(shí)物電路圖3.1DS18B20的工作原理 DS18B20數(shù)字溫度傳感器概述DS18B20數(shù)字溫度傳感器是DALLAS公司生產(chǎn)的1Wire,即單總線(xiàn)器件,具有線(xiàn)路簡(jiǎn)單,體積小的特點(diǎn)。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有線(xiàn)路簡(jiǎn)單,在一根通信線(xiàn),可以?huà)旌芏噙@樣的數(shù)字溫度計(jì),十分方便。DS18B20產(chǎn)品的特點(diǎn)l 只要求一個(gè)端口即可實(shí)現(xiàn)通信。l 在DS18B20中的每個(gè)器件上都有獨(dú)一無(wú)二的序列號(hào)。l 實(shí)際應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)測(cè)溫。l 測(cè)量溫度范圍在55.C到125.C之間。l 數(shù)字溫度計(jì)的分辨率用戶(hù)可以從9位到12位選擇。l 內(nèi)部有溫度上、
5、下限告警設(shè)置。TO92封裝的DS18B20的引腳排列見(jiàn)右圖,其引腳功能描述見(jiàn)表序號(hào)名稱(chēng)引腳功能描述1GND地信號(hào)2DQ數(shù)字輸入輸出引腳,開(kāi)漏單總線(xiàn)接口引腳,當(dāng)使用寄生電源時(shí),可向電源提供電源3VDD可選擇的VDD引腳,當(dāng)工作于寄生電源時(shí),該引腳必須接地表3-2DS18B20詳細(xì)引腳功能描述 DS18B20的內(nèi)部結(jié)構(gòu)DS18B20的內(nèi)部框圖下圖所示,DS18B20 的內(nèi)部有64 位的ROM 單元,和9 字節(jié)的暫存器單元。64位ROM存儲(chǔ)器件獨(dú)一無(wú)二的序列號(hào)。暫存器包含兩字節(jié)(0和1字節(jié))的溫度寄存器,用于存儲(chǔ)溫度傳感器的數(shù)字輸出。暫存器還提供一字節(jié)的上線(xiàn)警報(bào)觸發(fā)(TH)和下線(xiàn)警報(bào)觸發(fā)(TL)寄存
6、器(2和3字節(jié)),和一字節(jié)的配置寄存器(4字節(jié)),使用者可以通過(guò)配置寄存器來(lái)設(shè)置溫度轉(zhuǎn)換的精度。暫存器的5、6和7字節(jié)器件內(nèi)部保留使用。第八字節(jié)含有循環(huán)冗余碼(CRC )。使用寄生電源時(shí),DS18B20不需額外的供電電源;當(dāng)總線(xiàn)為高電平時(shí),功率由單總線(xiàn)上的上拉電阻通過(guò)DQ引腳提供;高電平總線(xiàn)信號(hào)同時(shí)也向內(nèi)部電容CPP充電,CPP在總線(xiàn)低電平時(shí)為器件供電。(字節(jié)58 就不用看了)。 圖為 暫存器 暫存器介紹A. 溫度寄存器(0和1字節(jié))DS18B20中的溫度傳感器可完成對(duì)溫度的測(cè)量,以12位轉(zhuǎn)化為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625/LSB形式表達(dá),其中S為符號(hào)位。這是1
7、2位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于0,這5位為0,只要將測(cè)到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。DS18B20 的溫度操作是使用16 位,也就是說(shuō)分辨率是0.0625。BIT15BIT11 是符號(hào)位,為了就是表示轉(zhuǎn)換的值是正數(shù)還是負(fù)數(shù)。要求出正數(shù)的十進(jìn)制值,必須將讀取到的LSB 字節(jié),MSB 字節(jié)進(jìn)行整合處理,然后乘以0.0625 即可。Eg:假設(shè)從,字節(jié)0 讀取到0xD0 賦值于Temp1,而字節(jié)1 讀取到0x07 賦值于T
8、emp2,然后求出十進(jìn)制值。unsigned int Temp1,Temp2,Temperature;Temp1=0xD0; /低八位Temp2=0x07; /高八位Temperature = (Temp2<<8 ) | Temp1 ) * 0.0625;/又或者Temperature = (Temp1 + Temp2 *256) * 0.0625; /Temperature=125在這里我們遇見(jiàn)了一個(gè)問(wèn)題,就是如何求出負(fù)數(shù)的值呢?我們必須判斷BIT1115 是否是1,然后人為置一負(fù)數(shù)標(biāo)志。Eg. 假設(shè)從,字節(jié)0 讀取到0x90 賦值于Temp1,而字節(jié)1 讀取到0xFC 賦值于T
9、emp2,然后求出該值是不是負(fù)數(shù),和轉(zhuǎn)換成十進(jìn)制值。 unsigned int Temp1,Temp2,Temperature;unsigned char Minus_Flag=0;Temp1=0x90; /低八位Temp2=0xFC; /高八位 /Temperature = (Temp1 + Temp2 *256) * 0.0625; /Temperature=64656/很明顯不是我們想要的答案if(Temp2&0xFC) /判斷符號(hào)位是否為1Minus_Flag=1; /負(fù)數(shù)標(biāo)志置一Temperature = (Temp2<<8 ) | Temp1 ) /高八位第八位
10、進(jìn)行整合Temperature= (Temperature)+1); /求反,補(bǔ)一Temperature*= 0.0625; /求出十進(jìn)制 /Temperature=55;elseMinus_Flag=0;Temperature = (Temp2<<8 ) | Temp1 ) * 0.0625;如果我要求出小數(shù)點(diǎn)的值的話(huà),那么我應(yīng)該這樣做。Eg:假設(shè)從,字節(jié)0 讀取到0xA2 賦值于Temp1,而字節(jié)1 讀取到0x00 賦值于Temp2,然后求出十進(jìn)制值,要求連同小數(shù)點(diǎn)也求出。unsigned int Temp1,Temp2,Temperature;Temp1=0x90; /低八位
11、Temp2=0xFC; /高八位/實(shí)際值為10.125/Temperature = (Temp2<<8 ) | Temp1 ) * 0.0625; /10,無(wú)小數(shù)點(diǎn)Temperature = (Temp2<<8 ) | Temp1 ) * (0.0625 * 10) ; /101 ,一位小數(shù)點(diǎn)/Temperature = (Temp2<<8 ) | Temp1 ) * (0.0625 * 100) ; /1012,二位小數(shù)點(diǎn) 如以上的例題,我們可以先將0.0625 乘以10,然后再乘以整合后的Temperature 變量,就可以求出后面一個(gè)小數(shù)點(diǎn)的值(求出更
12、多的小數(shù)點(diǎn),方法都是以此類(lèi)推)。得出的結(jié)果是101,然后再利用簡(jiǎn)單的算法,求出每一位的值。unsinged char Ten,One,Dot1Ten=Temperature/100; /1One=Temperature%100/10; /0Dot1=%10; /1求出負(fù)數(shù)的思路也一樣,只不過(guò)多出人為置一負(fù)數(shù)標(biāo)志,求反補(bǔ)一的動(dòng)作而已。自己發(fā)揮想象力吧。 B .字節(jié)23:TH 和TL配置TH 與TL 就是所謂的溫度最高界限,和溫度最低界限的配置??梢允褂密浖?lái)試驗(yàn)。 C 字節(jié)4:配置寄存器BIT7 出廠的時(shí)候就已經(jīng)設(shè)置為0,用戶(hù)不建議去更改。而R1 與R0 位組合了四個(gè)不同的轉(zhuǎn)換精度,00 為9
13、位轉(zhuǎn)換精度而轉(zhuǎn)換時(shí)間是93.75ms,01 為10 位轉(zhuǎn)換精度而轉(zhuǎn)換時(shí)間是187.5ms,10 為11 位轉(zhuǎn)換精度而轉(zhuǎn)換時(shí)間是375ms,11 為12 位轉(zhuǎn)換精度而轉(zhuǎn)換時(shí)間是750ms(默認(rèn))。該寄存器還是留默認(rèn)的好,畢竟轉(zhuǎn)換精度表示了轉(zhuǎn)換的質(zhì)量。低五位一直都是"1",TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶(hù)不要去改動(dòng)。R1和R0用來(lái)設(shè)置分辨率,如下表所示:(DS18B20出廠時(shí)被設(shè)置為12位)表3-6R1與R0確定傳感器分辨率設(shè)置表R1R0傳感器精度/bit轉(zhuǎn)換時(shí)間/ms00993.750110187.5
14、10113751112750D.字節(jié)57,保留位,8:CRC 光刻ROM介紹 光刻ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開(kāi)始8位(28H)是產(chǎn)品類(lèi)型標(biāo)號(hào),接著的48位是該DS18B20自身的序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線(xiàn)上掛接多個(gè)DS18B20的目的。DS18B20溫度傳感器的存儲(chǔ)器介紹DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫
15、度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。2 DS18B20的工作過(guò)程DS18B20 一般都是充當(dāng)從機(jī)的角色,而單片機(jī)就是主機(jī)。單片機(jī)通過(guò)一線(xiàn)總線(xiàn)訪(fǎng)問(wèn)DS18B20的話(huà),需要經(jīng)過(guò)以下幾個(gè)步驟: DS18B20 復(fù)位(初始化),DS18B20 復(fù)位。在某種意義上就是一次訪(fǎng)問(wèn)DS18B20 的開(kāi)始,或者可說(shuō)成是開(kāi)始信號(hào)。執(zhí)行ROM 指令(ROM命令跟隨著需要交換的數(shù)據(jù));ROM 指令,也就是訪(fǎng)問(wèn),搜索,匹配,DS18B20 個(gè)別的64 位序列號(hào)的動(dòng)作。在單點(diǎn)情況下,可以直接跳過(guò)ROM 指令。(而跳過(guò)ROM 指令的字節(jié)是0xCC,后面介紹)執(zhí)行DS18B20 功能指令(RAM 指令),功能命令跟隨著需要交換的
16、數(shù)據(jù)。DS18B20 復(fù)位(初始化)在初始化過(guò)程中,主機(jī)通過(guò)拉低單總線(xiàn)至少480µs,以產(chǎn)生復(fù)位脈沖(TX)。然后主機(jī)釋放總線(xiàn)并進(jìn)入接收(RX)模式。當(dāng)總線(xiàn)被釋放后,5k的上拉電阻將單總線(xiàn)拉高。DS18B20檢測(cè)到這個(gè)上升沿后,延時(shí)15µs60µs,通過(guò)拉低總線(xiàn)60µs240µs產(chǎn)生應(yīng)答脈沖。DS18B20 功能指令有很多種,數(shù)據(jù)手冊(cè)里有更詳細(xì)的介紹。這里僅列出比較常用的幾個(gè)DS18B20 功能指令。0x44:開(kāi)始轉(zhuǎn)換溫度。轉(zhuǎn)換好的溫度會(huì)儲(chǔ)存到暫存器字節(jié)0 和1。0xEE:讀暫存指令。讀暫存指令,會(huì)從暫存器0 到9,一個(gè)一個(gè)字節(jié)讀取,如果要停止
17、的話(huà),必須寫(xiě)下DS18B20 復(fù)位。訪(fǎng)問(wèn)DS18B20必須嚴(yán)格遵守這一命令序列,如果丟失任何一步或序列混亂,DS18B20都不會(huì)響應(yīng)主機(jī)(除了Search ROM 和Alarm Search這兩個(gè)命令,在這兩個(gè)命令后,主機(jī)都必須返回到第一步)。一般上我們都是使用單點(diǎn),也就是說(shuō)單線(xiàn)總線(xiàn)上僅有一個(gè)DS18B20 存在而已。所以我們無(wú)需刻意讀取ROM 里邊的序列號(hào)來(lái),然后匹配那個(gè)DS18B20?而是更直接的,跳過(guò)ROM 指令,然后直接執(zhí)行DS18B20 功能指令。ROM命令:ROM命令通過(guò)每個(gè)器件64-bit的ROM碼,使主機(jī)指定某一特定器件(如果有多個(gè)器件掛在總線(xiàn)上)與之進(jìn)行通信。DS18B20的
18、ROM如表3-4所示,每個(gè)ROM命令都是8 bit長(zhǎng)。功能命令:主機(jī)通過(guò)功能命令對(duì)DS18B20進(jìn)行讀/寫(xiě)Scratchpad存儲(chǔ)器,或者啟動(dòng)溫度轉(zhuǎn)換。DS18B20的功能命令如表3-7所示。指令協(xié)議功能讀ROM33H讀DS18B20中的編碼(即64位地址)符合ROM55H發(fā)出此命令后,接著發(fā)出64位ROM編碼,訪(fǎng)問(wèn)單總線(xiàn)上與該編碼相對(duì)應(yīng)的DS18B20,使之作出響應(yīng),為下一步對(duì)該DS18B20的讀寫(xiě)作準(zhǔn)備搜索ROM0F0H用于確定掛接在同一總線(xiàn)上DS18B20的個(gè)數(shù)和識(shí)別64位ROM地址,為操作各器件作好準(zhǔn)備跳過(guò)ROM0CCH忽略64位ROM地址,直接向DS18B20V 溫度轉(zhuǎn)換命令,適用于
19、單個(gè)DS18B20工作報(bào)警搜索命令0ECH執(zhí)行后,只有溫度超過(guò)廟宇值上限或下限的片子才做出響應(yīng)溫度轉(zhuǎn)換44H啟動(dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換,轉(zhuǎn)換時(shí)間最長(zhǎng)為500ms(典型為200ms),結(jié)果豐入內(nèi)部9字節(jié)RAM中讀暫存器BEH讀內(nèi)部RAM中9字節(jié)的內(nèi)容寫(xiě)暫存器4EH發(fā)出向內(nèi)部RAM的第3、4字節(jié)寫(xiě)上、下溫度數(shù)據(jù)命令,緊該溫度命令之后,傳達(dá)兩字節(jié)的數(shù)據(jù)復(fù)制暫存器48H將RAM中第3、4字內(nèi)容復(fù)制到E2PROM中重調(diào)E2PROM0B8H將E2PROM中內(nèi)容恢復(fù)到RAM中的第3、4字節(jié)讀供電方式0B4H讀DS18B20的供電模式,寄生供電時(shí)DS18B20發(fā)送“0”,外部供電時(shí)DS18B20發(fā)送“1”
20、表3-7DS18B20的信號(hào)方式DS18B20采用嚴(yán)格的單總線(xiàn)通信協(xié)議,以保證數(shù)據(jù)的完整性。該協(xié)議定義了幾種信號(hào)類(lèi)型:復(fù)位脈沖、應(yīng)答脈沖、寫(xiě)和讀。除了應(yīng)答脈沖所有這些信號(hào)都由主機(jī)發(fā)出同步信號(hào)。總線(xiàn)上傳輸?shù)乃袛?shù)據(jù)和命令都是以字節(jié)的低位在前。a.初始化序列:復(fù)位脈沖和應(yīng)答脈沖初始化波形如圖3-8所示。DS18B20 的復(fù)位時(shí)序如下:1.單片機(jī)拉低總線(xiàn)480us950us, 然后釋放總線(xiàn)(拉高電平)。這時(shí)DS18B20 會(huì)拉低信號(hào),大約60240us 表示應(yīng)答。2.DS18B20 拉低電平的60240us 之間,單片機(jī)讀取總線(xiàn)的電平,如果是低電平,那么表示復(fù)位成功,DS18B20 拉低電平6024
21、0us 之后,會(huì)釋放總線(xiàn)。C程序舉例/DS1820 C51 子程序/這里以11.0592M晶體為例,不同的晶體速度可能需要調(diào)整延時(shí)的時(shí)間/sbit DQ =P21;/根據(jù)實(shí)際情況定義端口 void dsreset()/18B20復(fù)位,初始化函數(shù) uint i; ds=0; i=103; while(i>0)i-; ds=1; i=4; while(i>0)i-; DS18B20所有的數(shù)據(jù)交換都由一個(gè)初始化序列開(kāi)始。由主機(jī)發(fā)出的復(fù)位脈沖和跟在其后的由DS18B20發(fā)出的應(yīng)答脈沖構(gòu)成。當(dāng)DS18B20發(fā)出響應(yīng)主機(jī)的應(yīng)答脈沖時(shí),即向主機(jī)表明它已處在總線(xiàn)上并且準(zhǔn)備工作。b.讀和寫(xiě)時(shí)序 在寫(xiě)
22、時(shí)序期間,主機(jī)向DS18B20寫(xiě)入指令;而在讀時(shí)序期間,主機(jī)讀入來(lái)自DS18B20的指令。在每一個(gè)時(shí)序,總線(xiàn)只能傳輸一位數(shù)據(jù)。讀/寫(xiě)時(shí)序如圖3-9所示。l 寫(xiě)時(shí)序存在兩種寫(xiě)時(shí)序:“寫(xiě)1”和“寫(xiě)0”。主機(jī)在寫(xiě)1時(shí)序向DS18B20寫(xiě)入邏輯1,而在寫(xiě)0時(shí)序向DS18B20寫(xiě)入邏輯0。所有寫(xiě)時(shí)序至少需要60µs,且在兩次寫(xiě)時(shí)序之間至少需要1µs的恢復(fù)時(shí)間。兩種寫(xiě)時(shí)序均以主機(jī)拉低總線(xiàn)開(kāi)始。在寫(xiě)時(shí)序開(kāi)始后的15µs60µs期間,DS18B20采樣總線(xiàn)的狀態(tài)。如果總線(xiàn)為高電平,則邏輯1被寫(xiě)入DS18B20;如果總線(xiàn)為低電平,則邏輯0被寫(xiě)入DS18B20。l 寫(xiě)時(shí)序
23、DS18B20 寫(xiě)步驟如下:1.單片機(jī)拉低電平大約1015us,。2.單片機(jī)持續(xù)送指定電平大約2045us 的時(shí)間。3.釋放總線(xiàn) 如果要讀或者寫(xiě)一個(gè)字節(jié),就要重復(fù)以上的步驟八次。使用for 循環(huán),和數(shù)據(jù)變量的左移和或運(yùn)算,實(shí)現(xiàn)一個(gè)字節(jié)讀與寫(xiě)。函數(shù)延遲的時(shí)間,必須模擬非常準(zhǔn)確,因?yàn)閱尉€(xiàn)總線(xiàn)對(duì)時(shí)序的要求敏感點(diǎn)。/向 1-WIRE 總線(xiàn)上寫(xiě)一個(gè)字節(jié)void tempwritebyte(BYTE dat) /向18B20寫(xiě)一個(gè)字節(jié)數(shù)據(jù) uint i; BYTE j; bit testb; for(j=1;j<=8;j+) testb=dat&0x01; dat=dat>>1;
24、 if(testb) /寫(xiě) 1 ds=0; i+;i+; ds=1; i=8;while(i>0)i-; else ds=0; /寫(xiě) 0 i=8;while(i>0)i-; ds=1; i+;i+; l 讀時(shí)序DS18B20 讀步驟如下:1.在讀取的時(shí)候單片機(jī)拉低電平大約1us2.單片機(jī)釋放總線(xiàn),然后讀取總線(xiàn)電平。這時(shí)候DS18B20 會(huì)送出電平。3.讀取電平過(guò)后,延遲大約4045 微妙/從 1-wire 總線(xiàn)上讀取一個(gè)字節(jié)bit tempreadbit(void) /讀1位函數(shù) uint i; bit dat; ds=0;i+; /i+ 起延時(shí)作用 ds=1;i+;i+; dat
25、=ds; i=8;while(i>0)i-; return (dat);BYTE tempread(void) /讀1個(gè)字節(jié) BYTE i,j,dat; dat=0; for(i=1;i<=8;i+) j=tempreadbit(); dat=(j<<7)|(dat>>1); /讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個(gè)字節(jié)在DAT里 return(dat); A . DS18B20 開(kāi)始轉(zhuǎn)換:1.DS18B20 復(fù)位。2.寫(xiě)入跳過(guò)ROM 的字節(jié)命令,0xCC。3.寫(xiě)入開(kāi)始轉(zhuǎn)換的功能命令,0x44。4.延遲大約750900 毫秒B . DS18B20 讀暫存數(shù)據(jù)
26、:1.DS18B20 復(fù)位。2.寫(xiě)入跳過(guò)ROM 的字節(jié)命令,0xCC。3.寫(xiě)入讀暫存的功能命令,0xee。4.讀入第0 個(gè)字節(jié)LS Byte,轉(zhuǎn)換結(jié)果的低八位。5.讀入第1 個(gè)字節(jié)MS Byte,轉(zhuǎn)換結(jié)果的高八位。6.DS18B20 復(fù)位,表示讀取暫存結(jié)束。/讀取溫度void tempchange(void) /DS18B20 開(kāi)始獲取溫度并轉(zhuǎn)換 dsreset(); delay(1); tempwritebyte(0xcc); / 寫(xiě)跳過(guò)讀ROM指令 tempwritebyte(0x44); / 寫(xiě)溫度轉(zhuǎn)換指令uint get_temp() /讀取寄存器中存儲(chǔ)的溫度數(shù)據(jù) BYTE a,b;
27、dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0xbe); a=tempread(); /讀低8位 b=tempread(); /讀高8位 temp=b; temp<<=8; /兩個(gè)字節(jié)組合為1個(gè)字 temp=temp|a; temp = temp *(0.625);/溫度值擴(kuò)大10倍,精確到1位小數(shù) return temp; /temp是整型void ds1820disp(uint temp1)/溫度值顯示disdata0= temp1 /1000+0x30;/百位數(shù) disdata1= temp1 %1000/1
28、00+0x30;/十位數(shù) disdata2= temp1%100/10+0x30;/個(gè)位數(shù)disdata3=0x2e; disdata4= temp1 %10+0x30;/小數(shù)位 簡(jiǎn)單歸納單線(xiàn)總線(xiàn)高電平為閑置狀態(tài)。單片機(jī)訪(fǎng)問(wèn)DS18B20必須遵守,DS18B20 復(fù)位->執(zhí)行ROM 指令->執(zhí)行DS18B20 功能指令。而在單點(diǎn)上,可以直接跳過(guò)ROM 指令。DS18B20 的轉(zhuǎn)換精度默認(rèn)為12 位,而分辨率是0.0625。DS18B20 溫度讀取函數(shù)參考步驟:A . DS18B20 開(kāi)始轉(zhuǎn)換:1.DS18B20 復(fù)位。2.寫(xiě)入跳過(guò)ROM 的字節(jié)命令,0xCC。3.寫(xiě)入開(kāi)始轉(zhuǎn)換的功能
29、命令,0x44。4.延遲大約750900 毫秒B . DS18B20 讀暫存數(shù)據(jù):1.DS18B20 復(fù)位。2.寫(xiě)入跳過(guò)ROM 的字節(jié)命令,0xCC。3.寫(xiě)入讀暫存的功能命令,0xee。4.讀入第0 個(gè)字節(jié)LS Byte,轉(zhuǎn)換結(jié)果的低八位。5.讀入第1 個(gè)字節(jié)MS Byte,轉(zhuǎn)換結(jié)果的高八位。6.DS18B20 復(fù)位,表示讀取暫存結(jié)束。C . 數(shù)據(jù)求出十進(jìn)制:1.整合LS Byte 和MS Byte 的數(shù)據(jù)2.判斷是否為正負(fù)數(shù)(可選)3.求得十進(jìn)制值。正數(shù)乘以0.0625,一位小數(shù)點(diǎn)乘以0.625,二位小數(shù)點(diǎn)乘以6.25。4.十進(jìn)制的“個(gè)位”求出。DS18B20的應(yīng)用電路 DS18B20測(cè)溫系
30、統(tǒng)具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線(xiàn)少等優(yōu)點(diǎn)。下面就是DS18B20幾個(gè)不同應(yīng)用方式下的測(cè)溫電路圖: 1 .DS18B20寄生電源供電方式電路圖 如下圖所示,在寄生電源供電方式下,DS18B20從單線(xiàn)信號(hào)線(xiàn)上汲取能量:在信號(hào)線(xiàn)DQ處于高電平期間把能量?jī)?chǔ)存在內(nèi)部 電容里,在信號(hào)線(xiàn)處于低電平期間消耗電容上的電能工作,直到高電平到來(lái)再給寄生電源(電容)充電。 獨(dú)特的寄生電源方式有三個(gè)好處: 1)進(jìn)行遠(yuǎn)距離測(cè)溫時(shí),無(wú)需本地電源 2)可以在沒(méi)有常規(guī)電源的條件下讀取ROM 3)電路更加簡(jiǎn)潔,僅用一根I/O口實(shí)現(xiàn)測(cè)溫 要想使DS18B20進(jìn)行精確的溫度轉(zhuǎn)換,I/O線(xiàn)必須保證在溫度轉(zhuǎn)換期間提供足
31、夠的能量,由 于每個(gè)DS18B20在溫度轉(zhuǎn)換期間工作電流達(dá)到1mA,當(dāng)幾個(gè)溫度傳感器掛在同一根I/O線(xiàn)上進(jìn)行多點(diǎn)測(cè)溫時(shí),只靠4.7K上拉電阻就無(wú)法提供足夠的 能量,會(huì)造成無(wú)法轉(zhuǎn)換溫度或溫度誤差極大。 因此,此電路只適應(yīng)于單一溫度傳感器測(cè)溫情況下使用,不適宜采用電池供電系統(tǒng)中。并且工作電源VCC必須保證在5V,當(dāng)電源電壓下降時(shí),寄生電源能夠汲取的能量也降低,會(huì)使溫度誤差變大。 2. DS18B20的外部電源供電方式 在外部電源供電方式下,DS18B20工作電源由VDD引腳接入,此時(shí)I/O線(xiàn)不需要強(qiáng)上拉,不存在電源電流不足的問(wèn)題,可以保證 轉(zhuǎn)換精度,同時(shí)在總線(xiàn)上理論可以?huà)旖尤我舛鄠€(gè)DS18B20傳
32、感器,組成多點(diǎn)測(cè)溫系統(tǒng)。注意:在外部供電的方式下,DS18B20的GND引腳不能懸空 ,否則不能轉(zhuǎn)換溫度,讀取的溫度總是85。 外部供電方式單點(diǎn)測(cè)溫電路 外部供電方式的多點(diǎn)測(cè)溫電路圖 圖7外部電源供電方式是DS18B20最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強(qiáng),而且電路也比較簡(jiǎn)單,可以開(kāi)發(fā)出穩(wěn)定可靠的多點(diǎn)溫度 監(jiān)控系統(tǒng)。站長(zhǎng)推薦大家在開(kāi)發(fā)中使用外部電源供電方式,畢竟比寄生電源方式只多接一根VCC引線(xiàn)。在外接電源方式下, 可以充分發(fā)揮DS18B20寬電源電壓范圍的優(yōu)點(diǎn),即使電源電壓VCC降到3V時(shí),依然能夠保證溫度量精度。 DS1820使用中
33、注意事項(xiàng) DS1820雖然具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線(xiàn)少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問(wèn)題: 1、 較小的硬件開(kāi)銷(xiāo)需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此 ,在對(duì)DS1820進(jìn)行讀寫(xiě)編程時(shí),必須嚴(yán)格的保證讀寫(xiě)時(shí)序,否則將無(wú)法讀取測(cè)溫結(jié)果。在使用PL/M、C等高級(jí)語(yǔ)言進(jìn)行系統(tǒng)程序設(shè)計(jì)時(shí),對(duì) DS1820操作部分最好采用匯編語(yǔ)言實(shí)現(xiàn)。 2、 在DS1820的有關(guān)資料中均未提及單總線(xiàn)上所掛DS1820數(shù)量問(wèn)題,容易使人誤認(rèn)為可以?huà)烊我舛鄠€(gè) DS1820,在實(shí)際應(yīng)用中并非如此。當(dāng)單總線(xiàn)上所掛DS1820超過(guò)8個(gè)時(shí),就需要解決微處理器
34、的總線(xiàn)驅(qū)動(dòng)問(wèn)題,這一點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí) 要加以注意。3、 連接DS1820的總線(xiàn)電纜是有長(zhǎng)度限制的。試驗(yàn)中,當(dāng)采用普通信號(hào)電纜傳輸長(zhǎng)度超過(guò)50m時(shí),讀取的 測(cè)溫?cái)?shù)據(jù)將發(fā)生錯(cuò)誤。當(dāng)將總線(xiàn)電纜改為雙絞線(xiàn)帶屏蔽電纜時(shí),正常通訊距離可達(dá)150m,當(dāng)采用每米絞合次數(shù)更多的雙絞線(xiàn)帶屏蔽電纜時(shí),正 常通訊距離進(jìn)一步加長(zhǎng)。這種情況主要是由總線(xiàn)分布電容使信號(hào)波形產(chǎn)生畸變?cè)斐傻?。因此,在用DS1820進(jìn)行長(zhǎng)距離測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要充分考 慮總線(xiàn)分布電容和阻抗匹配問(wèn)題。4、 在DS1820測(cè)溫程序設(shè)計(jì)中,向DS1820發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS1820的返回信號(hào),一旦 某個(gè)DS1820接觸不好或斷線(xiàn),
35、當(dāng)程序讀該DS1820時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行DS1820硬件連接和軟件設(shè)計(jì)時(shí)也要給予 一定的重視。 測(cè)溫電纜線(xiàn)建議采用屏蔽4芯雙絞線(xiàn),其中一對(duì)線(xiàn)接地線(xiàn)與信號(hào)線(xiàn),另一組接VCC和地線(xiàn),屏蔽層在源端單點(diǎn)接地。 3.2LCD1602液晶顯示簡(jiǎn)介液晶顯示原理液晶顯示的原理是利用液晶的物理特性,通過(guò)電壓對(duì)其顯示區(qū)域進(jìn)行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規(guī)模集成電路直現(xiàn)全彩色顯示的特點(diǎn),目前已經(jīng)被廣泛應(yīng)用在便攜式電腦、數(shù)字?jǐn)z像機(jī)、PDA移動(dòng)通信工具等眾多領(lǐng)域。液晶顯示器的分類(lèi)液晶顯示的分類(lèi)方法有很多種,通??砂雌滹@示方式分為段式、字符式、點(diǎn)陣
36、式等。除了黑白顯示外,液晶顯示器還有多灰度有彩色顯示等。如果根據(jù)驅(qū)動(dòng)方式來(lái)分,可以分為靜態(tài)驅(qū)動(dòng)(Static)、單純矩陣驅(qū)動(dòng)(Simple Matrix)和主動(dòng)矩陣驅(qū)動(dòng)(Active Matrix)三種。液晶顯示器各種圖形的顯示原理:線(xiàn)段的顯示點(diǎn)陣圖形式液晶由M×N個(gè)顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對(duì)應(yīng)1字節(jié)的8位,即每行由16字節(jié),共16×8=128個(gè)點(diǎn)組成,屏上64×16個(gè)顯示單元與顯示RAM區(qū)1024字節(jié)相對(duì)應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對(duì)應(yīng)。例如屏的第一行的亮暗由RAM區(qū)的000H00FH的16字節(jié)的內(nèi)容決定,當(dāng)(
37、000H)=FFH時(shí),則屏幕的左上角顯示一條短亮線(xiàn),長(zhǎng)度為8個(gè)點(diǎn);當(dāng)(3FFH)=FFH時(shí),則屏幕的右下角顯示一條短亮線(xiàn);當(dāng)(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H時(shí),則在屏幕的頂部顯示一條由8段亮線(xiàn)和8條暗線(xiàn)組成的虛線(xiàn)。這就是LCD顯示的基本原理。字符的顯示用LCD顯示一個(gè)字符時(shí)比較復(fù)雜,因?yàn)橐粋€(gè)字符由6×8或8×8點(diǎn)陣組成,既要找到和顯示屏幕上某幾個(gè)位置對(duì)應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點(diǎn)亮,為“0”的不亮。這樣一來(lái)就組成某個(gè)字符。但由于內(nèi)帶字符發(fā)生器的
38、控制器來(lái)說(shuō),顯示字符就比較簡(jiǎn)單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開(kāi)始顯示的行列號(hào)及每行的列數(shù)找出顯示RAM對(duì)應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對(duì)應(yīng)的代碼即可。漢字的顯示漢字的顯示一般采用圖形的方式,事先從微機(jī)中提取要顯示的漢字的點(diǎn)陣碼(一般用字模提取軟件),每個(gè)漢字占32B,分左右兩半,各占16B,左邊為1、3、5右邊為2、4、6根據(jù)在LCD上開(kāi)始顯示的行列號(hào)及每行的列數(shù)可找出顯示RAM對(duì)應(yīng)的地址,設(shè)立光標(biāo),送上要顯示的漢字的第一字節(jié),光標(biāo)位置加1,送第二個(gè)字節(jié),換行按列對(duì)齊,送第三個(gè)字節(jié)直到32B顯示完就可以L(fǎng)CD上得到一個(gè)完整漢字。2 1602字符型LCD簡(jiǎn)介字符型液晶顯示模塊
39、是一種專(zhuān)門(mén)用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。下面以長(zhǎng)沙太陽(yáng)人電子有限公司的1602字符型液晶顯示器為例,介紹其用法。一般1602字符型液晶顯示器實(shí)物如圖:圖1602字符型液晶顯示器實(shí)物圖108.2.1 1602LCD的基本參數(shù)及引腳功能1602LCD主要技術(shù)參數(shù):顯示容量:16×2個(gè)字符芯片工作電壓:4.55.5V工作電流:2.0mA(5.0V)模塊最佳工作電壓:5.0V字符尺寸:2.95×4.35(W×H)mm引腳功能說(shuō)明1602LCD采用標(biāo)準(zhǔn)的14腳(無(wú)背光)或16腳(帶背光)接口,各引腳接口說(shuō)明
40、如表10-13所示:編號(hào)符號(hào)引腳說(shuō)明編號(hào)符號(hào)引腳說(shuō)明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫(xiě)選擇13D6數(shù)據(jù)6E使能信號(hào)14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極表10-13:引腳接口說(shuō)明表第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:R/W為
41、讀寫(xiě)信號(hào)線(xiàn),高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線(xiàn)。第15腳:背光源正極。第16腳:背光源負(fù)極。1602LCD的指令說(shuō)明及時(shí)序1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表所示:序號(hào)指令RSR/WD7D6D5D4D3D2D1D01清顯示(01H)00000000012()光標(biāo)返回(02H)000000001*3置輸入模式(04H-07H)00
42、000001I/DS4顯示開(kāi)/關(guān)控制(08H-0FH)0000001DCB5光標(biāo)或字符移位(10H-1FH)000001S/CR/L*6置功能(20H-3FH)00001DLNF*7置字符發(fā)生存貯器地址(40H-7FH)0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址(80H-)001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址10寫(xiě)數(shù)到CGRAM或DDRAM)10要寫(xiě)的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容 控制命令表1602液晶模塊的讀寫(xiě)操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。(說(shuō)明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H
43、位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。指令4:顯示開(kāi)關(guān)控制。 D:控制整體顯示的開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線(xiàn),低電平時(shí)為8位總線(xiàn) N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高
44、電平時(shí)顯示5x10的點(diǎn)陣字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號(hào)和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫(xiě)數(shù)據(jù)。指令11:讀數(shù)據(jù)。與HD44780相兼容的芯片時(shí)序表如下:讀狀態(tài)輸入RS=L,R/W=H,E=H輸出D0D7=狀態(tài)字寫(xiě)指令輸入RS=L,R/W=L,D0D7=指令碼,E=高脈沖輸出無(wú)讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0D7=數(shù)據(jù)寫(xiě)數(shù)據(jù)輸入RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖輸出無(wú) 基本操作時(shí)序表1602LCD的RAM地址映射及標(biāo)準(zhǔn)字庫(kù)表 液晶顯示模塊是一
45、個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,下圖是1602的內(nèi)部顯示地址。1602LCD內(nèi)部顯示地址例如第二行第一個(gè)字符的地址是40H,那么是否直接寫(xiě)入40H就可以將光標(biāo)定位在第二行第一個(gè)字符的位置呢?這樣不行,因?yàn)閷?xiě)入顯示地址時(shí)要求最高位D7恒定為高電平1所以實(shí)際寫(xiě)入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在對(duì)液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時(shí)光標(biāo)是自動(dòng)右移的,無(wú)需人工干預(yù)。每次輸入指令前都要判
46、斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,如下圖所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫(xiě)的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”圖10-58 字符代碼與圖形對(duì)應(yīng)圖1602LCD的一般初始化(復(fù)位)過(guò)程延時(shí)15mS寫(xiě)指令38H(不檢測(cè)忙信號(hào))延時(shí)5mS寫(xiě)指令38H(不檢測(cè)忙信號(hào))延時(shí)5mS寫(xiě)指令38H(不檢測(cè)忙信號(hào))以后每次寫(xiě)指令、讀/寫(xiě)數(shù)據(jù)操作均需要檢測(cè)忙信號(hào)序號(hào)指令
47、RSR/WD7D6D5D4D3D2D1D06置功能00001DLNF*指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線(xiàn),低電平時(shí)為8位總線(xiàn) N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。寫(xiě)指令38H:顯示模式設(shè)置4顯示開(kāi)/關(guān)控制0000001DCB指令4:顯示開(kāi)關(guān)控制。 D:控制整體顯示的開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。寫(xiě)指令08H:顯示關(guān)閉寫(xiě)指令01H:顯示清屏寫(xiě)指令06H:顯示光標(biāo)移動(dòng)設(shè)置寫(xiě)指令0CH:顯示開(kāi)及光
48、標(biāo)設(shè)置 1602LCD的軟硬件設(shè)計(jì)實(shí)例1 硬件原理圖1602液晶顯示模塊可以和單片機(jī)AT89C51直接接口,電路如圖10-60所示。 硬件原理圖2 程序流程圖 軟件流程圖3 軟件代碼#include <reg51.h>#include <intrins.h>sbit ds=P33;/溫度傳感器信號(hào)線(xiàn)typedef unsigned char BYTE;typedef bit BOOL; typedef unsigned int uint;sbit LCD_RS = P20; sbit LCD_RW = P21;sbit LCD_EP = P22;uint temp;BY
49、TE code dis1 = " temperature "BYTE data disdata5;delay(int ms) / 延時(shí)子程序int i;while(ms-) for(i = 0; i< 250; i+) _nop_(); _nop_(); _nop_(); _nop_(); BOOL lcd_bz() / 測(cè)試LCD忙碌狀態(tài)BOOL result;LCD_RS = 0;LCD_RW = 1;LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();result = (BOOL)(P0 & 0x80);LCD_EP =
50、 0;return result; lcd_wcmd(BYTE cmd) / 寫(xiě)入指令數(shù)據(jù)到LCDwhile(lcd_bz();LCD_RS = 0;LCD_RW = 0;LCD_EP = 0;_nop_();_nop_(); P0 = cmd;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0; lcd_pos(BYTE pos) /設(shè)定顯示位置lcd_wcmd(pos | 0x80);lcd_wdat(BYTE dat) /寫(xiě)入字符顯示數(shù)據(jù)到LCDwhile(lcd_bz();LCD_RS = 1;LCD_RW = 0;LCD_EP = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0; lcd_init() /LCD初始化設(shè)定lcd_wcm
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2018春冀少版八年級(jí)生物下冊(cè)第七單元第3章教學(xué)設(shè)計(jì):7.3.1控制人口的過(guò)度增長(zhǎng)
- 520表白的短信祝福語(yǔ)
- 話(huà)務(wù)員年度個(gè)人總結(jié)
- 大學(xué)團(tuán)委團(tuán)支部工作總結(jié)與展望
- 川省個(gè)人短期借款合同
- 2024年計(jì)算機(jī)二級(jí)知識(shí)點(diǎn)回顧試題及答案
- 學(xué)生會(huì)宣傳部部長(zhǎng)競(jìng)選演講稿【9篇】
- 公司投資協(xié)議合同標(biāo)準(zhǔn)文本
- 農(nóng)村方屋出租合同標(biāo)準(zhǔn)文本
- 文化遺產(chǎn)教育教學(xué)計(jì)劃
- 《中國(guó)潰瘍性結(jié)腸炎診治指南(2023年)》解讀
- 融資擔(dān)保公司會(huì)計(jì)培訓(xùn)
- 南京被聯(lián)合國(guó)評(píng)為No.1世界文學(xué)之都課件
- DB22∕JT 147-2015 巖土工程勘察技術(shù)規(guī)程
- 叉車(chē)日常維護(hù)保養(yǎng)檢查記錄表
- 施工總平面布置和臨時(shí)設(shè)施布置技術(shù)標(biāo)
- 曼昆《經(jīng)濟(jì)學(xué)原理》(微觀經(jīng)濟(jì)學(xué)分冊(cè))第8版 全部答案
- Q∕GDW 12070-2020 配電網(wǎng)工程標(biāo)準(zhǔn)化設(shè)計(jì)圖元規(guī)范
- (精心整理)小學(xué)英語(yǔ)特殊疑問(wèn)句練習(xí)(帶答案)
- 旋片泵設(shè)計(jì)說(shuō)明書(shū)
- 小學(xué)一年級(jí)100以?xún)?nèi)加減法口算題(五篇)
評(píng)論
0/150
提交評(píng)論