LED分批汉字显示屏的Proteus仿真设计

时间:2022-09-23 12:02:35

LED分批汉字显示屏的Proteus仿真设计

摘 要:介绍了一种利用嵌入式系统仿真软件Proteus实现对16×16 led点阵汉字分批显示的仿真设计。详细介绍点阵汉字分批显示的硬软件设计原理,给出了主要的C语言源程序,并给出了仿真运行结果。该LED显示屏系统结构简洁、功耗低、成本低、扩展性能好。通过proteus软件的前期仿真,LED显示系统设计大大缩短了实际开发周期,降低开发成本。

关键词:LED点阵; 分批显示; Proteus; AT89C51

中图分类号:TP312 文献标识码:B

文章编号:1004-373X(2010)12-0029-04

Proteus Design and Simulation of LED Chinese-Character Display in Batches

LI Ping

(Zhejiang Water Conservancy and Hydropower College,Hangzhou 310018,China)

Abstract:The simulation of 16 × 16 LED dot-matrix display of Chinese character in batches with an embedded system simulation software Proteus is introduced. The hardware and software design principles about dot-matrix Chinese character display in batches are proposed in detail, the main C-language source codes and the simulation results are given. The LED display system has simple architecture, low power consumption, low cost and good scalability. LED display system significantly reduces the actual development cycle and the development cost through the pre-simulation on Proteus.

Keywords:LED dot matrix; batch display; Proteus; AT89C51

0 引 言

近年来,LED显示屏由于具有亮度高,寿命长,功耗小,性能稳定,驱动简单以及可视距离远等优点[1],已经成为新一代的信息传播媒体工具。目前,LED显示屏应用十分广泛,如证券交易显示、金融信息显示、体育场馆显示比赛信息、广告,城市广场群显示、道路交通信息显示等领域。显示汉字信息时,一般需要多个LED点阵显示组合,最常见的组合方式有8×8,16×16,32×16等。由于显示屏的显示信息有限,当显示信息较多时,一般需要进行分批显示或者滚动显示。

Proteus是目前最先进、最完整的多种型号微处理器系统的仿真设计平台,由ISIS和ARES 两个构成,其中ISIS是一款智能电路原理图输入系统软件,可作为电子系统仿真平台,ARES是一款高级布线编辑软件,用于制作PCB印制电路板。开发者可以在无硬件条件下直接使用Proteus进行电路设计和仿真调试,真正实现了在计算机中完成电路原理图设计、电路分析与仿真、系统测试到形成印制电路板的完整电子设计、研发过程[2]。因此,本课题利用AT89C51单片机作为主控制器,采用Proteus软件实现对16×16 LED点阵汉字的分批显示,仿真运行通过后再进行点阵显示电路制作,大大缩减实际开发周期,节约了开发成本。

1 硬件电路设计

在很多LED显示的场合,需要实现一系列LED点阵汉字的分批显示,为简化设计,每批只显示2个汉字,分若干次完成全部显示。利用Proteus ISIS 平台画出的硬件电路如图1所示。

该硬件电路的核心是利用单片机读取显示字型码,通过驱动电路对16×16共阴极 LED 点阵进行动态列扫描,以实现点阵汉字的分批显示。设计选用的单片机为Atmel公司的AT89C51,它是一种低功耗,高性能CMOS 8位单片机,片内含4 KB可反复擦写的FLASH ROM,采用Atmel公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及8051引脚结构,内置看门狗电路。功能强大的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。时钟电路用于产生单片机工作时所必需的时钟信号,其中晶振频率为12 MHz。上电复位电路可保证单片机的在程序运行出错或操作错误使系统处于死锁状态时,重启运行。

显示单元是LED汉字显示屏,由2片16×16 LED 点阵模块组成。但由于Proteus 软件目前版本中还没有16×16 点阵模块,设计中采用Proteus 软件中的4个8×8点阵模块组合成1个16×16 点阵模块[3-4]。点阵汉字的阳极驱动是由单片机的P0口和P2口各自经过一片输出缓冲器74LS273向4个8×8 LED点阵输出字型码作为行驱动信号;点阵的阴极驱动由P1.0~P1.3经过4-16线译码器74HC154译码后输出列选信号[5],对4个8×8点阵进行列扫描,从而控制LED点阵的相应像素点亮。2个LED点阵汉字中的列选信号则分别由P3.0和P3.1控制来选择相应的74HC154,因此需要两片74HC154译码器。RP1为排阻,含有8个电阻,作为P0口各位的上拉电阻,以保证P0口能够输出高电平。

图1 硬件电路原理图

2 点阵汉字分批显示原理与软件设计

16×16共阴极LED点阵由4个8×8点阵构成,需要显示汉字字符串“单片机仿真!”,可通过建立数据表格的形式进行[6]。通过16×16点阵汉字字模提取软件,可提取各显示汉字的字模数据[2,7],详见程序设计中的显示字符代码表1。

在进行汉字分批输出显示时采用动态扫描驱动方式,可按行或列进行扫描。当按“列”扫描时,需要建立列的扫描代码表如下:

const uchar tab2[ ]={0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,0x0f,0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08}

现以列扫描为例,阐述16×16 LED点阵汉字分批显示原理。在初始化设置(关显示)后,首先,P1送出┑1列扫描代码,同时使P3=0xFD选中U2的74HC154和U4,对P0输出段码给左边汉字上半部的第1列以驱动相应段点亮;接着,使P3=0xFA选中U2的74HC154和U5,对P2输出段码值给左边汉字下半部的第1列以驱动相应段点亮,即送出了第一个汉字“单”的第1列的字模数据(16位段码值);再设置P3=0xF5选中U3的74HC154和U4,对P0输出段码给右边汉字的上半部的第1列以驱动相应段点亮。接着,使P3=0xF9亦选中U3的74HC154和U5,对P2输出段码值给由边汉字下半部的第1列以驱动相应段点亮,即送出了第2个汉字“片”的第1列的字模数据(16位段码值)。然后,给P1送第2列的扫描代码,同理再送出第1个汉字“单”、第2个汉字“片”的各自第2列的字模数据,…如此进行,经过16次列扫描,分时送完两个汉字的各自16个段码值,就可显示第1批汉字“单”、“片”;再进行第2批汉字“机”、“仿”的显示;…,直到汉字字符串显示完成。若字符显示完毕,又从头开始循环显示。LED点阵汉字分批显示的程序流程如2所示。在某一时刻,只有1行或1列发光二极管被对应的字模数据驱动点亮,但只要扫描间隔时间合适(一般为数毫秒),利用人眼的视觉暂留特性,看上去整批字符就显示在LED点阵显示器上。

主要的C语言源程序如下:

#include "reg51.h"

#define uint unsigned int

#define uchar unsigned char

code uchar tab1[ ]={ //显示的字符代码表

0x00,0x10,0x00,0x10,0x1f,0xd0,0x14,0x90, //“单”

0x94,0x90,0x74,0x90,0x54,0x90,0x1f,0xff,

0x14,0x90,0x34,0x90,0xd4,0x90,0x54,0x90,

0x1f,0xd0,0x00,0x10,0x00,0x10,0x00,0x00,

0x00,0x01,0x00,0x02,0x00,0x0c,0x7f,0xf0, //“片”

0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,

0x08,0x80,0xF8,0x80,0x08,0x80,0x08,0xff,

0x08,0x00,0x18,0x00,0x08,0x00,0x00,0x00,

0x10,0x20,0x10,0xc0,0x03,0x00,0xff,0xff,//“机”

0x12,0x00,0x11,0x82,0x10,0x0C,0x00,0x30,

0x7F,0xc0,0x40,0x00,0x40,0x00,0x40,0x00,

0x7F,0xfc,0x00,0x02,0x00,0x1e,0x00,0x00,

0x02,0x00,0x04,0x00,0x08,0x00,0x37,0xfe, //“仿”

0xe0,0x02,0x50,0x04,0x10,0x18,0x10,0x60,

0x9f,0x80,0x51,0x08,0x71,0x04,0x11,0x02,

0x11,0x04,0x33,0xf8,0x11,0x00,0x00,0x00,

… }; “真”,“!”字符代码此处略

const uchar tab2[]={0x07,0x06,0x05,0x04,0x03,//扫描代码表

0x02,0x01,0x00,0x0f,0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08};

void delay(uint n)//延时函数

{uint i;

for (i;i

void main( )//主函数

{int j=0,q=0,y=0;

ucharr,t=0;

P0=0x00;

P3=0xff;//初始化设置

while(1)

{for(r=0;r

for (j=q;j

{ P1=tab2[t]; //输出列扫描码

P3=0xf6;

P0=tab1[j]; //选中U2和U4,输出段码给左边汉字的上半部某列

j++;

P3=0xfa;

P2=tab1[j];//选中U2和U5,输出段码给左边汉字的下半部某列

delay(250);

y=j+31;

P3=0xf5;

P0=tab1[y]; //选中U3和U4,输出段码给右边汉字的上半部某列

y++;

P3=0xf9;

P2=tab1[y]; //选中U3和U5,输出段码给右边汉字的下半部某列

t++;

delay(250);

if(t==16)t=0;} //判断是否显示完两个汉字的各自16列

q=q+64; //指向下一批汉字字符,准备显示

if(q==192) q=0; }}//判断是否显示完该字符串

3 程序调试与仿真

(1) 生成目标代码文件。利用Proteus 平台在进行仿真时,需要加载程序到单片机中,加载的程序为目标代码文件.HEX。方法是:利用单片机软件仿真系统Keil UVsion3,在新建项目中选择AT89C51单片机作为CPU,同时将创建C语言源程序文件并将其加载到新建项目中。在“Project”下拉菜单中,选择“Options for Target”对话框,在对话框中选中“Output”选项卡中的“Create HEX File”选项。在“Project”下拉菜单中选择“Rebuild all Target Files”选项,编译成功后将生成.HEX目标代码文件[8]。

(2) 调试与仿真: 在Proteus ISIS 平台中,按图1画出硬件电路,单击鼠标右键将AT89C51单片机选中并单击鼠标左键,弹出“Edit Component”对话框,在其中的“Clock Frequency”栏中设置单片机晶振频率为12 MHz,在“Program File”栏选择生成的.HEX文件。保存设计,生成.DSN文件。在“Debug”菜单中选择“Execute”,可得到仿真运行效果[9]。仿真调试成功后,可看见“单片机仿真!”点阵汉字的分批显示。显示次序为“单片-机仿-真!”,其中“机仿”如图3所示。通过Keil 与Proteus 的联合调试取得了良好的效果。

图2 程序流程图

图3 仿真效果图

4 结 语

在嵌入式系统仿真平台Proteus 的基础上,实现对16×16 LED点阵汉字分批显示的仿真设计,实现了“单片机仿真! ”六个汉字的分批显示,达到了良好的设计效果。该仿真电路接近于实际电路,再使用Proteus ARES软件在仿真原理图的基础上直接绘制PCB电路板,即可以制作出实际的点阵式LED 分批汉字显示屏。该显示屏电路结构简洁,可靠性高,成本低且易于实现,软件通过适当修改即可实现其他显示功能如滚动显示等[10],显示灵活,适用领域广泛。通过Proteus的前期仿真为LED显示屏系统的设计开发大大缩短了开发周期,降低了开发成本,同时也为单片机应用系统、电子电 路的开发设计等提供了一种崭新的设计方法和有效手段。

参考文献

[1]靳桅,邬芝权,李骐,等.基于51系列单片机的LED显示屏开发技术[M].北京:北京航空航天大学出版社,2009.

[2]侯玉宝,平,李成群,等.基于Proteus的51系列单片机设计与仿真[M].北京:电子工业出版社, 2008.

[3]钟蔚,袁臣虎.点阵LED滚动汉字显示屏的Proteus仿真设计[J].微计算机信息,2008,24(6):106-107.

[4]王猛,陈林.基于Proteus的LED大屏幕的设计与仿真[J].微计算机信息,2008,24(6):233-235.

[5]游达章,黄劲.简易LED点阵汉字显示控制模块设计[J].现代显示,2008(5):43-45.

[6]杨延宁,刘立军,张志勇.基于Proteus的单片机汉字点阵显示电路设计[J].液晶与显示,2009,24(1):98-102.

[7]汪建,张丽娟.嵌入式LED点阵汉字显示系统的驱动与编码[J].微处理机,2007(1):119-121.

[8]朱清慧,王志奎.Proteus在LED点阵滚动显示屏设计中的应用[J].液晶与显示,2009,24(2):232-235.

[9]丁明亮,唐前辉.51单片机应用设计与仿真 基于Keil C与Proteus [M].北京:北京航天航空大学出版社,2009.

[10]远飞.基于Proteus的LED滚幕设计与仿真[J].电子元器件应用,2009,11(6):38-40.

上一篇:01-TE11模式转换器设计与实现'> 圆波导TE01-TE... 下一篇:卫星通信地球站系统驱动电动机的选择