基于单片机的LED滚动显示屏设计

更新时间:2024-05-29 01:56:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

洛阳理工学院毕业设计(论文)

基于单片机的LED滚动显示屏设计

摘 要

LED是英文light emitting diode(发光二极管)的缩写。由镓(Ga)与砷(As)、磷(P)、氮(N)、铟(In)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管。在电路及仪器中作为指示灯,或者组成文字或数字显示。并且不同的元素化合形成的二极管会发出不同颜色的可见光。LED行业发展迅速并已成为一个具有一定规模的新兴产业,而且从总体上来看,宏观环境也非常有利于LED行业的发展,可以说LED行业前景广阔,市场潜力巨大。

本设计实现了基于单片机AT89C51的16×64 LED点阵的图形的滚动显示。本文主要介绍了LED点阵显示的硬件电路的设计思路以及各个部分的功能及原理和相应程序设计的设计思路和功能。该设计使用取模软件对所要显示的图形进行取模,采用C语言编写其显示程序,利用KeilC集成开发平台生成HEX文件,在Proteus中对硬件电路的时钟、复位、驱动、16×64点阵进行设计并通过译码器等与AT89C51芯片连接,进而对系统进行仿真调试。本设计具有使用性强,操作简单易实现等优点。

关键字:单片机 ,二极管,LED点阵,图形显示,硬件电路

I

洛阳理工学院毕业设计(论文)

The Design of LED Mobile Displayed Based on Single-Chip

Microcomputer

ABSTRACT

The LED is light emitting diode. Diode is made of gallium (Ga) and arsenic (As), phosphorus (P) and nitrogen (N), indium (In) elements, when electrons and holes integrate can radiate light, thus it can be used to make light emitting diode. In the circuit and equipment it act as light, or display the words or figures. And if the diode has different elements it will emits different colors of visible light. LED industry has developed rapidly and has became a new industry which has a certain scale , and on the whole, macro environment is beneficial to the LED industry develop, so the LED industry has prospect, huge market potential.

This design has realized scroll of graphics on 16 x 64 LED which based on AT89C51. This article mainly introduced the he function and principle of hardware circuit of LED dot matrix display, each part and the design idea and function of corresponding programming.This design using the modulus software to get the model of graphics, using C language to write the display program, HEX file generated by KeilC integrated development platform. The clock, reset, drives, 16 ×64 LED dot matrix of hardware circuit will be designed and connect with AT89C51 in the Proteus, and then do system simulation and debugging. This design has the advantage of usability is strong, easy to realize operation etc.

KEY WORDS: Single chip microcomputer,Diode,LED dot matrix ,Graphic display, Hardware circuit

II

洛阳理工学院毕业设计(论文)

目 录

第1章 绪论 ............................................ 1

1.1 课题背景及意义 .................................. 1

1.1.1 LED显示屏发展背景以及国内外现状 ........... 1 1.1.2 LED显示屏发展的简要回顾 ................... 2 1.1.3 LED显示屏的应用领域 ....................... 3 1.2 论文的主要内容 .................................. 3 第2章 系统的硬件部分设计 .............................. 4

2.1 设计基本方案 .................................... 4 2.2 硬件电路芯片介绍 ................................ 4

2.2.1 单片机的发展过程 .......................... 4 2.2.2 AT89C51芯片的简要介绍 ..................... 5 2.2.3 时钟电路 .................................. 8 2.2.4 复位电路 .................................. 9 2.2.5 驱动电路 ................................. 10 2.3 LED点阵显示屏显示原理 ......................... 18

2.3.1 单个点阵显示原理 ......................... 18 2.3.2 16×16点阵显示原理 ....................... 21 2.4 汉字显示原理 ................................... 25 2.5 硬件系统的整体设计图与原理分析 ................. 28 第3章 软件设计 ....................................... 32

3.1 程序设计思路与结构 ............................. 32

3.1.1 程序设计思路 ............................. 32 3.1.2 程序设计流程图 ........................... 32 3.2 模块程序设计 ................................... 32

3.2.1 主程序 ................................... 32 3.2.2 延时程序 ................................. 34 3.2.3 显示子程序 ............................... 34

第4章 系统仿真 ....................................... 43

III

洛阳理工学院毕业设计(论文)

4.1 仿真环境介绍 ................................... 43 4.2 仿真过程与结果 ................................. 43

4.2.1 绘制电路图 ............................... 43 4.2.2 HEX文件的生成 ............................ 44 4.2.3 调试与结果 ............................... 44

结 论 ................................................ 47 谢 辞 ................................................ 48 参考文献 .............................................. 49 附 录 ................................................ 50 外文资料翻译 .......................................... 66

IV

洛阳理工学院毕业设计(论文)

第1章 绪论

1.1 课题背景及意义

1.1.1 LED显示屏发展背景以及国内外现状

能源是人类生存与经济发展的物质基础,然而伴随着人类的一次次科技革命,世界经济是出现了持续、高速地发展,但也带来了很多负面的问题,例如能源短缺、生态恶化等问题。当前世界的能源供给主要以化石资源为主,部分国家是以煤炭或者石油与天然气为主。根据专家预测,按目前能源的消耗情况来看,石油、天然气资源最多只能在未来半个世纪内为人类提供能源,煤炭能维持的时间也不会超过二百年。因此许多国家在想法设法提高能源的使用效率,其中开发可再生能源是一个重要举措。

随着全球环境的日恶化、人类节能环保意识的逐步加强,具有节能环保概念的LED行业在全世界大放光彩。

在欧洲,由于人们的节能环保意识比较强,因此使用环保产品的接受度较高,加之欧盟较早提出淘汰白炽灯的相关法律,各国政府在节能灯的应用领域均推出了比例相当高的补贴计划。因此从全球来看,欧洲市场在节能灯方面的应用普及和推广率比其他地区高的多。在技术上,由于欧洲相关的市场准入标准和技术门槛相对宽松,所以节能行业尤其是LED照明行业发展迅速,技术水平比同行业其他地区也高的多。

在美洲,由于金融海啸的影响,一向不懂节省的美国人也不得不开始变得节约起来,不得不想方设法节省支出,因此LED照明应用产品也摆上各大市场和超市的货架。在技术上,美国人在市场准入方面非常严格,除了能源之星标准以外,针对固态光源的UL标准草案也在制定和陆续出台,同时还伴随着其他准入标准也在陆续制定和协商中,虽然LED应用产品被欧美做芯片的公司忽悠的风生水起,大有立刻扑向全世界消费市场的势头,但由于UL等认证费用的高昂和繁琐,LED固态照明市场在北美市场的真正启动也在2012年以后。

在亚洲地区,超高亮度的LED蓝光技术是由日本人于八十年代研究出

1

洛阳理工学院毕业设计(论文)

(6)2个可编程的16位定时/计数器; (7)5个中断源,2个优先级; (8)有低功耗空闲和掉电模式; (9)1000次擦写周期;

(10)与MCS-51产品指令系统完全兼容。 AT89C51的管脚说明: 1.电源引脚

电源引脚接入单片机的工作电源。 (1)VCC(40脚):接+5V电源。 (2)VSS(20脚):接数字地。 2.时钟引脚

(1)XTAL1(19脚):片内振荡器反相放大器和时钟发生器电路的输入端。当使用片内振荡器时,该引脚连接外部石英晶体和微调电容;当采用外接时钟源时,该引脚接外部时钟振荡器的信号。

(2)XTAL2(18脚):片内振荡器反相放大器的输出端。当使用片内振荡器时,该引脚连接外部石英晶体和微调电容;当采用外部时钟时,该引脚悬空。

3. 控制引脚

此类引脚提供控制信号,有的引脚还具有复用功能。

(1)RST(TESET,9脚):复位信号输入端,高电平有效。在此引脚加上持续时间大于2个机器周期的高电平,就可以是单片机复位。在大年纪正常工作时,此引脚应为<0.5V低电平。

(2)EA/VPP(31脚):EA为该引脚的第一功能,即外部程序存储器访问允许控制端。VPP为该引脚第二功能,即在对片内Flash进行编程时,VPP引脚接入编程电压。

(3)ALE/PROG(30脚):ALE为CPU访问外部程序存储器或外部数据存储器提供一个地址锁存信号,将低8位地址锁存在片外的地址锁存器中。PROG为该引脚的第二功能,即在对片内Flash存储器编程时,此引脚作为编程脉冲的输入端。

(4)PSEN(29脚):片外程序存储器的读选通信号,低电平有效。

7

洛阳理工学院毕业设计(论文)

4. 并行I/O口引脚 P0口:

(1)P0口为双功能口——地址/数据复用口和通用I/O口。

(2)当P0口用作地址/数据复用口时,是一个真正的双向口,用作与外部存储器的,输出低8位地址和输出/输入8位数据。

(3)当PO口用作通用I/O口时,由于需要在片外接上拉电阻,端口不存在高阻抗(悬浮)状态,因此是一个准双向口。为保证引脚信号的正确读入,应首先向锁存器写1。单片机复位后,锁存器自动被置1;当P0口由原来的输出状态转变为输入状态时,应首先置锁存器为1,方可执行行输入操作。

(4)一般情况下,P0口大多作为地址/数据复用口使用,这时就不能再作为通用I/O口使用。

P1口:

(1)P1口是一个8位双向I/O口。 P2口:

(1)作为地址输出线使用时,P2口可以输出外部存储器的高8位地址,与P0口输出的低8位地址一起构成16位地址,可以寻址64KB的地址空间。当P2口作为高8位地址输出口时,输出锁存器的内容保持不变。

(2)作为通用I/O口使用时,P2口为一个准双向口。功能能与P1口。 (3)一般情况下,P2口大多作为高8位地址总线口使用,这时就不能再作为通用I/O口使用。

P3口:

(1)P3口内部没有上拉电阻,不存在搞阻抗输入状态,为准双向口。 (2)当某位不作为第二功能使用时,可作为第一功能通用I/O口使用。

2.2.3 时钟电路

AT89C51单片机时钟信号为各个部件单位的运行提供时间基准,即各个部件均在时钟信号的基础上有条不紊的工作,因此,单片机的工作速度直接受到时钟信号频率快慢的影响,时钟信号的稳定性也直接决定着单片机系统能否正常工作。内部时钟方式和外部时钟方式是单片机时钟电路常

8

洛阳理工学院毕业设计(论文)

用的两种方式。本设计采用的是内部时钟方式。图2-3是AT89C51内部时钟方式的电路。图中的电容C1和C2值的通常均选择为30pF。晶震频率的范围通常在1.2-12 MHz内。本设计选用的晶体振荡频率为12 MHz。晶体的频率越高,系统的时钟频率越高,单片机的工作运行速度越快。但反过来,运行速度越快对存储器的速度要求就越高,对印刷电路板的工艺要求也越高,即要求线间的寄生电容越小。晶体和电容应尽可能的安装的与单片机芯片靠近,以减少寄生电容,更好的保证振荡器稳定、可靠的工作。随着集成电路制造工艺技术的发展,单片机的时钟频率也在逐步提高,现在部分类型的单片机芯片的时钟频率最高可达33 MHz。

30pfC1C2图2-3 时钟电路图

X1Y112MX2

2.2.4 复位电路

C310URSTS1VCCR310K 图2-4 复位电路图

9

洛阳理工学院毕业设计(论文)

复位是单片机的初始化操作,只需要给AT89C51的复位引脚RST加上大于2个机器周期的高电平就可使单片机复位。复位电路的基本功能是:从系统上电直至系统电源稳定前为系统提供复位信号,待系统电源稳定后再将复位信号撤除。但为防止电源开关抖动,电源稳定后也要经一段时间后才能撤销复位信号。复位电路有上电自动复位和按钮复位两种方式,按键复位又分为电平复位和脉冲复位两种。本设计采用按键电平复位方式,按键手动电平复位是通过RST端经电阻与电源VCC接通来实现,具体电路如图2-4所示,图中电容为10uF,电阻为10K。

2.2.5 驱动电路

1. 行驱动电路

行驱动电路由74HC154译码器来充当。

所谓译码,就是将每一组代码的含意翻译出来的过程,也就是编码的逆过程。该设计中采用74HC154译码器,其作用即是将一组4位代码转换为想要的确定的16位代码。

译码器是组合逻辑电路的一个重要的器件,芯片74HC154为 4线16线译码器,74HC154译码器的引脚(管脚)如图2-5所示。

图2-5 74HC154引脚图

10

洛阳理工学院毕业设计(论文)

其引脚功能如表2-1所示。 74HC154译码器工作原理:

当两个选通端(E1和E2)均为低电平时,可将地址端(A、B、C、D,A为最低位,D为最高位)的二进制编码在一个对应的输出端以低电平的方式译出。假设地址端的值为0000(分别对应D、C、B、A),那么则说明其O号端口输出是有效的,则其输出值为0111111111111111(低电平有效)。假设地址端的值为0001,那么则说明其1号端口输出是有效的,则其输出值为1011111111111111。假设地址端的值为0010,那么则说明其3号端口输出是有效的,则其输出值为1101111111111111,以此类推。

表2-1 74HC154引脚功能表

引脚号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 符号 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 GND Y11 Y12 Y13 Y14 11

功能 输出 输出 输出 输出 输出 输出 输出 输出 输出 输出 输出 接地端 输出 输出 输出 输出

洛阳理工学院毕业设计(论文)

17 18 19 20 21 22 23 24 Y15 G1 G2 D C B A VCC 输出 使能端 使能端 地址输入端 地址输入端 地址输入端 地址输入端 电源

表2-2 74HC154译码器真值表

输入 输出选通端口 E1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 E2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D 0 0 0 0 0 0 0 0 1 1 1 1 1 1 C 0 0 0 0 1 1 1 1 0 0 0 0 1 1 地址端口 端口 B 0 0 1 1 0 0 1 1 0 0 1 1 0 0 A 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 12

洛阳理工学院毕业设计(论文)

0 0 0 1 1 0 0 1 0 1 1 1 1 X X 1 1 1 X X 1 1 1 X X 0 1 1 X X 14 15 - - -

74HC154译码器引脚功能如表2-2所示。

以上已经介绍该毕业设计使用74HC154作为译码器,且其输出端口以“0”(低电平)有效。在下面介绍汉字显示原理时我们会发现LED点阵的行以“1”(高电平)为有效,即其有效电平方式与我们所使用的74HC154译出的有效电平方式刚好相反,所以在将74HC154译出的代码发送给LED端口前,我们要加一个反相器。

因为该设计需要做实物,即要考虑驱动能力,所以我们选择74HC04作为反相器,反相的同时,增加其驱动能力。74HC04的输出电流是20mA,选用的点阵的LED点阵的点亮电流也为20mA,所以74HC04足够驱动LED显示屏。

74HC04的引脚图如图2-6所示。

图2-6 74HC04的引脚图

其引脚功能表,如表2-3所示。 其功能表如表2-4。

13

洛阳理工学院毕业设计(论文)

将74HC154译码器和74HC04反相器组合起来,就可以满足该设计的列驱动的要求。其应用电路图如图2-7所示。

表2-3 74HC04引脚功能表

引脚 1 2 3 4 5 6 7 8 9 10 11 12 13 14 符号 1A 1Y 2A 2Y 3A 3Y GND 4Y 4A 5Y 5A 6Y 6A VCC 功能 数据输入 数据输出 数据输入 数据输出 数据输入 数据输出 接地端 数据输出 数据输入 数据输出 数据输入 数据输出 数据输入 电源

表2-4 74HC04功能表 输入 输出 输出控制 ————————数据 OE2 0 0 X 1 A 0 1 X X Y 1 0 Z Z OE1 0 0 1 X 注释:0=低电平 1=高电平 Z=高阻抗 X=未知

14

洛阳理工学院毕业设计(论文)

ABCDE1E2Y074HC04……………… Y1574HC0474HC154图2-7 74HC154和74HC04应用电路图

2. 列驱动

图2-8 74HC595的引脚图

该设计中的LED点阵的列代码直接由单片机的P2.0口按位发送到移位寄存器74HC595的DS端口。

74HC595的引脚图,如图2-8所示。 其引脚功能表如表2-5所示。

15

洛阳理工学院毕业设计(论文)

表2-5 74HC595引脚功能表

引脚 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 符号 Q1 Q2 Q3 Q4 Q5 Q6 Q7 GND Q7’ MR SH_CP ST_CP OE DS Q0 VCC 功能 输出 输出 输出 输出 输出 输出 输出 接地端 串行数据输出 移位寄存器清零端 移位寄存器时钟输入端 存储寄存器时钟输入端 输出使能端 串行数据输入端 输出 电源 其真值表如表2-6所示。 由74HC595真值表可知,数据由DS端输入,每来一个SH_CP的上升沿,数据便按Q0到Q7再到Q7’的方向每次依次移动一位,当ST_CP接收到上升沿时,便将移位寄存器中的数据锁存到输出存储器中,再使输出使能端OE为低电平,便可将输出存储器中的数据输出,从而实现串行输入并行输出。本设计就是利用74HC595的串行输入并行输出的特点,将欲显示的字的代码按位发送给74HC595,再由其并行将数据输出。 一个74HC595能实现8位的并行输出,本设计是16×64 LED点阵,即行是16位,列是64位,74HC595是作为列的驱动,所以需要采用8片74HC595,8片74HC595的连接方式如图2-9。

16

洛阳理工学院毕业设计(论文)

为行,从而得到行线为高电平,列线为低电平的点阵。得到这样的器件需要如下几个步骤。

第一步,从Proteus元件库中找到“MATRIX-8X8-RED”元器件,并将四块该元器件放入Proteus文档区编辑窗口中。我们要先对其做一个上下翻转,但要注意元器件的上下是对称的,如果直接对器件做上下翻转,翻转后的器件和原器件从图像上看是一模一样的,我们不知道是否正确做了翻转。所以我们在翻转前,我们先给其上端左起第一个引脚接一条线如图2-15,然后按住左键拖动鼠标选中该器件,右键选择“Y-Mirror”(Y轴对称)得到如图2-16。这样便知已经正确翻转。要注意,上端左起第一个引脚虽自身翻转到下端左起第一个引脚,但其控制的仍然是左起第一列,其他列引脚依次控制的列依次自左向右。然而原器件中下端左起第一个引脚原控制的是最上面的那一行,翻转后其自身翻转到上端左起第一个引脚,其控制的行也变为最下端的一行,其他行引脚控制的行依次自下而上。

图2-15 翻转前器件 图2-16 翻转后器件

第二步,为了得到行为高电平,列为低电平的点阵,我们再对做了Y轴翻转的器件做一个向右90度翻转。与上次翻转方法相似,选中器件,右键选择“Rotate Clockwise”(顺时针方向旋转),翻转后左边引脚高电平

22

洛阳理工学院毕业设计(论文)

有效,自上而下的引脚控制从上向下的行,右边引脚低电平有效,自上而下控制从左向右的列,如图2-17,这样我们的准备工作就做完了,下面就可以开始拼接16×64点阵了。

图2-17 顺时针翻转后器件

图2-18 16×64点阵拼接图

23

洛阳理工学院毕业设计(论文)

图2-19 16×64点阵拼接图

图2-20 16×64点阵拼接图

24

洛阳理工学院毕业设计(论文)

第三步,先将各个引出一定长度的线,然后复制成四个如图2-18所示排列好。

第四步,先将上下两个点阵的列对应相连,再将左右两个点阵的对应行相连。注意,如果先连接行线,再连列线的话,接线图看上去比较复杂,容易错误接线,而且在连接行线时,要按住CTRL键才能“穿过”点阵。连接好后如图2-19所示。

第五步,将图2-19所示的点阵图复制成四个,每两个的对应行线按上述方法相连。如图2-20。

第六步,拖动各个点阵模块并使其相并拢,我们可以看到原来的连线已经自动隐藏了,至于线上的交点,我们不要去动。便可得到如图2-21所示的16×64点阵。点阵的左端为16条行线,高电平有效,引脚自上而下控制从上到下的行;上端引脚为64条列线,低电平有效,自左向右控制从左到右的列。

图2-21 16×64点阵拼接图

2.4 汉字显示原理

国标规定每一个字由16行16列的点阵即由256个点阵来显示。我们可以这样理解,点阵上每一个点为一个像素,无论是中文还是英文或者图

25

洛阳理工学院毕业设计(论文)

画我们都可以认为是一个图形。那么不难理解,16×16点阵可以显示任何在256像素范围内的图形。这里我们以“洛”字说明,如图2-21所示。如前所述,本设计采用行扫描方式,且行代码以高电平为有效电平,列代码以低电平为有效电平。对汉字取模的方法是,逐行同时自左向右8位一组取模,即每一行会产生2组代码,并且每组中左边为高位,右边为低位。需要说明的是,列代码以低电平为有效电平,意味着不点亮的LED灯为高电平,点亮的为低电平。如对上图中的“洛”字取模。

图2-21 “洛”字显示图

第一行,最左边的四位均不亮,故为1111即十六进制F,下一个四位也是都不亮,那么也为F,这样第一行的第一组代码为0xFF;第二组的8位与第一组的8位相同,所以,第二组的代码也为0xFF。这样便得到了第一行的代码:0xFF,0xFF。

第二行,最左边的四位均不亮,为F,紧着的四位只有最右边的一位(最低位)点亮,所以代码为1110即十六进制E,所以第一组代码就为0Xfe,第

26

洛阳理工学院毕业设计(论文)

二组的8位均不亮,代码为0xFF,所以第二行的代码为0xFE,0xFF。

其他各行依照相同的方法取模。

但如果每个字都要这样手工的进行计算,工作效率太低。在本设计中,我们采用取模软件取模,选用的取模软件是汉字字模点阵数据批量生成工具。该工具具有丰富的功能,如能对字体、字型、大小进行设置,对字体位置可以手动进行调整,可以选择甚至自定义点阵的大小,还提供水平扫描、垂直扫描两种扫描方式。本设计对字模数据设置为取反(低电平为有效电平),点阵大小设置为16×16,扫描方式设置为水平扫描,字体为楷体_GB2312,字型常规,大小为小四。

设置好后如图2-22所示,然后在上方的编辑区输入要显示的字,如输入“洛”字,然后再点击“创建点阵数据-创建单个字模”,便会自动生成一个记事本文档,字模的代码就在写在该记事本里。

图2-22 取模软件

27

洛阳理工学院毕业设计(论文)

如对“洛”字取模的代码为

/* @0 洛(16x16,H)@ [suki software]*/

0xFF,0xFF, 0xFE,0xFF, 0xEE,0xFF, 0xF6,0x1F, 0xFD,0xDF, 0xBA,0xBF, 0xDF,0x7F, 0xFE,0xBF, 0xED,0xCF, 0xEB,0xF1, 0xD6,0x1F, 0x9D,0xDF, 0xBD,0xDF, 0xFC,0x3F, 0xFF,0xFF, 0xFF,0xFF,

点阵汉字的显示可以认为是取模的逆过程,先由行线选中第一行,向列线输入第一行的代码,这样便可以看到第一行应该显示的图形。紧接着行线选中第二行,向列线输入第二行的代码,然后是第三行、第四行直至第十六行。只要每一行的扫描时间间隔恰当,由于人眼有视觉暂留作用,就可以看到一个完整的16×16图形。对于16×64点阵或者更大的点阵或者除汉字以外的其他图形,其显示原理与此也都与此相同。

2.5 硬件系统的整体设计图与原理分析

图2-23 硬件系统的整体设计图

28

洛阳理工学院毕业设计(论文)

硬件系统的整体设计图如图2-23所示。 原理分析:

Proteus 7.4软件中只有8×8和5×7等LED点阵,所以需要由小的LED屏拼接成一个大的LED显示屏。上图的LED显示部分是由16个8×8的点阵构成整体的16×64点阵屏。点阵屏的拼接方法已经在前面叙述过了。

本设计中 LED点阵显示屏采用的是逐行扫描的工作方式。XTAL1与XTAL2接12MHz的晶振;RST接复位电路;P1.7口与74HC154的E1相连,以此控制74HC154是否工作即是否产生输出;E2直接接地,即E2保持为低电平;P3.0与74HC154的地址线A相连,P3.1与74HC154的地址线B相连,P3.2与74HC154的地址线C相连,P3.3与74HC154的地址线D相连,以此选择74HC154有效的输出端口;74HC154的输出端口(0到15脚)分别连接一个反相器74HC04,需要说明的是,Proteus中的74HC04是一相反相,而实物中的74HC04是六相反相;反相器74HC04的输出直接与点阵屏的行线对应相连接,即输入端与74HC154的0号输出引脚相连的反相器74HC04的输出端与点阵最上端的行线相连,其余各行按顺序对应相连;P2.0口与左边第一个74HC595的DS端口相连,然后下一个74HC595的DS端口与上一个74HC595的Q7’相连,这样能够实现串行数据的依次“向后传递”;每一个74HC595的SH_CP端口均与P2.1端口相连;与此类似,每一个74HC595的ST_CP端口均与P2.2端口相连;每一个74HC595的MR与电源相连、OE与地相连;74HC595按从左向右,输出端口按Q0—Q7的顺序,依次与列线(自左向右)相连。

在画仿真图的过程中,我们会发现很多线需要连接,尤其是列线与行线,如果直接端口与端口连线,仿真图会占很大的面积而且不满密密麻麻的线,为了节省空间,我们只需要将需要连接在一起的端口各引出一条小短线,然后给其命上相同的名字便可,这样Proteus就默认为这两条线是连接在一起的。其操作方法是,选中要命名的线,右键选择“Place Wire Label”(给线写标签),然后在弹出的对话框中的“String”(线)中选择或者输入名称。

接线方式与方法已经叙述完,下面讲解本设计整体硬件的工作原理。

29

洛阳理工学院毕业设计(论文)

由接线图可知,所有74HC595的SH_CP移位寄存器时钟输入端、ST_CP存储寄存器时钟输入端分别接在一起,也就是它们共用一个移位寄存器时钟和存储寄存器时钟,由前面叙述的74HC595的功能表可知,这样的连接可以使8片74HC595同时进行数据移位和数据输出。

由单片机的P2.0口按位向左边第一个74HC595的DS端口输入数据,当数据输入到DS后,此时若SH_CP产生一个上升沿,然后ST_CP产生一个上升沿,那么在输出端口Q0上便会输出该数据,如果再继续向DS端口输入新的数据,同时SH_CP和ST_CP相继产生上升沿,那么Q1上就会输出原本在Q0上输出的数据,同时Q0上输出新输入在DS端口的数据,依此进行,当SH_CP和ST_CP的第八个上升沿产生以后,Q7’上输出Q7上的数据。因此,本设计中,将左边的74HC595的Q7’端口与其右边的74HC595的DS端口相连,这样,上一片的输出Q7’作为下一片的DS的输入,可以使数据连续向右传递,从而实现64位的串行输入,64位的并行输出。

在此我们要考虑一个问题,在该设计中,每一行均是64位,这64位是四个字的第一行的代码,而且74HC595的数据时不断向右传递的,那么我们从P2.0发送数据时,要先发送那个字的哪一组数据呢?经过观察和思考,我们不难发现,最先从P2.0发送的数据将会被传送到点阵的最右端,所以最先发送的数据应该是第四个字的第一行的第二组代码,然后是第四个字的第一行的第一组代码,再是第三个字的第一行的第二组代码,以此类推。

这样一行行的发送代码,同时选中对应行,就可以显示出我们将要显示的图形。

下面介绍移动显示原理,我们先介绍图形的左右移动,以向右移动为例。向右移动中,静态时第一个字就在最右边,那么P2.0首先发送的是第一个字的代码然后是第二个字,此时,若第一个字向右移动了一列,那么第二个字也应该紧跟着向右移动一列。如此,我们便可以看到字体向右一点一点的移动。向左移动的道理与此相同。具体实现方法,将在程序中具体举例说明。

向上向下移动的扫描方式与向左向右不同。此处以从底部向上移动为

30

洛阳理工学院毕业设计(论文)

例介绍。要实现字体从底部向上移动,第一帧仅扫描最底部的一行,发送四个字第一行代码;第二帧仅扫描从下向上的第一二行,发送四个字的第一、二行代码;第三帧直至第十六帧,依次类推,这样便可以看到图形从底部慢慢的“钻”出来。实现向下移动的方法与此类似,第一帧扫描16行,即显示一个完整的字;第二帧扫描从下自上的15行,但发送的是字的从上自下的15行代码,第三帧及至第十六帧依照这个方法进行,最终会看到一个字慢慢的向下移动。

31

洛阳理工学院毕业设计(论文)

第3章 软件设计

3.1 程序设计思路与结构

3.1.1 程序设计思路

应用系统中的应用软件是根据系统功能要求而设计的,能可靠地实现系统的各种功能。

本系统采用模块化结构,包括主程序、延时程序、显示子程序。 计算机按照给定的程序,逐条执行指令,以完成某项规定的任务。因此,要想计算机按照预想的完成任务,必须编写出计算机能执行的程序,本设计采用C语言进行程序设计。C语言是一种常用的计算机程序设计语言,它具有灵活、功能丰富、表达力强、生成目标代码质量高、程序执行效率高等特点。而且它适合于多种操作系统,如DOS、UNIX、windows 98.windows NT,同时也适用于多种机型。因此C语言备受青睐。在该设计中,能在程序中方便的改变所要显示的内容,能够使显示内容实现向左、向右、向上、向下任何一个方向的移动,能够通过改变程序实现其移动速度的改变。

3.1.2 程序设计流程图

程序流程图如图3-1所示。

3.2 模块程序设计

该设计中主要由主程序、延时程序、显示子程序几个部分组成。 3.2.1 主程序

主程序用来调用所要显示效果的子程序,如向上、向下、向左、向右移动子程序。

32

洛阳理工学院毕业设计(论文)

开始开始初始化初始化调用主程序向BUFF输入字模代码调用显示程序调整代码N是否结束Y向595中输入代码并显示

(1)主程序流程图 (2)右移程序流程图

开始初始化调整行向595中输入代码并显示

(3)下移程序流程图

33

洛阳理工学院毕业设计(论文)

开始初始化取X值调整代码NX是否大于0Yi自加1Ni是否大于1YX自减1

(4)延迟函数流程图 图3-1 程序流程图

3.2.2 延时程序

延时程序用来产生时间延迟,主要作为上行扫描与下行扫描的时间间隔。

3.2.3 显示子程序

1. 字模提取

打开“汉字字模点阵数据批量生成工具”软件,按前面所讲的方法直接得到需要显示汉字的代码值。如“洛阳理工学院欢迎您!”的代码为:

34

洛阳理工学院毕业设计(论文)

/*-- 文字: 洛--*/

/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/ {0x01,0x80, 0x61,0x80, 0x33,0xFC, 0x33,0x0C, 0xC7,0x98, 0x78,0xF0, 0x78,0x60, 0x18,0xF8, 0x33,0x8F, 0x3F,0x06, 0xF3,0xFC, 0x33,0x0C, 0x33,0x0C, 0x33,0x0C, 0x33,0xFC, 0x33,0x0C, }, /*-- 文字: 阳 --*/

/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 {0x00,0x00, 0x7F,0xFE, 0x67,0x86, 0x6D,0x86, 0x6D,0x86, 0x79,0x86, 0x6D,0xFE, 0x67,0x86, 0x67,0x86, 0x67,0x86, 0x7D,0x86, 0x79,0x86, 0x61,0xFE, 0x61,0x86, 0x60,0x00, 0x60,0x00, }, /*-- 文字: 理 --*/

/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 {0x00,0x00, 0x03,0xFE, 0xFF,0x66, 0x33,0x66, 0x33,0xFE, 0x33,0x66, 0xFF,0x66, 0x33,0xFE, 0x33,0x66, 0x30,0x60, 0x33,0xFE, 0x3C,0x60, 0xE0,0x60, 0x00,0x60, 0x0F,0xFF, 0x00,0x00, }, /*-- 文字: 工 --*/

/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 {0x00,0x00, 0x3F,0xFE, 0x01,0x80, 0x01,0x80, 0x01,0x80, 0x01,0x80, 0x01,0x80, 0x01,0x80, 0x01,0x80, 0x01,0x80, 0x01,0x80, 0x01,0x80, 0x01,0x80, 0xFF,0xFF, 0x00,0x00, 0x00,0x00, }, /*-- 文字: 学 --*/

/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 {0x01,0x8C, 0x18,0xCE, 0x0E,0xEC, 0x0C,0xD8, 0x7F,0xFF, 0x60,0x06, 0xCF,0xFC, 0x00,0x60, 0x00,0xC0, 0x7F,0xFF, 0x00,0xC0, 0x00,0xC0, 0x00,0xC0, 0x00,0xC0, 0x03,0xC0, 0x01,0x80, },

35

--*/ --*/ --*/ --*/ 洛阳理工学院毕业设计(论文)

/*-- 文字: 院 --*/

/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/ {0x00,0xC0, 0xFC,0x60, 0xCF,0xFF, 0xDE,0x06, 0xF0,0x00, 0xF3,0xFC, 0xD8,0x00, 0xCC,0x00, 0xCF,0xFF, 0xFD,0xB0, 0xD9,0xB0, 0xC1,0xB0, 0xC3,0x33, 0xC3,0x33, 0xC6,0x33, 0xCC,0x1F, }, /*-- 文字: 欢 --*/

/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 {0x00,0xC0, 0x00,0xC0, 0xFE,0xC0, 0x07,0xFF, 0xC7,0x86, 0x6F,0x6C, 0x3C,0x60, 0x18,0x60, 0x1C,0x60, 0x1C,0x70, 0x36,0xF0, 0x36,0xD8, 0x61,0x9C, 0xC7,0x0F, 0x3C,0x06, 0x00,0x00, }, /*-- 文字: 迎 --*/

/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 {0x60,0x00, 0x31,0xC0, 0x3F,0x7E, 0x36,0x66, 0x06,0x66, 0x06,0x66, 0xF6,0x66, 0x36,0x66, 0x37,0xE6, 0x37,0x7E, 0x36,0x6C, 0x30,0x60, 0x30,0x60, 0x78,0x00, 0xCF,0xFF, 0x00,0x00, }, /*-- 文字: 您 --*/

/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 {0x0C,0x00, 0x0D,0x80, 0x19,0xFF, 0x1B,0x06, 0x3E,0x60, 0x3B,0x78, 0x7B,0x6C, 0xDE,0x66, 0x19,0xE6, 0x18,0xC0, 0x00,0x00, 0x3D,0x86, 0x3C,0xDB, 0x7C,0x1B, 0x07,0xF8, 0x00,0x00, }, /*-- 文字: ! --*/

/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x18,0x00, 0x18,0x00, 0x18,0x00, 0x18,0x00, 0x18,0x00, 0x18,0x00, 0x18,0x00, 0x18,0x00, 0x18,0x00, 0x00,0x00, 0x18,0x00, 0x00,0x00, },

36

--*/ --*/ --*/ --*/

本文来源:https://www.bwwdw.com/article/fnu7.html

Top