数码管动态显示乱码现象分析
数码管动态显示乱码现象分析 第24卷第5期
2009年1O月
液晶与显示
ChineseJournalofLiquidCrystalsandDisplays
Voi.24.No.5
0Ct.,2009
文章编号:1007—2780(2009)05—0704—04
数码管动态显示乱码现象分析
熊再荣,雷建龙,李汉玲.
(1.武汉船舶职业技术学院实iJll中心,湖北武汉430050,E—mail:lj162823073@yahoo.com.ci1 2.武汉船舶职业技术学院电子系,湖北武汉430050) 摘要:提出了在单片机控制数码管动态显示时出现显示乱码现象这一问题;从人眼的特性
及动态显示的过程出发,分析了单片机程序控制数码管时,产生显示混乱现象的原因;并且正
反两方面的实验验证了所做的分析;最后还提出了解决这些问题的
. 关键词:数码管;动态显示;单片机;乱码
中图分类号:TN873.5;TP368.1文献标识码:A
1引言
数码管是一种由发光二极管组成的段码型显
示器件.虽然现在段码型液晶显示器件占据了数
字显示的大部分市场,但由于LED数码管具有主
动发光,使用温度范围宽,抗震性能好等优点,在
仪器,仪表的数字显示方面仍然有广泛的应用.
数码管一般由7个条状LED按"8"字形排列
而成,可实现数字"0,9"及少量字符的显示;另外 为了显示小数点,增加了1个点状的LED,因此 数码管就由8个LED组成.数码管的驱动方式 有静态式和动态式两类.静态驱动是指数码管的 每一个段码都由一个单片机的I/O端口进行驱 动,或者使用如BCD码二一十进制译码器译码进 行驱动.静态驱动的优点是编程简单,显示亮度 高;缺点是占用I/O端口多,实际应用时必须增 加译码驱动器进行驱动,增加了硬件电路的复杂 性.动态驱动是将所有数码管的8个显示笔划的 同名端连在一起,另外为每个数码管的公共极 COM增加位选通控制电路,位选通由各自独立 的I/O线控制,当单片机输出字形码时,所有数 码管都接收到相同的字形码,但究竟是哪个数码 管会显示出字形,取决于单片机对位选通COM 端电路的控制,所以只要将需要显示的数码管的 选通控制打开,该位就显示出字形,没有选通的数 码管就不会亮.通过分时轮流控制各个数码管的 的COM端,就使各个数码管轮流受控显示.动 收稿日期:2009,03—14;修订日期:2009—04—1l 基金项目:2007年湖北省教育厅科研项目(No.B2oo753001)
态显示的效果和静态显示是一样的,但能够节省 大量的I/0端口,而且功耗更低.
在单片机控制的数码管动态显示过程中,由于 显示程序给数码管送出的段码及位码的次序不一 样,所以有时会产生显示混乱现象,一些文献上虽有 正确的参考程序],但对由于颠倒送位码与段码次 序出现乱码问题并没有进行分析,在其它论文及有 关资料上也未看到对这一问题的详细分析.作者在
以前的研究过程中曾出现过类似问题[3],相信很多 显示接口设计人员在工作中也会遇到这一问题.作 者通过研究及实验验证,这一问题终于得以解决. 本文将对这一有现实意义的问题进行实验及分析. 2实验及现象
实验电路如图1所示,由单片机控制8位数
码管.单片机AT89C51的P0口通过总线驱动 器74LS244连接数码管的段码,P2.2,P2.0通 过地址译码器74LS138连接数码管的8个位码. 先采用仿真手段.仿真软件选用了能仿真单片机 的优秀仿真软件Proteus,它内置了多达上万个元 件的仿真模型库,包括8位单片机8051系列.数 码管的驱动程序在KeilC下编辑,运行.
驱动数码管的显示程序如下:
#include<reg51.h> //共阴数码管O,9的段码
unsignedcharcodelistr]一{0x3f,0x06,Ox5b, Ox4f,Ox66,0x6d,0xTd,0x07,Ox7f,Ox6f};
第5期熊再荣,等:数码管动态显示乱码现象分析705 //待显示的数字
unsignedchardatadisp[]一{0,7,4,4,2,0,3,7);
//显示子程序
voiddisplay(unsignedchari) {
PO—list[-disp[-i~];//送显示段码
P2一i;//送显示位码
//定时中断程序,每5ms中断一次,更新显示. voidtimer1一
int(void)interrupt3 {
TH1一一5000/256:
TI1一一5000%256;
j++;
if(j>7)
j—o;
display(j);
}
//主程序,初始化定时器,等待中断
main()
{
TMOD===0xl0:
TH1—5000/256:
TI1一一5000%256;
EA一1;
ET1—1:
TR1—1:
while(1);
)
图1数码管动态显示电路
Fig.1DynamicdisplaycircuitofLED
程序设计成每隔5ms依次扫描一位数码管, 数码管循环动态显示.正常情况下8位数码管的 显示效果应如图1所示,但是实际显示的效果却 如图2所示,为乱码.图中是通过Proteus仿真 软件得到的结果,为进一步分析,制作了实际的实 验电路,但效果也是如此.
图2数码管显示乱码现象
Fig.2MessycodeofLEDdisplay
3乱码原因分析
为分析原因,采用了单片机仿真软件Proteus 与单片机编译分析软件KeilC联调的方式.在 Proteus软件中画好如图1所示的仿真电路图,并 将其主菜单调试"Debug"设置为"useremotede— bugmonitor",即远程调试模式,通过KeilC中的 程序来调试.在KeilC环境下输入如上的程序, 将其主菜单的"Project"下的"OptionforTarget"
选项卡中的调试项"Debug"选择为"useProteus VSMSimulator",即使用Proteus来调试.这样 在KeilC中编译好程序后,选择主菜单"Debug" 下的"Start/StopDebugsession"就可启动仿真, 在Proteus中可以同步观察仿真的结果. 为精确定位产生乱码的位置,在KeilC中采 用单步运行方式,当运行到"P0一list[disp[i]];"
时,要显示的数字不出现在应显示的位置而是在 前一位的位置上;当运行下一句"P2一i;"时,数字 才移到了应显示的本来位置.产生问题的地方找 到了,看来出现乱码的原因是数字在显示器上产 生了移动现象.
动态显示是利用人眼对光刺激的滞留效应, 光线引起视觉后会在人的视觉系统中留下约 0.24S的停滞时间.在数码管动态显示中,只要 扫描的时间足够快,虽然在一个时刻只有一位数 码管发光,但却可以看到8位数码管"同时"显示 的效果.在上面的显示程序中,先送的是段码,这 一
时刻位码并没有改变,故所送的数仍然显示在
前一位上;虽然紧接着改变显示位,送位码,前一位的显示仍将"滞留"在人眼上,这样由于前一位
原来的显示与之在人眼上重叠,便显示了乱码. 706液晶与显示第24卷
在图2中第三位数码管的显示也说明了这种分 析.由于第三位和第四位都是显示的数字"4",重 叠后仍然应显示"4",而其它数码管由于相邻的数 字不同,则出现乱码.
4解决办法
既然乱码现象是由于位码没有更新,两次显 示重叠造成的,所以为了能正确显示,可以在每次 扫描更新显示时,先关闭显示器,如在显示程序前 面加上"P0一OxO0;"即可解决这一问题.其实只 要颠倒上面显示程序中送段码与送位码的次序, 先送位码,再送段码,也不会显示乱码.同样采用 单片机仿真软件Proteus与单片机编译分析软件 KeilC联调的方式.在KeilC中单步运行,运行 到"P2===i;"句时,前次显示的数字出现在现应显 示的位置,运行到下一句"P0一list[disp[i]];"时, 本次要显示的数字才出现,即这时本位数字才更 新,似乎数字也产生了移位,应产生乱码,但实际 连续运行程序时并不产生乱码.原因是,先送位 码时,由于段码没有更新,仍是前一位的段码,前 参考文献:
一
位显示的数字会在下一位停留很短的几微秒的 时间(仅仅是执行送位码语句的执行时间),但之 后送来的本位的段码使之立即更新,并且要在人 眼上停留长得多的时间(这里是5ms),故所看到 的效果是本位的显示,而不是前一位的显示码. 将更改后的程序烧写到所制作的实验电路中,实
验时显示正常,没有出现乱码,说明解决问题的方
法是正确的.
5结论
由实验及分析可见,在使用单片机等微控制
器控制LED数码管及其它数码管显示时,如果采
用动态扫描的方法,控制程序先送段码再送位码,
由于人眼的"滞留"效应,将会产生乱码现象;为了
让显示器不显示乱码,其控制程序要么在每次显
示更新前先关闭显示器再送段位及位码,要么先
送位码再送段码,都可解决这一问题.,
以上修改了的程序已运用到所做的课题研究
中,LED显示电路能正常稳定地工作,
了本
文分析的正确性.
[1]于斌.单片机原理与接口技术EM].北京:人民邮电出版社,2008:156158. [2]戴佳,戴卫恒.51单片机c语言应用程序实例精讲[M].北京:电子工业出版社,2007:108110.
[3]雷建龙.基于单片机的超声波液位测量仪[J].仪表技术与传感器,2004,256(6):8-10.
[4]姜道连,宁延一.用AT89C2051设计超声波测距仪[J].国外电子元器件,2000,135(12):3l一35.
[5]刘全,靳桅.超长LED显示屏控制系统的实现EJ].液晶与显示,2008,23(6):744—750.
[6]赵才荣,丁铁夫,郑喜凤,等.大屏幕LED显示控制系统的设计[J].液晶与显示,2005,20(6):564—569.
[7]赵才荣,刘金娥,丁铁夫.基于LED图文屏的多灰度图像实现方法LJ].液晶与显示,2006,21(1):82—86.
[8]梁志明,李斌.基于FPGA的大屏幕全彩LED扫描控制器设计[J].液晶与显示,2007,22(4):477481.
[9]冯道宁,王念春.地铁列车LED显示屏的设计[J].液晶与显示,2007,22(1):99—103.
[1o]郑喜凤,邓春健,冯永茂,等.一种实现LED显示屏显示信息的方法[J].液晶与显
示,2007,22(3):331—335
[11]田秀伟,郑喜凤,丁铁夫.基于SOPC的LED显示屏控制器设计[J].液晶与显
示,2007,22(6):737—741.
第5期熊再荣,等:数码管动态显示乱码现象分析7O7
AnalysisofMessyCodeinLEDDynamicDisplay
XIONGZai—rong,LEIJian—long,LIHan—ling
(1.TrainingCenterofWuhanInstituteofShipbuildingTechnology, Wuhan430050,China,Email:ljl62823073ahoo.com.cn;
2.ElectronicDepartmentofWuhanInstituteofShipbuildingTechnology,Wuhan430050,China)
Abstract
ThearticleputouttheproblemofmessycodeappearedindynamicdisplayofICDcontrolledby
MCU.Bystudyingthecharacteristicofeyesandtheprocessofthedisplay,thearticleanalyzed
the
causesofconfusiondisplaywhentheLEDwascontrolledbytheMCUprogram.Theexperimentspros
andconsprovedtheanalysisofthisarticlewasright.Themethodhowtosolvetheproblemwasgiven
out.
Keywords:LED;dynamicdisplay;MCU;messycode
作者简介:熊再荣(1965一),女,湖北武汉人,实验师,研究方向:嵌入式技术.
'',''l,',''',?'',',''',',,'','l,'',,'l,'l'?l,',,''''l,'l'',,,'l',,,'l''l,'I,,I?'l,'》,,'m'l
欢迎订阅2010年《液晶与显示》
《液晶与显示》是中国最早创办的液晶学科专业期刊,也是中国液晶学科和显示
技术领域中惟一的
综合性专业学术期刊.它由中国科学院长春光学精密机械与物理研究所,中国光学
光电子行业协会液
晶分会和中国物理学会液晶分会主办,科学出版社出版.
《液晶与显示》以创新性,综合性,实用性为办刊特色,内容丰富,涵盖面广,信息量大,可读性强,既
是启迪科技人员开拓创新思路的参考期刊,又是从事液晶和显示技术研究与开发的广大科技人员,大专
院校师生及相关领域的科技工作者进行学术交流的论坛,也是图
,情报等部门必不可少的信息来源.
《液晶与显示》为双月刊,国内定价4O..0元,全年240.00元,国内外公开发行.国内邮发代号:12—
203,国内读者可在当地邮局订阅;也可通过"全国非邮发报刊联合发行部"订阅(地址:天津市大寺泉集
北里别墅l7号,邮编300385),本刊的代号为:5074.国外读者可通过中国国际图书贸易总公司订阅
(地址:北京399信箱,邮编:l00044),国外发行代号:4868BM.同时,《液晶与显示》编辑部将竭诚为广
大读者服务,随时办理订阅.
地址:长春市东南湖大路3888号中国科学院长春光学精密机械与物理研究所 《液晶与显示》编辑部邮编:130033
电话:0431-861760590431—84613406传真:0431—84695881 E—mail:yjxs@ciomp.ac.cn;yJyxs@126.com