首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

单片机程序架构3

单片机程序架构3

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;

}
返回列表