版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、液晶顯示電冰箱溫控器源程序#include / 器件配置文件#include sbit LCM_RS=P33; /引腳定義sbit LCM_RW=P34; /引腳定義sbit LCM_EN=P35; /引腳定義sbit OUT=P36; /控制繼電器sbit TSOR=P37; /溫度測試端#define Busy 0x80 /常量定義#define uchar unsigned char#define uint unsigned int#define DATAPORT P1 #define reset( WDT=0x1e;WDT=0xe1;/看門狗啟動/復位宏定義sfr WDT=0xa6;/
2、看門狗寄存器定義bit ON_OFF;bit outflag;/=uchar temp1,temp2;uchar cnt;uchar deda,sec; /時間變量char min,hour;char set,T;uchar data buff10;uchar ReadStatusLCM(void;/讀數據到MCU子函數聲明uchar code str0="- : : - "/待顯字符串uchar code str1="SET: C SA: . C"uchar code str2=" "/待顯空字符串/=函數聲明=void fun0(
3、void;void fun1(void;void fun2(void;void fun3(void;void set_adj(void;void inc_key(void;void dec_key(void;void key(void;void gettempTS(void;void initTS(void;uchar readBTS(void;void writeBTS(uchar byte;void resetTS(void;bit readTS(void;void write1TS(void;void write0TS(void;void delay15us(void;void dela
4、y60us(void;/*延時K*1mS,12.000MHz*void delay(uint k/函數名為delay的延時子函數。定義k為無符號整型變量 /delay函數開始uint i,j; /定義i、j為無符號整型變量for(i=0;i /for循環(huán)語句開始for(j=0;j<60;j+ / for循環(huán)語句開始;reset( /兩個for循環(huán)體 /delay函數結束/*-寫指令到LCM子函數-*/void WriteCommandLCM(uchar WCLCM, uchar BusyC /*函數名為WriteCommandLCM 的寫指令到LCM子函數。定義WCLCM、BusyC 為
5、無符號字符型變量*/ /WriteCommandLCM函數開始if(BusyCReadStatusLCM(; /*若BusyC為"1",則調用ReadStatusLCM子函數進行忙檢測*/DATAPORT=WCLCM; /將變量WCLCM中的指令傳送至P1口LCM_RS=0; /選中指令寄存器LCM_RW=0; /寫模式LCM_EN=0; /置LCM_EN端為低電平LCM_EN=0; /置LCM_EN端為低電平,延時一會兒LCM_EN=1; /置LCM_EN端為高電平,寫入使能 / WriteCommandLCM函數結束/*-寫數據到LCM子函數-*/void WriteD
6、ataLCM(uchar WDLCM /*函數名為WriteDataLCM 的寫數據到LCM子函數。定義WDLCM 為無符號字符型變量*/ / WriteDataLCM函數開始ReadStatusLCM(; /調用ReadStatusLCM子函數檢測忙信號DATAPORT=WDLCM; /將變量WDLCM中數據傳送至P1口LCM_RS=1; /選中數據寄存器LCM_RW=0; /寫模式LCM_EN=0; /置LCM_EN端為低電平LCM_EN=0; /置LCM_EN端為低電平,延時一會兒LCM_EN=1; /置LCM_EN端為高電平,寫入使能 / WriteDataLCM函數結束/*-讀數據到
7、MCU子函數-*/*uchar ReadDataLCM(void /函數名為ReadDataLCM的讀數據到MCU子函數 / ReadDataLCM函數開始LCM_RS=1; /選中數據寄存器LCM_RW=1; /讀模式LCM_EN=0; /置LCM_EN端為低電平LCM_EN=0; /置LCM_EN端為低電平,延時一會兒LCM_EN=1; /置LCM_EN端為高電平,讀使能return(DATAPORT; /返回P1口的內容*/ / ReadDataLCM函數結束/*-讀狀態(tài)到MCU子函數-*/uchar ReadStatusLCM(void /函數名為ReadStatusLCM的讀狀態(tài)到M
8、CU子函數 /ReadStatusLCM函數開始DATAPORT=0xFF; /置P1口為全1LCM_RS=0; /選中指令寄存器LCM_RW=1; /讀模式LCM_EN=0; /置LCM_EN端為低電平LCM_EN=0; /置LCM_EN端為低電平,延時一會兒LCM_EN=1; /置LCM_EN端為高電平,讀使能while(P1&Busy; /*檢測忙信號。當P1口內容與Busy(80H)相與后不為零時,程序原地踏步*/return(DATAPORT; /返回P1口的內容 / ReadStatusLCM函數結束/*-LCM初始化子函數-*/void InitLcd( /函數名為Ini
9、tLcd 的LCM初始化子函數 / InitLcd函數開始WriteCommandLCM(0x38,1;/8位數據傳送,2行顯示,5*7字形,檢測忙信號WriteCommandLCM(0x08,1;/關閉顯示,檢測忙信號WriteCommandLCM(0x01,1;/清屏,檢測忙信號WriteCommandLCM(0x06,1;/顯示光標右移設置,檢測忙信號WriteCommandLCM(0x0c,1;/顯示屏打開,光標不顯示、不閃爍,檢測忙信號 / InitLcd函數結束/*-顯示指定座標的一個字符子函數-*/*顯示指定座標的一個字符(X=015,Y=01)子函數,函數名為DisplayOn
10、eChar,定義X、Y、DData為無符號字符型變量*/void DisplayOneChar(uchar X,uchar Y,uchar DData / DisplayOneChar 函數開始Y&=1; /Y的變化范圍01X&=15; / X的變化范圍015if(YX|=0x40; /若Y為1(顯示第二行),地址碼+0x40X|=0x80; /指令碼為地址碼+0x80WriteCommandLCM(X,0; /將指令X寫入LCM,忽略忙信號檢測WriteDataLCM(DData; /再將數據Ddata寫入LCM / DisplayOneChar 函數結束/*-顯示指定座標的
11、一串字符子函數-*/*顯示指定座標的一串字符(X=015,Y=01)子函數,函數名為DisplayListChar ,定義X、Y為無符號字符型變量,DData 為指向code區(qū)的無符號字符型指針變量*/void DisplayListChar(uchar X,uchar Y,uchar code *DData / DisplayListChar 函數開始uchar ListLength=0; /定義ListLength 為無符號字符型變量,并賦初值為0Y&=0x1; / Y的變化范圍01X&=0xF; / X的變化范圍015while(X<=15 /X<=15時進入
12、while語句循環(huán) /while語句開始DisplayOneChar(X,Y,DDataListLength;/顯示單個字符ListLength+; /數組指針遞增X+; /X軸座標遞增 /while語句結束 /DisplayListChar 函數結束/=void init_timer0(void /定時器T0初始化TMOD=0x01;TH0=-(50235/256;TL0=-(50235%256;TR0=1;ET0=1;EA=1;/=void time_zd0(void interrupt 1 using 1 /定時器T0中斷子函數TH0=-(50235/256;TL0=-(50235%25
13、6;deda+;cnt+;if(deda>=20sec+;deda=0;if(sec>=60min+;sec=0;if(min>=60hour+;min=0;if(hour>=24hour=0;if(cnt>=6cnt=0;key(; /掃描鍵盤/=void fun0(void /液晶顯示子函數0WriteCommandLCM(0x0c,1;/顯示屏打開,光標不顯示、不閃爍,檢測忙信號DisplayListChar(0,0,str0;DisplayListChar(0,1,str1;/=DisplayOneChar(3,0,hour/10+0x30;Display
14、OneChar(4,0,hour%10+0x30;/=DisplayOneChar(6,0,min/10+0x30;DisplayOneChar(7,0,min%10+0x30;/=DisplayOneChar(9,0,sec/10+0x30;DisplayOneChar(10,0,sec%10+0x30;/=DisplayOneChar(4,1,T/10+0x30;DisplayOneChar(5,1,T%10+0x30;/=DisplayOneChar(11,1,temp1/10+0x30;DisplayOneChar(12,1,temp1%10+0x30;DisplayOneChar(1
15、4,1,temp2+0x30;/=if(ON_OFF=0DisplayOneChar(14,0,0x4f;DisplayOneChar(15,0,0x46;elseDisplayOneChar(14,0,0x4f;DisplayOneChar(15,0,0x4e;if(outflag=1DisplayOneChar(0,0,0x7c;else DisplayOneChar(0,0,0xef;/=/*/void fun1(void /液晶顯示子函數1WriteCommandLCM(0x0c,1;/顯示屏打開,光標不顯示、不閃爍,檢測忙信號DisplayListChar(0,0,str0;Disp
16、layListChar(0,1,str1;/=DisplayOneChar(6,0,min/10+0x30;DisplayOneChar(7,0,min%10+0x30;/=DisplayOneChar(9,0,sec/10+0x30;DisplayOneChar(10,0,sec%10+0x30;/=DisplayOneChar(4,1,T/10+0x30;DisplayOneChar(5,1,T%10+0x30;/=DisplayOneChar(11,1,temp1/10+0x30;DisplayOneChar(12,1,temp1%10+0x30;DisplayOneChar(14,1,
17、temp2+0x30;/=WriteCommandLCM(0x0f,1;/顯示屏打開,光標顯示、閃爍,檢測忙信號DisplayOneChar(3,0,hour/10+0x30;DisplayOneChar(4,0,hour%10+0x30;/*/void fun2(void /液晶顯示子函數2WriteCommandLCM(0x0c,1;/顯示屏打開,光標不顯示、不閃爍,檢測忙信號DisplayListChar(0,0,str0;DisplayListChar(0,1,str1;/=DisplayOneChar(3,0,hour/10+0x30;DisplayOneChar(4,0,hour%
18、10+0x30;/=DisplayOneChar(9,0,sec/10+0x30;DisplayOneChar(10,0,sec%10+0x30;/=DisplayOneChar(4,1,T/10+0x30;DisplayOneChar(5,1,T%10+0x30;/=DisplayOneChar(11,1,temp1/10+0x30;DisplayOneChar(12,1,temp1%10+0x30;DisplayOneChar(14,1,temp2+0x30;/=WriteCommandLCM(0x0f,1;/顯示屏打開,光標顯示、閃爍,檢測忙信號DisplayOneChar(6,0,mi
19、n/10+0x30;DisplayOneChar(7,0,min%10+0x30;/*/void fun3(void /液晶顯示子函數3WriteCommandLCM(0x0c,1;/顯示屏打開,光標不顯示、不閃爍,檢測忙信號DisplayListChar(0,0,str0;DisplayListChar(0,1,str1;/=DisplayOneChar(3,0,hour/10+0x30;DisplayOneChar(4,0,hour%10+0x30;/=DisplayOneChar(6,0,min/10+0x30;DisplayOneChar(7,0,min%10+0x30;/=Displ
20、ayOneChar(9,0,sec/10+0x30;DisplayOneChar(10,0,sec%10+0x30;/=DisplayOneChar(11,1,temp1/10+0x30;DisplayOneChar(12,1,temp1%10+0x30;DisplayOneChar(14,1,temp2+0x30;/=WriteCommandLCM(0x0f,1;/顯示屏打開,光標顯示、閃爍,檢測忙信號DisplayOneChar(4,1,T/10+0x30;DisplayOneChar(5,1,T%10+0x30;/*/void key(void /掃描鍵盤uchar xx;P2=0xff
21、;if(P2!=0xffdelay(10;if(P2!=0xffxx=P2;switch(xxcase 0xfe:set_adj(;break;case 0xfd:inc_key(;break;case 0xfb:dec_key(;break;case 0xf7:ON_OFF=!ON_OFF;break;default:break;/*/void set_adj(void /設定工作模式子函數if(cnt=5set+;if(set>=4set=0;/*/void inc_key(void /按鍵加法子函數if(cnt=5switch(setcase 0:if(P2=0xf7ON_OFF=
22、!ON_OFF;break;case 1:hour+;if(hour>=23hour=23;break;case 2:min+;if(min>=59min=59;break;case 3:T+;if(T>=99T=99; break;default:break;/*/void dec_key(void /按鍵減法子函數if(cnt=5switch(setcase 0:if(P2=0xf7ON_OFF=!ON_OFF;break;case 1:hour-;if(hour<=0hour=0;break;case 2:min-;if(min<=0min=0;break;
23、case 3:T-;if(T<=1T=1;break;default:break;/*/*/void delay15us(void /延時15微秒子函數uchar i;for(i=0;i<4;i+;/*void delay60us(void 延時60微秒子函數uchar i;for(i=0;i<15;i+;/*void write0TS(void /write bit0TSOR=1;TSOR=0;delay15us(;delay15us(;delay15us(;delay15us(;TSOR=1;_nop_(;_nop_(;/*void write1TS(void /writ
24、e bit1TSOR=1;TSOR=0;_nop_(;_nop_(;_nop_(;_nop_(;_nop_(;_nop_(;_nop_(;TSOR=1;_nop_(;_nop_(;_nop_(;_nop_(;_nop_(;_nop_(;_nop_(;delay15us(;delay15us(;delay15us(;/*bit readTS(void /read databitbit b;TSOR=1;TSOR=0;_nop_(;_nop_(;_nop_(;_nop_(;TSOR=1;_nop_(;_nop_(;_nop_(;_nop_(;_nop_(;b=TSOR;delay15us(;del
25、ay15us(;delay15us(;_nop_(;_nop_(;return b;/*void resetTS(void /reset databituchar i;TSOR=1;TSOR=0;for(i=0;i<8;i+delay60us(;TSOR=1;while(TSOR;for(i=0;i<8;i+delay60us(;/*void writeBTS(uchar byte /write one byteuchar i;for(i=0;i<8;i+if(byte&0x01write1TS(;elsewrite0TS(;byte=byte>>1;/*uchar readBTS(void /read one byteuchar i,j;bit b;j=0;for(i=0;i<8;i+b=readTS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度扶貧資金管理及使用專項合同3篇
- 2025年度智能廣告創(chuàng)意制作與推廣服務合同4篇
- 2024鋪位出租合同-親子樂園鋪位租賃管理協(xié)議3篇
- 2025年度石材加工與大理石施工一體化工程合同4篇
- 2025年度土地整治與修復項目租賃合同4篇
- 2025年度智能生產線承包運營服務合同4篇
- 2024版貨車租賃合規(guī)性及責任明確合同版B版
- 2025年度水電安裝工程智能化施工技術與保修服務合同3篇
- 2025年度智能物流配套廠房建設合同范本4篇
- 2025年度智能家居瓷磚批發(fā)代理銷售合同3篇
- 使用錯誤評估報告(可用性工程)模版
- 公司章程(二個股東模板)
- GB/T 19889.7-2005聲學建筑和建筑構件隔聲測量第7部分:樓板撞擊聲隔聲的現場測量
- 世界奧林匹克數學競賽6年級試題
- 藥用植物學-課件
- 文化差異與跨文化交際課件(完整版)
- 國貨彩瞳美妝化消費趨勢洞察報告
- 云南省就業(yè)創(chuàng)業(yè)失業(yè)登記申請表
- UL_標準(1026)家用電器中文版本
- 國網三個項目部標準化手冊(課堂PPT)
- 快速了解陌生行業(yè)的方法論及示例PPT課件
評論
0/150
提交評論