完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
数码管的静态显示与动态显示
学习数码管的静态与动态显示,首先要清楚,同一个时刻,单片机只能使能一个数码管。 动态显示:轮流点亮数码管,利用人眼的视觉暂留现象,造成多个数码管被点亮的视觉体验。 静态显示:可理解为非动态显示,即不会轮番点亮数码管。在多个数码管的显示中,静态显示的意义不大。 记住:100Hz无闪烁!!! 只要刷新频率大于100Hz,即刷新时间小于10ms,就可以做到无闪烁,这也是动态扫描的硬性指标。 静态显示的演示代码: #include //数码管静态显示 unsigned char code LedChar[10]={//数码管显示的数字0~9 0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90}; unsigned char cnt = 0; unsigned char sec = 0; ***it DigitalTube = P1^0;; void main() { //点亮数码管 DigitalTube = 0; //设置定时器 TMOD = 0X01; TH0 = 0XB8; TL0 = 0X00; TR0 = 1; while(1) { P0 = LedChar[sec]; if(TF0 == 1) { TF0 = 0; TH0 = 0XB8; TL0 = 0X00; cnt++; if(cnt>=50) { cnt = 0; sec++; if(sec>=10) { sec = 0; } } } } } 动态显示的演示代码 #include //数码管动态显示 unsigned char code LedChar[10]={//数码管显示的数字0~9 0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90}; unsigned char flag ; ***it DigitalTube1 = P1^0; ***it DigitalTube2 = P1^1; void main() { TMOD = 0X01; TH0 = 0Xe7b8; TL0 = 0X0000; TR0 = 1; flag = 0; while(1) { if(flag == 0) { DigitalTube1 = 0; DigitalTube2 = 1; P0 = LedChar[1]; } else if(flag == 1) { DigitalTube1 = 1; DigitalTube2 = 0; P0 = LedChar[2]; } if(TF0 == 1) { TF0 = 0; TH0 = 0Xe7b8; TL0 = 0X0000; flag = !flag; } } } |
|
|
|
只有小组成员才能发言,加入小组>>
2553 浏览 0 评论
1152浏览 2评论
750浏览 1评论
503浏览 0评论
269浏览 0评论
433浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 12:33 , Processed in 1.399775 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号