完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
做了一个电子表,用定时器的,
现在想加一个闹钟设置,可是不知怎么做? 求解? #include #define uchar unsigned char //用uchar代替unsigned char #define uint unsigned int //uint代替unsigned int void write_xingqi(); ***it rs = P2^6; //复位端 ***it rw = P2^5; //写数据端 ***it ep = P2^7; //使能端 ***it s1=P1^0; ***it s2=P1^1; ***it s3=P1^2; uchar code dis1[] = "2013-08-07 XQi:"; uchar code dis2[] = " 10:12:30 "; uchar code dis3[]={0x31,0x32,0x33,0x34,0x35,0x36,0x37}; uchar num,s1num,s2num,s3num,s4num,s5num; char shi=10,fen=12,miao=30,xinqi=3; char ri=7,yue=8,nian1=20,nian2=13; /*******************延时函数********************/ void delay(uchar i) { uchar j; for(;i>0;i--) for(j=110;j>0;j--); } /******************写指令函数**********************/ void write_com(uchar com) { // 写入指令数据到LCD rs = 0; rw = 0; ep = 0; delay(1); P0 = com; //将8位指令通过P0口传给1602 delay(5); ep = 1; delay(5); ep = 0; } /*********************写数据函数******************/ void write_data(uchar dat) { //写入字符显示数据到LCD rs = 1; rw = 0; ep = 0; P0 = dat;//将8位数据通过P0口传给1602 delay(5); ep = 1; delay(5); ep = 0; } /******************初始化函数*******************/ void init() { uchar i; write_com(0x38); ////16*2显示,5*7点阵,8位数据 delay(1); write_com(0x0c); //显示开,关光标 0x0f(开且闪烁) 0x0c(关) 0x0e(开但光标不闪) delay(1); write_com(0x06); //移动光标 delay(1); write_com(0x01); //清除LCD的显示内容 delay(1); write_com(0x80); //设置显示位置为第一行的第1个字符 for(i=0;i<15;i++) { write_data(dis1[i]); delay(1); //显字时间 } write_com(0x80+0x40); //设置显示位置为第二行第1个字符 for(i=0;i<16;i++) { write_data(dis2[i]); delay(1); } write_xingqi(); //设置星期几 TMOD=0x01; //定时器初始化 TH0=(65536-50000)/256; TL0=(65536-50000)%256; ET0=1; EA=1; TR0=1; } void write_sfm(uchar add,uchar date) //时分秒函数 { uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_data(0x30+shi); write_data(0x30+ge); } void write_ri(uchar date) { uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+8); write_data(0x30+shi); write_data(0x30+ge); } void write_yue(uchar date) { uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+5); write_data(0x30+shi); write_data(0x30+ge); } void write_nian1(uchar date) { uchar shi,ge; shi=date/10; ge= date%10; write_com(0x80); write_data(0x30+shi); write_data(0x30+ge); } void write_nian2(uchar date) { uchar shi,ge; shi=date/10; ge= date%10; write_com(0x80+2); write_data(0x30+shi); write_data(0x30+ge); } void write_xingqi() //星期几函数 { write_com(0x80+15); write_data(dis3[xinqi]); } void ks() { if(s1==0) { delay(5); //消抖 if(s1==0) { s1num++; while(!s1); if(s1num==1) { TR0=0; write_com(0x80+0x40+11); write_com(0x0f); } if(s1num==2) { write_com(0x80+0x40+8); } if(s1num==3) { write_com(0x80+0x40+5); } if(s1num==4) { write_com(0x80+15); } if(s1num==5) { write_com(0x80+9); } if(s1num==6) { write_com(0x80+6); } if(s1num==7) { write_com(0x80+3); } if(s1num==8) { write_com(0x80+1); } if(s1num==9) { s1num=0; write_com(0x0c); TR0=1; } } } if((s2==0)&&(s1num!=0)) { delay(5); if(s2==0) { while(!s2); if(s1num==1) { miao++; if(miao==60) { miao=0; } write_sfm(10,miao); write_com(0x80+0x40+11); } if(s1num==2) { fen++; if(fen==60) { fen=0; } write_sfm(7,fen); write_com(0x80+0x40+8); } if(s1num==3) { shi++; if(shi==24) { shi=0; } write_sfm(4,shi); write_com(0x80+0x40+5); } if(s1num==4) { xinqi++; if(xinqi==8) {xinqi=1;} write_xingqi(); write_com(0x80+15); write_com(0x0f); } if(s1num==5) { ri++; if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12) {if(ri==32) {ri=1;} write_ri(ri); write_com(0x80+9);} if(yue==4||yue==6||yue==9||yue==11) {if(ri==31) {ri=1;} write_ri(ri); write_com(0x80+9);} if(yue==2) {if(ri==29) {ri=1;} write_ri(ri); write_com(0x80+9);} } if(s1num==6) { yue++; if(yue==13) {yue=1;} write_yue(yue); write_com(0x80+6); } if(s1num==7) { nian2++; if(nian2==100) { nian2=0; } write_nian2(nian2); write_com(0x80+3); } if(s1num==8) { nian1++; if(nian1==100) { nian1=0; } write_nian1(nian1); write_com(0x80+1); } } } if((s3==0)&&(s1num!=0)) { delay(5); if(s3==0) { while(!s3); if(s1num==1) { miao--; if(miao==-1) { miao=59; } write_sfm(10,miao); write_com(0x80+0x40+11); } if(s1num==2) { fen--; if(fen==-1) { fen=59; } write_sfm(7,fen); write_com(0x80+0x40+8); } if(s1num==3) { shi--; if(shi==-1) { shi=23; } write_sfm(4,shi); write_com(0x80+0x40+5); } if(s1num==4) { xinqi--; if(xinqi==-1) {xinqi=6;} write_xingqi(); write_com(0x80+15); write_com(0x0f); } if(s1num==5) { ri--; if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12) {if(ri==0) {ri=31;} write_ri(ri); write_com(0x80+9);} if(yue==4||yue==6||yue==9||yue==11) {if(ri==0) {ri=30;} write_ri(ri); write_com(0x80+9);} if(yue==2) {if(ri==0) {ri=28;} write_ri(ri); write_com(0x80+9);} } if(s1num==6) { yue--; if(yue==0) {yue=12;} write_yue(yue); write_com(0x80+6); } if(s1num==7) { nian2--; if(nian2==-1) { nian2=99; } write_nian2(nian2); write_com(0x80+3); } if(s1num==8) { nian1--; if(nian1==-1) { nian1=99; } write_nian1(nian1); write_com(0x80+1); } } } } void main() { init(); //初始化LCD while(1) { ks(); if(num==20) { num=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; xinqi++; if(xinqi==8) {xinqi=1;} ri++; if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12) { if(ri==32) { ri=1; yue++; if(yue==13) { yue=1; nian2++; if(nian2==100) { nian2=0; nian1++; write_nian1(nian1); } write_nian2(nian2); } write_yue(yue); } write_ri(ri); write_xingqi(); } if(yue==4||yue==6||yue==9||yue==11) { if(ri==31) { ri=1; yue++; write_yue(yue); } write_ri(ri); write_xingqi(); } if(yue==2) { if(ri==29) { ri=1; yue++; write_yue(yue); } write_ri(ri); write_xingqi(); } } write_sfm(4,shi); } write_sfm(7,fen); } write_sfm(10,miao); } } } void timer1() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; num++; } |
|
相关推荐
4个回答
|
|
闹钟不就是判断时间吗,你时间都能显示了还不能做个判断?
|
|
|
|
额~~我说的是,加个按键调出时间,然后时间调好后,又回去走表,走到了,也就是闹铃了,不是keil软件中加个判断就行的 |
|
|
|
这就是按键调整一个数据,然后利用时间和这个数据做判断啊
|
|
|
|
说的好轻巧~~再按下的时候,表时停的,但是调好后,表继续走,这里就有一个问题啊, |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11790 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 18:54 , Processed in 0.981535 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号