单片机驱动数码管动态扫描的优化方法

单片机驱动数码管动态扫描的优化方法

ID:6765434

大小:28.50 KB

页数:6页

时间:2018-01-24

单片机驱动数码管动态扫描的优化方法_第1页
单片机驱动数码管动态扫描的优化方法_第2页
单片机驱动数码管动态扫描的优化方法_第3页
单片机驱动数码管动态扫描的优化方法_第4页
单片机驱动数码管动态扫描的优化方法_第5页
资源描述:

《单片机驱动数码管动态扫描的优化方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、单片机驱动数码管动态扫描的优化方法/*单片机驱动数码管动态扫描方式的优化适用于驱动能力受限且对显示效果要求不很严格的情况假定单片机引脚输入和输出电流的能力均为20mA,若引脚直接驱动数码管,常规动态扫描方式当某位的8个灯全亮时每个灯只能分配2.5mA电流。本文介绍的方法将要显示的数字作为一个整体进行计算拆分,逐次显示,每次显示两个数上的2或4个灯,或一个数上的1或2个灯。这样每个数上每次最多显示2个灯,则通过每个灯的电流可设计为10mA。以显示4位不带点的数字为例,统计分析表明,平均扫描一遍需显示8.8次,而

2、传统方法为4次,传统方法的亮度系数为2.5/4=0.625,本文优化方法的亮度系数为10/8.8=1.136,表明本文方法可将平均亮度提高接近一倍本文优化方法缺点:1.需多占用些代码空间2.不同数字亮度会稍有差别,幸好人眼对亮度变化不很敏感主函数每隔一段时间调用js_sc()函数,将计算出的输出序列shuchu[i][j]逐次显示,shuchu[][0]、shuchu[][2]为位选,shuchu[][1]、shuchu[][3]为片选,shuchu[i][0]==0xff结尾推荐使用定时器中断扫描输出显示,

3、因调用js_sc()函数更新shuchu[i][j]时在后台进行,数字显示无缝更替本程序代码尚存在进一步优化的空间*/unsignedcharseg[23]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x80,0x61,0x10,0x00};//点,c,-,空//共阴数码管字模unsignedcharheng_seg[23]={0x06,0x02,0x

4、05,0x05,0x04,0x05,0x06,0x03,0x07,0x06,0x07,0x03,0x06,0x06,0x05,0x06,0x07,0x04,0x08,0x07,0x01,0x03,0x01,0x00};//灯数volatileunsignedcharshuchu[16][4];//输出序列volatileuint8_tzuhe_n_count=0,s=0;volatileuint16_tt0cnt=0,DATA_seg_show_T0=0xff;//T0中断扫描volatileunsigned

5、charshuchu_i=0;//#ifdefSEG_interrupt//uint8_tshuchu_i=0;//#endif;voidjs_zuhe_min_t(uint8_tm1,uint8_tm2,uint8_tzuhe_n[4][8],uint8_t*zuhe_min,uint8_tflag)//flag:横竖方向标志,取固定值4或2{zuhe_min[0]=0xff;//初始值为0//=============================if(flag!=4){for(uint8_ti=0;i

6、

7、====================for(uint8_ti=0;i

8、0xff&&(zuhe_n[i][j]+zuhe_n[i][k]+zuhe_n[u][j]+zuhe_n[u][k]

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。