如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
#include<REG52.H>#include<INTRINS.H>//库函数头文件,代码中引用了_nop_()函数//定义控制信号端口sbitRS=P2^4;//P2.4sbitRW=P2^5;//P2.5sbitE=P2^6;//P2.6sbitset=P3^4;//设置键sbitenter=P3^5;//确认键sbitadd1=P3^6;//加1键sbitsub1=P3^7;//减1键bitk=0,f=0;//k为0表示运行状态,k为1表示设置状态;f为0表示第一行显示,f为1表示第二行显示charsec,min,hour,week,day,month,year,n,m;unsignedcharcount,key;unsignedcharlcdd[]="0123456789";/*声明调用函数*/voiddispd();//日期显示函数voiddispt();//时间显示函数unsignedcharkeys();//按键扫描函数voidlcd_w_cmd(unsignedcharcom);//写命令字函数voidlcd_w_dat(unsignedchardat);//写数据函数unsignedcharlcd_r_start();//读状态函数voidint1();//LCD初始化函数voiddelay(unsignedchart);//可控延时函数voiddelay1();//软件实现延时函数,5个机器周期/*主函数*/voidmain(){TMOD=0x01;//设置为定时器模式1TH0=0x3c;//晶振6MHz,定时时间100msTL0=0xb0;IE=0x82;//开全局中断和定时中断TR0=1;//启动定时器sec=0;//秒min=0;//分hour=0;//时week=0;//星期day=1;//日month=1;//月year=0;//年count=0;//中断次数清0n=-3;//设置键按下次数,第一行日期m=-3;//设置键按下次数,第二行时间P0=0xff;//送全1到P0口int1();//初始化LCDdelay(255);while(1){key=keys();//读取按键switch(key){case0xe0://按下设置键{TR0=0;k=1;if(f==0){n=n+3;if(n==9){n=0;m=0;f=1;}}else{m=m+3;if(m==12){m=0;n=0;f=0;}}if(f==0){lcd_w_cmd(0x0d);lcd_w_cmd(0x86+n);}else{lcd_w_cmd(0x0d);lcd_w_cmd(0xc4+m);}}break;case0xd0://按下确认键{k=0;TR0=1;n=-3;m=-3;f=0;}break;case0xb0://按下加1键{if(k==1){if(f==0){if(n==0){year++;if(year==100)year=0;}elseif(n==3){month++;if(month==13)month=1;}else{day++;if(day==32)day=1;}dispd();//调用第一行显示函数lcd_w_cmd(0x0d);//光标闪烁lcd_w_cmd(0x86+n);//返回设置值显示地址}else{if(m==0){hour++;if(hour==24)hour=0;}elseif(m==3){min++;if(min==60)min=0;}elseif(m==6){sec++;if(sec==60)sec=0;}e