模擬自動恒溫控制系統(tǒng)5_第1頁
模擬自動恒溫控制系統(tǒng)5_第2頁
模擬自動恒溫控制系統(tǒng)5_第3頁
模擬自動恒溫控制系統(tǒng)5_第4頁
模擬自動恒溫控制系統(tǒng)5_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 成績課程設計報告題 目: 模擬自動恒溫控制系統(tǒng)設計 學生姓名: 李躍波 學生學號: 0908020119 系 別: 電氣信息工程學院自動化系 專 業(yè): 自動化 屆 別: 2013屆 指導教師: 苗磊 電氣信息工程學院制2012年5月淮南師范學院電氣信息工程學院2013屆自動化專業(yè)課程設計報告模擬自動恒溫控制系統(tǒng)設計學生:李躍波 指導老師:苗磊 電氣信息工程學院自動化系1課程設計的任務與要求 1.1課程設計的任務 恒溫控制系統(tǒng)在現(xiàn)今的生活中有很多應用,比如自動保溫水壺,熱水器豹紋系統(tǒng),醫(yī)院恒溫箱等等。無論怎樣應用,其設計的內涵都是基本一樣的。本次設計通過測溫元件獲取測試對象的實時溫度,并把轉換

2、成數(shù)字值的溫度值送入微控制器,然后由微控制器檢查其是否與標準溫度一致;不一致,則啟動相應的升溫或降溫器件工作。當溫度回到正常的標準溫度時,溫度調整的器件停止工作。如此一來,就可以實現(xiàn)溫度的自動調節(jié)。 1.2 課程設計的要求 通過測溫元件獲取實時溫度和標準溫度做比較,進而進行調節(jié)溫度使其基本保持在某一個設置的溫度范圍之內。即高于標準溫度時,啟動相應的電機,帶動風扇轉動,進而降溫。溫度低于標準溫度時,啟動相應的加熱絲,升高溫度。這就是設計的基本要求。 1.3 課程設計的研究基礎調節(jié)反饋控制原理。通過實時溫度與標準溫度值的偏差進行控制的過程。2 模擬自動恒溫控制系統(tǒng)方案制定 2.1 方案提出方案一:

3、測溫元件采用熱敏電阻,但是實際處理時,需要增加模擬/數(shù)字轉換電路。 圖1 采用熱敏電阻的電路原理圖 方案二:測溫元件采用DS18B20。此元件能夠將溫度值轉換成數(shù)字值,性價比高。減少了硬件設計的成本,同時也減少了設計上的難度。圖2 采用DS18B20的溫度控制系統(tǒng)原理圖2.2 方案比較 方案二測溫元件選擇DS18B20,此元件可以自動將溫度值轉化成數(shù)字值。方案一測溫元件選擇熱敏電阻,熱敏電阻價格高,不線性,需要復雜的恒流源伺服電路。硬件電路上必須要增加轉換電路。2.3 方案論證 通過以上倆個方案對比,選擇方案二。因為他采用的測溫元件是DS18B20。自動實現(xiàn)將溫度值轉換成數(shù)字值。降低硬件設計的

4、難度,節(jié)約了成本。2.4 方案選擇選擇方案二3模擬自動恒溫控制系統(tǒng)方案設計 3.1各單元模塊功能介紹及電路設計 溫度采集電路:采用DS18B20,此元件能自動將溫度值轉換成數(shù)字信息,且性價比非常高。顯示管:溫度值的顯示分為倆個部分,其一為實時溫度值的顯示, 其二為設置的標準溫度值的顯示。因此,設計時可考慮采用LCD將倆種數(shù)據(jù)同屏顯示,也考慮采用多位16段數(shù)碼管來分別顯示倆種溫度值數(shù)據(jù)。這里采用前一種設計方法。單片機選擇采用AT80C51。 溫度設置電路:通過按鈕,設置標準的溫度范圍。 顯示電路:采用液晶顯示屏。3.2電路參數(shù)的計算及元器件的選擇 VDD:5V LCD外接驅動電壓為-5.0-14

5、.0V。 采用的元件有DS18B20,單片機AT89C51等。3.3 特殊器件的介紹 測溫元件及溫度值轉換方面的設計。雖然目前一些測溫系統(tǒng)中有些是采用如熱敏電阻或模擬典雅輸出的溫度傳感器等測溫元件,但實際這樣處理時,硬件電路上就必須增加模擬或數(shù)字轉換電路。DS18B20數(shù)字是溫度傳感器能自動將溫度值轉換成數(shù)字信息,且性價比非常高。3.4 系統(tǒng)整體電路圖圖3 系統(tǒng)未啟動的狀態(tài)圖4 模擬自動恒溫控制系統(tǒng)仿真和調試 4.1 仿真軟件介紹 本次設計采用Keil,Proteus兩種軟件。通過編譯軟件Keil編寫程序并生成.HEX文件,然后在Proteus中畫好硬件電路圖,調用HEX文件進行虛擬仿真。Pr

6、oteus是多功能的EDA軟件,真正實現(xiàn)了虛擬物理原型功能,在目標板還沒投產前,就可以對設計的硬件系統(tǒng)的功能、合理性和性能指標進行充分調整,并可以在沒有硬件電路的情況下,進行相應的程序設計與調試,可由仿真原理圖直接到處繪制成印制電路板134。 4.2 系統(tǒng)仿真實現(xiàn) 打開Keil程序,執(zhí)行菜單命令“Project”-“New Project”創(chuàng)建“模擬自動恒溫控制系統(tǒng)的設計”項目,并選擇單片機型號AT89C51。 執(zhí)行菜單命令“File”-“New”創(chuàng)建文件,輸入?yún)R編源程序,保存為“模擬控制系統(tǒng)的設計.ASM”。在Project欄的File項目管理窗口中右擊文件組,選擇“Add File to

7、Grounp Source Grounp1”,將源程序“模擬自動控制系的設計.ASM”添加到項目中。 執(zhí)行菜單命令“Project”-“Options for Target 1”,在彈出的對話框中選擇“Output”選項卡,選中“Greate HEX File”。在“Debug”選項卡,選中“Use:Proteus VSM Simulator”。 行菜單命令“File”-“Build Target”,編譯源程序。如果編譯成功,則在“Output Windows”窗口中顯示沒有錯誤,并創(chuàng)建了“模擬自動恒溫控制系統(tǒng)的設計.HEX”文件。在已繪制好的原理圖Proteus ISIS菜單欄中,執(zhí)行執(zhí)行菜

8、單命令“Debug”-“Use Remote Debug Monitor將該項選中”,使Proteus與Keil真正連接起來,使他們聯(lián)合調試。下圖是系統(tǒng)剛開機沒有進行操作時的工作狀態(tài)圖25。 圖4 系統(tǒng)未運行時的狀態(tài)圖在Keil中執(zhí)行菜單命令“Debug”-“Start/Stop Debug Session”,進入Keil調試環(huán)境。同時,在Proteus ISIS窗口中可看出Protues也進入了程序調試狀態(tài)。下圖是系統(tǒng)運行后的狀態(tài)圖。圖5 系統(tǒng)運行狀態(tài)圖 4.3 系統(tǒng)測試 常溫情況下,PC電腦一臺,proteus軟件,保持在5至26度之間。 4.4 數(shù)據(jù)分析 數(shù)據(jù)表明,測試的溫度與實時溫度相

9、差不大,保持在規(guī)定的溫度范圍之內。表明此系統(tǒng)符合規(guī)定的設計要求。5 總結 5.1 設計小結 本次設計以經典低廉的單片機作為微控制器,設計了智能化高等特點模擬自動恒溫控制系統(tǒng)。運用了很多知識點。因此要完成課程設計,必須要對知識點進行一個回顧和體會。 5.1 收獲體會 本次設計,對proteus這門課目有了更深層次的理解和運用。在編輯程序時需要全神貫注,不然很容易犯低級錯誤,打錯字符等。在設計過程中,我感觸最深的是查閱大量的資料。為了讓自己的單片機課程設計更加完美,查閱資料時十分必要的,同時也是必不可少的。我們做課程設計,一切都要有據(jù)可依,有理可導,不切實際的構想只能是構想。 5.2 展望 單片機

10、是目本文結合實際應用介紹了用AT89C51單片機實現(xiàn)模擬恒溫控制系統(tǒng)設計的工作原理,以及硬、軟件的設計方法及實現(xiàn)過程。本文重點論述實驗室恒溫控制系統(tǒng)控制電路的設計,主要是硬件電路的設計過程及軟件的實現(xiàn)。對于單片機應用與控制領域,實現(xiàn)工業(yè)生產過程自動化和管理現(xiàn)代化有一定的普遍意義。前控制系統(tǒng)采用最多的器件和芯片,單片機的廣泛應用及其產生的效益令人矚目,在將來的各個領域里,將有著廣闊的應用前景。本設計的優(yōu)缺點在軟件方面:我們采用模塊化編程,思路清晰,使程序簡潔、可移植性強。6參考文獻1 樓然苗,等. 51系列單片機設計實例M.北京航空航天出版社,2003.3 2 何立民,等.單片機高級教程.北京航

11、空航天大學出版社,20013 趙曉安,等.MCS-51單片機原理及應用.天津大學出版社,2001.34 肖洪兵,等.跟我學用單片機.北京航空航天大學出版社,2002.8 5 夏繼強,等.單片機實驗與實踐教程.北京航空航天大學出版社,2001 7附錄7.1 系統(tǒng)主要功能展示圖圖6 系統(tǒng)運行狀態(tài)圖7.2 器件清單主要元件名稱器件個數(shù)AT89C51124C0241DS18B201BUTTON3CRYSTAL1CAP2RELAY1NPN1OPPTOCOUPLED-NPN1LED-RED1MOTOR1RESPACK-81RES573 C程序如下:/* 模擬自動恒溫控制系統(tǒng),有所謂的自動功能*/#incl

12、ude#include#include #define uchar unsigned char#define uint unsigned int#define BUSY 0x80 /lcd忙檢測標志#define DATAPORT P0 /定義P0口為LCD通訊端口sbit P1_4=P14; /時鐘調整sbit P1_5=P15; /時鐘加sbit P1_6=P16; /時鐘減sbit DQ = P17; /定義ds18b20通信端口 sbit LCM_RS=P20;/數(shù)據(jù)/命令端sbit LCM_RW=P21;/讀/寫選擇端sbit LCM_EN=P22; /LCD使能信號sbit sda

13、=P23; /IO口定義sbit scl=P24; sbit OUT=P37;/控制繼電器的閉合與否sbit IN=P26;/發(fā)光二極管控制uchar seconde=0; /定義并初始化時鐘變量uchar minite=0;uchar hour=12;uchar mstcnt=0;uchar temp1,temp2,temp; /溫度顯示變量uchar t,set;/工作模式setuchar TEMH;/溫度閾值uchar TEML;bit outflag; /溫度上溢出bit inflag; /溫度下溢出bit write=0; /寫入24c02標志位bit decide=0; /小數(shù)判斷

14、位uchar code str0=L: C H: C ; /第一行顯示uchar code str1=N: . C : : ; /第二行顯示uchar code str2= ERROR ACTION ; /錯誤操作/LCD的函數(shù)定義void delay_LCM(uint); /LCD延時子程序void initLCM( void); /LCD初始化子程序void lcd_wait(void); /LCD檢測忙子程序void WriteCommandLCM(uchar WCLCM, uchar BusyC); /寫指令到ICM子函數(shù)void WriteDataLCM(uchar WDLCM);

15、/寫數(shù)據(jù)到LCM子函數(shù)void DisplayOneChar(uchar X,uchar Y,uchar DData); /顯示指定坐標的一個字符子函數(shù)void DisplayListChar(uchar X,uchar Y,uchar code *DData); /顯示指定坐標的一串字符子函數(shù) /定時器函數(shù)定義void init_timer0(void); /定時器初始化/顯示操作void displayfun1(void);/正常情況顯示內容void displayfun2(void);/設置小時時候光標閃動void displayfun3(void);/設置分鐘時候光標閃動void di

16、splayfun4(void);/設置上限溫度時候光標閃動void displayfun5(void); /設置下限溫度時候光標閃動void keyscan(void ); /鍵盤掃描子程序void set_adj(void);/調整溫度、時鐘子程序void inc_key(void);/加法調整void dec_key(void); /減法調整/ds18b02void delay_18B20(unsigned int i);/18b20延時void Init_DS18B20(void) ;/初始化uchar ReadOneChar(void);/18b20讀一個字節(jié)void WriteOne

17、Char(unsigned char dat);/18b20寫一個字節(jié)void ReadTemperature(void);/18b20讀環(huán)境溫度/24c02void delay1(uchar);/24c02延時void start(void);/開啟void stop(void);/停止void writex(uchar);/寫字節(jié)uchar readx(void);/讀字節(jié)void clock(void);/時鐘uchar x24c02_read(uchar);/從某個地址讀數(shù)據(jù)void x24c02_write(uchar,uchar);/向某個地址寫數(shù)據(jù)void flash(void)

18、;/相當于一個延時void write24c02(void);/24c02寫操作void panduan(void);/判斷溫度有沒越限/*延時K*1ms,12.000mhz*/void delay_LCM(uint k) uint i,j; for(i=0;ik;i+) for(j=0;j60;j+) ; /*寫指令到ICM子函數(shù)*/void WriteCommandLCM(uchar WCLCM,uchar BusyC) if(BusyC)lcd_wait();DATAPORT=WCLCM; LCM_RS=0; / 選中指令寄存器 LCM_RW=0; / 寫模式 LCM_EN=1; _no

19、p_(); _nop_();_nop_(); LCM_EN=0; /*寫數(shù)據(jù)到LCM子函數(shù)*/void WriteDataLCM(uchar WDLCM) lcd_wait( ); /檢測忙信號 DATAPORT=WDLCM; LCM_RS=1; / 選中數(shù)據(jù)寄存器 LCM_RW=0; / 寫模式 LCM_EN=1; _nop_();_nop_();_nop_(); LCM_EN=0;/*lcm內部等待函數(shù)*/void lcd_wait(void) DATAPORT=0xff; LCM_EN=1; LCM_RS=0; LCM_RW=1; _nop_(); while(DATAPORT&BUSY

20、) LCM_EN=0; _nop_(); _nop_(); LCM_EN=1; _nop_(); _nop_(); LCM_EN=0;/*LCM初始化子函數(shù)*/void initLCM( ) DATAPORT=0;delay_LCM(15);WriteCommandLCM(0x38,0); /三次顯示模式設置,不檢測忙信號 delay_LCM(5); WriteCommandLCM(0x38,0); delay_LCM(5); WriteCommandLCM(0x38,0); delay_LCM(5); WriteCommandLCM(0x38,1); /8bit數(shù)據(jù)傳送,2行顯示,5*7字型

21、,檢測忙信號 WriteCommandLCM(0x08,1); /關閉顯示,檢測忙信號 WriteCommandLCM(0x01,1); /清屏,檢測忙信號 WriteCommandLCM(0x06,1); /顯示光標右移設置,檢測忙信號 WriteCommandLCM(0x0c,1); /顯示屏打開,光標不顯示,不閃爍,檢測忙信號/*顯示指定坐標的一個字符子函數(shù)*/void DisplayOneChar(uchar X,uchar Y,uchar DData) Y&=1; X&=15; if(Y)X|=0x40; /若y為1(顯示第二行),地址碼+0X40 X|=0x80; /指令碼為地址碼

22、+0X80 WriteCommandLCM(X,1); WriteDataLCM(DData);/*顯示指定坐標的一串字符子函數(shù)*/void DisplayListChar(uchar X,uchar Y,uchar code *DData) uchar ListLength=0; Y&=0x01; X&=0x0f; while(X0;i-) DQ = 0; / 給脈沖信號 dat=1; DQ = 1; / 給脈沖信號 if(DQ) dat|=0x80; delay_18B20(4); return(dat);/*ds18b20寫一個字節(jié)*/ void WriteOneChar(uchar d

23、at) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay_18B20(5); DQ = 1; dat=1; /*讀取ds18b20當前溫度*/void ReadTemperature(void)unsigned char a=0;unsigned char b=0;unsigned char t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳過讀序號列號的操作WriteOneChar(0x44); / 啟動溫度轉換delay_18B20(100); / this message

24、is wery importantInit_DS18B20();WriteOneChar(0xCC); /跳過讀序號列號的操作WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度 delay_18B20(100); a=ReadOneChar(); /讀取溫度值低位,讀完地址自動加1b=ReadOneChar(); /讀取溫度值高位temp1=b4;temp2=a&0x0f;switch(temp2)case(0x00): temp2=0x00;decide=0;break;/低4位分別代表著2 的負一次方,2的負二次方,2的負三次方,2的負四次方ca

25、se(0x01): temp2=0x00;decide=0;break; /decide為1時候代表十進制的小數(shù)第一位為1case(0x02): temp2=0x01;decide=1;break;case(0x03): temp2=0x01;decide=1;break;case(0x04): temp2=0x02;decide=1;break;case(0x05): temp2=0x03;decide=1;break;case(0x06): temp2=0x03;decide=1;break;case(0x07): temp2=0x04;decide=1;break;case(0x08):

26、 temp2=0x05;decide=1;break;case(0x09): temp2=0x05;decide=1;break;case(0x0a): temp2=0x06;decide=1;break;case(0x0b): temp2=0x06;decide=1;break;case(0x0c): temp2=0x07;decide=1;break;case(0x0d): temp2=0x08;decide=1;break;case(0x0e): temp2=0x08;decide=1;break;case(0x0f): temp2=0x09;decide=1;break;default

27、 : break; temp=(b*256+a)4); /當前采集溫度值除16得實際溫度值/*液晶顯示子函數(shù)1正常顯示*/void displayfun1(void)WriteCommandLCM(0x0c,1); /顯示屏打開,光標不顯示,不閃爍,檢測忙信號DisplayListChar(0,0,str0);DisplayListChar(0,1,str1); DisplayOneChar(8,1,hour/10+0x30); /液晶上顯示小時DisplayOneChar(9,1,hour%10+0x30);DisplayOneChar(11,1,minite/10+0x30);/液晶上顯示

28、分DisplayOneChar(12,1,minite%10+0x30);DisplayOneChar(14,1,seconde/10+0x30); /液晶上顯示秒DisplayOneChar(15,1,seconde%10+0x30);DisplayOneChar(8,0,TEMH/10+0x30); /液晶上顯示設定的溫度上限DisplayOneChar(9,0,TEMH%10+0x30);DisplayOneChar(2,0,TEML/10+0x30); /液晶上顯示設定的溫度下限DisplayOneChar(3,0,TEML%10+0x30); DisplayOneChar(2,1,t

29、emp1/10+0x30); /液晶上顯示測得的溫度 DisplayOneChar(3,1,temp1%10+0x30);DisplayOneChar(5,1,temp2+0x30);if(outflag=1) /顯示HIGH DisplayOneChar(12,0,0x48); DisplayOneChar(13,0,0x49); DisplayOneChar(14,0,0x47);DisplayOneChar(15,0,0x48); else if(inflag=1) /顯示LOWDisplayOneChar(12,0,0x20); DisplayOneChar(13,0,0x4c); D

30、isplayOneChar(14,0,0x4f);DisplayOneChar(15,0,0x57); else/顯示NORMDisplayOneChar(12,0,0x4e); DisplayOneChar(13,0,0x4f);DisplayOneChar(14,0,0x52);DisplayOneChar(15,0,0x4d); /*液晶顯示子函數(shù)2*/void displayfun2(void)WriteCommandLCM(0x0c,1); /顯示屏打開,光標不顯示,不閃爍,檢測忙信號 DisplayListChar(0,0,str0);DisplayListChar(0,1,str

31、1); DisplayOneChar(8,1,hour/10+0x30); /液晶上顯示小時DisplayOneChar(9,1,hour%10+0x30);DisplayOneChar(11,1,minite/10+0x30);/液晶上顯示分DisplayOneChar(12,1,minite%10+0x30);DisplayOneChar(14,1,seconde/10+0x30); /液晶上顯示秒DisplayOneChar(15,1,seconde%10+0x30);DisplayOneChar(8,0,TEMH/10+0x30); /液晶上顯示設定的溫度上限DisplayOneCha

32、r(9,0,TEMH%10+0x30);DisplayOneChar(2,0,TEML/10+0x30); /液晶上顯示設定的溫度下限DisplayOneChar(3,0,TEML%10+0x30); DisplayOneChar(2,1,temp1/10+0x30); /液晶上顯示測得的溫度 DisplayOneChar(3,1,temp1%10+0x30);DisplayOneChar(5,1,temp2/10+0x30); WriteCommandLCM(0x0f,1); /顯示屏打開,光標顯示,閃爍,檢測忙信號 DisplayOneChar(8,1,hour/10+0x30);Disp

33、layOneChar(9,1,hour%10+0x30);/*液晶顯示子函數(shù)3*/void displayfun3(void)WriteCommandLCM(0x0c,1); /顯示屏打開,光標不顯示,不閃爍,檢測忙信號DisplayListChar(0,0,str0);DisplayListChar(0,1,str1); DisplayOneChar(8,1,hour/10+0x30); /液晶上顯示小時DisplayOneChar(9,1,hour%10+0x30);DisplayOneChar(11,1,minite/10+0x30);/液晶上顯示分DisplayOneChar(12,1

34、,minite%10+0x30);DisplayOneChar(14,1,seconde/10+0x30); /液晶上顯示秒DisplayOneChar(15,1,seconde%10+0x30);DisplayOneChar(8,0,TEMH/10+0x30); /液晶上顯示設定的溫度上限DisplayOneChar(9,0,TEMH%10+0x30);DisplayOneChar(2,0,TEML/10+0x30); /液晶上顯示設定的溫度下限DisplayOneChar(3,0,TEML%10+0x30); DisplayOneChar(2,1,temp1/10+0x30); /液晶上顯

35、示測得的溫度 DisplayOneChar(3,1,temp1%10+0x30);DisplayOneChar(5,1,temp2/10+0x30);WriteCommandLCM(0x0f,1); /顯示屏打開,光標顯示,閃爍,檢測忙信號DisplayOneChar(11,1,minite/10+0x30);DisplayOneChar(12,1,minite%10+0x30);/*液晶顯示子函數(shù)4 */void displayfun4(void)WriteCommandLCM(0x0c,1); /顯示屏打開,光標不顯示,不閃爍,檢測忙信號DisplayListChar(0,0,str0);

36、DisplayListChar(0,1,str1); DisplayOneChar(8,1,hour/10+0x30); /液晶上顯示小時DisplayOneChar(9,1,hour%10+0x30);DisplayOneChar(11,1,minite/10+0x30);/液晶上顯示分DisplayOneChar(12,1,minite%10+0x30);DisplayOneChar(14,1,seconde/10+0x30); /液晶上顯示秒DisplayOneChar(15,1,seconde%10+0x30);DisplayOneChar(8,0,TEMH/10+0x30); /液晶

37、上顯示設定的溫度上限DisplayOneChar(9,0,TEMH%10+0x30);DisplayOneChar(2,0,TEML/10+0x30); /液晶上顯示設定的溫度下限DisplayOneChar(3,0,TEML%10+0x30); DisplayOneChar(2,1,temp1/10+0x30); /液晶上顯示測得的溫度 DisplayOneChar(3,1,temp1%10+0x30);DisplayOneChar(5,1,temp2/10+0x30);WriteCommandLCM(0x0f,1); /顯示屏打開,光標顯示,閃爍,檢測忙信號DisplayOneChar(8

38、,0,TEMH/10+0x30); DisplayOneChar(9,0,TEMH%10+0x30);/*液晶顯示子函數(shù)5 */void displayfun5(void)WriteCommandLCM(0x0c,1); /顯示屏打開,光標不顯示,不閃爍,檢測忙信號DisplayListChar(0,0,str0);DisplayListChar(0,1,str1); DisplayOneChar(8,1,hour/10+0x30); /液晶上顯示小時DisplayOneChar(9,1,hour%10+0x30);DisplayOneChar(11,1,minite/10+0x30);/液晶

39、上顯示分DisplayOneChar(12,1,minite%10+0x30);DisplayOneChar(14,1,seconde/10+0x30); /液晶上顯示秒DisplayOneChar(15,1,seconde%10+0x30);DisplayOneChar(8,0,TEMH/10+0x30); /液晶上顯示設定的溫度上限DisplayOneChar(9,0,TEMH%10+0x30);DisplayOneChar(2,0,TEML/10+0x30); /液晶上顯示設定的溫度下限DisplayOneChar(3,0,TEML%10+0x30); DisplayOneChar(2,

40、1,temp1/10+0x30); /液晶上顯示測得的溫度 DisplayOneChar(3,1,temp1%10+0x30);DisplayOneChar(5,1,temp2/10+0x30);WriteCommandLCM(0x0f,1); /顯示屏打開,光標顯示,閃爍,檢測忙信號DisplayOneChar(2,0,TEML/10+0x30); DisplayOneChar(3,0,TEML%10+0x30);/*鍵盤掃描子函數(shù)*/void keyscan(void)uchar xx; /局部變量P1=0xff;if(P1!=0xff) delay_LCM(30);if(P1!=0xff

41、) xx=P1;switch(xx) / 根據(jù)按鍵狀態(tài),調用不同的子函數(shù)case 0xfe:set_adj(); break; /P1.0被按下 case 0xfd:inc_key(); break; /P1.1被按下 case 0xfb:dec_key(); break; /P1.2被按下 default:break; /*設定工作模式子函數(shù)*/void set_adj(void) /按一次P1.0后,set邊為1,主函數(shù)中的switch語句執(zhí)行第二個 /按2次.執(zhí)行.delay_LCM(100);set+; if(set=5)set=0;/*按鍵加法子函數(shù)*/void inc_key(vo

42、id)delay_LCM(100);switch(set)case 0:delay_LCM(100);DisplayListChar(0,0,str2);break;/當光標不閃爍時候操作2、3兩個鍵會提示ERROR ACTIONcase 1:hour+; if(hour=23)hour=23; break;case 2:minite+; if(minite=59)minite=59;break;case 3:TEMH+;if(TEMH=70)TEMH=70; break; case 4:TEML+;if(TEML=70)TEML=70; break;default:break;/*按鍵減法子函數(shù)*/void dec_key(void)delay_LCM(100);switch(set)case 0:delay_LCM(100);DisplayListChar(0,0,str2);delay_LCM(100);break;case 1:hour-; if(hour=0)hour=0; break;case 2

溫馨提示

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

評論

0/150

提交評論