想利用八段数码管做一个电子表。
数码管一个有四片。
最后一片显示秒数。利用延时函数成功实现了,到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]
能按你的思路显示才怪。
数码管显示,最简单就是做扫描,你开个定时器中断,让定时器不停的扫描4个数码管,输出不同的内容,注意,频率起码也要30Hz以上吧,也就是每秒要扫描30遍,否则会看到闪烁。
把数码馆扫描显示搞定了,你这个要求是分分钟就达到了。
---------------------------------
老师 给讲讲呗。。。 就是进位的时候,两片数码管怎么显示不同的数字
---------------------------------
51 的看不懂啊 你也是黑龙江的??? 能给我讲一讲思路么,就是在进位的时候,怎么同时显示不同数字
一周热门 更多>