基于51單片機(jī)的溫度控制系統(tǒng)的設(shè)計(jì)_第1頁
基于51單片機(jī)的溫度控制系統(tǒng)的設(shè)計(jì)_第2頁
基于51單片機(jī)的溫度控制系統(tǒng)的設(shè)計(jì)_第3頁
基于51單片機(jī)的溫度控制系統(tǒng)的設(shè)計(jì)_第4頁
基于51單片機(jī)的溫度控制系統(tǒng)的設(shè)計(jì)_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、相品卬。"基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)1 .設(shè)計(jì)要求要求設(shè)計(jì)一個(gè)溫度測量系統(tǒng),在超過限制值的時(shí)候能進(jìn)行聲光報(bào)警。具體設(shè) 計(jì)要求如下:數(shù)碼管或液晶顯示屏顯示室內(nèi)當(dāng)前的溫度;在不超過最高溫度的情況下,能夠通過按鍵設(shè)置想要的溫度并顯示; 設(shè)有四個(gè) 按鍵,分別是設(shè)置鍵、加1鍵、減1鍵和啟動(dòng)/復(fù)位鍵;DS18B20溫度采集;超過設(shè)置值的 石C時(shí)發(fā)出超限報(bào)警,采用聲光報(bào)警,上限報(bào)警用紅燈指示,下 限報(bào)警用黃燈指示,正常用綠燈指示。2 .方案論證根據(jù)設(shè)計(jì)要求,本次設(shè)計(jì)是基于單片機(jī)的課程設(shè)計(jì),由于實(shí)現(xiàn)功能比較簡單, 我們學(xué)習(xí)中接觸到的 51系列單片機(jī)完全可以實(shí)現(xiàn)上述功能,因此可以選用 AT89C51

2、單片機(jī)。溫度采集直接可以用設(shè)計(jì)要求中所要求的DS18B20。報(bào)警和指示模塊中,可以選用3種不同顏色的LED燈作為指示燈,報(bào)警鳴笛采用蜂鳴 器。顯示模塊有兩種方案可供選擇。方案一:使用LED數(shù)碼管顯示采集溫度和設(shè)定溫度;方案二:使用LCD液晶顯示屏來顯示采集溫度和設(shè)定溫度。LED數(shù)碼管結(jié)構(gòu)簡單,使用方便,但在使用時(shí),若用動(dòng)態(tài)顯示則需要不斷 更改位選和段選信號,且顯示時(shí)數(shù)碼管不斷閃動(dòng),使人眼容易疲勞;若采用靜態(tài) 顯示則又需要更多硬件支持。LCD顯示屏可識別性較好,背光亮度可調(diào),而且 比LED數(shù)碼管顯示更多字符,但是編程要求比LED數(shù)碼管要高。綜合考慮之后, 我選用了 LCD顯示屏作為溫度顯示器件,

3、由于顯示字符多,在進(jìn)行上下限警戒 值設(shè)定時(shí)同樣可以采集并顯示當(dāng)前溫度, 可以直觀的看到實(shí)際溫度與警戒溫度的 對比。LCD顯示模塊可以選用 RT1602C。晶晶3 .硬件設(shè)計(jì)根據(jù)設(shè)計(jì)要求,硬件系統(tǒng)主要包含6個(gè)部分,即單片機(jī)時(shí)鐘電路、復(fù)位電路、 鍵盤接口模塊、溫度采集模塊、LCD顯示模塊、報(bào)警與指示模塊。具相互聯(lián)系 如下圖1所示:圖2單片機(jī)內(nèi)部時(shí)鐘方式電路圖3單片機(jī)按鍵復(fù)位電路圖1硬件電路設(shè)計(jì)框圖3.1 單片機(jī)時(shí)鐘電路形成單片機(jī)時(shí)鐘信號的方式有內(nèi)部 時(shí)鐘方式和外部時(shí)鐘方式。本次設(shè)計(jì)采用 內(nèi)部時(shí)鐘方式,如圖2所示。單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別為此放

4、大器的輸入端和輸出 端,其頻率范圍為1.212MHz,經(jīng)由片 外晶體振蕩器或陶瓷振蕩器與兩個(gè)匹配 電容一起形成了一個(gè)自激振蕩電路,為單片機(jī)提供時(shí)鐘源。3.2 復(fù)位電路復(fù)位是單片機(jī)的初始化操作,其作用 是使CPU和系統(tǒng)中的其他部件都處于一 個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工 作,以防止電源系統(tǒng)不穩(wěn)定造成 CPU工 作不正常。在系統(tǒng)中,有時(shí)會(huì)出現(xiàn)工作不 正常的情況,為了從異常狀態(tài)中恢復(fù),同相品卬。"時(shí)也為了系統(tǒng)調(diào)試方便,需要設(shè)計(jì)一個(gè)復(fù)位電路。單片機(jī)的復(fù)位電路有上電復(fù)位和按鍵復(fù)位兩種形式, 因?yàn)楸敬卧O(shè)計(jì)要求需要 有啟動(dòng)/復(fù)位鍵,因此本次設(shè)計(jì)采用按鍵復(fù)位,如圖3。復(fù)位電路主要完成系統(tǒng)的 上

5、電復(fù)位和系統(tǒng)在運(yùn)行時(shí)用戶的按鍵復(fù)位功能。3.3 鍵盤接口模塊本次設(shè)計(jì)需要的按鍵有4個(gè),除去 一個(gè)復(fù)位按鍵外,還有3個(gè)功能按鍵, 因此選擇獨(dú)立式鍵盤。如圖 4,將鍵盤 直接與單片機(jī) P1 口的P1.0、P1.1、P1.2 相連。3個(gè)鍵設(shè)計(jì)思路如下:當(dāng)按下S1 鍵時(shí),系統(tǒng)進(jìn)入上下限警戒值調(diào)整狀 態(tài);當(dāng)?shù)谝淮伟聪耂1鍵時(shí),進(jìn)行上限 警戒值設(shè)定,當(dāng)?shù)诙伟聪?S1鍵時(shí),GNDS1P10S33426PllP12P13P14圖4鍵盤接口模塊進(jìn)行下限警戒值設(shè)定,當(dāng)?shù)谌伟聪?S1鍵時(shí),回到正常工作狀態(tài)。在警戒值調(diào)整狀態(tài)下,按下S2鍵,上下限警戒值加1,按下S3鍵,上下限警戒值減1,正 常工作狀態(tài)下,按下S2

6、和S3鍵無作用。3.4 溫度采集模塊本次設(shè)計(jì)中的溫度傳感器使用的是 DALLAS公司的單總線數(shù)字溫度傳感器DS18B20,這是一種常用的溫度傳感器,具有體積小、硬件開銷低、抗干擾能力 強(qiáng)、精度高的特點(diǎn)。DS18B20采用獨(dú)特的一線接口,具有只需要一條口線通信多點(diǎn)的能力,簡 化了分布式溫度傳感應(yīng)用,無需外部元件??捎脭?shù)據(jù)總線供電,電壓范圍為3.0 V 至5.5V,測量溫度的范圍為-55C至+125 C,在-10C至+85C范圍內(nèi)精度為此5C。溫度傳感器可編程的分辨率為912位,溫度轉(zhuǎn)換為12位數(shù)字格式最大值為 750毫秒,用戶可定義的非易失性溫度報(bào)警設(shè)置,應(yīng)用范圍包括恒溫控制、工業(yè) 系統(tǒng)、消費(fèi)電

7、子產(chǎn)品溫度計(jì)、或任何熱敏感系統(tǒng)。由于 DS18B20是一條口線通信,所以中央微處理器與DS18B20只有一個(gè)一條口線連接。因?yàn)槊恳粋€(gè)DS18B20的包含一個(gè)獨(dú)特的序號,多個(gè) DS18B20可以同時(shí)存在于一條總線,這使得溫度晶名卬。川傳感器放置在許多不同的地方。它的用途很多,包括空調(diào)環(huán)境控制,感測建筑物內(nèi)溫設(shè)備或機(jī)器,并進(jìn)行過程監(jiān)測和控制。hot roxi vii uDSLSB24J Tv-92PiiekjjicLTT71H引腳功能GNO接地DQ數(shù)據(jù)輸入/輸出,對于單線操 作:漏糧開路。當(dāng)工作在寄生 電源模式時(shí)用來提供電源*VDD可選的VDD引腳口工作于寄 生電源模式時(shí)VDD必須接地0NCNCN

8、CGND圖5 DS18B20封裝及弓|腳DS18B20的核心功能是它的直接讀數(shù)字的溫度傳感器。溫度傳感器的精度 為用戶可編程的9、10、11或12位,分別以0.5C, 0.25C, 0.125C和0.0625c 增量遞增。在上電狀態(tài)下默認(rèn)的精度為 12位。DS18B20啟動(dòng)后保持低功耗等待 狀態(tài);當(dāng)需要執(zhí)行溫度測量和 AD轉(zhuǎn)換時(shí),總線控制器必須發(fā)出44h命令。在 那之后,產(chǎn)生的溫度數(shù)據(jù)以兩個(gè)字節(jié)的形式被存儲(chǔ)到高速暫存器的溫度寄存器 中,DS18B20繼續(xù)保持等待狀態(tài)。當(dāng) DS18B20由外部電源供電時(shí),總線控制器 在溫度轉(zhuǎn)換指令之后發(fā)起“讀時(shí)序” ,DS18B20正在溫度轉(zhuǎn)換中返回0,轉(zhuǎn)換結(jié)

9、束返回1。如果DS18B20由寄生電源供電,除非在進(jìn)入溫度轉(zhuǎn)換時(shí)總線被一個(gè) 強(qiáng)上拉拉高,否則將不會(huì)由返回值。在硬彳上,DS18B20與單片機(jī)的連接有兩種方法:一種是VDD接外部電源, GND接地,DQ與單片機(jī)的I/O 口相連;另一種是用寄生電源供電,此時(shí),VDD、 GND接地,DQ接單片機(jī)的I/O 口。無論 是接外部電源還是用內(nèi)部寄生電源,I/O口線要接5kQ左右的上拉電阻。本次設(shè)計(jì)中,采用外部電源方式,其 連接方式如圖6所示。單總線DQ端接單 片機(jī)的P1.7 口,DQ端接一個(gè)4.7k Q的上 拉電阻,這樣單總線DQ在閑置狀態(tài)時(shí)為 高電平。相品卬。川3.5 LCD顯示模塊在本次設(shè)計(jì)中,使用 R

10、T1602c字符型液晶顯示模塊(LCM)來設(shè)計(jì)當(dāng)前溫度 和上下限警戒值的顯示電路。RT1602c字符型液晶顯示模塊是16字X 2行的采用5X7點(diǎn)陣圖形來顯示字 符的液晶顯示器,采用標(biāo)準(zhǔn)的16腳接口,其引腳定義如圖7所示。引腳號引腳名說明引腳號引腳名說明1GND/V ss電源地7D08位雙向數(shù)據(jù)線2Vdd+5V電源8D13Vl液晶顯小偏壓仁號9D24RS數(shù)據(jù)/命令控制,H/L10D35R/W讀/寫控制,H/L11D46E使能端12D515BLA背光源正極13D616BLK背光源負(fù)極14D7圖7 RT1602c的弓|腳定義RT1602c的內(nèi)部結(jié)構(gòu)可以分為3個(gè)部分:LCD控制器、LCD驅(qū)動(dòng)器、LCD

11、 顯示器,其中LCD控制器采用的是HD44780。RT1602c與單片機(jī)的連線如圖8所示LCD L6O2LCD1602口 口一三女考與總臺日宮3區(qū)賓3許po-圖8 RT1602c與單片機(jī)連線相品卬。"LCM的數(shù)據(jù)總線與單片機(jī)的P0 口通過一個(gè)上拉電阻排相連,LCM的三條 控制線RS、RW、EN分別與單片機(jī)的I/O 口 P2.0 P2.1、P2.2相連,第1、2引 腳分別與地、電源相連,第3引腳使用一個(gè)10kQ的可調(diào)電阻對顯示屏的明亮進(jìn) 行調(diào)整。3.6 報(bào)警與指示模塊圖9報(bào)警與指示模塊警與指示電路如圖 9所示,其中綠、紅、黃色指示在本次設(shè)計(jì)中,采用 LED發(fā)光二極管作為系統(tǒng)指 示燈,采

12、用蜂鳴器作為報(bào)警 鳴笛。當(dāng)溫度高于上限警戒 值時(shí),點(diǎn)亮紅色發(fā)光二極管, 蜂鳴器發(fā)出響聲;當(dāng)溫度低 于下限警戒值時(shí),點(diǎn)亮黃色 發(fā)光二極管,蜂鳴器發(fā)出響 聲;溫度在正常范圍內(nèi)時(shí), 點(diǎn)亮黃色發(fā)光二極管。整個(gè)報(bào)燈分別接單片機(jī)P2.0、P2.1、P2.2 口,電平拉低時(shí)點(diǎn)亮 LED,蜂鳴器電路接單 片機(jī)的P2.7 口,電平拉高時(shí)蜂鳴器響。至此便完成了整個(gè)硬件電路的設(shè)計(jì)工作,整個(gè)系統(tǒng)的原理圖見附錄二,系統(tǒng)I/O分配表如下:I/O 口功能說明I/O 口功能說明P0.0P0.7LCM數(shù)據(jù)口P2.1LCM讀/寫控制P1.0P1.3鍵盤輸入P2.2LCM使能P1.7DS18B20溫度采集P2.4P2.6LED心輸

13、出P2.0LCM數(shù)據(jù)/命令控制P2.7報(bào)警信號輸出相品卬。"4 .軟件設(shè)計(jì)單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)中,軟件設(shè)計(jì)占有重要的位置。在本次設(shè)計(jì)中,根據(jù) 功能要求,可以把系統(tǒng)程序劃分為5個(gè)模塊,即主程序模塊、顯示模塊、溫度測 量模塊、鍵盤掃描模塊、其它子程序模塊,如圖10所小。4.1 主程序設(shè)計(jì)等。主程序清單如下,程序流程圖如圖 11所示/*主程序*/void main(void) P1=0xff;P2|=0x70;P2&=0x7f;Temp_set1=90; Temp_set2=10; Delay(500);init_LCD(); init_18B20();Display_str(0,

14、0,str2);Display_str(0,1,str2);Delay(2000);初始化P1 口以便讀入上限報(bào)警溫度初值90下限報(bào)警溫度初值10延時(shí)500ms啟動(dòng)/LCD初始化DS18B20初始化/開機(jī)界面/開機(jī)界面初始化單片機(jī)初始化溫度傳感器初始化顯示模塊r鍵盤掃描讀取溫度1顯小字形轉(zhuǎn)換顯示圖11主程序流程圖主程序的內(nèi)容包括單片機(jī)初始化、相關(guān)部件初始化和一些其它子程序的調(diào)用相品卬。"Display_str(0,0,str0);Display_str(0,1,stU);while(1)Key_scan();/ 掃描鍵盤Read_temp();/ 讀取溫度Change();Displ

15、ay。;/ 顯示Alarm();指示燈與報(bào)警程序Delay(1000);4.2 顯示模塊/*LCD初始化 */圖12顯小程序流程圖顯示程序主要完成的功能是模式、上下限警戒值和測量溫度值的顯示,模塊 中包含LCD初始化、顯示單個(gè)字符子函數(shù)、顯示一個(gè)字符串子函數(shù)。程序流程 圖如圖12所示,LCD初始化程序如下,其它子函數(shù)程序詳見附錄一。void init_LCD(void)P0=0;Delay(15);LCD_Command(0x38,0);Delay(5);LCD_Command(0x38,0);Delay(5);LCD_Command(0x38,0);Delay(5);LCD_Command(

16、0x38,1); /8位數(shù)據(jù)傳送,2行顯示,5*7字形LCD_Command(0x08,1); 關(guān)閉顯示相品卬。"LCD_Command(0x01,1); /清屏LCD_Command(0x06,1); 顯示光標(biāo)右移設(shè)置LCD_Command(0x0c,1); /顯示屏打開,光標(biāo)不顯示不閃爍 4.3 溫度測量模塊溫度測量程序主要功能是讀出數(shù)字溫度傳感器的溫度值。要正確地讀出溫度值必須嚴(yán)格遵守單總線器件的命令序列,否則單總線器件不會(huì)響應(yīng)主機(jī)。單總線器件的命令序列如圖13所示。溫度測量模塊程序流程圖如圖14所示, 程序詳見附錄一。DS18B20初始化程序如下,其它子/*DS18B20初始

17、化 */void init_18B20(void)uchar x=0;DQ=1; /DQ 復(fù)位Delay_us(4); 延時(shí)DQ=0;/將DQ拉低Delay_us(250);附確延時(shí)大于 480usDQ=1;拉高總線Delay_us(40);x=DQ;Delay_us(20);廠1開始初始化發(fā)ROM指令發(fā)功.指令1 F,結(jié)束,/4.4鍵盤掃SH113單總線命令序列圖14溫度測量程序流程圖15所本次設(shè)計(jì)中使用了 4個(gè)按鍵,除了 1個(gè)復(fù)位鍵還有3個(gè)功能鍵,具體功能前面已介紹。鍵盤掃描程序如下,其它子程序詳見附錄一,相關(guān)流程圖如圖示。產(chǎn)*鍵盤掃描 */ void Key_scan(void)ucha

18、r temp;P1=0xff;if(P1!=0xff)Delay(20); 延時(shí)消抖if(P1!=0xff)temp=P1;switch(temp)case 0xfe:Key_set();break;/P1.0按下,功能選擇case 0xfd:Key_inc();break;/P1.1按下,數(shù)字加一case 0xfb:Key_dec();break;/P1.2按下,數(shù)字減一default:break;圖15鍵盤掃描程序流程圖4.5 其它子程序程序中使用的其它子程序,包括延時(shí)子程序、顯示字符轉(zhuǎn)換子程序等,具體 詳見附錄一。5 .仿真分析在本次的設(shè)計(jì)中,使用了 Proteus仿真軟件進(jìn)行了功能測試

19、,具體仿真步驟及分析如下 按照原理圖,從Proteus元件庫中找出對應(yīng)元件,搭建硬件仿真電路,將程序 燒寫到單片機(jī)中,仿真圖見附錄三。(2)點(diǎn)擊運(yùn)行按鈕開始仿真,初始上下限值為 90c和10C,當(dāng)前溫度為25C,當(dāng) 前模式為N正常工作,綠燈亮,蜂鳴器不響,如圖 16。圖16正常模式下仿真圖(3)按下S1鍵,進(jìn)入上限警戒值設(shè)置模式 H,此時(shí)按S2、S3鍵可以進(jìn)行上限值設(shè)定,同時(shí)溫度正常顯示,設(shè)置上限值 80C,如圖17。(4)再次按下S1鍵,進(jìn)入下IM7值物靴暨吧耳匕時(shí)按S2、S3鍵可以進(jìn)行不限值設(shè)定,同時(shí)溫度正常顯示,設(shè)置下限值 20C,如圖18IF二3心曰 i.TjOI i *i-E京E斡T

20、u123 W 與 理-1H F ' P rn4rk圖18下限值設(shè)定仿真圖(5)再次按下S1鍵,返回正常模式N,調(diào)節(jié)DS18B20溫度,測量溫度隨之改變,降低溫度,超過下限值5c以下時(shí),黃燈亮,蜂鳴器報(bào)警,如圖 19 p- iif ua e iq-l- r« nK 1 P> :s-E1 T .MJjHfLou:2ACnodn口t工 i4c圖19下限報(bào)警仿真圖(6)升高溫度,超過上限值5c以上時(shí),黃燈亮,蜂鳴器報(bào)警,如圖 200t wr pjinLr-i fmeEMTEESF季囂門總4相品卬。"按下S4鍵,單片機(jī)復(fù)位。在本次仿真中,可以看出,本次設(shè)計(jì)的硬件電路和軟

21、件程序均能成功仿真出 來,設(shè)計(jì)要求的各種功能均已達(dá)到。相品卬。"6.總結(jié)本次課程設(shè)計(jì)為期一周,到此已全部結(jié)束。回想一周中的設(shè)計(jì)過程,我深深 感覺收獲良多。由于從前只是在理論上學(xué)習(xí)了單片機(jī)以及各種其它知識,即使是實(shí)驗(yàn)也只是按照實(shí)驗(yàn)指導(dǎo)書進(jìn)行操作, 并沒有實(shí)際的獨(dú)立設(shè)計(jì)一個(gè)系統(tǒng),因此在 剛開始接觸本次課程設(shè)計(jì)時(shí),有一點(diǎn)無從下手的感覺。后來通過查閱相關(guān)資料, 漸漸開始了解課程設(shè)計(jì)的一般過程,開始明白一些元器件的相關(guān)作用與編程實(shí)現(xiàn) 方法,并在此期間通過不斷深入的學(xué)習(xí)和鍛煉, 開始漸漸能熟練運(yùn)用和熟練編程 起來。通過本次計(jì)算機(jī)控制技術(shù)的課程設(shè)計(jì),我更深層次的把理論知識和實(shí)際設(shè)計(jì) 結(jié)合在一起,鍛

22、煉了我的綜合運(yùn)用所學(xué)的專業(yè)基礎(chǔ)知識和解決實(shí)際工程問題的能 力。同時(shí)也提升了我查閱文獻(xiàn)資料、設(shè)計(jì)手冊、設(shè)計(jì)規(guī)范以及電腦制圖等其他知 識能力水平。對各種系統(tǒng)的適用條件,各種設(shè)備的選用標(biāo)準(zhǔn),各種管道的安裝方 式,我都是隨著設(shè)計(jì)的不斷深入而逐漸熟悉并學(xué)會(huì)應(yīng)用的。并且,通過對整體的掌控,對局部的取舍,對細(xì)節(jié)的斟酌處理,以及繪圖的技巧都使我在設(shè)計(jì)領(lǐng)域的 能力得到了鍛煉,得到了較豐富經(jīng)驗(yàn)。最后,通過這次的課程設(shè)計(jì),我也深刻地認(rèn)識到,只有將書本與具體的實(shí)踐相結(jié)合,才會(huì)有真正的收獲,才能鞏固自己 的所學(xué),認(rèn)識到自己的不足,同時(shí)我們也要有一種積極學(xué)習(xí)的態(tài)度,時(shí)代在進(jìn)步我們也要跟著時(shí)代前進(jìn),要不斷學(xué)習(xí),不斷創(chuàng)新,用

23、自己的知識與行動(dòng)來證明自 己的價(jià)值。本次課程設(shè)計(jì)以單片機(jī)為核心,介紹了用 DS18B20溫度傳感器進(jìn)行溫度采 集,并將其傳輸給AT89C51單片機(jī)進(jìn)行處理再送到LCD顯示屏顯示。在此期間 可以通過按鍵進(jìn)行上下限警戒值設(shè)置,通過 LED和蜂鳴器進(jìn)行指示和報(bào)警。本 文是采用模塊化的方式進(jìn)行敘述,對各模塊的設(shè)計(jì)進(jìn)行了比較詳細(xì)地闡述, 并著 重分析硬件搭建過程和系統(tǒng)軟件的設(shè)計(jì)過程,使用單片機(jī)C語言進(jìn)行程序沒計(jì)。本次設(shè)計(jì)的基于DS18B20的溫度測量系統(tǒng)是一個(gè)分布式的溫度測量系統(tǒng),它可 以遠(yuǎn)程對溫度實(shí)現(xiàn)測量和監(jiān)控,廣泛應(yīng)用于電力工業(yè)、煤礦、森林、火災(zāi)、高層 建筑等場合。本設(shè)計(jì)應(yīng)用性比較強(qiáng),可以應(yīng)用在倉庫

24、溫度、大棚溫度、機(jī)房溫度、水池等 的監(jiān)控。當(dāng)然,本次設(shè)計(jì)還存在一些不足,例如在本次設(shè)計(jì)中,由于時(shí)間較短, 警戒值只是在199c之間,沒有能夠擴(kuò)展到負(fù)溫度和100c以上;在本次設(shè)計(jì)中 只是用了 4個(gè)獨(dú)立按鍵,實(shí)現(xiàn)簡單的上下限警戒值設(shè)定,操作較麻煩,如果能夠 設(shè)計(jì)出多按鍵的矩陣式鍵盤,則能夠?qū)囟冗M(jìn)行很方便的設(shè)定。此外如果把本設(shè) 計(jì)方案擴(kuò)展為多點(diǎn)溫度控制,加上上位機(jī),則可以實(shí)現(xiàn)遠(yuǎn)程溫度監(jiān)控系統(tǒng), 將具 有更大的應(yīng)用價(jià)值。7.參考文獻(xiàn)1潘新民,王燕芳.微型計(jì)算機(jī)控制技術(shù)M.北京:電子工業(yè)出版社,20142王迎旭.單片機(jī)原理與應(yīng)用M.北京:機(jī)械工業(yè)出版社,20133康華光.電子技術(shù)基礎(chǔ)M.北京:高等教

25、育出版社,20134周正華,唐寧 RT1602c與FPGA接口技術(shù)J.中國科技信息,2008(10)5廖琪梅,韓彬等.基于DS18B20的溫度測量儀J.國外電子元器件,2008(2)相品卬。"附錄一:程序清單#include<reg51.h>#include<intrins.h>#include<absacc.h>#define uchar unsigned char#define uint unsigned int#define BUSY 0x80void Delay(uint);void init_LCD(void);void LCD_Comm

26、and(uchar,uchar);void LCD_Data(uchar);void ReadyLCD(void);void Display_char(uchar,uchar,uchar);void Display_str(uchar,uchar,uchar code *Data);void Change(void);void Display(void);void init_18B20(void);uchar Read_18B20(void);void Write_18B20(uchar);void Read_temp(void);void Delay_us(uchar i);void Key

27、_scan(void);void Key_set(void);void Key_inc(void);void Key_dec(void);void Alarm(void);sbit LCD_RS=P2A0;sbit LCD_RW=P2A1;sbit LCD_EN=P2A2;sbit DQ=P1A7;sbit Normal=P2A4;sbit Alarm_H=P2A5;sbit Alarm_L=P2A6;sbit Alarm_BEEP=P2A7;uchar Set_flag=0;uchar Temp_mea,Temp_set1,Temp_set2;uchar Temp_high_1,Temp_h

28、igh_2;uchar Temp_low_1,Temp_low_2;uchar Temp_true_1,Temp_true_2;extern uchar code str0="High: C Low: C"extern uchar code str1="Mode:Deg: C"extern uchar code str2=" Hellow! "extern uchar code str3="0123456789"extern uchar code mode""NHL"/*主程序*/vo

29、id main(void)P1=0xff;P2|=0x70;上限報(bào)警溫度初值90P2&=0x7f;Temp_set1=90;相品卬。"Temp_set2=10;下限報(bào)警溫度初值10Delay(500);/ 延時(shí) 500ms 啟動(dòng)init_LCD();/LCD 初始化init_18B20();/DS18B20 初始化Display_str(0,0,str2);/ 開機(jī)界面Display_str(0,1,str2);/ 開機(jī)界面Delay(2000);Display_str(0,0,str0);Display_str(0,1,str1);while(1) Key_scan();/

30、 掃描鍵盤Read_temp();/ 讀取溫度Change(); Display。;/ 顯示Alarm();指示燈與報(bào)警程序Delay(1000); void Delay(uint k)/*延時(shí) kms*/uint i,j;for(i=0;i<k;i+)for(j=0;j<60;j+)/*顯示模塊*/*LCD 初始化 */ void init_LCD(void)P0=0;Delay(15);LCD_Command(0x38,0);Delay(5);LCD_Command(0x38,0);Delay(5);LCD_Command(0x38,0);Delay(5);LCD_Comman

31、d(0x38,1); /8位數(shù)據(jù)傳送,2行顯示,5*7字形LCD_Command(0x08,1); 關(guān)閉顯示LCD_Command(0x01,1); /屏LCD_Command(0x06,1); 顯示光標(biāo)右移設(shè)置LCD_Command(0x0c,1); /顯示屏打開,光標(biāo)不顯示不閃爍 void LCD_Command(uchar LC,uchar BC) /*寫指令數(shù)據(jù)至I LCD*/if(BC) ReadyLCD();P0=LC;LCD_RS=0;/選中指令寄存器LCD_RW=0; / 寫模式LCD_EN=1;_nop_();_nop_();_nop_();LCD_EN=0;/* 寫顯示數(shù)據(jù)

32、至I LCD*/ void LCD_Data(uchar LD)ReadyLCD();P0=LD;LCD_RS=1;/選中數(shù)據(jù)寄存器LCD_RW=0;/寫模式LCD_EN=1;_nop_();_nop_();_nop_();LCD_EN=0;/* 檢測 LCD忙狀態(tài) */ void ReadyLCD(void)P0=0xff;LCD_EN=1;LCD_RS=0;LCD_RW=1;_nop_();相品卬。"相品卬。"while(P0&BUSY)LCD_EN=0;_nop_();_nop_();LCD_EN=1;_nop_();_nop_();LCD_EN=0;/*顯示

33、一個(gè)字符*/void Display_char(uchar X,uchar Y,uchar Data) Y&=0x01;X&=0x0f;if(Y) X|=0x40;X|=0x80;LCD_Command(X,0);LCD_Data(Data); void Display_str(uchar X,uchar Y,uchar code *Data) /*顯示一串字符*/uchar List=0;Y&=0x01;X&=0x0f;while(X<16)Display_char(XDataList);List+;X+;/* 顯示字型轉(zhuǎn)換*/void Change(v

34、oid)Temp_high_1=Temp_set10;Temp_high_2=Temp_set1%10;Temp_low_1=Temp_set210;Temp_low_2=Temp_set2%10;Temp_true_1=Temp_mea/10;Temp_true_2=Temp_mea%10;/*顯示子程序*/void Display(void)Display_char(5,0,str3Temp_high_1);Display_char(6,0,str3Temp_high_2);Display_char(13,0,str3Temp_low_1);Display_char(14,0,str3Te

35、mp_low_2);Display_char(5,1,modeSet_flag);Display_char(13,1,str3Temp_true_1);Display_char(14,1,str3Temp_true_2);/*溫度測量模塊*/*DS18B20 初始化 */void init_18B20(void)uchar x=0;DQ=1;/DQ復(fù)位Delay_us(4);/延時(shí)DQ=0;將DQ拉低Delay_us(250);精確延時(shí)大于480usDQ=1;/拉高總線Delay_us(40);x=DQ;Delay_us(20);/* 從 DS18B20gt取一個(gè)字節(jié)數(shù)據(jù) */ uchar R

36、ead_18B20(void)uchar i=0;uchar dat=0;for(i=8;i>0;i-)DQ=0;_nop_();dat>>=1;DQ=1;Delay_us(1);相品卬。"if(DQ) dat|=0x80;Delay_us(10);return(dat);/* 向DS18B20寫入一個(gè)字節(jié)數(shù)據(jù)*void Write_18B20(uchar dat)uchar i=0;for(i=8;i>0;i-)DQ=0;_nop_();DQ=dat&0x01;Delay_us(10);DQ=1;dat>>=1;Delay_us(10);

37、/* 從 DS18B20gt取溫度 *void Read_temp(void)uchar a=0;uchar b=0;uchar t=0;相品卬。"init_18B20();Write_18B20(0xcc);Write_18B20(0x44);init_18B20();Write_18B20(0xcc);Write_18B20(0xbe);a=Read_18B20();b=Read_18B20();t=b;t<<=8;t二t|a; Temp_mea=t*(0.0625);/* 精確延時(shí) */void Delay_us(ucha門)while(-i);/*鍵盤掃描程序*/void Key_scan(void)uchar temp;P1=0xff;if(P1!=0xff)Delay(20); 延時(shí)消抖if(P1!=0xff)temp=P1;switch(t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論