版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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循环语句开始for(j=0;j<60;j+ / for循环语句开始;reset( /两个for循环体 /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函数结束/*-读状态到MCU子函数-*/uchar ReadStatusLCM(void /函数名为ReadStatusLCM的读状态到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区的无符号字符型指针变量*/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语句循环 /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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保洁服务合同样本范本
- 环保我们的责任与追求
- 电脑设备批量选购合同示例
- 物流平台服务合同的维权途径
- 银行环境清洁合作协议
- 招标文件审核技巧分享全解读详解
- 人工分包劳务合同范本
- 苗木采购供应商招募通知
- 钢材招标合同赠与
- 简化劳务分包协议样本
- 数学思想与方法-国家开放大学电大机考网考题目答案
- 杭州奥泰生物技术股份有限公司IVD研发中心建设项目环境影响报告表
- 公共卫生事业管理专业职业生涯规划书
- GB/T 43232-2023紧固件轴向应力超声测量方法
- 低压配电室的安全操作规程
- 新目标汉语口语课本2课件-第2单元
- 二手车买卖合同(标准版范本)
- 国有企业合规制度培训
- 血液透析的医疗质量管理与持续改进
- 铬安全周知卡、职业危害告知卡、理化特性表
- 部编小语必读整本书《西游记》主要情节赏析
评论
0/150
提交评论