




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
液晶显示电冰箱温控器源程序#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;/看门狗寄存器定义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(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 delay60us(void);/*延时K*1mS,12.000MHz*void delay(uint k)/函数名为delay的延时子函数。定义k为无符号整型变量 /delay函数开始uint i,j; /定义i、j为无符号整型变量for(i=0;ik;i+) /for循环语句开始for(j=0;j60;j+) / for循环语句开始;reset() /两个for循环体 /delay函数结束/*-写指令到LCM子函数-*/void WriteCommandLCM(uchar WCLCM, uchar BusyC) /*函数名为WriteCommandLCM 的写指令到LCM子函数。定义WCLCM、BusyC 为无符号字符型变量*/ /WriteCommandLCM函数开始if(BusyC)ReadStatusLCM(); /*若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 WriteDataLCM(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函数结束/*-读数据到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的读状态到MCU子函数 /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() /函数名为InitLcd 的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)子函数,函数名为DisplayOneChar,定义X、Y、DData为无符号字符型变量*/void DisplayOneChar(uchar X,uchar Y,uchar DData) / DisplayOneChar 函数开始Y&=1; /Y的变化范围01X&=15; / X的变化范围015if(Y)X|=0x40; /若Y为1(显示第二行),地址码+0x40X|=0x80; /指令码为地址码+0x80WriteCommandLCM(X,0); /将指令X写入LCM,忽略忙信号检测WriteDataLCM(DData); /再将数据Ddata写入LCM / DisplayOneChar 函数结束/*-显示指定座标的一串字符子函数-*/*显示指定座标的一串字符(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=20)sec+;deda=0;if(sec=60)min+;sec=0;if(min=60)hour+;min=0;if(hour=24)hour=0;if(cnt=6)cnt=0;key();/扫描键盘/=void fun0(void)/液晶显示子函数0WriteCommandLCM(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);/=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);/=if(ON_OFF=0)DisplayOneChar(14,0,0x4f);DisplayOneChar(15,0,0x46);elseDisplayOneChar(14,0,0x4f);DisplayOneChar(15,0,0x4e);if(outflag=1)DisplayOneChar(0,0,0x7c);else DisplayOneChar(0,0,0xef);/=/*/void fun1(void)/液晶显示子函数1WriteCommandLCM(0x0c,1);/显示屏打开,光标不显示、不闪烁,检测忙信号DisplayListChar(0,0,str0);DisplayListChar(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,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%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,min/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);/=DisplayOneChar(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;if(P2!=0xff)delay(10);if(P2!=0xff)xx=P2;switch(xx)case 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=5)set+;if(set=4)set=0;/*/void inc_key(void)/按键加法子函数if(cnt=5)switch(set)case 0:if(P2=0xf7)ON_OFF=!ON_OFF;break;case 1:hour+;if(hour=23)hour=23;break;case 2:min+;if(min=59)min=59;break;case 3:T+;if(T=99)T=99;break;default:break;/*/void dec_key(void)/按键减法子函数if(cnt=5)switch(set)case 0:if(P2=0xf7)ON_OFF=!ON_OFF;break;case 1:hour-;if(hour=0)hour=0;break;case 2:min-;if(min=0)min=0;break;case 3:T-;if(T=1)T=1;break;default:break;/*/*/void delay15us(void)/延时15微秒子函数uchar i;for(i=0;i4;i+);/*void delay60us(void)延时60微秒子函数uchar i;for(i=0;i15;i+);/*void write0TS(void)/write bit0TSOR=1;TSOR=0;delay15us();delay15us();delay15us();delay15us();TSOR=1;_nop_();_nop_();/*void write1TS(void)/write 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();delay15us();delay15us();_nop_();_nop_();return b;/*void resetTS(void)/reset databituchar i;TSOR=1;TSOR=0;for(i=0;i8;i+)delay60us();TSOR=1;while(TSOR);for(i=0;i8;i+)delay60us();/*void writeBTS(uchar byte)/write one byteuchar i;for(i=0;i1;/*uchar readBTS(void)/read one byteuchar i,j;bit b;j=0;for(i=0;i8;i+)b=readTS();if(b)j+=1;j=_cror_(j,1);return j;/*void initTS(void)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外包运输劳务合同范本
- 房产365租房合同范本
- 大件搬运维修合同范本
- 食堂档口合同范本
- 农产品溯源体系在2025年农业产业扶贫中的应用报告
- 图书漂流试题及答案
- 锅炉制造试题及答案
- 写材料短语题目及答案
- 2025年初二函数题库及答案
- 光伏组件技能考试试题及答案
- 辽宁盘锦浩业化工“1.15”泄漏爆炸着火事故警示教育
- GB 25585-2010食品安全国家标准食品添加剂氯化钾
- 小学信息技术人工智能教学案例
- 服装零售业概况
- sg1000系列光伏并网箱式逆变器通信协议
- 专升本03297企业文化历年试题题库(考试必备)
- 第四讲大学生就业权益及其法律保障课件
- 重庆大学介绍课件
- 学校开展校园欺凌专项治理情况自查表
- 牛津深圳版九年级上册Module 1 Geniuses Unit1 Wise Man in History话题作文期末复习
- 电能表生产流程
评论
0/150
提交评论