![基于DS18B20的51單片機LCD1602液晶顯示測溫系統(tǒng)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/8/91f72765-4856-45a2-aa7f-12ee09324384/91f72765-4856-45a2-aa7f-12ee093243841.gif)
![基于DS18B20的51單片機LCD1602液晶顯示測溫系統(tǒng)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/8/91f72765-4856-45a2-aa7f-12ee09324384/91f72765-4856-45a2-aa7f-12ee093243842.gif)
![基于DS18B20的51單片機LCD1602液晶顯示測溫系統(tǒng)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/8/91f72765-4856-45a2-aa7f-12ee09324384/91f72765-4856-45a2-aa7f-12ee093243843.gif)
![基于DS18B20的51單片機LCD1602液晶顯示測溫系統(tǒng)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/8/91f72765-4856-45a2-aa7f-12ee09324384/91f72765-4856-45a2-aa7f-12ee093243844.gif)
![基于DS18B20的51單片機LCD1602液晶顯示測溫系統(tǒng)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/8/91f72765-4856-45a2-aa7f-12ee09324384/91f72765-4856-45a2-aa7f-12ee093243845.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、JINGCHU UNIVERSITY OF TECHNOLOGY 單片機原理及應用課程設計報告 LCD1602液晶顯示18b20溫控實驗專 業(yè) : 電氣工程及其自動化 班 級 : 10電工(3)班 學生姓名 : 李揚 指導教師 : 鄒云峰 提交日期 : 2013-06-21 目 錄第一部分 設計任務1.1設計題目及求要求31.2.1 方案一31.2.4 方案分析3第二部分 設計方案2.1 總體設計方案說明32.2 實物電路圖4第三部分 電路設計與器件選擇3.1 DS18B20工作原理和功能說明········
2、83;·····················4 3.2 LCD1602工作原理和功能說明16第四部分4.1實驗程序28 第五部分5.1課程設計總結 (心得體會)34第六部分 6.1參考文獻341.1設計題目及求要求用電子元器件和單片機通過編寫程序做成能實時顯示溫度的儀器。1.2.1 方案用通用型1602液晶顯示器和DS18B20溫度傳感器組成溫度顯示儀,并編寫程序用51單片機來控制和
3、連接1602液晶顯示器和DS18B20溫度傳感器。1.2.2 方案分析1602液晶顯示器能顯示ASCII碼字符,數字、大小寫字母、和各種符號。而且其體積小、功耗低、顯示操作簡單,顯示值清晰,正常溫度范圍為-20+60。DS18B20溫度傳感器采用單總線協議,與單片機接口僅需用一個I/O接口無需任何外部元件,直接將環(huán)境溫度轉化成數字信號,從而大大簡化了傳感器于微處理機的接口。DS18B20溫度傳感器支持多點組網功能,多個DS18B20可以并聯在唯一的三線上,其測試范圍在-50+125.C。測試結果直接輸出數字溫度信號,以“一位總線”串行傳送給CPU,同時可傳送CRC效驗碼,具有極強的抗干擾糾錯能
4、力。電源板極性接反時,芯片不會因發(fā)熱而燒毀。且它具有微型化、低功耗、高新能、抗干擾能力強、一賠微處理器等優(yōu)點。考慮到1602液晶顯示器和DS18B20溫度傳感器有諸多優(yōu)點,顧用二者來完成實驗。2.1總體設計方案說明分別用DS18B20溫度傳感器和1602液晶顯示器來測試溫度和現實數據。編寫程序和利用51單片機來控制電路。2.2實物電路圖3.1DS18B20的工作原理 DS18B20數字溫度傳感器概述DS18B20數字溫度傳感器是DALLAS公司生產的1Wire,即單總線器件,具有線路簡單,體積小的特點。因此用它來組成一個測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛很多這樣的數字溫度計,十分方便
5、。DS18B20產品的特點l 只要求一個端口即可實現通信。l 在DS18B20中的每個器件上都有獨一無二的序列號。l 實際應用中不需要外部任何元器件即可實現測溫。l 測量溫度范圍在55.C到125.C之間。l 數字溫度計的分辨率用戶可以從9位到12位選擇。l 內部有溫度上、下限告警設置。TO92封裝的DS18B20的引腳排列見右圖,其引腳功能描述見表序號名稱引腳功能描述1GND地信號2DQ數字輸入輸出引腳,開漏單總線接口引腳,當使用寄生電源時,可向電源提供電源3VDD可選擇的VDD引腳,當工作于寄生電源時,該引腳必須接地表3-2DS18B20詳細引腳功能描述 DS18B20的內部結構DS18B
6、20的內部框圖下圖所示,DS18B20 的內部有64 位的ROM 單元,和9 字節(jié)的暫存器單元。64位ROM存儲器件獨一無二的序列號。暫存器包含兩字節(jié)(0和1字節(jié))的溫度寄存器,用于存儲溫度傳感器的數字輸出。暫存器還提供一字節(jié)的上線警報觸發(fā)(TH)和下線警報觸發(fā)(TL)寄存器(2和3字節(jié)),和一字節(jié)的配置寄存器(4字節(jié)),使用者可以通過配置寄存器來設置溫度轉換的精度。暫存器的5、6和7字節(jié)器件內部保留使用。第八字節(jié)含有循環(huán)冗余碼(CRC )。使用寄生電源時,DS18B20不需額外的供電電源;當總線為高電平時,功率由單總線上的上拉電阻通過DQ引腳提供;高電平總線信號同時也向內部電容CPP充電,C
7、PP在總線低電平時為器件供電。(字節(jié)58 就不用看了)。 圖為 暫存器 暫存器介紹A. 溫度寄存器(0和1字節(jié))DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉化為例:用16位符號擴展的二進制補碼讀數形式提供,以0.0625/LSB形式表達,其中S為符號位。這是12位轉化后得到的12位數據,存儲在18B20的兩個8比特的RAM中,二進制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數值需要取反加1再乘于0.0625即可得到實際溫度。DS18B20 的溫度操作是使用16 位,也就是說分辨率是0
8、.0625。BIT15BIT11 是符號位,為了就是表示轉換的值是正數還是負數。要求出正數的十進制值,必須將讀取到的LSB 字節(jié),MSB 字節(jié)進行整合處理,然后乘以0.0625 即可。Eg:假設從,字節(jié)0 讀取到0xD0 賦值于Temp1,而字節(jié)1 讀取到0x07 賦值于Temp2,然后求出十進制值。unsigned int Temp1,Temp2,Temperature;Temp1=0xD0; /低八位Temp2=0x07; /高八位Temperature = (Temp2<<8 ) | Temp1 ) * 0.0625;/又或者Temperature = (Temp1 + Te
9、mp2 *256) * 0.0625; /Temperature=125在這里我們遇見了一個問題,就是如何求出負數的值呢?我們必須判斷BIT1115 是否是1,然后人為置一負數標志。Eg. 假設從,字節(jié)0 讀取到0x90 賦值于Temp1,而字節(jié)1 讀取到0xFC 賦值于Temp2,然后求出該值是不是負數,和轉換成十進制值。 unsigned int Temp1,Temp2,Temperature;unsigned char Minus_Flag=0;Temp1=0x90; /低八位Temp2=0xFC; /高八位 /Temperature = (Temp1 + Temp2 *256) * 0
10、.0625; /Temperature=64656/很明顯不是我們想要的答案if(Temp2&0xFC) /判斷符號位是否為1Minus_Flag=1; /負數標志置一Temperature = (Temp2<<8 ) | Temp1 ) /高八位第八位進行整合Temperature= (Temperature)+1); /求反,補一Temperature*= 0.0625; /求出十進制 /Temperature=55;elseMinus_Flag=0;Temperature = (Temp2<<8 ) | Temp1 ) * 0.0625;如果我要求出小數點
11、的值的話,那么我應該這樣做。Eg:假設從,字節(jié)0 讀取到0xA2 賦值于Temp1,而字節(jié)1 讀取到0x00 賦值于Temp2,然后求出十進制值,要求連同小數點也求出。unsigned int Temp1,Temp2,Temperature;Temp1=0x90; /低八位Temp2=0xFC; /高八位/實際值為10.125/Temperature = (Temp2<<8 ) | Temp1 ) * 0.0625; /10,無小數點Temperature = (Temp2<<8 ) | Temp1 ) * (0.0625 * 10) ; /101 ,一位小數點/Tem
12、perature = (Temp2<<8 ) | Temp1 ) * (0.0625 * 100) ; /1012,二位小數點 如以上的例題,我們可以先將0.0625 乘以10,然后再乘以整合后的Temperature 變量,就可以求出后面一個小數點的值(求出更多的小數點,方法都是以此類推)。得出的結果是101,然后再利用簡單的算法,求出每一位的值。unsinged char Ten,One,Dot1Ten=Temperature/100; /1One=Temperature%100/10; /0Dot1=%10; /1求出負數的思路也一樣,只不過多出人為置一負數標志,求反補一的動
13、作而已。自己發(fā)揮想象力吧。 B .字節(jié)23:TH 和TL配置TH 與TL 就是所謂的溫度最高界限,和溫度最低界限的配置??梢允褂密浖碓囼?。 C 字節(jié)4:配置寄存器BIT7 出廠的時候就已經設置為0,用戶不建議去更改。而R1 與R0 位組合了四個不同的轉換精度,00 為9 位轉換精度而轉換時間是93.75ms,01 為10 位轉換精度而轉換時間是187.5ms,10 為11 位轉換精度而轉換時間是375ms,11 為12 位轉換精度而轉換時間是750ms(默認)。該寄存器還是留默認的好,畢竟轉換精度表示了轉換的質量。低五位一直都是"1",TM是測試模式位,用于設置DS18B
14、20在工作模式還是在測試模式。在DS18B20出廠時該位被設置為0,用戶不要去改動。R1和R0用來設置分辨率,如下表所示:(DS18B20出廠時被設置為12位)表3-6R1與R0確定傳感器分辨率設置表R1R0傳感器精度/bit轉換時間/ms00993.750110187.510113751112750D.字節(jié)57,保留位,8:CRC 光刻ROM介紹 光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼(CRC=X8+X5
15、+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現一根總線上掛接多個DS18B20的目的。DS18B20溫度傳感器的存儲器介紹DS18B20溫度傳感器的內部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結構寄存器。2 DS18B20的工作過程DS18B20 一般都是充當從機的角色,而單片機就是主機。單片機通過一線總線訪問DS18B20的話,需要經過以下幾個步驟: DS18B20 復位(初始化),DS18B20 復位。在某種意義上就是一次訪問DS18B20 的開始,或者可說成是開始信號。執(zhí)行ROM 指令(
16、ROM命令跟隨著需要交換的數據);ROM 指令,也就是訪問,搜索,匹配,DS18B20 個別的64 位序列號的動作。在單點情況下,可以直接跳過ROM 指令。(而跳過ROM 指令的字節(jié)是0xCC,后面介紹)執(zhí)行DS18B20 功能指令(RAM 指令),功能命令跟隨著需要交換的數據。DS18B20 復位(初始化)在初始化過程中,主機通過拉低單總線至少480µs,以產生復位脈沖(TX)。然后主機釋放總線并進入接收(RX)模式。當總線被釋放后,5k的上拉電阻將單總線拉高。DS18B20檢測到這個上升沿后,延時15µs60µs,通過拉低總線60µs240µ
17、;s產生應答脈沖。DS18B20 功能指令有很多種,數據手冊里有更詳細的介紹。這里僅列出比較常用的幾個DS18B20 功能指令。0x44:開始轉換溫度。轉換好的溫度會儲存到暫存器字節(jié)0 和1。0xEE:讀暫存指令。讀暫存指令,會從暫存器0 到9,一個一個字節(jié)讀取,如果要停止的話,必須寫下DS18B20 復位。訪問DS18B20必須嚴格遵守這一命令序列,如果丟失任何一步或序列混亂,DS18B20都不會響應主機(除了Search ROM 和Alarm Search這兩個命令,在這兩個命令后,主機都必須返回到第一步)。一般上我們都是使用單點,也就是說單線總線上僅有一個DS18B20 存在而已。所以我
18、們無需刻意讀取ROM 里邊的序列號來,然后匹配那個DS18B20?而是更直接的,跳過ROM 指令,然后直接執(zhí)行DS18B20 功能指令。ROM命令:ROM命令通過每個器件64-bit的ROM碼,使主機指定某一特定器件(如果有多個器件掛在總線上)與之進行通信。DS18B20的ROM如表3-4所示,每個ROM命令都是8 bit長。功能命令:主機通過功能命令對DS18B20進行讀/寫Scratchpad存儲器,或者啟動溫度轉換。DS18B20的功能命令如表3-7所示。指令協議功能讀ROM33H讀DS18B20中的編碼(即64位地址)符合ROM55H發(fā)出此命令后,接著發(fā)出64位ROM編碼,訪問單總線上
19、與該編碼相對應的DS18B20,使之作出響應,為下一步對該DS18B20的讀寫作準備搜索ROM0F0H用于確定掛接在同一總線上DS18B20的個數和識別64位ROM地址,為操作各器件作好準備跳過ROM0CCH忽略64位ROM地址,直接向DS18B20V 溫度轉換命令,適用于單個DS18B20工作報警搜索命令0ECH執(zhí)行后,只有溫度超過廟宇值上限或下限的片子才做出響應溫度轉換44H啟動DS18B20進行溫度轉換,轉換時間最長為500ms(典型為200ms),結果豐入內部9字節(jié)RAM中讀暫存器BEH讀內部RAM中9字節(jié)的內容寫暫存器4EH發(fā)出向內部RAM的第3、4字節(jié)寫上、下溫度數據命令,緊該溫度
20、命令之后,傳達兩字節(jié)的數據復制暫存器48H將RAM中第3、4字內容復制到E2PROM中重調E2PROM0B8H將E2PROM中內容恢復到RAM中的第3、4字節(jié)讀供電方式0B4H讀DS18B20的供電模式,寄生供電時DS18B20發(fā)送“0”,外部供電時DS18B20發(fā)送“1”表3-7DS18B20的信號方式DS18B20采用嚴格的單總線通信協議,以保證數據的完整性。該協議定義了幾種信號類型:復位脈沖、應答脈沖、寫和讀。除了應答脈沖所有這些信號都由主機發(fā)出同步信號??偩€上傳輸的所有數據和命令都是以字節(jié)的低位在前。a.初始化序列:復位脈沖和應答脈沖初始化波形如圖3-8所示。DS18B20 的復位時序
21、如下:1.單片機拉低總線480us950us, 然后釋放總線(拉高電平)。這時DS18B20 會拉低信號,大約60240us 表示應答。2.DS18B20 拉低電平的60240us 之間,單片機讀取總線的電平,如果是低電平,那么表示復位成功,DS18B20 拉低電平60240us 之后,會釋放總線。C程序舉例/DS1820 C51 子程序/這里以11.0592M晶體為例,不同的晶體速度可能需要調整延時的時間/sbit DQ =P21;/根據實際情況定義端口 void dsreset()/18B20復位,初始化函數 uint i; ds=0; i=103; while(i>0)i-; ds
22、=1; i=4; while(i>0)i-; DS18B20所有的數據交換都由一個初始化序列開始。由主機發(fā)出的復位脈沖和跟在其后的由DS18B20發(fā)出的應答脈沖構成。當DS18B20發(fā)出響應主機的應答脈沖時,即向主機表明它已處在總線上并且準備工作。b.讀和寫時序 在寫時序期間,主機向DS18B20寫入指令;而在讀時序期間,主機讀入來自DS18B20的指令。在每一個時序,總線只能傳輸一位數據。讀/寫時序如圖3-9所示。l 寫時序存在兩種寫時序:“寫1”和“寫0”。主機在寫1時序向DS18B20寫入邏輯1,而在寫0時序向DS18B20寫入邏輯0。所有寫時序至少需要60µs,且在兩次
23、寫時序之間至少需要1µs的恢復時間。兩種寫時序均以主機拉低總線開始。在寫時序開始后的15µs60µs期間,DS18B20采樣總線的狀態(tài)。如果總線為高電平,則邏輯1被寫入DS18B20;如果總線為低電平,則邏輯0被寫入DS18B20。l 寫時序 DS18B20 寫步驟如下:1.單片機拉低電平大約1015us,。2.單片機持續(xù)送指定電平大約2045us 的時間。3.釋放總線 如果要讀或者寫一個字節(jié),就要重復以上的步驟八次。使用for 循環(huán),和數據變量的左移和或運算,實現一個字節(jié)讀與寫。函數延遲的時間,必須模擬非常準確,因為單線總線對時序的要求敏感點。/向 1-WIRE
24、 總線上寫一個字節(jié)void tempwritebyte(BYTE dat) /向18B20寫一個字節(jié)數據 uint i; BYTE j; bit testb; for(j=1;j<=8;j+) testb=dat&0x01; dat=dat>>1; if(testb) /寫 1 ds=0; i+;i+; ds=1; i=8;while(i>0)i-; else ds=0; /寫 0 i=8;while(i>0)i-; ds=1; i+;i+; l 讀時序DS18B20 讀步驟如下:1.在讀取的時候單片機拉低電平大約1us2.單片機釋放總線,然后讀取總線電平
25、。這時候DS18B20 會送出電平。3.讀取電平過后,延遲大約4045 微妙/從 1-wire 總線上讀取一個字節(jié)bit tempreadbit(void) /讀1位函數 uint i; bit dat; ds=0;i+; /i+ 起延時作用 ds=1;i+;i+; dat=ds; i=8;while(i>0)i-; return (dat);BYTE tempread(void) /讀1個字節(jié) BYTE i,j,dat; dat=0; for(i=1;i<=8;i+) j=tempreadbit(); dat=(j<<7)|(dat>>1); /讀出的數據
26、最低位在最前面,這樣剛好一個字節(jié)在DAT里 return(dat); A . DS18B20 開始轉換:1.DS18B20 復位。2.寫入跳過ROM 的字節(jié)命令,0xCC。3.寫入開始轉換的功能命令,0x44。4.延遲大約750900 毫秒B . DS18B20 讀暫存數據:1.DS18B20 復位。2.寫入跳過ROM 的字節(jié)命令,0xCC。3.寫入讀暫存的功能命令,0xee。4.讀入第0 個字節(jié)LS Byte,轉換結果的低八位。5.讀入第1 個字節(jié)MS Byte,轉換結果的高八位。6.DS18B20 復位,表示讀取暫存結束。/讀取溫度void tempchange(void) /DS18B2
27、0 開始獲取溫度并轉換 dsreset(); delay(1); tempwritebyte(0xcc); / 寫跳過讀ROM指令 tempwritebyte(0x44); / 寫溫度轉換指令uint get_temp() /讀取寄存器中存儲的溫度數據 BYTE a,b; dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0xbe); a=tempread(); /讀低8位 b=tempread(); /讀高8位 temp=b; temp<<=8; /兩個字節(jié)組合為1個字 temp=temp|a; temp = temp
28、 *(0.625);/溫度值擴大10倍,精確到1位小數 return temp; /temp是整型void ds1820disp(uint temp1)/溫度值顯示disdata0= temp1 /1000+0x30;/百位數 disdata1= temp1 %1000/100+0x30;/十位數 disdata2= temp1%100/10+0x30;/個位數disdata3=0x2e; disdata4= temp1 %10+0x30;/小數位 簡單歸納單線總線高電平為閑置狀態(tài)。單片機訪問DS18B20必須遵守,DS18B20 復位->執(zhí)行ROM 指令->執(zhí)行DS18B20 功
29、能指令。而在單點上,可以直接跳過ROM 指令。DS18B20 的轉換精度默認為12 位,而分辨率是0.0625。DS18B20 溫度讀取函數參考步驟:A . DS18B20 開始轉換:1.DS18B20 復位。2.寫入跳過ROM 的字節(jié)命令,0xCC。3.寫入開始轉換的功能命令,0x44。4.延遲大約750900 毫秒B . DS18B20 讀暫存數據:1.DS18B20 復位。2.寫入跳過ROM 的字節(jié)命令,0xCC。3.寫入讀暫存的功能命令,0xee。4.讀入第0 個字節(jié)LS Byte,轉換結果的低八位。5.讀入第1 個字節(jié)MS Byte,轉換結果的高八位。6.DS18B20 復位,表示讀
30、取暫存結束。C . 數據求出十進制:1.整合LS Byte 和MS Byte 的數據2.判斷是否為正負數(可選)3.求得十進制值。正數乘以0.0625,一位小數點乘以0.625,二位小數點乘以6.25。4.十進制的“個位”求出。DS18B20的應用電路 DS18B20測溫系統(tǒng)具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點。下面就是DS18B20幾個不同應用方式下的測溫電路圖: 1 .DS18B20寄生電源供電方式電路圖 如下圖所示,在寄生電源供電方式下,DS18B20從單線信號線上汲取能量:在信號線DQ處于高電平期間把能量儲存在內部 電容里,在信號線處于低電平期間消耗電容上的電能工作
31、,直到高電平到來再給寄生電源(電容)充電。 獨特的寄生電源方式有三個好處: 1)進行遠距離測溫時,無需本地電源 2)可以在沒有常規(guī)電源的條件下讀取ROM 3)電路更加簡潔,僅用一根I/O口實現測溫 要想使DS18B20進行精確的溫度轉換,I/O線必須保證在溫度轉換期間提供足夠的能量,由 于每個DS18B20在溫度轉換期間工作電流達到1mA,當幾個溫度傳感器掛在同一根I/O線上進行多點測溫時,只靠4.7K上拉電阻就無法提供足夠的 能量,會造成無法轉換溫度或溫度誤差極大。 因此,此電路只適應于單一溫度傳感器測溫情況下使用,不適宜采用電池供電系統(tǒng)中。并且工作電源VCC必須保證在5V,當電源電壓下降時
32、,寄生電源能夠汲取的能量也降低,會使溫度誤差變大。 2. DS18B20的外部電源供電方式 在外部電源供電方式下,DS18B20工作電源由VDD引腳接入,此時I/O線不需要強上拉,不存在電源電流不足的問題,可以保證 轉換精度,同時在總線上理論可以掛接任意多個DS18B20傳感器,組成多點測溫系統(tǒng)。注意:在外部供電的方式下,DS18B20的GND引腳不能懸空 ,否則不能轉換溫度,讀取的溫度總是85。 外部供電方式單點測溫電路 外部供電方式的多點測溫電路圖 圖7外部電源供電方式是DS18B20最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強,而且電路也
33、比較簡單,可以開發(fā)出穩(wěn)定可靠的多點溫度 監(jiān)控系統(tǒng)。站長推薦大家在開發(fā)中使用外部電源供電方式,畢竟比寄生電源方式只多接一根VCC引線。在外接電源方式下, 可以充分發(fā)揮DS18B20寬電源電壓范圍的優(yōu)點,即使電源電壓VCC降到3V時,依然能夠保證溫度量精度。 DS1820使用中注意事項 DS1820雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點,但在實際應用中也應注意以下幾方面的問題: 1、 較小的硬件開銷需要相對復雜的軟件進行補償,由于DS1820與微處理器間采用串行數據傳送,因此 ,在對DS1820進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結果。在使用PL/M、C
34、等高級語言進行系統(tǒng)程序設計時,對 DS1820操作部分最好采用匯編語言實現。 2、 在DS1820的有關資料中均未提及單總線上所掛DS1820數量問題,容易使人誤認為可以掛任意多個 DS1820,在實際應用中并非如此。當單總線上所掛DS1820超過8個時,就需要解決微處理器的總線驅動問題,這一點在進行多點測溫系統(tǒng)設計時 要加以注意。3、 連接DS1820的總線電纜是有長度限制的。試驗中,當采用普通信號電纜傳輸長度超過50m時,讀取的 測溫數據將發(fā)生錯誤。當將總線電纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達150m,當采用每米絞合次數更多的雙絞線帶屏蔽電纜時,正 常通訊距離進一步加長。這種情況主
35、要是由總線分布電容使信號波形產生畸變造成的。因此,在用DS1820進行長距離測溫系統(tǒng)設計時要充分考 慮總線分布電容和阻抗匹配問題。4、 在DS1820測溫程序設計中,向DS1820發(fā)出溫度轉換命令后,程序總要等待DS1820的返回信號,一旦 某個DS1820接觸不好或斷線,當程序讀該DS1820時,將沒有返回信號,程序進入死循環(huán)。這一點在進行DS1820硬件連接和軟件設計時也要給予 一定的重視。 測溫電纜線建議采用屏蔽4芯雙絞線,其中一對線接地線與信號線,另一組接VCC和地線,屏蔽層在源端單點接地。 3.2LCD1602液晶顯示簡介液晶顯示原理液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯
36、示區(qū)域進行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規(guī)模集成電路直現全彩色顯示的特點,目前已經被廣泛應用在便攜式電腦、數字攝像機、PDA移動通信工具等眾多領域。液晶顯示器的分類液晶顯示的分類方法有很多種,通??砂雌滹@示方式分為段式、字符式、點陣式等。除了黑白顯示外,液晶顯示器還有多灰度有彩色顯示等。如果根據驅動方式來分,可以分為靜態(tài)驅動(Static)、單純矩陣驅動(Simple Matrix)和主動矩陣驅動(Active Matrix)三種。液晶顯示器各種圖形的顯示原理:線段的顯示點陣圖形式液晶由M×N個顯示單元組成,假設LCD顯示屏有64行,每行有1
37、28列,每8列對應1字節(jié)的8位,即每行由16字節(jié),共16×8=128個點組成,屏上64×16個顯示單元與顯示RAM區(qū)1024字節(jié)相對應,每一字節(jié)的內容和顯示屏上相應位置的亮暗對應。例如屏的第一行的亮暗由RAM區(qū)的000H00FH的16字節(jié)的內容決定,當(000H)=FFH時,則屏幕的左上角顯示一條短亮線,長度為8個點;當(3FFH)=FFH時,則屏幕的右下角顯示一條短亮線;當(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H時,則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。字符的顯
38、示用LCD顯示一個字符時比較復雜,因為一個字符由6×8或8×8點陣組成,既要找到和顯示屏幕上某幾個位置對應的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點亮,為“0”的不亮。這樣一來就組成某個字符。但由于內帶字符發(fā)生器的控制器來說,顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據在LCD上開始顯示的行列號及每行的列數找出顯示RAM對應的地址,設立光標,在此送上該字符對應的代碼即可。漢字的顯示漢字的顯示一般采用圖形的方式,事先從微機中提取要顯示的漢字的點陣碼(一般用字模提取軟件),每個漢字占32B,分左右兩半,各占16B,左邊為1、3、
39、5右邊為2、4、6根據在LCD上開始顯示的行列號及每行的列數可找出顯示RAM對應的地址,設立光標,送上要顯示的漢字的第一字節(jié),光標位置加1,送第二個字節(jié),換行按列對齊,送第三個字節(jié)直到32B顯示完就可以LCD上得到一個完整漢字。2 1602字符型LCD簡介字符型液晶顯示模塊是一種專門用于顯示字母、數字、符號等點陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。下面以長沙太陽人電子有限公司的1602字符型液晶顯示器為例,介紹其用法。一般1602字符型液晶顯示器實物如圖:圖1602字符型液晶顯示器實物圖108.2.1 1602LCD的基本參數及引腳功能1602LCD主要技術參數
40、:顯示容量:16×2個字符芯片工作電壓:4.55.5V工作電流:2.0mA(5.0V)模塊最佳工作電壓:5.0V字符尺寸:2.95×4.35(W×H)mm引腳功能說明1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表10-13所示:編號符號引腳說明編號符號引腳說明1VSS電源地9D2數據2VDD電源正極10D3數據3VL液晶顯示偏壓11D4數據4RS數據/命令選擇12D5數據5R/W讀/寫選擇13D6數據6E使能信號14D7數據7D0數據15BLA背光源正極8D1數據16BLK背光源負極表10-13:引腳接口說明表第1腳:VSS為地
41、電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度。第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數據。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數據線。第15腳:背光源正極。第
42、16腳:背光源負極。1602LCD的指令說明及時序1602液晶模塊內部的控制器共有11條控制指令,如表所示:序號指令RSR/WD7D6D5D4D3D2D1D01清顯示(01H)00000000012()光標返回(02H)000000001*3置輸入模式(04H-07H)00000001I/DS4顯示開/關控制(08H-0FH)0000001DCB5光標或字符移位(10H-1FH)000001S/CR/L*6置功能(20H-3FH)00001DLNF*7置字符發(fā)生存貯器地址(40H-7FH)0001字符發(fā)生存貯器地址8置數據存貯器地址(80H-)001顯示數據存貯器地址9讀忙標志或地址01BF計
43、數器地址10寫數到CGRAM或DDRAM)10要寫的數據內容11從CGRAM或DDRAM讀數11讀出的數據內容 控制命令表1602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令編程來實現的。(說明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標復位到地址00H位置。指令2:光標復位,光標返回到地址00H。指令3:光標和顯示模式設置 I/D:光標移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令4:顯示開關控制。 D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示 C:控制光標的開與關,高電平表示有光標,低電平表示無光
44、標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標。指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。指令7:字符發(fā)生器RAM地址設置。指令8:DDRAM地址設置。指令9:讀忙信號和光標地址 BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數據,如果為低電平表示不忙。指令10:寫數據。指令11:讀數據。與HD44780相兼容的芯片時序表如下:讀狀態(tài)輸入RS=L,R/W=H,E=H輸出D0
45、D7=狀態(tài)字寫指令輸入RS=L,R/W=L,D0D7=指令碼,E=高脈沖輸出無讀數據輸入RS=H,R/W=H,E=H輸出D0D7=數據寫數據輸入RS=H,R/W=L,D0D7=數據,E=高脈沖輸出無 基本操作時序表1602LCD的RAM地址映射及標準字庫表 液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,下圖是1602的內部顯示地址。1602LCD內部顯示地址例如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標定位在第二行第一個字符的位置呢?這樣不行,
46、因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數據應該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在對液晶模塊的初始化中要先設置其顯示模式,在液晶模塊顯示字符時光標是自動右移的,無需人工干預。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內部的字符發(fā)生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,如下圖所示,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形
47、顯示出來,我們就能看到字母“A”圖10-58 字符代碼與圖形對應圖1602LCD的一般初始化(復位)過程延時15mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)以后每次寫指令、讀/寫數據操作均需要檢測忙信號序號指令RSR/WD7D6D5D4D3D2D1D06置功能00001DLNF*指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。寫指令38H:顯示模式設置4顯示開/關控制0000001DCB指令4:顯示開關
48、控制。 D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示 C:控制光標的開與關,高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。寫指令08H:顯示關閉寫指令01H:顯示清屏寫指令06H:顯示光標移動設置寫指令0CH:顯示開及光標設置 1602LCD的軟硬件設計實例1 硬件原理圖1602液晶顯示模塊可以和單片機AT89C51直接接口,電路如圖10-60所示。 硬件原理圖2 程序流程圖 軟件流程圖3 軟件代碼#include <reg51.h>#include <intrins.h>sbit ds=P33;/溫度傳感器信號線t
49、ypedef unsigned char BYTE;typedef bit BOOL; typedef unsigned int uint;sbit LCD_RS = P20; sbit LCD_RW = P21;sbit LCD_EP = P22;uint temp;BYTE code dis1 = " temperature "BYTE data disdata5;delay(int ms) / 延時子程序int i;while(ms-) for(i = 0; i< 250; i+) _nop_(); _nop_(); _nop_(); _nop_(); BOOL
50、 lcd_bz() / 測試LCD忙碌狀態(tài)BOOL result;LCD_RS = 0;LCD_RW = 1;LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();result = (BOOL)(P0 & 0x80);LCD_EP = 0;return result; lcd_wcmd(BYTE cmd) / 寫入指令數據到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) /設定顯示位置lcd_wcmd(po
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑行業(yè)農民工勞動合同規(guī)范范本
- 2025年婚慶婚禮現場婚禮用品租賃與配送合同模板
- 遼寧2025年遼寧科技學院招聘高層次和急需緊缺人才83人筆試歷年參考題庫附帶答案詳解
- 貴州2025年中共貴州省委政策研究室(省委改革辦)所屬事業(yè)單位招聘2人筆試歷年參考題庫附帶答案詳解
- 湖北2025年湖北省水利水電科學研究院院屬企業(yè)招聘11人筆試歷年參考題庫附帶答案詳解
- 2025年中國墻體錨固釘市場調查研究報告
- 2025年中國光彈應力凍結箱市場調查研究報告
- 2025至2031年中國非標自動化機械行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國遠距離求生電珠行業(yè)投資前景及策略咨詢研究報告
- 2025年等離子電視機項目可行性研究報告
- 單店爆破促銷活動模式精編文檔
- YS/T 34.1-2011高純砷化學分析方法電感耦合等離子體質譜法(ICP-MS)測定高純砷中雜質含量
- LY/T 2016-2012陸生野生動物廊道設計技術規(guī)程
- 松下panasonic-視覺說明書pv200培訓
- 單縣煙草專賣局QC課題多維度降低行政處罰文書出錯率
- 毫針刺法(全)教學課件
- 金風科技-風電產業(yè)集團-供應商現場作業(yè)基礎安全考試附答案
- 人工智能機器人科學小報手抄報簡報
- 三年級下冊美術課件-第1課 燈彩輝映|浙美版 (共19張PPT)
- 硫酸銨廢水MVR蒸發(fā)結晶
- 原子物理學第五章-多電子原子:泡利原理
評論
0/150
提交評論