任务实施
一、任务分析
16*32点阵的行由两个锁存器U2、U3驱动控制,列由4个锁存器U4、U5、U6、U7驱动控制。单片机轮流为点阵行输出高电平,为列输出汉字字库编码;本任务程序编写采用定时器T0方式,不用长时间占用CPU资源,提高了CPU利用率并解决了点阵显示闪烁的问题。
多个汉字同时取模的时候,需定义一个二维数组,32个字节构成一个汉字,所以数组里面的元素长度为32。
uchar code zimo[][32]={ };
二、程序设计
程序执行流程图如图6-3-3所示。
参考程序:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rw1=P2^0;
sbit rw2=P2^1;
sbit cl1=P2^2;
sbit cl2=P2^3;
sbit cl3=P2^4;
sbit cl4=P2^5;
/*"爱国敬业诚信友善"编码*/
uchar code zimo[][32]={
/*--文字:爱--*/
/*--宋体12;此字体下对应的点阵为:宽*高=16*16--*/
0x00,0x10,0x80,0x3F,0x7E,0x08,0x44,0x08,0x88,0x04,0xFE,0x7F,0x42,0x40,0x41,0x20,
0xFE,0x1F,0x20,0x00,0xE0,0x0F,0x50,0x08,0x88,0x04,0x04,0x03,0xC2,0x0C,0x38,0x70,

图6-3-3 程序流程图
/*--文字:国--*/
/*--宋体12;此字体下对应的点阵为:宽*高=16*16--*/
0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0xFA,0x2F,0x82,0x20,0x82,0x20,0xF2,0x27,(https://www.daowen.com)
0x82,0x20,0x82,0x22,0x82,0x24,0xFA,0x2F,0x02,0x20,0x02,0x20,0xFE,0x3F,0x02,0x20,


三、电路仿真
1.编写程序
打开Keil软件,新建“LED16*32”工程文件,新建“LED16*32.c”文件,编写程序,并生成hex文件。编写的程序如图6-3-4所示。

图6-3-4 编写程序
2.绘制电路
打开Proteus软件,创建“16*32点阵显示汉字”文件,绘制电路图。所需元件见表6-3-1。
表6-3-1 元件清单

先放置8个8*8点阵,每个点阵的行和列放置端口及网络标号,如图6-3-5所示;再将8个8*8点阵拼接在一起,即完成16*32点阵的绘制,如图6-3-6所示。
根据电路原理图的要求,完成各元件的放置,并连线,绘制完成的电路图如图6-3-7所示。

图6-3-5 绘制8个8*8点阵

图6-3-6 绘制16*32点阵

图6-3-7 绘制电路图
3.电路仿真
双击单片机,加载hex文件,单击“仿真”按钮,进行电路程序仿真,仿真结果如图6-3-8所示。
仿真结果显示:在16*32点阵上,轮流显示广告语“爱国 敬业 诚信 友善”。

仿真视频

图6-3-8 仿真效果