单片机时钟程序

单片机时钟程序

ID:39554488

大小:50.50 KB

页数:10页

时间:2019-07-06

单片机时钟程序_第1页
单片机时钟程序_第2页
单片机时钟程序_第3页
单片机时钟程序_第4页
单片机时钟程序_第5页
资源描述:

《单片机时钟程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、首先要掌握lcd1602编程,红外遥控原理,当然,单片机基本的要懂得此程序是用stc89c52单片机,所用的IO口程序有说明。#include#defineucharunsignedchar#defineuintunsignedint#definett46080//设置时间间隔,对应11.0592MHZ的晶振sbiten=P3^4;sbitrs=P3^5;//用于控制1602sbitrw=P3^6;sbitdula=P2^6;sbitwela=P2^7;//用于控制晶体管sbitIRIN=P3^2;//红外接收器数据线IO口bitL=1;uchart,

2、key=0,hh=0,mm=0,ss=0;ucharIRCOM[4]=0;//定义数组IRCOM,分别装解码后得到的数据//IRCOM[0]低8位地址码//IRCOM[1]高8位地址码//IRCOM[2]8位数据码//IRCOM[3]8位数据码的反码ucharcodetable[]="Inputpassword";ucharcodetable1[]="Welcometouse!";ucharcodetable2[]="Passworderror!";ucharcodenum[]="0123456789";ucharcodemima[]="5201314";ucharco

3、dewish[]="Happyeveryday!";ucharcodetime[]="00:00:00";ucharcodeloading[]="Loading...";/////////////////////////////////////////////////////voiddelay(uintz){uintx,y;for(x=z;x>0;x--)for(y=112;y>0;y--);//大约是1ms,因为单片机的时钟周期为11.0592mhz。}voidwrite_com(ucharcom){rs=0;//指令P0=com;//写指令函数delay(5);en

4、=1;delay(5);en=0;}voidwrite_data(uchardat){rs=1;//数据P0=dat;//写指令函数delay(5);en=1;delay(5);en=0;}voidLCD_init(){wela=0;dula=0;//用于关闭晶体管,因为都是用P0en=0;//初始时使能为0rw=0;write_com(0x38);//显示屏模式设置为1602方案write_com(0x0f);//显示开关/光标设置write_com(0x06);write_com(0x01);//清屏write_com(0x80);//指针置零}//////////

5、////////////////////////////////////////////////////////////////////////////////////////voiddelay014ms(ucharx)//x*0.14MSSTC10F04延时约0.15MS{uchari;while(x--){for(i=0;i<15;i++)//13;}}//////////////初始化////////////voidIR_init(void){EA=1;EX0=1;//允许总中断中断,使能INT0外部中断IT0=1;//触发方式为脉冲负边沿触发IRIN=1;//I

6、/O口初始化}////////////解码过程//////////////voidIR_CODE(void)interrupt0//在外部中断子程序中解码{voidshuanxin(ucharadd,uchardate);ucharj,k,N=0,h,m,n;EX0=0;//防止干扰delay014ms(15);//延时2.1msif(IRIN==1)//2.1ms能够检测出各种错误信号{EX0=1;return;}//确认IR信号出现while(!IRIN);//等IR变为高电平,跳过9ms的前导低电平信号。//////高电平后开始检测高电平持续的时间以确定是0还是1

7、/////for(j=0;j<4;j++)//收集四组数据{for(k=0;k<8;k++)//每组数据有8位{while(IRIN);//等IR变为低电平,跳过4.5ms的前导高电平信号。//引导码检验结束while(!IRIN);//等IR变为高电平开始检测while(IRIN)//计算IR高电平时长{delay014ms(1);N++;if(N>=30){EX0=1;return;}//0.14ms计数过长自动离开?}//高电平计数完毕IRCOM[j]=IRCOM[j]>>1;//数据最高位补"0"if(N>=8)//6*0.14=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。