單片機(jī)課程設(shè)計(jì):八路溫度巡回檢測系統(tǒng)_第1頁
單片機(jī)課程設(shè)計(jì):八路溫度巡回檢測系統(tǒng)_第2頁
單片機(jī)課程設(shè)計(jì):八路溫度巡回檢測系統(tǒng)_第3頁
單片機(jī)課程設(shè)計(jì):八路溫度巡回檢測系統(tǒng)_第4頁
單片機(jī)課程設(shè)計(jì):八路溫度巡回檢測系統(tǒng)_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 課 程 設(shè) 計(jì)八路溫度巡回檢測系統(tǒng) 院 (系): XXXXXX學(xué)院 專 業(yè): XXXXXX 學(xué) 號(hào): XXXXXXX 學(xué)生姓名: XXX 指導(dǎo)老師: XXX 摘要:本文介紹了一種基于PIC16F877A單片機(jī),利用DS18B20對(duì)多路溫度采集,并進(jìn)行溫度的控制與檢測,并通過12864液晶顯示出來。系統(tǒng)中通過控制按鈕實(shí)現(xiàn)了實(shí)時(shí)各路的報(bào)警溫度,并且實(shí)現(xiàn)多路與任一單路溫度顯示切換,從而既可以進(jìn)行多路的檢測又可以進(jìn)行任一單路的監(jiān)控,而且還有數(shù)字跟圖形兩種顯示方式更為直觀。在溫度超過設(shè)定溫度時(shí)溫度跟時(shí)間通過24C02存儲(chǔ)起來,以便查看,同時(shí)可以通過固定電話遠(yuǎn)程報(bào)警,還能將溫度上傳至PC機(jī),進(jìn)行后續(xù)處理

2、。關(guān)鍵詞:溫度檢測;單片機(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)224.1

3、 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與PC串口通訊

4、及VB上位機(jī)簡單介紹388.1 與PC串口通信388.2 上位機(jī)介紹399 總結(jié)43附錄44 部分原理圖:44 參考文獻(xiàn):45基于PIC單片機(jī)的多路溫度監(jiān)控巡回系統(tǒng)1 系統(tǒng)設(shè)計(jì)在工業(yè)生產(chǎn)和日常生活中,經(jīng)常要對(duì)溫度進(jìn)行測量與控制,并且有時(shí)是對(duì)多個(gè)點(diǎn)進(jìn)行溫度測量,比如冷庫溫度監(jiān)控、環(huán)境溫度監(jiān)測、農(nóng)業(yè)溫室監(jiān)控、糧庫溫度監(jiān)控等。在這種情況下,多點(diǎn)溫度檢測系統(tǒng)應(yīng)運(yùn)而生。多點(diǎn)溫度檢測系統(tǒng)通常能夠?qū)Χ鄠€(gè)工作點(diǎn)的溫度進(jìn)行檢測,顯示當(dāng)前溫度,并能夠?qū)囟冗M(jìn)行存儲(chǔ)和報(bào)警,還能將溫度上傳至PC機(jī),進(jìn)行后續(xù)處理。傳統(tǒng)的測溫元件有熱電偶和熱電阻,需很多硬件支持并且電路復(fù)雜。本文將設(shè)計(jì)一款由新型的數(shù)字溫度傳感器DS18B

5、20配合單片機(jī),具有溫度檢測、顯示、存儲(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溫度檢測范圍 : -55+125B測量精度 : 0.0625C 顯示方式: LCD12864顯示D 報(bào)警方式: 固話報(bào)警2 主芯片:PIC16F877A

6、單片機(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)驅(qū)動(dòng)能力強(qiáng)

8、: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引腳圖 圖 2

9、.2 -2 PIC16F877A實(shí)物圖主要性能參數(shù)如下所示:l 具有高性能RISC CPUl 僅有35條單字指令l 100000次擦寫周期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行顯示顏色:黃綠顯示

13、角度:6:00鐘直視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ù)

14、715PSBH/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

15、char x)chk_busy(); /檢測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() ; /檢測LCD是否工作繁忙TRISD=0XFF; /設(shè)置PD口為輸入狀態(tài) PORTD = 0xff ; /PD初始化為高電

16、平 rs=1; / 讀置高 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 DB0LLLLLLLL

17、HX功能:把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 D

18、B5 DB4 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 R

19、S DB7 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ì)

20、數(shù)器(AC)的值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: R

23、W RS DB7 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”位元,否則使用相同指

24、令集時(shí),不需每次重設(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è)液晶屏幕

25、上畫圖參 數(shù):無返回值 :無*/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 < 16;k+) send_d(*ptr+); send_i(0x36); /打開繪圖顯

26、示send_i(0x30); /回到基本指令集3.5.2 漢字顯示坐標(biāo) X坐標(biāo)Line180H81H82H83H84H85H86H87HLine290H91H92H93H94H95H96H97HLine388H89H8AH8BH8CH8DH8EH8FHLine498H99H9AH9BH9CH9DH9EH9FH/* 名 稱: writelcd()* 功 能: 在LCD上顯示字符串* 入口參數(shù):const unsigned char *pt 字符串的首地址*/void writelcd(const unsigned char *pt) while(*pt)/檢測是否達(dá)到了字符串最后 send_d(

27、*pt+); /發(fā)送數(shù)據(jù)給lcd/ 應(yīng)用如下const uchar table1 =" 基PIC 單片機(jī)"const uchar table2 =" 多路溫度" const uchar table3 =" 巡回檢測系統(tǒng)" const uchar table4 ="2009年12月01日"send_i(0x80); / 定位在第一行writelcd(table1); / 寫:基PIC 單片機(jī)send_i(0x90); / 定位在第二行writelcd(table2); / 寫:多路溫度send_i(0x88); /

28、定位在第三行writelcd(table3); / 寫:巡回檢測系統(tǒng)send_i(0x98); / 定位在第四行writelcd(table4); / 寫:2009年12月01日3.6 與單片機(jī)的接口實(shí)現(xiàn)12864液晶的電路連線圖如圖3.6 -1所示,實(shí)物位置如圖3.6 -2所示 圖 3.6 -1 12864液晶電路連接圖 圖 3.6 -2 12864液晶模塊實(shí)物圖3.7 設(shè)計(jì)心得總結(jié)LCD12864與1602相比需要較大的電流驅(qū)動(dòng),如果出現(xiàn)圖片模糊不清晰或者灰暗,除了檢查背光燈外應(yīng)考慮電源問題。最好采用大于5V的電源,經(jīng)7805穩(wěn)壓管穩(wěn)壓驅(qū)動(dòng),以保證電流?;掘?qū)動(dòng)跟1602相似難度不大。中文

29、及圖像顯示是12864最大的特點(diǎn)也是難點(diǎn),主要是指令較多,還有就是圖像驅(qū)動(dòng)需要了解液晶內(nèi)部原理。整屏畫圖可以使用PCtoLCD2002把圖片轉(zhuǎn)換成16進(jìn)制數(shù),局部畫曲線、直線、圓等需要一些算法,比較復(fù)雜4 DS18B20原理介紹及接口實(shí)現(xiàn)4.1 DS18B20簡介DS18B20是DALLAS半導(dǎo)體公司推出的第一片支持“一線總線”接口的溫度傳感器,他它具有微型化、低功耗、高性能、抗干擾能力強(qiáng)、易配微處理器等優(yōu)點(diǎn),可直接將溫度轉(zhuǎn)化成串行數(shù)字信號(hào)供處理器處理。DS18B20具有以下優(yōu)點(diǎn):(1) 適應(yīng)電壓范圍寬,電壓范圍在3.0V5.5V,在寄生電源方式下可由數(shù)據(jù)線供電。(2) 獨(dú)特的單線接口方式,與

30、微處理器連接時(shí)只需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通信。(3) 支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測溫。(4) 在使用中不需要任何外圍元件,全部傳感元件以及轉(zhuǎn)換電路集成在形如一直三極管的集成電路內(nèi)。(5) 測溫范圍-55+125,在-10+85時(shí)進(jìn)度為±0.5(6) 可編程分辨率為912位,對(duì)應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實(shí)現(xiàn)高精度測溫。(7) 負(fù)壓特性。電源極性接反時(shí),芯片不會(huì)因?yàn)檫^熱而燒毀,但不能正常工作。4.2 DS18B20結(jié)構(gòu)及其工作原理圖4.1DS18B20內(nèi)部結(jié)構(gòu)圖DS18B20的

31、內(nèi)部結(jié)構(gòu)圖如圖4.1所示。由此我們可以看出DS18B20主要由4部分組成:64位ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列如圖4.2所示,其中DQ為數(shù)字信號(hào)輸入輸出端;GND為電源地;VDD為外接供電電源輸入端,在寄生電源接線方式時(shí)接地。圖4.2 DS18B20引腳和封裝每顆DS18B20在出廠前都有一個(gè)64位光刻ROM,它可以看作該DS18B20的地址序列碼。其各位排列順序是:開始8位為產(chǎn)品類型標(biāo)號(hào),接下來48位是該DS18B20自身的序列號(hào),最后8位是前面56位的CRC循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個(gè)

32、DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一條總線 掛接多個(gè)DS18B20的目的。由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對(duì)讀寫的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:復(fù)位時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。(1) DS18B20的復(fù)位時(shí)序:圖4.3 DS18B20復(fù)位時(shí)序圖程序?qū)崿F(xiàn)如下:/* 名 稱:rese

33、t() * 功 能:18b20復(fù)位*/#define DQ RB7#define DQ_HIGH() TRISB7=1#define DQ_LOW() TRISB7=0;DQ=0void reset()uchar st=1;DQ_HIGH(); / 先拉至高電平NOP();NOP();while(st)DQ_LOW(); / 低電平delayus(70,30); / 延時(shí)503usDQ_HIGH(); /釋放總線等電阻拉高總線delayus(4,4); /延時(shí)60usif(DQ=1) /沒有接收到應(yīng)答信號(hào),繼續(xù)復(fù)位st=1;else /接收到應(yīng)答信號(hào)st=0;delayus(50,10); /

34、延時(shí)430us(2) DS18B20的讀時(shí)序:對(duì)于DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過程。 對(duì)于DS18B20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15uS之內(nèi)釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個(gè)讀時(shí)序過程,至少需要60us才能完成。圖4.4 DS18B20讀時(shí)序圖/* 名 稱:read_byte() * 功 能:18b20讀字節(jié)* 出口參數(shù):讀出18B20的內(nèi)容*/uch read_byte()uch i;uch value = 0; /讀出溫度static bit j;for (i = 8;i > 0;i-)value >&g

35、t;= 1;DQ_LOW();NOP();NOP();NOP();NOP();NOP();NOP(); /6usDQ_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總線上的

36、“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線。 圖4.5 DS18B20寫時(shí)序圖/* 名 稱: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,

37、 7); /延時(shí)63usDQ_HIGH();NOP();NOP();val = val >> 1; /右移一位DS18B20內(nèi)部帶有共9個(gè)字節(jié)的高速暫存器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位

38、ROM編碼,訪問總線上與該編碼對(duì)應(yīng)的芯片搜索ROMF0H用于確定掛接在同一總線上DS18B20的個(gè)數(shù)跳過ROMCCH忽略64位ROM地址,直接向DS18B20發(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ù)在高速

39、暫存器RAM的第0和第1個(gè)字節(jié)中的存儲(chǔ)格式如下表4所示。表4 DS18B20溫度數(shù)據(jù)存儲(chǔ)格式位7位6位5位4位3位2位1位0232221202-12-22-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便為所測的實(shí)際溫度值。另外,還需要判斷溫度的正負(fù)。前5個(gè)數(shù)字為符號(hào)位,這5位同時(shí)變化,我們只需要判斷11位就可以了。前5位為1時(shí),讀取的溫度為負(fù)值,且測到的數(shù)值需要取反加1再乘以0.062

40、5才可得到實(shí)際溫度值。前5位為0時(shí),讀取的溫度為正值,且溫度為正值時(shí),只要將測得的數(shù)值乘以0.0625即可得到實(shí)際溫度值。考慮到實(shí)際使用的需要,在這里我們只使用一個(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;n

41、um>0;num-) /確保溫度轉(zhuǎn)換完成所需要的時(shí)間reset(); /再次復(fù)位,等待從機(jī)應(yīng)答write_byte(0xCC); /忽略ROM匹配write_byte(0xBE); /發(fā)送讀溫度命令tem1=read_byte(); /讀出溫度低8tem2=read_byte(); /讀出溫度高8位shu=(tem2<<4|tem1>>4); /溫度整數(shù)部分aaa=(tem2*256+tem1)*6.25; /溫度小數(shù)部分temper=(int)aaa; /強(qiáng)制轉(zhuǎn)換成整型a1=temper/1000; /取溫度十位a2=temper%1000/100; /取個(gè)位a

42、3=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)板硬件圖如圖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的

43、溫度并實(shí)時(shí)顯示到LCD12864上,分辨率為0.0625。由于DS18B20對(duì)時(shí)序要求很嚴(yán)格,所以在程序設(shè)計(jì)時(shí),時(shí)序要多加注意一點(diǎn),不過數(shù)字不是死的,只要控制合理控制也不是掃描大問題。 DS18B20首次初始化時(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í),速度要快,如果高溫的電

44、烙鐵持續(xù)接觸傳感器很容易燒掉DS18B20,因?yàn)殡娎予F一般溫度為350 450度,而傳感器承受溫度為125度。我曾經(jīng)因此燒壞了兩個(gè)傳感器,得此痛訓(xùn)!4.4.2 軟件設(shè)計(jì):DS18B20時(shí)序要求較為嚴(yán)格,這里的嚴(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論