【原子哥,各位大神!】想利用八段数码管做一个电子表

2019-08-17 03:30发布

想利用八段数码管做一个电子表。
数码管一个有四片。
最后一片显示秒数。利用延时函数成功实现了,到9的时候,需要进位,想让倒数第二片数码管显示进位的数,但是问题出现了,按理第四片到9,第三片就应该变成1,然后第四片循环,直到下一次到9,第三片才变成2,以此类推。为什么我没有办法让第三片数码管停止在一个数不动,就是等到需要进位的时候第三片的状态完全跟第四片一样了!
[mw_shl_code=c,true] u8 const CharCode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳段码表 //数码管显示 int main(void) { // u8 i; // u8 t; u8 a; //秒个位(第四片) u8 b; //秒十位(第三片) Stm32_Clock_Init(9); //系统时钟设置 delay_init(72); //延时初始化 SEG_Init(); //数码管初始化 SEG_DATAOUT(0); //取段码数据 KEY_Init(); /* 数码管第四片显示秒的个位数 */ b=0; for(a=1;;a++) { if(a==10) { delay_ms(1000); a=0; b=b+1; { SEG_DATAOUT(CharCode<<8); PC8=0; } { SEG_DATAOUT(CharCode[0]<<8); PC9=0; } } else if(a<=9) { delay_ms(1000); SEG_DATAOUT(CharCode[a]<<8); PC9=0; } }[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
正点原子
1楼-- · 2019-08-17 04:07
楼主,你这完全没有做扫描。。。
能按你的思路显示才怪。
数码管显示,最简单就是做扫描,你开个定时器中断,让定时器不停的扫描4个数码管,输出不同的内容,注意,频率起码也要30Hz以上吧,也就是每秒要扫描30遍,否则会看到闪烁。
把数码馆扫描显示搞定了,你这个要求是分分钟就达到了。
Mr_Head
2楼-- · 2019-08-17 07:32
求助啊!!!!
八度空间
3楼-- · 2019-08-17 08:28
逻辑好像不对
老虎的菜
4楼-- · 2019-08-17 14:20
 精彩回答 2  元偷偷看……
Mr_Head
5楼-- · 2019-08-17 18:44
回复【3楼】Badu_Space:
---------------------------------
老师 给讲讲呗。。。  就是进位的时候,两片数码管怎么显示不同的数字
Mr_Head
6楼-- · 2019-08-17 21:29
回复【4楼】老虎的菜:
---------------------------------
51 的看不懂啊   你也是黑龙江的???  能给我讲一讲思路么,就是在进位的时候,怎么同时显示不同数字

一周热门 更多>