点阵式 LED 滚动汉字显示屏的 Proteus 仿真设计
作者: 时间:2008-08-29 来源:微计算机信息 浏览评论
关键词:
摘要:利用嵌入式系统软硬件设计仿真平台 Proteus 对点阵式 LED 滚动汉字显示
屏进行仿真设计,完成了系统的硬件电路设计和软件编程,并进行了仿真调试,实现了
汉字在点阵式 LED 显示屏上的滚动显示,达到了仿真设计的目的。
关键词:仿真;Proteus;显示;点阵
1.引言
点阵式 LED 组成的汉字显示屏在公共场所应用非常广泛。例如,车站发车时间提
示、股票大厅中的股票价格显示板、商场的活动广告栏、候机厅的起飞时间表。点阵显
示器的特点是可以按照需要的大小、形状和颜色进行组合,用单片机控制实行各种文字
或图型的变化,达到广告宣传和提示的目的。
Proteus 是一款新颖的嵌入式系统软硬件设计仿真平台,特别适用于单片机仿真,
能够在线、实时仿真多种类型的单片机,诸如 MCS-51 系列单片机、PIC 单片机、AVR
单片机等,能够像硬件仿真器一样进行软硬件调试,而没必要花钱去购买和维护价格不
菲的仿真器,对于初学单片机的人来说,既减少了学习成本,又达到了良好的学习效果。
2.硬件电路设计
点阵式 LED 滚动汉字显示屏硬件电路设计框图如图 1 所示。电路包括单片机、电
源电路、时钟电路、复位电路、驱动电路和 LED 点阵电路等。本设计的核心是利用单
片机读取显示字型码,通过驱动电路对 16×16 LED 点阵进行动态列扫描,以实现汉字
的滚动显示。本设计选用的单片机为ATMEL 公司的 AT89C52,显示屏采用16×16 LED
点阵。电源电路通过变压整流元件为单片机和其他电路提供稳定的+5V 工作电压。时
钟电路是单片机的驱动电路,复位电路可在需要时,手动使单片机程序计数器复位清零。
通过阳极驱动电路向 16×16 点阵送字型码,本设计采用 74LS273。通过阴极驱动电
路对 16×16 点阵进行列扫描,本设计采用 74HC138。
图 1 硬件电路设计框图
利用 Proteus 软件设计点阵式 LED 滚动汉字显示屏硬件电路原理图如图 2 所示。
在 Proteus 软件中,单片机模型本身包含了工作电源和可改变的工作频率,因此在仿
真时无需设计电源电路和时钟电路。需要说明的是在 Proteus 软件目前版本中还没有
16×16 点阵模块,本设计中采用 Proteus 软件中现有的 8×8 点阵模块组合成一个
16×16 点阵模块。从图 2 中可以看出,16×16 点阵的阳极驱动由 P0 口经输出缓冲器
74LS273 构成,在本设计中需要用两片,分别送出上 8 行和下 8 行的字型码。16×16
点阵的阴极驱动由 P2 口经 74HC138 译码后动态扫描 16×16 点阵的各列,本设计中
需要四片 74HC138 译码器,循环扫描各列,显示一个完整的汉字需要扫描 32 次。RP3
为排阻,含有 8 个电阻,作 P0 口各位的上拉电阻,以保证 P0 口能够输出高电平。复
位电路的作用是,在任何时刻可以手动复位单片机,使程序重新执行。
图 2.硬件电路原理图
3. 软件设计
AT89C51 单片机是 8 位机,每次只能送出 8 位数据,因此要向 16×16 点阵送出
16 行阳极驱动,需要送两次,或先送上 8 行,或先送下 8 行,为了能够实现每一列字
型码的完整显示,采用 74LS273 进行锁存,否则会出现字型残缺现象。根据设计要求
并结合图 2 的硬件连接进行程序设计,程序设计流程图如图 3 所示。
利用单片机 C 语言实现“2008 北京欢迎您!”10 个字的滚动显示,阿拉伯数字和
标点符号按 16×8 点阵编码,汉字按 16×16 点阵编码, “2008 北京欢迎您!”字型
码表如下:
{0x00,0x00,0x0C,0x1C,0x10,0x24,0x10,0x24,0x10,0x44,0x10,0x84,0x0F,
0x0E,0x00,0x00},
{0x00,0x00,0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x08,0x08,0x07,
0xF0,0x00,0x00},
{0x00,0x00,0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x08,0x08,0x07,
0xF0,0x00,0x00},
{0x00,0x00,0x0E,0x38,0x11,0x44,0x10,0x84,0x10,0x84,0x11,0x44,0x0E,
0x38,0x00,0x00},
{0x00,0x00,0x0E,0x04,0x08,0x0C,0x08,0x0C,0x08,0x08,0x08,0x10,0xFF,
0xFE,0x00,0x00},
{0x00,0x00,0x3F,0xFC,0x41,0x02,0x42,0x02,0x06,0x02,0x0E,0x06,0x0C,
0x0C,0x00,0x00},
{0x00,0x00,0x20,0x04,0x20,0x08,0x27,0x98,0x24,0xB0,0x24,0x82,0xA4,
0x81,0x64,0xFE},
{0x24,0x80,0x24,0x80,0x24,0xA0,0x27,0xB0,0x60,0x1C,0x20,0x08,0x00,
0x00,0x00,0x00},
{0x28,0x04,0x24,0x08,0x22,0x32,0x21,0xC2,0x26,0xC2,0x38,0x34,0x04,
0x04,0x18,0x08},
{0xF0,0x30,0x17,0xC0,0x10,0x60,0x10,0x18,0x14,0x0C,0x18,0x06,0x10,
0x04,0x00,0x00},
{0x02,0x02,0x82,0x04,0x73,0xF8,0x20,0x04,0x00,0x02,0x3F,0xE2,0x20,
0x42,0x40,0x82},
{0x40,0x02,0x3F,0xFA,0x20,0x02,0x20,0x42,0x20,0x22,0x3F,0xC2,0x00,
0x02,0x00,0x00},
{0x01,0x00,0x02,0x04,0x0C,0x1C,0x3F,0xC0,0xC0,0x1C,0x09,0x02,0x16,
0x02,0x60,0x92},
{0x20,0x4A,0x2F,0x82,0x20,0x02,0x24,0x0E,0x22,0x00,0x31,0x90,0x20,
0x0C,0x00,0x00},
{0x00,0x00,0x00,0x08,0x1F,0xDC,0x3F,0x08,0x3C,0x00,0x30,0x00,0x00,
0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00}。
(a)主程序流程图
(b)中断服务程序流程图
图 3. 程序流程图
动态扫描显示程序代码如下:
while (1)
{for (i=0;i<8;i++)
//显示左半边屏幕
{ P0=*(p+offset+2*i);
P2=i|0x90;
//P2.4=1,P2.3=0 选中 U3, 输出扫描码给 U7
delay();
P0=*(p+offset+2*i+1);
P2=i|0x08;
//P2.4=0,P2.3=1 选中 U2, 输出扫描码给 U6
delay();
}
for (i=8;i<16;i++)
//显示右半边屏幕
{ P0=*(p+offset+2*i);
P2=(i-8)|0xC0;
//P2.6=1 P2.5=0, P2.4=0 选中 U5,输出扫描码 U9
delay();
P0=*(p+offset+2*i+1);
P2=(i-8)|0x20;
//P2.5=1 P2.4=0, P2.3=0 选中 U4,输出扫描码 U8
delay();
} }
4. 调试与仿真
Proteus 仿真时,单片机需要加载程序,加载程序为.HEX 文件。本设计利用 Keil
μVision2, 在新建 Keil 项目时选择 AT89C52 单片机作为 CPU,将 C 语言源程序导
入,在“Options For Target”对话窗口中,选中“Output”选项中的“Create HEX File”,
编译链接后就可以生成.HEX 文件。在 Proteus ISIS 中,选中 AT89C52 并单击鼠标
左键,对 AT89C52 进行设置,设置单片机时钟频率为 12MHz,按照正确的文件路径
加载.HEX 文件。对单片机设置完毕后就可以开始仿真了。仿真过程中如有硬件问题可
在 Proteus ISIS 中直接修改,如有软件问题可在 Keil μVision2 中直接修改,通过 Keil
与 Proteus 的联合调试就可以得到满意的结果。本设计的仿真结果如图 4 所示。
图 4. 仿真结果
5.结论
利用 Proteus 实现了对点阵式 LED 滚动汉字显示屏的仿真,完成了“2008 北京欢
迎您!”10 个字的滚动显示,达到了良好的设计效果。该仿真电路接近实际电路,可以
直接由该电路利用相关软件设计印制电路板,加上电源电路和时钟电路,就可以制作出
实际的点阵式 LED 滚动汉字显示屏。通过前期仿真缩短了开发周期,降低了开发成本,
达到事半功倍之成效。
6.本文作者创新点
本文作者创新点在于:在深入研究嵌入式系统软硬件设计仿真平台 Proteus 的基
础上,成功完成了对点阵式 LED 滚动汉字显示屏的设计仿真,为单片机设计开发提供
了一种新的方法和 手段。