版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、畢業(yè)論文(設(shè)計(jì))題目 單片機(jī)系統(tǒng)設(shè)計(jì)與開發(fā) 學(xué)生姓名 楊明瑞 學(xué)號(hào) 5 班 級(jí) 專 業(yè) 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù) 分 院 信息技術(shù) 指導(dǎo)教師 金照春 2010年 12月 19日 摘 要:本文介紹了一種基于PIC16F877A單片機(jī),利用DS18B20對(duì)多路溫度采集,并進(jìn)行溫度的控制與檢測(cè),并通過12864液晶顯示出來。系統(tǒng)中通過控制按鈕實(shí)現(xiàn)了實(shí)時(shí)各路的報(bào)警溫度,并且實(shí)現(xiàn)多路與任一單路溫度顯示切換,從而既可以進(jìn)行多路的檢測(cè)又可以進(jìn)行任一單路的監(jiān)控,而且還有數(shù)字跟圖形兩種顯示方式更為直觀。在溫度超過設(shè)定溫度時(shí)溫度跟時(shí)間通過24C02存儲(chǔ)起來,以便查看,同時(shí)可以通過固定電話遠(yuǎn)程報(bào)警,還能將溫度上傳至PC機(jī),進(jìn)
2、行后續(xù)處理。關(guān)鍵詞:溫度檢測(cè);單片機(jī);串行通訊;DS18B20;目錄1系統(tǒng)設(shè)計(jì)72主芯片:PIC16F877A單片機(jī)簡介92.1 PIC單片機(jī)的優(yōu)越之處:92.2 PIC16F877A引腳圖及主要性能102.3 最小系統(tǒng)112.3.1復(fù)位功能112.3.2 系統(tǒng)時(shí)鐘122.4 設(shè)計(jì)心得總結(jié)123LCD12864液晶原理介紹及接口實(shí)現(xiàn)123.1 液晶顯示模塊概述123.2 液晶引腳說明133.3 接口時(shí)序143.4 具體指令介紹153.5 顯示坐標(biāo)關(guān)系193.5.1、圖形顯示坐標(biāo)193.5.2 漢字顯示坐標(biāo)203.6 與單片機(jī)的接口實(shí)現(xiàn)213.7設(shè)計(jì)心得總結(jié)224DS18B20原理介紹及接口實(shí)現(xiàn)
3、224.1 DS18B20簡介224.2DS18B20結(jié)構(gòu)及其工作原理234.3DS18B20的接口實(shí)現(xiàn)294.3.1 硬件設(shè)計(jì)294.3.2 軟件設(shè)計(jì)304.4設(shè)計(jì)心得總結(jié)314.4.1 焊接問題:314.4.2 軟件設(shè)計(jì):314.4.3 不足:315存儲(chǔ)芯片AT24C02簡單介紹及接口實(shí)現(xiàn)325.1AT24C02功能描述管腳定義325.2管腳定義及接口實(shí)現(xiàn)325.3設(shè)計(jì)心得346 實(shí)時(shí)時(shí)鐘DS1302簡單介紹及接口實(shí)現(xiàn)346.1 DS1302簡介346.2 DS1302結(jié)構(gòu)及工作原理346.3DS1302的接口實(shí)現(xiàn)357溫度上限報(bào)警功能377.1 設(shè)計(jì)原理377.2 設(shè)計(jì)心得體會(huì)378與P
4、C串口通訊及VB上位機(jī)簡單介紹388.1 與PC串口通信388.2 上位機(jī)介紹399 總結(jié)43附錄44部分原理圖:44參考文獻(xiàn)45致謝46基于PIC單片機(jī)的多路溫度監(jiān)控巡回系統(tǒng)1 系統(tǒng)設(shè)計(jì)在工業(yè)生產(chǎn)和日常生活中,經(jīng)常要對(duì)溫度進(jìn)行測(cè)量與控制,并且有時(shí)是對(duì)多個(gè)點(diǎn)進(jìn)行溫度測(cè)量,比如冷庫溫度監(jiān)控、環(huán)境溫度監(jiān)測(cè)、農(nóng)業(yè)溫室監(jiān)控、糧庫溫度監(jiān)控等。在這種情況下,多點(diǎn)溫度檢測(cè)系統(tǒng)應(yīng)運(yùn)而生。多點(diǎn)溫度檢測(cè)系統(tǒng)通常能夠?qū)Χ鄠€(gè)工作點(diǎn)的溫度進(jìn)行檢測(cè),顯示當(dāng)前溫度,并能夠?qū)囟冗M(jìn)行存儲(chǔ)和報(bào)警,還能將溫度上傳至PC機(jī),進(jìn)行后續(xù)處理。傳統(tǒng)的測(cè)溫元件有熱電偶和熱電阻,需很多硬件支持并且電路復(fù)雜。本文將設(shè)計(jì)一款由新型的數(shù)字溫度傳感
5、器DS18B20配合單片機(jī),具有溫度檢測(cè)、顯示、存儲(chǔ)、自動(dòng)統(tǒng)計(jì)分析及跟電腦通訊連接還利用固定電話遠(yuǎn)程報(bào)警等功能的多點(diǎn)溫度監(jiān)控系統(tǒng)。多路溫度監(jiān)控系統(tǒng)30 PC機(jī)通訊4 * 溫度傳感器固話報(bào)警 圖 1.1 多路溫度監(jiān)控系統(tǒng)模擬應(yīng)用溫度監(jiān)控主系統(tǒng)構(gòu)架框圖如圖 1.2 所示:PIC16F877A單片機(jī)12864液晶顯示實(shí)時(shí)時(shí)鐘上限報(bào)警接口按鍵控制PC機(jī)通訊AT24C02溫度儲(chǔ)存四路溫度采集 圖 1.2 多路溫度監(jiān)控系統(tǒng)構(gòu)架框圖圖1.3 手工焊接實(shí)物圖主要技術(shù)參數(shù)A溫度檢測(cè)范圍 : -55+125B測(cè)量精度 : 0.0625C 顯示方式: LCD12864顯示D 報(bào)警方式: 固話報(bào)警2 主芯片:PIC1
6、6F877A單片機(jī)簡介2.1 PIC單片機(jī)的優(yōu)越之處:(1)哈佛總線結(jié)構(gòu):MCS-51單片機(jī)的總線結(jié)構(gòu)是馮-諾依曼型,計(jì)算機(jī) 在同一個(gè)存儲(chǔ)空間取指令和數(shù)據(jù),兩者不能同時(shí)進(jìn)行;而PIC單片機(jī)的總線結(jié)構(gòu)是哈佛結(jié)構(gòu),指令和數(shù)據(jù)空間是完全分開的,一個(gè)用于指令,一個(gè)用于數(shù)據(jù),由于 可以對(duì)程序和數(shù)據(jù)同時(shí)進(jìn)行訪問,所以提高了數(shù)據(jù)吞吐率。正因?yàn)樵?PIC單片機(jī)中采用了哈佛雙總線結(jié)構(gòu),所以與常見的微控制器不同的一點(diǎn)是:程序和數(shù)據(jù)總線可以采用不同的寬度。數(shù)據(jù)總線都是8位的,但指令總線位數(shù)分別位 12、14、16位。 (2)流水線結(jié)構(gòu):MCS-51單片機(jī)的取指和執(zhí)行采用單指令流水線結(jié)構(gòu),即取一條指令,執(zhí)行完后再取下
7、一條指令;而PIC的取指和執(zhí)行采用雙指令流水線結(jié)構(gòu),當(dāng)一條指令被執(zhí)行時(shí),允許下一條指令同時(shí)被取出,這樣就實(shí)現(xiàn)了單周期指令。 (3)寄存器組:PIC單片機(jī)的所有寄存器,包括I/O口,定時(shí)器和程序計(jì)數(shù)器等都采用RAM結(jié)構(gòu)形式,而且都只需要一個(gè)指令周期就可以完成訪問和操作;而MCS-51單片機(jī)需要兩個(gè)或兩個(gè)以上的周期才能改變寄存器的內(nèi)容。 (4)運(yùn)行速度高:由于采用了哈佛總線結(jié)構(gòu),以及指令的讀取和執(zhí)行才用了流水作業(yè)方式,使得運(yùn)行速度大大提高。 (5)功耗低:PIC單片機(jī)的功率消耗極低,是目前世界上最低的單片機(jī)品種之一。在4MHz時(shí)鐘下工作時(shí)耗電不超過2mA,在睡眠模式下耗電可以低到1uA以下。 (6
8、)驅(qū)動(dòng)能力強(qiáng):I/O端口驅(qū)動(dòng)負(fù)載的能力較強(qiáng),每個(gè)I/O引腳吸入和輸出電流的最大值可分別達(dá)到25mA和20mA,能夠直接驅(qū)動(dòng)發(fā)光二極管LED、光電耦合器或者輕微繼電器等。 (7)外接電路簡潔PIC單片機(jī)片內(nèi)集成了上電復(fù)位電路、I/O引腳上拉電路、看門狗定時(shí)器等,可以最大程度減少或免用外接器件,以便實(shí)現(xiàn)“純單片機(jī)”應(yīng)用。這樣,不僅方便于開發(fā),而且還可節(jié)省用戶的電路空間和制作成本。 (8)程序保密性強(qiáng)目前,尚無辦法對(duì)其直接進(jìn)行解密拷貝,可以最大限度的保護(hù)用戶的程序版權(quán)。2.2 PIC16F877A引腳圖及主要性能PIC16F877A的詳細(xì)引腳如圖2.21所示。 圖 2.2-1 PIC16F877A引
9、腳圖 圖 2.2 -2 PIC16F877A實(shí)物圖主要性能參數(shù)如下所示:l 具有高性能RISC CPUl 僅有35條單字指令l 次擦寫周期l 除程序分支指令為兩個(gè)周期外,其余均為單周期指令l 運(yùn)行速度: DC20MHZ始終輸入 DC200ns 指令周期l 8K * 14個(gè) FLASH程序存儲(chǔ)器368 * 8 個(gè)數(shù)據(jù)存儲(chǔ)器(RAM)字節(jié)256 * 8 EEPRM 數(shù)據(jù)存儲(chǔ)器字節(jié)l 提供14個(gè)中斷源l 功耗低在5V, 4MHZ 時(shí)鐘運(yùn)行時(shí)電流小于 2mA在3V, 32KHZ 時(shí)鐘運(yùn)行時(shí)電流小于20Ual 支持在線串行編程(ICSP)l 運(yùn)行電壓范圍廣,2.0V到5.5Vl 輸入及輸出電流可達(dá)到25
10、mAl Timer0:帶有預(yù)分頻器的8位定時(shí)器/計(jì)數(shù)器l Timer1:帶有預(yù)分頻器的16位定時(shí)器/計(jì)數(shù)器,在使用外部晶振震蕩時(shí)鐘時(shí),在睡眠期間仍能工作l Timer2:帶有8位周期寄存器,預(yù)分頻器和后分頻器的8位定時(shí)器/計(jì)數(shù)器。l 2個(gè)捕捉器,比較器,PWM模塊其中: 捕捉器是16位,最大分辨率是12.5ns 比較器是16位,最大分辨率是200ns PWM最大分辨率是10位l 10位多通道模數(shù)轉(zhuǎn)換器2.3 最小系統(tǒng) 2.3.1復(fù)位功能PIC16F877A的復(fù)位功能設(shè)計(jì)得比較完善,實(shí)現(xiàn)復(fù)位或引起復(fù)位的條件和原因可以歸納成4類:人工復(fù)位、上電復(fù)位、看門狗復(fù)位、欠壓復(fù)位。這里簡單介紹一下人工復(fù)位人
11、工復(fù)位:無論是單片機(jī)在正常運(yùn)行程序,還是處在睡眠狀態(tài)或出現(xiàn)死機(jī)狀態(tài),只要在人工復(fù)位端MCLR加入低點(diǎn)平信號(hào),就令其復(fù)位。本次設(shè)計(jì)的電路圖如圖2.31所示。 圖 2.31 PIC最小系統(tǒng)電路圖 圖2.32 最小系統(tǒng)實(shí)物圖 2.3.2 系統(tǒng)時(shí)鐘 數(shù)字電路的工作離不開時(shí)鐘信號(hào),每一步細(xì)微動(dòng)作都是在一個(gè)共同的時(shí)間基準(zhǔn)信號(hào)協(xié)調(diào)下完成的。作為時(shí)基發(fā)生器的時(shí)鐘震蕩電路,為整個(gè)單片機(jī)芯片的工作提供系統(tǒng)時(shí)鐘信號(hào),也為單片機(jī)與其他外接芯片之間的通訊提供可靠的同步時(shí)鐘信號(hào)。PIC16F877A的時(shí)鐘電路是由片內(nèi)的一個(gè)反相器和一個(gè)反饋電阻,與外接的1個(gè)石英晶體和2個(gè)電容,共同構(gòu)成的一個(gè)自激多諧振蕩器。電路如圖2.31
12、 所示。2.4 設(shè)計(jì)心得總結(jié) PIC16F877A的最小系統(tǒng)跟51相似,較為簡單。芯片自身增加了很多功能,如:自帶8路AD轉(zhuǎn)換、增加SPI總線,引腳復(fù)位功能多等。芯片自身功能的增加給設(shè)計(jì)帶來了很多靈活性,同時(shí)也是學(xué)習(xí)的難點(diǎn)。3 LCD12864液晶原理介紹及接口實(shí)現(xiàn)3.1 液晶顯示模塊概述12864A-1漢字圖形點(diǎn)陣液晶顯示模塊,可顯示漢字及圖形,內(nèi)置8192個(gè)中文漢字(16X16點(diǎn)陣)、128個(gè)字符(8X16點(diǎn)陣)及64X256點(diǎn)陣顯示RAM(GDRAM)。主要技術(shù)參數(shù)和顯示特性:電源:VDD 3.3V+5V(內(nèi)置升壓電路,無需負(fù)壓);顯示內(nèi)容:128列 64行顯示顏色:黃綠顯示角度:6:0
13、0鐘直視LCD類型:STN與MCU接口:8位或4位并行/3位串行配置LED背光多種軟件功能:光標(biāo)顯示、畫面移位、自定義字符、睡眠模式等3.2 液晶引腳說明引腳號(hào)引腳名稱方向功能說明1VSS-模塊的電源地2VDD-模塊的電源正端3V0-LCD驅(qū)動(dòng)電壓輸入端4RS(CS)H/L并行的指令/數(shù)據(jù)選擇信號(hào);串行的片選信號(hào)5R/W(SID)H/L并行的讀寫選擇信號(hào);串行的數(shù)據(jù)口6E(CLK)H/L并行的使能信號(hào);串行的同步時(shí)鐘7DB0H/L數(shù)據(jù)08DB1H/L數(shù)據(jù)19DB2H/L數(shù)據(jù)210DB3H/L數(shù)據(jù)311DB4H/L數(shù)據(jù)412DB5H/L數(shù)據(jù)513DB6H/L數(shù)據(jù)614DB7H/L數(shù)據(jù)715PSB
14、H/L并/串行接口選擇:H-并行;L-串行16NC空腳17/RETH/L復(fù)位 低電平有效18NC空腳19LED_A-背光源正極(LED+5V)20LED_K-背光源負(fù)極(LED-OV)邏輯工作電壓(VDD):4.55.5V電源地(GND):0V工作溫度(Ta):060(常溫) / -2075(寬溫)3.3 接口時(shí)序模塊有并行和串行兩種連接方法,本文采用并行接法(時(shí)序如下):8位并行連接時(shí)序圖MPU寫資料到模塊程序?qū)崿F(xiàn)如下:/* 名 稱:send_i() * 功 能:寫一個(gè)字節(jié)命令到LCD* 入口參數(shù):unsigned char x 字符*/void send_i(unsigned char x
15、)chk_busy(); /檢測(cè)LCD是否工作繁忙rs = 0; /設(shè)置該字節(jié)數(shù)據(jù)為控制命令rw = 0; /設(shè)置此次操作為寫PORTD = x; /送數(shù)據(jù)口PORTDe = 1; /使能nop();nop();nop();e = 0; /禁止MPU從模塊讀出資料程序?qū)崿F(xiàn)如下:/* 讀數(shù)據(jù)*/unsigned char u8_Lcd12864ReadByte_f( void ) unsigned char byReturnValue ; chk_busy() ; /檢測(cè)LCD是否工作繁忙TRISD=0XFF; /設(shè)置PD口為輸入狀態(tài) PORTD = 0xff ; /PD初始化為高電平 rs=1
16、; / 讀置高 rw=1; / 寫置高 e=0; / 使能置低 e=1; / 使能置高 byReturnValue = PORTD ; / 讀數(shù)據(jù) e=0; / 關(guān)使能TRISD=0X00; / 恢復(fù)PD口為輸出 return byReturnValue ; / 返回讀到的數(shù)據(jù)3.4 具體指令介紹1、清除顯示CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLLH功能:清除顯示屏幕,把DDRAM位址計(jì)數(shù)器調(diào)整為“00H”2、位址歸位CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLHX功能:把
17、DDRAM位址計(jì)數(shù)器調(diào)整為“00H”,游標(biāo)回原點(diǎn),該功能不影響顯示DDRAM3、位址歸位CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLHI/DS功能:把DDRAM位址計(jì)數(shù)器調(diào)整為“00H”,游標(biāo)回原點(diǎn),該功能不影響顯示DDRAM功能:執(zhí)行該命令后,所設(shè)置的行將顯示在屏幕的第一行。顯示起始行是由Z地址計(jì)數(shù)器控制的,該命令自動(dòng)將A0-A5位地址送入Z地址計(jì)數(shù)器,起始地址可以是0-63范圍內(nèi)任意一行。Z地址計(jì)數(shù)器具有循環(huán)計(jì)數(shù)功能,用于顯示行掃描同步,當(dāng)掃描完一行后自動(dòng)加一。4、顯示狀態(tài) 開/關(guān)CODE: RW RS DB7 DB6 DB5 DB4
18、 DB3 DB2 DB1 DB0LLLLLLHDC B 功能: D=1;整體顯示ON C=1;游標(biāo)ON B=1;游標(biāo)位置ON5、游標(biāo)或顯示移位控制CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLHS/CR/LX X 功能:設(shè)定游標(biāo)的移動(dòng)與顯示的移位控制位:這個(gè)指令并不改變DDRAM的內(nèi)容6、功能設(shè)定CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLHDLX0 REX X 功能:DL=1(必須設(shè)為1) RE=1;擴(kuò)充指令集動(dòng)作 RE=0:基本指令集動(dòng)作7、設(shè)定CGRAM位址CODE: RW RS DB7
19、DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLHAC5AC4AC3AC2AC1 AC0功能:設(shè)定CGRAM位址到位址計(jì)數(shù)器(AC)8、設(shè)定DDRAM位址CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLHAC6AC5AC4AC3AC2AC1 AC0 功能:設(shè)定DDRAM位址到位址計(jì)數(shù)器(AC)9、讀取忙碌狀態(tài)(BF)和位址CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LHBFAC6AC5AC4AC3AC2AC1 AC0 功能:讀取忙碌狀態(tài)(BF)可以確認(rèn)內(nèi)部動(dòng)作是否完成,同時(shí)可以讀出位址計(jì)數(shù)器(AC)
20、的值10、寫資料到RAMCODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0HLD7D6D5D4D3D2D1 D0 功能:寫入資料到內(nèi)部的RAM(DDRAM/CGRAM/TRAM/GDRAM)11、讀出RAM的值CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0HHD7D6D5D4D3D2D1 D0 功能:從內(nèi)部RAM讀取資料(DDRAM/CGRAM/TRAM/GDRAM)12、待命模式(12H)CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLL H 功能:進(jìn)入待命模式,
21、執(zhí)行其他命令都可終止待命模式13、卷動(dòng)位址或IRAM位址選擇(13H)CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLH SR 功能:SR=1;允許輸入卷動(dòng)位址 SR=0;允許輸入IRAM位址 14、反白選擇(14H)CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLHR1 R0功能:選擇4行中的任一行作反白顯示,并可決定反白的與否15、睡眠模式(015H)CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLHSLX X功能:SL=1;脫離睡眠模
22、式 SL=0;進(jìn)入睡眠模式16、擴(kuò)充功能設(shè)定(016H)CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLHHX1 REG L 功能:RE=1;擴(kuò)充指令集動(dòng)作 RE=0;基本指令集動(dòng)作 G=1;繪圖顯示ON G=0;繪圖顯示OFF17、設(shè)定IRAM位址或卷動(dòng)位址(017H)CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLHAC5AC4AC3AC2AC1 AC0 功能:SR=1;AC5AC0為垂直卷動(dòng)位址 SR=0;AC3AC0寫ICONRAM位址18、設(shè)定繪圖RAM位址(018H)CODE: RW RS D
23、B7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLHAC6AC5AC4AC3AC2AC1 AC0 功能:設(shè)定GDRAM位址到位址計(jì)數(shù)器(AC)備注、1、當(dāng)模塊在接受指令前,微處理順必須先確認(rèn)模塊內(nèi)部處于非忙碌狀態(tài),即讀取BF標(biāo)志時(shí)BF需為0,方可接受新的指令;如果在送出一個(gè)指令前并不檢查BF標(biāo)志,那么在前一個(gè)指令和這個(gè)指令中間必須延遲一段較長的時(shí)間,即是等待前一個(gè)指令確實(shí)執(zhí)行完成,指令執(zhí)行的時(shí)間請(qǐng)參考指令表中的個(gè)別指令說明。2、“RE”為基本指令集與擴(kuò)充指令集的選擇控制位元,當(dāng)變更“RE”位元后,往后的指令集將維持在最后的狀態(tài),除非再次變更“RE”位元,否則使用相同指令集時(shí),不需
24、每次重設(shè)“RE”位元。本次設(shè)計(jì)液晶初始化如下:void lcd_init()rst = 0; /復(fù)位LCDdelay(1); /保證復(fù)位所需要的時(shí)間(1ms)rst = 1; /恢復(fù)LCD正常工作/nop();/psb = 1; /設(shè)置LCD為8位并口通信send_i(0x30); /基本指令操作send_i(0x01); /清除顯示send_i(0x06); /指定在寫入或讀取時(shí),光標(biāo)的移動(dòng)方向send_i(0x0c); /開顯示,關(guān)光標(biāo),不閃爍3.5 顯示坐標(biāo)關(guān)系3.5.1、圖形顯示坐標(biāo)水平方向X以字節(jié)單位 垂直方向Y以位為單位/*函數(shù)名稱:Draw_PM功 能:在整個(gè)液晶屏幕上畫圖參 數(shù)
25、:無返回值 :無*/void Draw_PM(const uchar *ptr) uchar i,j,k; send_i(0x34); /打開擴(kuò)展指令集i = 0x80; for(j = 0;j 32;j+) send_i(i+); send_i(0x80); for(k = 0;k 16;k+) send_d(*ptr+); i = 0x80; for(j = 0;j 32;j+) send_i(i+); send_i(0x88); for(k = 0;k 0;i-)value = 1;DQ_LOW();NOP();NOP();NOP();NOP();NOP();NOP(); /6usDQ_
26、HIGH(); /拉至高電平NOP();NOP();NOP();NOP();NOP(); /4us j = DQ;if (j) value |= 0x80;delay(2, 7); /63usreturn (value);(3) DS18B20的寫時(shí)序:對(duì)于DS18B20的寫時(shí)序仍然分為寫0時(shí)序和寫1時(shí)序兩個(gè)過程。 對(duì)于DS18B20寫0時(shí)序和寫1時(shí)序的要求不同,當(dāng)要寫0時(shí)序時(shí),單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線。 圖4.5 DS18B20寫時(shí)序圖/* 名
27、 稱:write_byte() * 功 能:寫18b20寫字節(jié)* 入口參數(shù):uch val 待寫的數(shù)據(jù)*/void write_byte(uch val)uch i;uch temp;for (i = 8;i 0;i-)temp = val & 0x01; /最低位移出DQ_LOW();NOP();NOP();NOP();NOP();NOP();/從高拉至低電平,產(chǎn)生寫時(shí)間隙if (temp = 1) DQ_HIGH(); /如果寫1,拉高電平delay(2, 7); /延時(shí)63usDQ_HIGH();NOP();NOP();val = val 1; /右移一位DS18B20內(nèi)部帶有共9個(gè)字節(jié)
28、的高速暫存器RAM和電可擦除EEPROM,起結(jié)構(gòu)如表2所示。表2 DS18B20高速暫存器結(jié)構(gòu)寄存器內(nèi)容字節(jié)地址溫度值低位(LSB)0溫度值高位(MSB)1高溫限值(TH)2低溫限值(TL)3配置寄存器4保留5保留6保留7CRC校驗(yàn)值8DS18B20所包含的操作指令如表3所示。表3 DS18B20操作指令ROM操作指令指令約定代碼功能讀ROM33H讀DS18B20溫度傳感器ROM中的編碼(即64位地址)匹配ROM55H發(fā)出命令后接著發(fā)出64位ROM編碼,訪問總線上與該編碼對(duì)應(yīng)的芯片搜索ROMF0H用于確定掛接在同一總線上DS18B20的個(gè)數(shù)跳過ROMCCH忽略64位ROM地址,直接向DS18B
29、20發(fā)溫度變換命令告警搜索ECH執(zhí)行后只有問多超過上限或下限的芯片才響應(yīng)RAM操作指令指令約定代碼功能溫度轉(zhuǎn)換44H啟動(dòng)DS18B20溫度轉(zhuǎn)換。12位轉(zhuǎn)換時(shí)長典型值750ms讀暫存器BEH讀內(nèi)部RAM中9字節(jié)的數(shù)據(jù)。寫暫存器4EH向RAM第2、3字節(jié)寫上、下限溫度數(shù)據(jù),緊跟命令之后傳送2字節(jié)數(shù)據(jù)復(fù)制暫存器48H將RAM中第2、3字節(jié)的內(nèi)容復(fù)制到內(nèi)部EEPROM中重調(diào)EEPROMB8H將EEPROM中內(nèi)容恢復(fù)到RAM中第3、4字節(jié)溫度數(shù)據(jù)在高速暫存器RAM的第0和第1個(gè)字節(jié)中的存儲(chǔ)格式如下表4所示。表4 DS18B20溫度數(shù)據(jù)存儲(chǔ)格式位7位6位5位4位3位2位1位0232221202-12-22
30、-32-4位15位14位13位12位11位10位9位8SSSSS262524DS18B20在出廠是默認(rèn)配置為12位,其中最高位為符號(hào)位,即溫度值共11位,單片機(jī)在讀取數(shù)據(jù)時(shí),一次會(huì)讀2字節(jié)共16位,讀完后將低11位的二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)后再乘以0.0625便為所測(cè)的實(shí)際溫度值。另外,還需要判斷溫度的正負(fù)。前5個(gè)數(shù)字為符號(hào)位,這5位同時(shí)變化,我們只需要判斷11位就可以了。前5位為1時(shí),讀取的溫度為負(fù)值,且測(cè)到的數(shù)值需要取反加1再乘以0.0625才可得到實(shí)際溫度值。前5位為0時(shí),讀取的溫度為正值,且溫度為正值時(shí),只要將測(cè)得的數(shù)值乘以0.0625即可得到實(shí)際溫度值??紤]到實(shí)際使用的需要,在這里我們
31、只使用一個(gè)DS18B20,故每次操作前只需復(fù)位后發(fā)出Skip ROM指令(即跳過ROM指令)再讀出溫度的正值、并精確到小數(shù)點(diǎn)后一位,即可滿足設(shè)計(jì)需求。/* 名 稱:get_temp() * 功 能:啟動(dòng)溫度轉(zhuǎn)換*/void get_tem()uchar tem1,tem2,num;float aaa;reset(); /復(fù)位write_byte(0xCC); /跳過ROMwrite_byte(0x44); /溫度轉(zhuǎn)換for(num=100;num0;num-) /確保溫度轉(zhuǎn)換完成所需要的時(shí)間reset(); /再次復(fù)位,等待從機(jī)應(yīng)答write_byte(0xCC); /忽略ROM匹配write
32、_byte(0xBE); /發(fā)送讀溫度命令tem1=read_byte(); /讀出溫度低8tem2=read_byte(); /讀出溫度高8位shu=(tem24); /溫度整數(shù)部分aaa=(tem2*256+tem1)*6.25; /溫度小數(shù)部分temper=(int)aaa; /強(qiáng)制轉(zhuǎn)換成整型a1=temper/1000; /取溫度十位a2=temper%1000/100; /取個(gè)位a3=temper%100/10; /小數(shù)點(diǎn)后個(gè)位a4=temper%10; /小數(shù)點(diǎn)后十位4.3 DS18B20的接口實(shí)現(xiàn)4.3.1 硬件設(shè)計(jì)DS18B20在本次設(shè)計(jì)中接線圖如圖4.6 所示,實(shí)驗(yàn)板硬件圖如
33、圖4.7所示這次實(shí)驗(yàn)只焊了兩個(gè)溫度傳感器而已,其他兩個(gè)用法一樣,留作外接口,可以方便外用。 圖4.6 DS18B20原理圖 圖4.7 DSB18B20硬件連接實(shí)物圖4.3.2 軟件設(shè)計(jì)根據(jù)DS18B20約定的通訊協(xié)議,每次使用DS18B20之前都必須經(jīng)過三個(gè)步驟,即先復(fù)位DS18B20,接著發(fā)出ROM操作指令,然后才可以發(fā)出RAM操作指令以進(jìn)行溫度轉(zhuǎn)換等命令。本系統(tǒng)將實(shí)現(xiàn)讀出DS18B20的溫度并實(shí)時(shí)顯示到LCD12864上,分辨率為0.0625。由于DS18B20對(duì)時(shí)序要求很嚴(yán)格,所以在程序設(shè)計(jì)時(shí),時(shí)序要多加注意一點(diǎn),不過數(shù)字不是死的,只要控制合理控制也不是掃描大問題。 DS18B20首次初
34、始化時(shí)開啟溫度轉(zhuǎn)換,之后每1s進(jìn)行一次DS18B20的溫度讀取和轉(zhuǎn)換,具體實(shí)現(xiàn)效果圖如圖4.8 流程圖如圖4.9所示 圖 4.8溫度采集效果實(shí)物圖芯片上電復(fù)位DS18B20發(fā)出Skip ROM指令啟動(dòng)溫度轉(zhuǎn)換1s到?YN復(fù)位DS18B20發(fā)出Skip ROM指令讀取溫度圖4.9 DS18B20讀取溫度流程圖4.4 設(shè)計(jì)心得總結(jié)4.4.1 焊接問題:焊接DS18B20時(shí),速度要快,如果高溫的電烙鐵持續(xù)接觸傳感器很容易燒掉DS18B20,因?yàn)殡娎予F一般溫度為350 450度,而傳感器承受溫度為125度。我曾經(jīng)因此燒壞了兩個(gè)傳感器,得此痛訓(xùn)!4.4.2 軟件設(shè)計(jì):DS18B20時(shí)序要求較為嚴(yán)格,這里
35、的嚴(yán)格不是說一定要按手冊(cè)的時(shí)間一摸一樣而是說相對(duì)其他芯片來說嚴(yán)格了一點(diǎn)。如果讀取不到溫度應(yīng)該檢查一下時(shí)序時(shí)間設(shè)計(jì)問題。再有一個(gè)難點(diǎn)就是溫度轉(zhuǎn)換問題。溫度能顯示到小數(shù)點(diǎn)后4位,如果要將溫度全部讀出,應(yīng)該將整數(shù)部分乘以10000再加上小數(shù)部分,化浮點(diǎn)數(shù)為整數(shù),當(dāng)然也可以直接采用浮點(diǎn)數(shù)相乘。開機(jī)會(huì)出現(xiàn)85C那是18B20復(fù)位值4.4.3 不足:此次設(shè)計(jì)沒有處理溫度負(fù)數(shù)情況,如果要處理應(yīng)該判斷最高位符號(hào)位,然后取反加一。18B20可單總線掛多個(gè),這里IO口有剩再加上為了程序設(shè)計(jì)簡單采用了并口方式。5 存儲(chǔ)芯片AT24C02簡單介紹及接口實(shí)現(xiàn)5.1 AT24C02功能描述管腳定義AT24C02是一個(gè)2K位串行CMOS E2PROM, 內(nèi)部含有256個(gè)8位字節(jié),CATALYST公司的先進(jìn)CMOS技術(shù)實(shí)質(zhì)上減少了器件的功耗。AT24C02有一個(gè)16字節(jié)頁寫緩沖器。該器件通過IC總線接口進(jìn)行操作,有一個(gè)專門的寫保護(hù)功能。AT24C02支持IC,總線數(shù)據(jù)傳送協(xié)議IC,總線協(xié)議規(guī)定任何將數(shù)據(jù)傳送到總線的器件作為發(fā)送器。任何從總線接收數(shù)據(jù)的器件為接收器。數(shù)據(jù)傳送是由產(chǎn)生串行時(shí)鐘和所有起始停止信號(hào)的主器件控制的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025大連市現(xiàn)行住宅室內(nèi)裝飾裝修工程合同示本
- 2025年度老舊小區(qū)電力線路改造承包電工合同3篇
- 2025年度個(gè)人銷售傭金合同(含客戶信息保密協(xié)議)4篇
- 2025版新能源汽車停車場(chǎng)委托管理與充電服務(wù)合同3篇
- 2025年度環(huán)保設(shè)施建設(shè)與運(yùn)營采購合同3篇
- 2025年度服裝代加工訂單合同范本4篇
- 二零二五年度體育場(chǎng)館場(chǎng)地租賃合同5篇
- 二零二四年度玉器鑒定評(píng)估與購銷合作協(xié)議3篇
- 2025年個(gè)人門面租賃合同范本(含租賃合同生效條件及法律適用)3篇
- 二零二五年度服務(wù)員健康管理與職業(yè)風(fēng)險(xiǎn)預(yù)防合同3篇
- 三年級(jí)數(shù)學(xué)添括號(hào)去括號(hào)加減簡便計(jì)算練習(xí)400道及答案
- 健康指南如何正確護(hù)理蠶豆病學(xué)會(huì)這些技巧保持身體健康
- 蘇教版五年級(jí)上冊(cè)數(shù)學(xué)簡便計(jì)算300題及答案
- 澳洲牛肉行業(yè)分析
- 老客戶的開發(fā)與技巧課件
- 計(jì)算機(jī)江蘇對(duì)口單招文化綜合理論試卷
- 成人學(xué)士學(xué)位英語單詞(史上全面)
- KAPPA-實(shí)施方法課件
- GB/T 13813-2023煤礦用金屬材料摩擦火花安全性試驗(yàn)方法和判定規(guī)則
- GB/T 33084-2016大型合金結(jié)構(gòu)鋼鍛件技術(shù)條件
- 航道整治課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論