- UID
- 872235
|
2
数码管的显示
一般情况下我们用的八位一体的数码管,采用动态扫描的方法来完成显示;非常庆幸人眼在高于50hz以上的闪烁时发现不了的。所以我们在动态扫描数码管的间
隔时间是充裕的。这里我们定其时限为4ms(250HZ)
,用定时器定时为2ms,在定时中断程序中进行扫描的显示,每次只显示其中的一位;当然时限也可以弄长一些,更推荐的方法是把显示函数放入主循环中,而定
时中断中置位相应的标志位即可;
// Timer 0 比较匹配中断服务,4ms定时
interrupt
[TIM0_COMP] void timer0_comp_isr(void)
{
display(); //
调用LED扫描显示
……………………
}
void display(void) //
8位LED数码管动态扫描函数
{
PORTC = 0xff; //
这里把段选都关闭是很必要的,否则数码管会产生拖影
PORTA =
led_7[dis_buff[posit]];
PORTC = position[posit];
if (++posit
>=8 )
posit
= 0;
} |
|