完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
就是一个24小时的时钟,我编的代码
#include #include unsigned char code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; void delay(); //int zhongduan() interrupt 1; int a=0,b=0,c=0,d=0,e=0,f=0,t=0 ; void delay() { int g,h; for(g=100;g>0;g--) for(h=110;h>0;h--); } void main() { TMOD=0X01; TR0=1; TH0=0X3C; TL0=0XB0; EA=1; ET0=1; while(1) {P2=0x01; P1=smg[a]; delay(); P1=0; P2=0x02; P1=smg[b]; delay(); P1=0; P2=0x04; P1=smg[c]; delay(); P1=0; P2=0x08; P1=smg[d]; delay(); P1=0; P2=0x10; P1=smg[e]; delay(); P1=0; P2=0x20; P1=smg[e]; delay(); P1=0; } } void zhongduan() interrupt 1 { TH0=0X3C; TL0=0XB0; t=t+1; if(t>21) {f=f+1; if(f>9) {f=0; e=e+1; {if(e>5) e=0; d=d+1; {if(d>9) d=0; c=c+1; {if(c>5) c=0; b=b+1; {if(b>4) b=0; a=a+1; {if(a>2) a=0;}}}}}}}} 还有电路图,就是P1脚控制数字,P2脚控制用哪个数码管,P2引脚连着数码管的共阳,通过控制共阳达到目的, 不过用KEIL仿真的时候,数字钟的数字乱跳,加快数码管切换的速度就不亮了。 |
|
相关推荐
10个回答
|
|
|
|
|
|
错手发送了。但是数字跳得很快,时针的好像秒针一样
|
|
|
|
我改了些问题,t记得消零了,个位也改正为f了
|
|
|
|
大家都是看帖不回帖的啊{:4:},现在只有秒位正常,秒位进位其他全都进位了
|
|
|
|
延时太长
|
|
|
|
我可以调延时,但是显示效果还是不完整,再低,就直接不显示了。 我现在把后面的IF语句全部都拆开后,套上过括号就调试好计时部分了,不过动态扫描的显示还是很烂,是proteus的问题吗?延时我调到10ms还是没法做到完整显示 |
|
|
|
|
|
|
|
/*
程序还可以优化,增加程序的时事性。显示可以用定时中断显示刷新。不要做流水帐 */ #include #include //函数申明 void delay(unsigned char MS); void Word_LED(unsigned char *Dtimer,unsigned char *LEDCRT); // 1 2 3 4 5 6 7 8 9 编码是??? unsigned char code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //int zhongduan() interrupt 1; // 时分秒 可以加长 或用结构体 unsigned char timering[3] = {0,0,0}; unsigned char LED_CRT[6]; //6位LED显示缓存, H M S unsigned char LED_num; //显示计数 //int a=0,b=0,c=0,d=0,e=0,f=0,t=0 ; void delay(unsigned int MS) //可以根据需要调整实参达到调整时间的目的 { unsigned int num; for(;MS > 0; g--) for(num=110; h > 0; h--) Word_LED(timering, LED_CRT); //实时标尺变换 } void main() { TMOD=0X01; TR0=1; TH0=0X3C; TL0=0XB0; EA=1; ET0=1; LED_num = 0; while(1) { for(LED_num = 0; LED_num < 7; LED_num++) { P1 = LED_CRT[LED_num]; p2 = 1 << LED_num; delay(100); } } void zhongduan() interrupt 1 { TH0=0X3C; //这里在初始化里改成自动重装载模式,达到精确定时 TL0=0XB0; timering[2] += 1; //加秒 if(timering[2] >= 60) { //进位 timering[2] = 0; timering[1] += 1 if(timering[1] >= 60) { timering[1] = 0; timering[0] += 1; if(timering[0] >= 24) timering[0] = 0; //0点处理 } } } void Word_LED(unsigned char *Dtimer,unsigned char *LEDCRT) { unsigned char num; for(num = 6; num > 0; num--) { *LEDCRT++ = smg[*Dtimer/10]; //十位 *LEDCRT++ = smg[*Dtimer%10]; //个位 Dtimer ++; } } |
|
|
|
好像是廷时问题,不知道你解决了没有,其实可以用时钟芯片DS1302
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
203 浏览 0 评论
761 浏览 0 评论
806 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
743 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1195 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11806 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 19:02 , Processed in 0.725826 second(s), Total 87, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号