單片機應(yīng)用技術(shù)-匯編+C51項目教程-第2版課件項目5-用LCD1602與DS18B20設(shè)計的數(shù)字_第1頁
單片機應(yīng)用技術(shù)-匯編+C51項目教程-第2版課件項目5-用LCD1602與DS18B20設(shè)計的數(shù)字_第2頁
單片機應(yīng)用技術(shù)-匯編+C51項目教程-第2版課件項目5-用LCD1602與DS18B20設(shè)計的數(shù)字_第3頁
單片機應(yīng)用技術(shù)-匯編+C51項目教程-第2版課件項目5-用LCD1602與DS18B20設(shè)計的數(shù)字_第4頁
單片機應(yīng)用技術(shù)-匯編+C51項目教程-第2版課件項目5-用LCD1602與DS18B20設(shè)計的數(shù)字_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

項目5用LCD1602與DS18B20設(shè)計的數(shù)字溫度計由DS18B20組成的LCD數(shù)字溫度計具有體積小,低成本,低功耗,高精度,快速響應(yīng),抗干擾等優(yōu)點而被廣泛應(yīng)用于工業(yè)自動化、農(nóng)業(yè)生產(chǎn)等各種場合的環(huán)境溫度監(jiān)測及自動控制。本項目將講述LCD1602字符型液晶與DS18B20數(shù)字溫度傳感器的原理和由單片機控制的數(shù)字溫度計的實現(xiàn)方法。

任務(wù)5.1學(xué)習(xí)LCD1602原理與接口任務(wù)5.2學(xué)習(xí)1-wire總線技術(shù)與DS18B20的應(yīng)用任務(wù)5.3數(shù)字溫度計設(shè)計與仿真

下一頁任務(wù)5.1學(xué)習(xí)LCD1602原理與接口5.1.1LCD1602的內(nèi)部結(jié)構(gòu)5.1.2LCD1602的控制命令5.1.3MCS-51與LCD1602的接口技術(shù)上一頁下一頁返回5.1.1LCD1602的內(nèi)部結(jié)構(gòu)一、LCD簡介LCD(LiquidCrystalDisplay)液晶顯示器,是利用液晶分子的物理結(jié)構(gòu)和光學(xué)特性進行顯示的一種技術(shù)。液晶分子是介于固體和液體之間的一種棒狀結(jié)構(gòu)的大分子物質(zhì);在自然形態(tài),具有光學(xué)各向異性的特點,在電(磁)場作用下,呈各向同性特點。LCD的構(gòu)造是在兩片平行的玻璃基板當(dāng)中放置液晶盒,下基板玻璃上設(shè)置薄膜晶體管,上基板玻璃上設(shè)置濾光片,通過極板上的信號與電壓改變來控制液晶分子的轉(zhuǎn)動方向,從而達到控制每個像素點偏振光出射與否而達到顯示目的。下面以直視型簡單多路TN/STNLCDPanel(液晶顯示面板)的基本結(jié)構(gòu)介紹LCD的基本顯示原理,示意圖如下圖:上一頁下一頁返回上一頁下一頁返回在實際的液晶模以驅(qū)動電壓中,有幾個參數(shù)非常關(guān)鍵:一、交流電壓液晶分子是需要交流信號來驅(qū)動的,長時間的直流電壓加在液晶分子兩端,會影響液晶分子的電氣化學(xué)特性,引起顯示模糊,壽命的減少,其破壞性為不可恢復(fù);二、掃描頻率直接驅(qū)動液晶分子的交流電壓的頻率一般在60~100Hz之間,具體是依據(jù)LCDPanel的面積和設(shè)計而定,頻率過高,會導(dǎo)致驅(qū)動功耗的增加,頻率過低,會導(dǎo)致顯示閃爍,同時如果掃描頻率同光源的頻率之間有倍數(shù)關(guān)系,則顯示也會有閃爍現(xiàn)象出現(xiàn)。三、開啟電壓LCD顯示黑白(透光和不透光)的電壓有效值的分界電壓稱為開啟電壓Vth,當(dāng)電壓有效值超過Vth,螺旋結(jié)構(gòu)的旋光角度加大,透光率急劇變化,透明度急劇上升。反之,則透明度急劇下降;四、占空比該項參數(shù)一般也稱為Duty數(shù)或COM數(shù)。由于STN/TN的LCD一般是采用時分動態(tài)掃描的驅(qū)動模式,在此模式下,每個COM的有效選通時間與整個掃描周期的比值即占空比(Duty):上一頁下一頁返回五、偏置LCD的SEG/COM的驅(qū)動波形為模擬信號,而各檔模擬電壓相對于LCD輸出的最高電壓的比例稱為偏置,而一般來講,是以最低一檔與輸出最高電壓的比值來表示。由此可見51系列單片機的普通IO口不能滿足LCD的驅(qū)動要求,需要外加LCD驅(qū)動專用芯片來驅(qū)動液晶顯示,而某些單片機集成有LCD驅(qū)動模塊比如PIC系列單片機。上一頁下一頁返回二、LCD1602簡介1602液晶也叫1602字符型液晶,它能夠同時顯示16列2行,即32個字符。它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由32個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形。其優(yōu)點是微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧、易于控制,常用在袖珍式儀表和低功耗單片機應(yīng)用系統(tǒng)中。實物圖和PROTEUS中的模型:上一頁下一頁返回

市面上字符液晶大多數(shù)是基于HD44780液晶芯片驅(qū)動的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。在proteus軟件中LCD1602液晶屏可以用器件LM016L來模擬,唯一不同的是某些LCD1602有背光控制引腳而LM016L沒有背光控制引腳,但背光就相當(dāng)于LED發(fā)光二極管很容易控制這里不再做詳細講解。三、LCD1602引腳定義1602采用標(biāo)準(zhǔn)的16腳接口,其中:第1腳:GND為電源地第2腳:VCC接5V電源正極第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產(chǎn)生重影,使用時可以通過一個10K的電位器調(diào)整對比度)。第4腳:RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,電平(0)時進行寫操作。上一頁下一頁返回第6腳:E(或EN)端為使能(enable)端,高電平(1)時讀取信息,負跳變時執(zhí)行指令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負極。四、LCD1602功能特性1、3.3V或5V工作電壓,對比度可調(diào)2、內(nèi)含復(fù)位電路3、提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能4、有80字節(jié)顯示數(shù)據(jù)存儲器DDRAM5、內(nèi)建有192個5X7點陣的字型的字符發(fā)生器CGROM6、8個可由用戶自定義的5X7的字符發(fā)生器CGRAM上一頁下一頁返回5.1.2LCD1602的控制命令LCD1602的指令集及其設(shè)置說明,共11條指令:1、清屏指令

上一頁下一頁返回功能:<1>清除液晶顯示器,即將DDRAM的內(nèi)容全部填入"空白"的ASCII碼20H;<2>光標(biāo)歸位,即將光標(biāo)撤回液晶顯示屏的左上方;<3>將地址計數(shù)器(AC)的值設(shè)為0。2、光標(biāo)歸位指令上一頁下一頁返回功能:<1>把光標(biāo)撤回到顯示器的左上方;<2>把地址計數(shù)器(AC)的值設(shè)置為0;<3>保持DDRAM的內(nèi)容不變。3、進入模式設(shè)置指令上一頁下一頁返回功能:設(shè)定每次定入1位數(shù)據(jù)后光標(biāo)的移位方向,并且設(shè)定每次寫入的一個字符是否移動。參數(shù)設(shè)定的情況如下所示:位名設(shè)置I/D0=寫入新數(shù)據(jù)后光標(biāo)左移1=寫入新數(shù)據(jù)后光標(biāo)右移S0=寫入新數(shù)據(jù)后顯示屏不移動1=寫入新數(shù)據(jù)后顯示屏整體右移1個字符4.顯示開關(guān)控制指令上一頁下一頁返回功能:控制顯示器開/關(guān)、光標(biāo)顯示/關(guān)閉以及光標(biāo)是否閃爍。參數(shù)設(shè)定的情況如下:位名設(shè)置D0=顯示功能關(guān)1=顯示功能開C0=無光標(biāo)1=有光標(biāo)B0=光標(biāo)閃爍1=光標(biāo)不閃爍5.設(shè)定顯示屏或光標(biāo)移動方向指令上一頁下一頁返回功能:使光標(biāo)移位或使整個顯示屏幕移位。參數(shù)設(shè)定的情況如下:S/CR/L設(shè)定情況00光標(biāo)左移1格,且AC值減101光標(biāo)右移1格,且AC值加110顯示器上字符全部左移一格,但光標(biāo)不動11顯示器上字符全部右移一格,但光標(biāo)不動6.功能設(shè)定指令上一頁下一頁返回功能:設(shè)定數(shù)據(jù)總線位數(shù)、顯示的行數(shù)及字型。參數(shù)設(shè)定的情況如下:位名設(shè)置DL0=數(shù)據(jù)總線為4位1=數(shù)據(jù)總線為8位N0=顯示1行1=顯示2行F0=5×7點陣/每字符1=5×10點陣/每字符7.設(shè)定CGRAM地址指令

上一頁下一頁返回功能:設(shè)定下一個要存入數(shù)據(jù)的CGRAM的地址。8.設(shè)定DDRAM地址指令功能:設(shè)定下一個要存入數(shù)據(jù)的DDRAM的地址。9.讀取忙信號或AC地址指令上一頁下一頁返回功能:<1>讀取忙碌信號BF的內(nèi)容,BF=1表示液晶顯示器忙,暫時無法接收單片機送來的數(shù)據(jù)或指令;當(dāng)BF=0時,液晶顯示器可以接收單片機送來的數(shù)據(jù)或指令;<2>讀取地址計數(shù)器(AC)的內(nèi)容。10.數(shù)據(jù)寫入DDRAM或CGRAM指令一覽上一頁下一頁返回功能:<1>將字符碼寫入DDRAM,以使液晶顯示屏顯示出相對應(yīng)的字符;<2>將使用者自己設(shè)計的圖形存入CGRAM。11.從CGRAM或DDRAM讀出數(shù)據(jù)的指令一覽上一頁下一頁返回功能:讀取DDRAM或CGRAM中的內(nèi)容?;静僮鲿r序:讀狀態(tài)輸入:RS=L,RW=H,E=H輸出:DB0~DB7=狀態(tài)字寫指令輸入:RS=L,RW=L,E=下降沿脈沖,DB0~DB7=指令碼輸出:無讀數(shù)據(jù)輸入:RS=H,RW=H,E=H輸出:DB0~DB7=數(shù)據(jù)寫數(shù)據(jù)輸入:RS=H,RW=L,E=下降沿脈沖,DB0~DB7=數(shù)據(jù)輸出:無5.1.3MCS-51與LCD1602的接口技術(shù)一、硬件連接上節(jié)介紹了LCD1602(在proteus中名稱為LM016L)的引腳功能,下面我們在proteus中按照引腳功能定義將其與AT89C51單片機進行連接,由于版面限制下圖不顯示復(fù)位和震蕩電路。第1腳:VSS接地;第2腳:VCC接電源正極第3腳:VEE通過一個10K的電位器調(diào)整對比度;第4腳:RS接P2.0;第5腳:RW接P2.1;第6腳:E接P2.2;第7~14腳:D0~D7接P3口。圖中D0~D7采用了藍色粗線條表示總線連接,總線連接整齊美觀但不代表任何電氣意義需要用標(biāo)號將對應(yīng)引腳連接,效果和各引腳一一對應(yīng)連接效果相同。具體請參閱proteus教程。上一頁下一頁返回上一頁下一頁返回二、C語言編程下面是用C語言實現(xiàn)的在LCD1602上顯示一個字符和字符串的實例:#include<reg52.h>#include<intrins.h>#include<math.h>#include<stdio.h>//*********************LCD1602設(shè)置START************************#defineLCD_DBP3sbitLCD_RS=P2^0;sbitLCD_RW=P2^1;sbitLCD_E=P2^2;/******定義函數(shù)****************/#defineucharunsignedchar#defineuintunsignedint上一頁下一頁返回voidLCD_init(void);//初始化函數(shù)voidLCD_write_command(ucharcommand);//寫指令函數(shù)voidLCD_write_data(uchardat);//寫數(shù)據(jù)函數(shù)voidLCD_disp_char(ucharx,uchary,uchardat);//在某個屏幕位置上顯示一個字//符,X(0-15),y(1-2)voidLCD_disp_str(ucharx,uchary,uchar*str);//LCD1602顯示字符串函數(shù)voiddelay_n10us(uintn);//延時函數(shù)uintjishu,jishu1=0,wendu,bb,fen=0,miao=0,fmiao=0;/*--------------------------------------;模塊名稱:LCD_init();;功能:初始化LCD1602;-------------------------------------*/上一頁下一頁返回voiddelay(uintz){uinti,j;for(i=z;i>0;i--)for(j=100;j>0;j--);}voidLCD_init(void){delay_n10us(10);LCD_write_command(0x38);//設(shè)置8位格式,2行,5x7delay_n10us(10);LCD_write_command(0x0c);//整體顯示,關(guān)光標(biāo),不閃爍delay_n10us(10);LCD_write_command(0x06);//設(shè)定輸入方式,增量不移位delay_n10us(10);LCD_write_command(0x01);//清除屏幕顯示上一頁下一頁返回delay_n10us(100);//延時清屏,延時函數(shù),延時約n個10us}/*--------------------------------------;模塊名稱:LCD_write_command();;功能:LCD1602寫指令函數(shù);占用資源:P2.0--RS(LCD_RS),P2.1--RW(LCD_RW),P2.2--E(LCD_E).;參數(shù)說明:dat為寫命令參數(shù);-------------------------------------*/voidLCD_write_command(uchardat){delay_n10us(10);LCD_RS=0;//指令LCD_RW=0;//寫入LCD_E=1;//允許上一頁下一頁返回LCD_DB=dat;delay_n10us(10);LCD_E=0;delay_n10us(10);}/*--------------------------------------;模塊名稱:LCD_write_data();;功能:LCD1602寫數(shù)據(jù)函數(shù);占用資源:P2.0--RS(LCD_RS),P2.1--RW(LCD_RW),P2.2--E(LCD_E).;參數(shù)說明:dat為寫數(shù)據(jù)參數(shù);-------------------------------------*/voidLCD_write_data(uchardat){delay_n10us(10);LCD_RS=1;//數(shù)據(jù)上一頁下一頁返回LCD_RW=0;//寫入LCD_E=1;//允許LCD_DB=dat;delay_n10us(10);LCD_E=0;delay_n10us(10);}/*--------------------------------------;模塊名稱:;功能:顯示一個字符;-------------------------------------*/voidLCD_disp_char(ucharx,uchary,uchardat){ucharaddress;if(y==1)address=0x80+x;上一頁下一頁返回elseaddress=0xc0+x;LCD_write_command(address);LCD_write_data(dat);}/*--------------------------------------;模塊名稱:;功能:顯示一個字符串。;-------------------------------------*/voidLCD_disp_str(ucharx,uchary,uchar*str){ucharaddress;if(y==1)address=0x80+x;elseaddress=0xc0+x;上一頁下一頁返回LCD_write_command(address);while(*str!='\0'){LCD_write_data(*str);str++;}}/*--------------------------------------;模塊名稱:delay_n10us();;功能:延時函數(shù),延時約n個10us;-------------------------------------*/voiddelay_n10us(uintn)//延時n個10us@12M晶振{uinti;for(i=n;i>0;i--)上一頁下一頁返回{_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}}//*********主函數(shù)*****************voidmain(){ LCD_init();LCD_disp_char(0,1,'A');//顯示一個字符

LCD_disp_char(15,1,1+'0');//顯示一個字符

LCD_disp_str(0,2,"LCD1602OK"); //顯示一個字符串

while(1) { }}上一頁下一頁返回在proteus下運行的結(jié)果如下圖:上一頁下一頁返回任務(wù)5.2學(xué)習(xí)1-wire總線技術(shù)與DS18B20的應(yīng)用

5.2.11-wire總線技術(shù)簡介5.2.2DS18B20簡介5.2.11-wire總線技術(shù)簡介1-wire單總線是Maxim全資子公司Dallas的一項專有技術(shù)。與目前多數(shù)標(biāo)準(zhǔn)串行數(shù)據(jù)通信方式如SPI/I2C/MICROWIRE不同,它采用單根信號線,既傳輸時鐘,又傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的。它具有節(jié)省I/O口線資源結(jié)構(gòu)簡單、成本低廉、便于總線擴展和維護等諸多優(yōu)點。1-wire單總線適用于單個主機系統(tǒng),能夠控制一個或多個從機設(shè)備。當(dāng)只有一個從機位于總線上時,系統(tǒng)可按照單節(jié)點系統(tǒng)操作;而當(dāng)多個從機位于總線上時,則系統(tǒng)按照多節(jié)點系統(tǒng)操作。為了較為全面地介紹單總線系統(tǒng)將系統(tǒng),分為三個部分討論:硬件結(jié)構(gòu)、命令序列和信號方式(信號類型和時序)上一頁下一頁返回一、硬件結(jié)構(gòu)顧名思義,單總線只有一根數(shù)據(jù)線。設(shè)備(主機或從機)通過一個漏極開路或三態(tài)端口,連接至該數(shù)據(jù)線,這樣允許設(shè)備在不發(fā)送數(shù)據(jù)時釋放數(shù)據(jù)總線,以便總線被其它設(shè)備所使用。單總線端口為漏極開路,其內(nèi)部等效電路如下圖所示:

上一頁下一頁返回單總線要求外接一個約5k的上拉電阻:這樣,單總線的閑置狀態(tài)為高電平。不管什么原因,如果傳輸過程需要暫時掛起,且要求傳輸過程還能夠繼續(xù)的話,則總線必須處于空閑狀態(tài)。位傳輸之間的恢復(fù)時間沒有限制,只要總線在恢復(fù)期間處于空閑狀態(tài)(高電平)。如果總線保持低電平超過480s,總線上的所有器件將復(fù)位。另外,在寄生方式供電時,為了保證單總線器件在某些工作狀態(tài)下(如溫度轉(zhuǎn)換期間、EEPROM寫入等)具有足夠的電源電流,必須在總線上提供強上拉(如圖5-7所示的MOSFET)。上一頁下一頁返回二、命令序列典型的單總線命令序列如下:第一步:初始化第二步:ROM命令(跟隨需要交換的數(shù)據(jù))(1)搜索ROM[F0h](2)讀ROM[33h](僅適合于單節(jié)點)(3)匹配ROM[55h](4)跳越ROM[CCh](僅適合于單節(jié)點)(5)報警搜索[ECh](僅少數(shù)1-wire器件支持)第三步:功能命令(跟隨需要交換的數(shù)據(jù))注意以下事項:1、在溫度轉(zhuǎn)換和復(fù)制暫存器數(shù)據(jù)至EEPROM期間,主機必須在單總線上允許強上拉,并且在此期間,總線上不能進行其它數(shù)據(jù)傳輸;2、通過發(fā)出復(fù)位脈沖,主機能夠在任何時候中斷數(shù)據(jù)傳輸;3、在復(fù)位脈沖發(fā)出前,必須寫入全部的三個字節(jié)。上一頁下一頁返回三、信號方式所有的單總線器件要求采用嚴(yán)格的通信協(xié)議,以保證數(shù)據(jù)的完整性。該協(xié)議定義了幾種信號類型:復(fù)位脈沖、應(yīng)答脈沖、寫0、寫1、讀0、和讀1。所有這些信號,除了應(yīng)答脈沖以外,都由主機發(fā)出同步信號。并且發(fā)送所有的命令和數(shù)據(jù)都是字節(jié)的低位在前,這一點與多數(shù)串行通信格式不同(多數(shù)為字節(jié)的高位在前)。1、初始化序列:復(fù)位和應(yīng)答脈沖2、讀/寫時隙上一頁下一頁返回5.2.2DS18B20簡介DS18B20是DALLAS公司生產(chǎn)的,最常用的溫度傳感器,具有體積小,硬件開銷低,抗干擾能力強,精度高的特點。DS18B20數(shù)字溫度傳感器提供9-Bit到12-Bit的攝氏溫度測量精度和一個用戶可編程的非易失性且具有過溫和低溫觸發(fā)報警的報警功能。DS18B20采用的1-Wire通信即僅采用一個數(shù)據(jù)線(以及地)與微控制器進行通信。該傳感器的溫度檢測范圍為-55℃至+125℃,并且在溫度范圍超過-10℃至85℃之外時還具有+-0.5℃的精度。此外,DS18B20可以直接由數(shù)據(jù)線電而不需要外部電源供電。每片DS18B20都有一個獨一無二的64位序列號,所以一個1-Wire總線上可連接多個DS18B20設(shè)備。因此,在一個分布式的大環(huán)境里用一個微控制器控制多個DS18B20是非常簡單的。這些特征使得其在HVAC環(huán)境控制,在建筑、設(shè)備及機械的溫度監(jiān)控系統(tǒng),以及溫度過程控制系統(tǒng)中有著很大的優(yōu)勢。上一頁下一頁返回特性:獨特的1-Wire總線接口僅需要一個管腳來通信。每個設(shè)備的內(nèi)部ROM上都燒寫了一個獨一無二的64位序列號。多路采集能力使得分布式溫度采集應(yīng)用更加簡單。無需外圍元件。能夠采用數(shù)據(jù)線供電;供電范圍為3.0V至5.5V。溫度可測量范圍為:-55℃至+125℃(-67℉至+257℉)。溫度范圍超過-10℃至85℃之外時具有+-0.5℃的精度。內(nèi)部溫度采集精度可以由用戶自定義為9-Bits至12-Bits。溫度轉(zhuǎn)換時間在轉(zhuǎn)換精度為12-Bits時達到最大值750ms。用戶自定義非易失性的的溫度報警設(shè)置。定義了溫度報警搜索命令和當(dāng)溫度超過用戶自定義的設(shè)定值時??蛇x擇的8-PinSO(150mils),8-PinμSOP,及3-PinTO-92封裝。與DS1822程序兼容。應(yīng)用于溫度控制系統(tǒng),工業(yè)系統(tǒng),民用產(chǎn)品,溫度傳感器,或者任何溫度檢測系統(tǒng)中。上一頁下一頁返回上一頁下一頁返回溫度測量:DS18B20的核心功能是直接溫度-數(shù)字測量。其溫度轉(zhuǎn)換可由用戶自定義為9、10、11、12位精度分別為0.5℃、0.25℃、0.125℃、0.0625℃分辨率。值得注意的是,上電默認(rèn)為12位轉(zhuǎn)換精度。溫度報警:當(dāng)DS18B20完成一次溫度轉(zhuǎn)換后,該溫度轉(zhuǎn)換值將會與用戶定義的溫度報警TH和TL寄存器中的值進行比較。符號標(biāo)志位(S)溫度的正負極性:正數(shù)則S=0,負數(shù)則S=1。過溫和低溫(TH和TL)溫度報警寄存器是非易失性的(EEPROM),所以其可以在設(shè)備斷電的情況下保存。

上一頁下一頁返回DS18B20功能命令溫度轉(zhuǎn)換[44h]寫入暫存寄存器[4Eh]讀取暫存寄存器[BEh]拷貝暫存寄存器[48h]召回EEPROM[B8h]讀取供電模式[B4h]DS18B20采用嚴(yán)謹(jǐn)?shù)?-Wire總線通信協(xié)議來保證數(shù)據(jù)的完整性。更多操作請參考上節(jié)內(nèi)容與DS18B20數(shù)據(jù)手冊完成。為避免內(nèi)容雷同,具體編程方法我們將在下一節(jié)內(nèi)容中詳細講述。上一頁下一頁返回任務(wù)5.3數(shù)字溫度計設(shè)計與仿真

5.3.1硬件電路設(shè)計

5.3.2程序編制

5.3.3綜合仿真調(diào)試上一頁下一頁返回5.3.1硬件電路設(shè)計本節(jié)我們將要用單片機AT89C51、液晶屏LCD1602和數(shù)字溫度傳感器DS18B20設(shè)計一款數(shù)字溫度計。經(jīng)過前兩節(jié)的學(xué)習(xí)我們對LCD1602和DS18B20的硬件接線都已熟悉下面我們就在proteus下做設(shè)計如圖:上一頁下一頁返回5.3.2程序編制結(jié)合上兩節(jié)內(nèi)容1-wrie協(xié)議和DS18B20的說明,我們進行數(shù)字溫度計具體的C語言軟件編寫。由于篇幅限制,我們不再做匯編語言的例子。有興趣的同學(xué)們可根據(jù)上兩節(jié)內(nèi)容自行編寫。一、DS18B20的初始化根據(jù)DS18B20的通訊協(xié)議,主機(單片機)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對DS18B20進行復(fù)位操作,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,當(dāng)DS18B20收到信號后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示復(fù)位成功。(1)先將數(shù)據(jù)線DQ置高電平“1”。(2)延時(該時間要求的不是很嚴(yán)格,但是盡可能的短一點)(3)數(shù)據(jù)線拉到低電平“0”。(4)延時750微秒(該時間的時間范圍可以從480到960微秒)。(5)數(shù)據(jù)線拉到高電平“1”。上一頁下一頁返回(6)延時等待(如果初始化成功則在15到60微妙時間之內(nèi)產(chǎn)生一個由DS18B20所返回的低電平“0”。據(jù)該狀態(tài)可以來確定它的存在,但是應(yīng)注意不能無限的進行等待,不然會使程序進入死循環(huán),所以要進行超時控制)。(7)若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時,其延時的時間從發(fā)出的高電平算起(第(5)步的時間算起)最少要480微秒。(8)將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。初始化程序如下:ucharInit_DS18B20(){ ucharstatus;//status為DS18B20返回的狀態(tài)

DQ=1; Delay(8); DQ=0; Delay(90); DQ=1;上一頁下一頁返回Delay(8); status=DQ;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論