完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
运行2s之后,原本不应该是到了13:00:00吗???为何分钟位会出现这种情况,跪求大神指导!!!??? |
|
相关推荐
14个回答
|
|
大神们帮帮我,谢谢了。
|
|
|
|
定时中断中的计时有问题,你拿笔算算先
|
|
|
|
|
|
|
|
if(flag%20==0)
{ flag=0; second++; if(second%60==0) { second=0; minute++; if(minute%60==0) { minute=0; hour++; } } } 改成这样试试,我也没试过啊,但是这样至少比你以前的那个要好些 |
|
|
|
太长了没看完,不过还是顶贴!!!
|
|
|
|
|
|
|
|
本帖最后由 lxingyang 于 2014-10-14 11:24 编辑
flag++; if(flag%20==0) { flag=0; second++; if(second%60==0) { second=0; minute++; } if(minute%60==0) { minute=0; hour++; } } |
|
|
|
flag++;
if(flag>20) { flag=0; second++; if(second>59) { second=0; minute++; } if(minute>59) { minute=0; hour++; } } 这样会更好一点 |
|
|
|
多谢了,已经解决了哦!对了你知道在源程序的基础上如何添加使用键盘更改时间的功能吗??? |
|
|
|
有按键接口吗?告诉我按键接口就行了 |
|
|
|
这是我以前写的数码管时钟程序,你可以参考一下 /******************本程序功能****************** *********************************************** *****整点报时,按键调时,开机蜂鸣器响一声****** *********************************************** **********************************************/ #include ***it buzz=P1^0; ***it key0=P3^4; //模式切换键 ***it key3=P3^5; //确定 ***it key1=P3^7; //加 ***it key2=P3^6; //减 unsigned char hour,min=59,sec=50,T50ms,flag,time,flag1; unsigned char modstate; //模式状态 unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//段码 void init(); //初始化子程序声明 void delay500us(unsigned char X); //延时子程序声明 void display(); //显示子程序声明 void keyscan(); void main() { EA=1; buzz=0; init(); while(1) { keyscan(); if(min==0&&sec==0) { buzz=0; } } } void init() //定时器0初始化子程序 { TMOD|=0x01; TH0=(65536-49990)/256; TL0=(65536-49990)%256; TR0=1; ET0=1; } void delay500us(unsigned char x) { unsigned char i, j; for(i=x;i>0;i--) for(j=248;j>0;j--); } void timer0() interrupt 1 //timer0 中断服务子程序,定时时间为 50ms,本程序加了 10us 的时间修 正量 { TH0=(65536-49990)/256; TL0=(65536-49990)%256; T50ms++; if(T50ms>=10) { buzz=1; } if(T50ms>=20) { T50ms=0; sec++; if(sec>=60) { sec=0; min++; if(min>=60) { buzz=0; min=0; hour++; if(hour>=24) hour=0; } } } } void timer1() interrupt 3 //timer1 { TMOD|=0X10; TH1=(65536-50000)/256; TL1=(65536-50000)%256; time++; if(time>=20) time=0; if(time<10) flag=0; else flag=1; } //*************显示函数*********************// void display() { TR1=0; P2=0XFF; P0=table[hour/10]; P2=0X7F; delay500us(5); P2=0XFF; P0=table[hour%10]; P2=0XbF; delay500us(5); P2=0XFF; P0=0XBF; P2=0XdF; delay500us(5); P2=0XFF; P0=table[min/10]; P2=0XeF; delay500us(5); P2=0XFF; P0=table[min%10]; P2=0XF7; delay500us(5); P2=0XFF; P0=0XBF; P2=0XFb; delay500us(5); P2=0XFF; P0=table[sec/10]; P2=0XFd; delay500us(5); P2=0XFf; P0=table[sec%10]; P2=0XFe; delay500us(5); } //*************调小时函数*****************// void keyscan() //按键识别钟程序 { TR0=1; while(modstate==0) { TR0=1; display(); if(key0==0) { display(); if(key0==0) modstate=1; while(key0==0) display(); } } //**********************调小时模式******************************************************// while(modstate==1) { TR0=0; display(); if(key0==0) { display(); if(key0==0) modstate=2; while(key0==0) display(); } if(key1==0) { display(); if(key1==0) { hour++; if(hour>=24) hour=0; while(key1==0) display(); } } if(key2==0) { display(); if(key2==0) { hour--; if(hour>=24) hour=0; if(hour<=0) hour=23; while(key2==0) display(); } } if(key3==0) { display(); if(key3==0) { modstate=0; while(key3==0) display(); } } } //***********************调分钟模式*****************************************************// while(modstate==2) { TR0=0; display(); if(key0==0) { display(); if(key0==0) modstate=3; while(key0==0) display(); } if(key1==0) { display(); if(key1==0) { min++; if(min>=60) min=0; while(key1==0) display(); } } if(key2==0) { display(); if(key2==0) { min--; if(min>=60) min=0; if(min<=0) min=59; while(key2==0) display(); } } if(key3==0) { display(); if(key3==0) { modstate=0; while(key3==0) display(); } } } //************************调秒模式****************************************************// while(modstate==3) { TR0=0; display(); if(key0==0) { display(); if(key0==0) modstate=1; while(key0==0) display(); } if(key1==0) { display(); if(key1==0) { sec++; if(sec>=60) sec=0; while(key1==0) display(); } } if(key2==0) { display(); if(key2==0) { sec--; if(sec>=60) sec=0; if(sec<=0) sec=59; while(key2==0) display(); } } if(key3==0) { display(); if(key3==0) { modstate=0; while(key3==0) display(); } } } } 评分 |
|
|
|
|
|
|
|
lcd 显示不是数码管 K1=P3^0;(暂停/确定) K2=P3^1;(模式选择) K3=P3^2;(加) K4=P4^3;(减) |
|
|
|
改一下就行了呀,不会这都不会改吧,直接把小时,分钟秒用LCD显示就行了 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十五章 摄像头实验
632 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
671 浏览 0 评论
772 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
1340 浏览 0 评论
1166 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12057 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 00:14 , Processed in 0.747844 second(s), Total 69, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号