完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include"lcd***.h" ***it pdd=P3^7; //调节时间 ***it LS138A=P3^4; ***it LS138B=P3^5; ***it LS138C=P3^6; ***it bee=P2^0; //闹铃 unsigned char code monthdays[12]={31,28,31,30,31,30,31,31,30,31,30,31}; //每月天数 unsigned char code tap1[]={"0123456789"};//数字字模 unsigned char code tap2[]={":- "};//基本符号字模 unsigned char code season[4][6]={{"Spring"},{"Summer"},{"Autumn"},{"Winter"}}; //季节字模 unsigned char code week[7][3]={{"MON"},{"TUE"},{"WED"},{"THU"},{"FRI"},{"SAT"},{"SUN"}}; //星期几字模 unsigned int year; //年 unsigned char num1,shi,fen,miao,day,month,shadow,wek,rea,cr; //日期与时间 unsigned char second2,minute2,hour2;//闹钟 unsigned int ham; /*全部中断初始化*/ void Inittimer0(void) { TMOD = 0x11; TH0 = 0x0D8; TL0 = 0x0F0; EA = 1; ET0 = 1; TR0 = 1; EX0=1; IT0=1; EX1=1; IT1=1; PX1=1; PX0=1; PT1=1; TH1 = 0x0FC; TL1 = 0x18; ET1 = 0; TR1 = 0; } void lcd()//1602写数据函数 { /*日期*/ write_com(0x80); write_date(tap1[(year+1)/1000]); write_date(tap1[(year+1)%1000/100]); write_date(tap1[(year+1)%100/10]); write_date(tap1[(year+1)%10]); write_date(tap2[1]); write_date(tap1[(month+1)/10]); write_date(tap1[(month+1)%10]); write_date(tap2[1]); write_date(tap1[(day+1)/10]); write_date(tap1[(day+1)%10]); write_date(tap2[2]); write_date(week[wek][0]); write_date(week[wek][1]); write_date(week[wek][2]); /*时钟星期*/ write_com(0x80+0x40); write_date(tap1[shi/10]); write_date(tap1[shi%10]); write_date(tap2[0]); write_date(tap1[fen/10]); write_date(tap1[fen%10]); write_date(tap2[0]); write_date(tap1[miao/10]); write_date(tap1[miao%10]); write_date(tap2[2]); write_date(season[cr][0]); write_date(season[cr][1]); write_date(season[cr][2]); write_date(season[cr][3]); write_date(season[cr][4]); write_date(season[cr][5]); } void main() { /*初始化定义*/ rea=0; cr=3; InitTimer0(); write_init(); year=2016; month=0; day=5; shi=8; fen=0; miao=0; ham=0; minute2=0; hour2=0; second2=5; /*死循环*/ while(1) { lcd();//显示函数 if(pdd==0) //日期调节 { switch(rea) { case 0:miao=0;break; case 1:fen++;break; case 2:shi++;break; case 3:wek++;break; case 4:day++;break; case 5:month++;break; case 6:year++;break; case 7:year--;break; } while(pdd==0); } } } /*控制调节按钮*/ void zhongduan() interrupt 0 { EX0=0; rea++; if(rea==8) { rea=0; } switch(rea) { case 0:LS138A=0;LS138B=0;LS138C=0; break; //秒 case 1:LS138A=1;LS138B=0;LS138C=0; break; //分 case 2:LS138A=0;LS138B=1;LS138C=0; break; //时 case 3:LS138A=1;LS138B=1;LS138C=0; break; //星期 case 4:LS138A=0;LS138B=0;LS138C=1; break; //日 case 5:LS138A=1;LS138B=0;LS138C=1; break; //月 case 6:LS138A=0;LS138B=1;LS138C=1; break; //年+ case 7:LS138A=1;LS138B=1;LS138C=1; break; //年- } EX0=1; } /*闹钟按钮*/ void clock() interrupt 2 { EX1=0; hour2=shi; minute2=fen; second2=miao; EX1=1; } /*定时器,每10ms产生一次中断*/ void Time0() interrupt 1 { TH0 = 0x0D8; TL0 = 0x0F0;//定时器置位 shadow++; if(shadow==100) { shadow=0; miao++; } if(miao==60) //分进位 { miao=0; fen++; } if(fen==60) //时进位 { fen=0; shi++; } if(shi==24) //日进位 { shi=0; wek++; day++; } if(wek==7) //星期进位 { wek=0; } if(day==monthdays[month]) //月进位 { day=0; month++; } switch(month) //季节 { case 2: cr=0;break; case 5: cr=1;break; case 8: cr=2;break; case 11: cr=3;break; } if(month==12)//年进位 { month=0; year++; } /*闹铃判断*/ if(shi=hour2) { if(fen=minute2) { if(miao=second2-1) { ET1=1; TR1=1; } } } } /*闹铃中断*/ void Timer1Interrupt(void) interrupt 3 { TH1 = 0x0FC; TL1 = 0x18; ham++; bee=~bee; if(ham==5000) ham=0; bee=0; TR1=0; ET1=0; //add your code here! } |
|
相关推荐
2 个讨论
|
|
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
522 浏览 0 评论
656 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
978 浏览 0 评论
1042 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
735 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12043 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 09:14 , Processed in 0.619218 second(s), Total 39, Slave 32 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号