完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#define uchar unsigned char #define uint unsigned int uchar code dula[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};// 显示段码值0123456789- //void display(uchar ha ,uchar hb,uchar m,uchar ma,uchar mb); void display(); //声明显示函数 void init(); //声明初始化函数 #define cont 50000 //to计数值,约50ms #define TH_M1 (65636-cont)/256 //t0计数高八位 #define TL_M1 (65636-cont)%256//t0计数低八位 uchar sec,mshi,mge,hshi,hge,a; //mshi分十位,mge分个位,hshi小时十位,hge小时个位 ,sec秒 uchar min,hour; #define duxu P2//段选 #define wei P1 //位选 void delay(uint z) //延迟z*1ms { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() //主函数 { init(); while(1) { { if(sec==59) { sec=0; min++; if(min==59) { min=0; hour++; } else{mshi=min/10; mge=min%10;} if(hour==23) hour=0; else{hshi=min/10; hge=min%10;} } } delay(10); display(); } } void init() //初始化 { IE=0X82; //开总中断,开定时器0 TMOD=0X01; //TO采用mode1 TH0=TH_M1; //装初值 TL0=TL_M1; TR0=1;//启动T0 sec=0; min=0; hour=12; a=0; } void timer0(void) interrupt 1 //中断t0 { TH0=TH_M1; //装初值 TL0=TL_M1; //a++; if(++a==20) { a=0; sec++; { if(sec==59) { sec=0; min++; if(min==59) { min=0; hour++; } else{mshi=min/10; mge=min%10;} if(hour==23) hour=0; else{hshi=min/10; hge=min%10;} } } } } void display() { wei=0xfe; duxu=dula[hshi]; delay(5); wei=0xfd; duxu=dula[hge]; delay(5) ; wei=0xfb; duxu=dula[10]; delay(5) ; wei=0xff; wei=0xf7; duxu=dula[mshi]; delay(5) ; wei=0xef; duxu=dula[mge]; delay(5) ; }
|
|
相关推荐
8个回答
|
|
C:UsersAdministratorDesktopQQ截图20130624231136
|
|
|
|
扫描。。。。。。。。。。。
|
|
|
|
问题真不少 你再仿真试试 你对着代码跟你的比较,有什么疑问再交流
#include #define uchar unsigned char #define uint unsigned int uchar code dula[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};// 显示段码值0123456789- //void display(uchar ha ,uchar hb,uchar m,uchar ma,uchar mb); void display(); //声明显示函数 void init(); //声明初始化函数 #define cont 50000 //to计数值,约50ms #define TH_M1 (65535-cont)/256 //t0计数高八位 #define TL_M1 (65535-cont)%256//t0计数低八位 uchar sec,mshi,mge,hshi,hge,a; //mshi分十位,mge分个位,hshi小时十位,hge小时个位 ,sec秒 uchar min,hour; #define duxu P2//段选 #define wei P1 //位选 void delay(uint z) //延迟z*1ms { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() //主函数 { init(); while(1) { mshi=sec/10; mge=sec%10; hshi=min/10; hge=min%10; display(); } } void init() //初始化 { IE=0X82; //开总中断,开定时器0 TMOD=0X01; //TO采用mode1 TH0=TH_M1; //装初值 TL0=TL_M1; TR0=1;//启动T0 sec=0; min=0; hour=12; a=0; } void timer0(void) interrupt 1 //中断t0 { TH0=TH_M1; //装初值 TL0=TL_M1; //a++; if(++a==20) { a=0; sec++; { if(sec==60) // { sec=0; min++; if(min==60) { min=0; hour++; if(hour==24) hour=0; } } } } } void display() { wei=0xfe; duxu=dula[hshi]; delay(5); wei=0xfd; duxu=dula[hge]; delay(5) ; wei=0xfb; duxu=dula[10]; delay(5) ; wei=0xff; wei=0xf7; duxu=dula[mshi]; delay(5) ; wei=0xef; duxu=dula[mge]; delay(5) ; } |
|
|
|
while(1)
{ mshi=sec/10; mge=sec%10; hshi=min/10; hge=min%10; display(); } } 非常谢谢楼上的,因为不想显示秒,就改了一下,有时间我在加上按键扫描的函数 |
|
|
|
|
|
|
|
另外楼主要注意时 分 秒进位时的判断条件,如果是计数0~59应该写成 if(sec==60) //这里是60 同理min和hour应该是60和24 { sec=0; } 或者写成 : if(sec>59) { sec=0; } |
|
|
|
#include #define uchar unsigned char #define uint unsigned int uchar code dula[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};// 显示段码值0123456789- void display(); //声明显示函数 void init(); //声明初始化函数 void keyscan(); ***it pb1=P3^2; //功能按键,按一下调分,在按一下调时 ***it pb4=P3^3; ***it pb2=P3^6; ***it pb3=P3^7; #define cont 50000 //to计数值,约50ms #define TH_M1 (65535-cont)/256 //t0计数高八位 #define TL_M1 (65535-cont)%256//t0计数低八位 uchar sec,mshi,mge,hshi,hge,a; //mshi分十位,mge分个位,hshi小时十位,hge小时个位 ,sec秒 uchar min,hour; #define duxu P2//段选 #define wei P1 //位选 void delay(uint z) //延迟z*1ms { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() //主函数 { init(); while(1) { keyscan(); delay(20); /* mshi=min/10; mge=min%10; hshi=hour/10; hge=hour%10; */ display(); keyscan(); } } void init() //初始化 { IE=0X82; //开总中断,开定时器0,中断into TMOD=0X01; //TO采用mode1 // TCON=0X01; TH0=TH_M1; //装初值 TL0=TL_M1; TR0=1;//启动T0 sec=0; min=0; hour=0; a=0; } void timer0(void) interrupt 1 //中断t0 { TH0=TH_M1; //装初值 TL0=TL_M1; //a++; if(++a==20) { a=0; sec++; { if(sec==60) // { sec=0; min++; if(min==60) { min=0; hour++; if(hour==24) hour=0; } } } } } void display() { mshi=min/10; mge=min%10; hge=hour%10; hshi=hour/10; wei=0xfe; duxu=dula[hshi]; delay(5); wei=0xfd; duxu=dula[hge]; delay(5) ; wei=0xfb; duxu=dula[10]; delay(5) ; wei=0xff; wei=0xf7; duxu=dula[mshi]; delay(5) ; wei=0xef; duxu=dula[mge]; delay(5) ; } void keyscan() { delay(10); if(pb2==0) //加分钟 { delay(20); if(pb2==0) min++; if(min>60) min=0; while(!pb2); } if(pb3==0) //减分钟 { delay(20); if(pb3==0) min--; if(min==0) min=60; while(!pb3); } if(pb1==0) //加小时 { delay(20); if(pb2==0) hour++; if(hour>24) hour=0; while(!pb1); } if(pb4==0)//减小时 { delay(20); if(pb3==0) hour--; if(hour==0) hour=24; while(!pb3); } } 求解,??我把按键子函数加上去后仿真是数码管就闪烁,这是咋回事?不调用按键函数就正常 |
|
|
|
发现按键函数有错改了过来就好了,终于好了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
820 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第十一章 KEY实验
388 浏览 0 评论
783 浏览 0 评论
801 浏览 2 评论
飞凌嵌入式-ELFBOARD-ELF 2硬件知识分享-最小系统原理
466 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11929 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-12 08:46 , Processed in 0.636186 second(s), Total 55, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号