16×16 LED点阵设计-毕业设计

更新时间:2024-04-23 02:07:01 阅读量: 综合文库 文档下载

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

16×16 LED点阵设计

学生: 指导教师:

内容摘要:LED点阵电子显示屏的发展越来越好广泛,它成为一个宣传信息的重要平台,已经得

到了社会的普遍认同。LED点阵显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。

该设计是一个16×16LED点阵电子显示屏显示数字的设计。整块电子显示屏的控制核心是40引脚的单片机AT89S51,说明了LED点阵电子显示屏用AT89S51为控制系统的动态的设计和开发的具体过程。通过该芯片控制两个列驱动器74HC595来驱动显示屏显示,本设计就是使用4块8×8点阵显示模块来组成16×16点阵显示屏,采用动态扫描显示,程序编写的实现是使用简单流通性强的C语言,该设计的结果证明,系统显示清晰,结构合理,误差小,扩展能力强,性能稳定。

关键词:AT89S51 LED点阵 数字显示

I

Design of 16*16 LED dot matrix

Abstract:LED electronic display found the screen better and better.It

has become an important platform of a promotional information,it has been widely accepted by the society,LED dot matrix display is the use of plane composition LED lattice module or pixel unit display screen ,It has the advantages of high light efficiency ,long.

The designed is a digital design of a 16*16 LED dot matrix display ,control the core piece of electronic display is the 40 pin of the microcontroller AT89S51.Describes the specific process of the design and development of LED dot matrix display with AT89S51 as the control system dynamic.Through the control two columns drive chip 74HC595 are needed to drive the display shows that this design is to use 4 pieces of 8 x 8 dot matrix display module to form a 16 * 16 dot matrix display screen, a dynamic scans showed that the realization of the programming is simple to use strong liquidity of C language, and the design results show that the system shows clear, reasonable structure, little error and extension ability strong, stable performance.

Keywords: AT89C51 dot matrix LED the digital display screen

II

目 录

前言 ............................................................... 1 1 设计方案的论证与选择 ............................................ 1 2 硬件电路设计 .................................................... 3

2.1 系统的结构框图 ............................................. 3

2.1.1 单片机控制模块 ....................................... 3

2.1.2 时钟电路 ............................................. 4 2.1.3 复位电路 ............................................. 4 2.1.4 显示模块 ............................................. 5 2.1.5 驱动模块 ............................................. 7 2.2 单片机的最小系统图 ......................................... 9 3 单片机系统 ..................................................... 10

3.1 8051引脚为40个的单片机芯片 .............................. 11

3.1.1 引脚为Vcc和Vss 的主电源 ............................ 11 3.1.2 外接晶体引脚XTAL1和XTAL2 ........................... 11 3.2 I/O口线的引脚排列及管脚的说明 ............................ 11 3.3 RST键 .................................................... 13 3.4 PEROM阵列和锁定位 ........................................ 13 4 系统软件设计 ................................................... 13

4.1 主程序的设计及流程图 ...................................... 13 4.2 显示程序的设计 ............................................ 14 5 硬件的制作与调试 ............................................... 15

5.1 系统的组装 ................................................ 15 5.2 程序的调试 ................................................. 16 6 结束语 ......................................................... 17 附录 .............................................................. 18

附录1:程序清单 ............................................... 18 附录2:仿真结果图 ............................................. 22 附录3:Protel原理图 ........................................... 23 附录4:4个8*8LED组成的显示屏 ................................. 24 附录5:PCB图 .................................................. 25 参考文献 .......................................................... 26

III

IV

16×16 LED点阵电子显示屏的设计

前言

LED点阵电子显示屏的制作简单,并且便于安装,被广泛的应用于各个公共场合,但是LED电子显示屏也只能用于单一的图像数字汉字的显示,如果要改变显示的内容,必须要在上位机上进行实现。该设计用LED矩阵的排列来实现两位数字的显示功能。该设计是一个16×16的LED点阵的数字显示屏。当今社会LED灯随处可见,它使我们的生活变的五彩缤纷。LED灯有白光、红光、黄光、绿光、蓝光、紫光等多种颜色,所以它是许多广告设计着的必要品。

我们已经学习了单片机及相关的课程,可以利用单片机来控制LED,以达到我们所需要的显示效果。通过16x16点阵显示屏的设计,我们能更好的掌握单片机工作原理,把理论知识与实践结合起来,达到学以致用的目的。通过这次的课程设计,能更好的提高我们的动手能力与解决实际问题的能力,我们现在的单片机的学习知识最基本的单片机知识,我们想要更好的掌握它,还需要我们自己主动地更深入了解它,这次的课程设计是一个很好的深入学习的平台,并能帮助我们掌握16X16LED点阵的工作原理。

1 设计方案的论证与选择

从理论上来说,不管是显示的是文字还是图像,我们只要控制了各个组成文字或者是图像的对应的LED点的发光器件,我们就能得到想要显示的图像或者文字,这种控制方法就是静态驱动显示方式。该方式显示的程序相对而言是比较简单的,并且所显示的亮度大。但是这种方式的缺点是所使用的I/O口的线比较多,并且硬件的成本比较高。另外,还有一种叫动态扫描显示,它是指采用分时的方法,轮流交替的控制各个显示器的公共端,让各个显示器轮流被点亮,这种方式来扫描驱动电路就可以实现多行的同名列共用的列驱动器。

这个设计是16*16的点阵的设计,如果我们采用静态驱动显示方式,其LED发光二极管灯共有256个,而显然单片机没有那么多的端口,如果我们考虑利用锁存器开扩展端口,按照8位的来计算,那么这个设计需要258/8=32个锁存器。就光是16*16的点阵就需要32个,那实际的生活中需要的更多,该造价的成本也就相对的要高出许多,这样不利于商业的盈利目的。而如果我们采用动态扫描显示,我们将所有同一行的二极管的阳极并联起来,把同一列的二极管的阴极并联起来,即共阳极的接法,然后我们先将控制第一行发光二极管发光的数据送出并且利用锁存器锁存起来,再将使第一行的灯点亮的一定时间选通,再熄灭;再将使第二行的发光管点亮的数据输送出来并锁存起来,同样将使第二行的灯点亮的一定时间选通,再熄灭;以此下去,直到第十六行之后,

1

第一行的灯又重新点亮,就这样反复的轮回。由于人类的视觉存在着短暂的停留的现象,所以只要轮回的速度达到每秒24次以上的高速,人们看到的就会是16行同时进行,就会看到一个完整的图像或者文字。

对于LED灯的接法常见的有两种,一种是共阴极的(左),另一种是共阳极的(右),该设计实验采用的是共阳极的接法,下图给出了这两种接法的内部电路原理及相对应的管脚图。

图1-1 共阴极与共阳极接法的内部电路原理图

在采用扫描的方式进行显示时,每一行使用一个行驱动器,每行的同名列之间共用一个列驱动器。显示所需的数据一般在单片机的存储器里存储,并且是按照8位一个字节的形式顺序排放。显示图像时需要把一行中的各个列的数据都传送到其相对应的驱动上去,这就存在着数据传输的问题。利用控制电路到列驱动器传输数据时,可以采用串行方式或者并行方式,但是,使用并行传输方式时,从控制电路到列驱动电路所需的电路线太多,所需的硬件数目也就增多,如果当列数很多是,也不利于实际的设计,也不经济,所以并行传输方式方案是不可取的。

使用串行的传输方式,控制电路就只用一根短路线,就能将列数据依次传输到驱动器里,但是由于只有一根传输导线,所以导致列数据传输的时间可能过长,即数据准备所需时间过长,在确定了行扫描周期的情况下,其在导线中的传输时间过长,行显示的时间就缩短了,这样就会影响到LED的亮度,这种方法虽然在硬件方面更为经济,但是

2

也没能满足我们的需求。

要解决串行传输方式中的数据准备时间过长和显示的时间不足的矛盾问题,我们可以采用重叠处理的方法。即在显示本行的各个列数据的同时,也将下一行各个列数据传输。为了达到所需的重叠处理的目的,就需要将列数据的显示数据锁存起来,这样经过上述分析,我们可知对于列数据准备来说,它就能实现串入并出的一位功能,而对于列数据显示来说,应该具有并行锁存的功能。这样,已准备好的本行的数据传入并行锁存器进行显示的同时,准下一行的列数据就可以在串并移位寄存器中准备,而本行的显示也不会受到影响,这样就能达到我们所设计的目的。

2 硬件电路设计

2.1 系统的结构框图

该课程设计采用了AT89S51单片机为核心的芯片的电路来实现,它的组成部分为AT89S51芯片、电源、复位电路、时钟电路、行驱动器、列驱动器、4个8*8LED的点阵。

时钟电路 单 片 机 列驱动器 复位电路 行驱动器 16*16LED点阵显示屏 图2.1-1 系统结构图

2.1.1 单片机控制模块

AT89S51单片机是一种所占字节为4K的FLASH存储器的低电压、高性能CMOS的8位的微型处理器,该器件密度高、非易失性存储 ,兼容标准MCS-51 指令系统,在片内使用了8位的中央处理器和Flash存储单元,AT89S51单片机的功能强大,可以提供共性价比的应用场合,所以可以灵活的应用于各种控制领域,并且价格比较经济,方便

3

编程,性能稳定。

2.1.2 时钟电路

该电路的脉冲信号是采用普通的晶体时钟源提供的,而构成了内部的振荡的方式,该晶体能够使芯片的使用尽可能的减少,节约成本。

单片机的时钟信号通常用内部振荡方式和外部振荡方式这两种电路形式得到。内部振荡方式的振荡器的构成是在XTAL1和XTAL2这两个引脚外接石英晶体。因为单片机内部有一个高增益反相放大器,当晶振外接后,就够成了自激振荡器,产生时钟脉冲。晶振的频率大约为12MHZ。如下图2.1.2-1,C1、C2两个电容器的作用是起稳定振荡器频率、快速起振。电容的值一般为5-30PF。内部振荡方式所得到的时钟信号相对来说比较稳定,比较广泛的使用在实际电路中。

图2.1.2-1 单片机时钟电路

2.1.3 复位电路

复位电路就是利用它把电路恢复到起始状态。其复位电路可分为两种,一种是开关复位,当在电源接通的情况下,当单片机在运行期间,如果发生了死机的情况,就可以使用按键开关操作来时单片机复位;另一种是上电复位,当在接通电源的情况下,复位操作就会自动实现。

单片机复位电路图如图2.1.3-1所示,该复位电路可实现人工手动复位,也实现上电复位。当按下按键SW时,RST脚位高电平,就能是单片机正常复位;当一开始就打开电源时,C3电容相当于短路,RST脚在短时间内处于高电平,从而促使单片机复位。

4

图2.1.3-1 单片机复位电路

2.1.4 显示模块

该设计的点阵显示屏是由4个8*8LED点阵组成的16*16的显示屏。数个发光二极管组成了LED点阵显示屏,它具有的特点是低功耗、亮度高、引脚少、寿命长、耐湿、耐冷热、耐腐蚀、视角大。点阵显示屏按颜色分类可分为单色和双色两类,该次设计师选用的单色点阵显示屏,为了安装的方便,一块模块上有若干个LED组合而成,形成了我们所需的大屏幕。

如图2.1.4-1是一个8*8的单色的LED点阵模块内部的电路图。图中的LED的排列形式成点阵,同一列的LED阴极连在一起,同一列的LED阳极连在一起,当LED处于正偏是,LED灯才会发光。该设计选用的是4个8*8的LDE点阵构成了16*16点阵显示屏,该次显示的结果是显示两个汉字,16*16的LED点阵显示屏有256个发光二极管,并且每个发光二极管是放置在列线和行线的交叉点上。

5

图2.1.4-1 8*8点阵内部电路图

如图2.1.4-2所示,是其外观和引脚图。当所对应的某一行置电平1时,某一列置电平0,其相对应的二极管就发光。如果第一行置1为高电平,第一列置0为低电平,第二行为高电平置为1,Y行置1为高电平,I列置0为低电平,这显示效果为P行上的第一个LED灯亮,第二个LED灯灭,第三个LED灯亮。

如图2.1.4-2 8*8点阵外观和引脚图

如图2.1.4-3所示,是一个4块8*8点阵组成的16*16的LED点阵的显示屏。16*16

点阵显示屏是采用动态扫描的LED驱动显示方式,动态扫描方式是采用逐行轮流的方法来点亮LED灯。LED点阵显示模块进行的方法有水平方向(X方向)的扫描和竖直方向(Y方向)的扫描,本次设计采用的是竖直方向(Y方向)的扫描,即逐行扫描的方法

6

简称行扫描方法,它是用一个P口相当于位码来输出决定哪一行能点亮,另一个P口相当于段码输出列码决定该行上哪些LED灯亮。能亮的行从上向下扫描完16行即相当于位码循环移位16次后显示一帧完整的图像。

图2.1.4-3 4块8*8点阵LED屏组成的16*16的点阵显示屏

2.1.5 驱动模块

集成电路74HC595构成了行驱动电路,它的结构是由一个8位的串入并出的一位寄存器和一个8位输出锁存器构成,并且输出锁存器和移位寄存器的控制室各自独立的,可以在显示本行的各列数据的同时,同时传输下一行的列数据,而达到重叠处理的目的。

列驱动电路主要实现的功能是译码,用2块74LS138级联来实现4/16线译码功能,74LS138芯片本身具有3/8线译码功能。

74HC595的外形及内部结构如图2.1.5-1,它的输出测由8个串行移位寄存器连接,每个移位寄存器的输出都有一个输出锁存器来连接,SI引脚是串行为数据的输入端,SCK引脚的作用是移位寄存器的移位时钟脉冲,移位时间是发生在上升沿,并且将SI的下一个数据移位到最低位,并在各移位寄存器的输出端出现移位后的各位信号,也就是输出地锁存器的输入端。RCK是输出的锁存器的打入信号,其上升沿将移位寄存器的输出打入到输出锁存器中。G引脚的作用是输出三态门的开放信号,其开放的条件是当其为低时锁存器的输出时,否则为高阻态。SCLC引脚的功能是作为移位寄存器的清零输入端,当其为低时移位寄存器的输出全部为零。因为SCK和RCK这两个信号是相互独立的,所以输入串行移位与输出锁存互不干扰。QA~QH为芯片的输出端,QH做为最高位可用作多片74HC595级联使用,向上一级的级联输出,但是因为QH受输出锁存器的打入控制,所以还要从输出的锁存器前引出QH’来作为与移位寄存器完全同步的级联输出。图2.1.5-2为74HC595级联,表2.1.5-1为74HC595真值表。图2.1.5-3为74HC595

7

时序图。

图2.1.5-1 74HC595的外形及内部结构

图2.1.5-2 2个74HC595级联

8

表2.1.5-1 74HC595真值表 输入管脚 SCK X X X 上沿 上沿 下沿 X SI X X X L H X X RCK X X X X X X 上沿 SCLR X X L H H H X OE H L X X X X X QA—QH输出的高阻 QA—QH输出的高阻 移位寄存器清零 移位寄存器存储L 移位寄存器存储H 移位寄存器状态保持 输出存储器锁存移位寄存器中的状态值 X X 下沿 X X 输出存储器状态保持 输出管脚 图2.1.5-3 74HC595时序图

列驱动模块电路是由2块74LS138芯片组成,74LS138是一款高速CMOS器件,74LS138为反相输出,74HS138引脚兼容低功耗肖特基TTL(LSTTL)系列,如图2.1.5-4

9

所示是74LS138的引脚图,表2.1.5-2是其真值表。74LS138译码器可接受的二进制加权地址输入位数为3位A0、A1、A2,当使能时,能够提供8个互斥的低有效输出Y0-Y7。74LS138的使能端有3个:一个高有效E3和两个低有效E1和E2。当E1和E2置为低位E3置为高位时,74LS138输出为低,其他的情况下74LS138将保持所有输出为高,利用这种复合使能特性,只需要1个反相器和4块74LS138芯片,就可以实现并行扩展,组成一个1-32即5线到32线的译码器,任选一个低有效使能端作为数据输入端,而把其余的使能输入端作为选通端,则74LS138也可以作为一个8位输出多路分配器,未使用的使能输入端必须使其在各自合适的高有效或者低有效状态保持绑定,74LS138的作用原理在这些情况下可以提高译码系统的效率,如高性能的存储译码或者要求传输延迟时间短的数据传输系统,在高性能存储器系统中。高速存储器使用快速赋能电路,存储器的赋能时间和译码器的延迟时间通常小于存储器的典型存取时间,这就是说可以忽略不计由肖特基钳位的系统译码器所引起的有效系统延迟的时间。HC138所按照的条件是三位二进制输入码和赋能输入,从8个输出端中译码出一个低电平输出。扩展所需的外接门或者倒相器由于有两个低电平有效的赋能输入端和一个高电平有效地赋能输入端而减少了,扩展成了不需要外接门的24线译码器;扩展成32线译码器,只需要外接一个倒相器。在解调器的实际应用中,赋能输入端可以用作数据的输入端。74HC138芯片有多路分配功能、复合使能输入,轻松实现扩展、存储器芯片译码选择的理想选择、兼容JEDEC标准、低有效互斥输出这些特性。

图2.1.5-4 74HC138引脚图

10

表2.1.5-2 74HC138真值表 74HC138真值表

Inputs输入 Enable使能端 E3 X L X H H H H H H H H E2 X X H L L L L L L L L E1 H X X L L L L L L L L Address地址 A2 X X X L L L L H H H H A1 X X X L L H H L L H H A0 X X X L H L H L H L H Y0 H H H L H H H H H H H Y1 H H H H L H H H H H H Y2 H H H H H L H H H H H Y3 H H H H H H L H H H H Y4 H H H H H H H L H H H Y5 H H H H H H H H L H H Y6 H H H H H H H H H L H Y7 H H H H H H H H H H L Outputs输出 2.2 单片机的最小系统图 9

图2.2-1 单片机最小系统

3 单片机系统

MCS-51是Intel公司生产的一个单片机系列名称。这一系列的单片机有多种,8051是其中性价比高的一种单片机。

8051单片机按照其功能部件课将内部结构划分为8个部分:

★ 8位中央处理机CPU一个。 ★ 128个字节的片内数据存储器RAM。 ★ 片内程序只读存储器ROM其字节为4KB。 ★ 特殊功能寄存器SFR18个。

★ P0、P1、P2、P3 这4个8位并行输入输出I/O接口(共32线),用于并行输入或输出数据局。

10

★ 串行I/O接口1个。 ★ 16位定时器/计数器2个。

★ 1个具有可以接收为不中断申请,定时器/计数器中断申请和串行口中断申请的5个中断源,可编程为2个优先级的中断系统。

3.1 8051引脚为40个的单片机芯片 3.1.1 引脚为Vcc和Vss 的主电源 Vcc(40脚):接+5V电源正极; Vss(20脚):接+5V电源地端。

图3.1.1-1 AT89C51引脚图

3.1.2 外接晶体引脚XTAL1和XTAL2

XTAL1:该引脚数为19个引脚,接在外部石英晶体的一端,它在单片机内部是作为一个反相放大器的输入端使用的,这个放大器也作为了片内振荡器。当采用了外部时钟时,对于HMOS单片机来说,该引脚就要接地。

XTAL2:该引脚数为18个引脚,接在外部石英晶体的另一端。在单片机内部,该引脚接在片内振荡器的反相放大器的输出端。当采用了外部时钟时,对于HMOS单片机来说,该引脚的作用是作为一个外部振荡信号的输入端使用。 3.2 I/O口线的引脚排列及管脚的说明

11

★ P0口——漏极开路的8位双向I/O口。

在编程时,P0口可以用于指令代码字节的接收;当使用外扩I/O口及片外储存器是,P0口作为低字节的地址/数据复线;在程序校捡是,P0口能够将指令字输出,但需要外加上拉电阻。

P0口为一个8位的漏极开路双向I/O口,每脚可以吸收8TTL门电流。当P1口的管脚第一次输入1时,被称为高阻输入。外部程序数据可存储在P0端口,它被称为数据/地址的第八位。在FIASH编程时,原码可从P0端口输入,当FIASH进行校验时,原码从P0端口输出,此时P0外部必须被拉高。

★ P1口——准双向8位的I/O口,具有内部上拉电阻的功能。

P1口试专门为用户准备的I/O双向口。用做输入时,应该先让输出地锁存器置为1;P1口可以同时驱动TTL4个负载;在编程和校检时,可以当成输入的是低8位的地址。

★ P2口——准双向的8位I/O口,具有内部上拉电阻。

在编程校检时,P2口能够接收到高字节的地址和某些控制信号;P2口同时也可以当做I/O口使用;当使用外扩I/O或者片外储存器端口时,P2端口输出高8位的地址。当用做输入时,应该先将输出地锁存器置为1;P2口可以同时驱动TTL4个负载。

当P2口输入1时,其管脚被内部的上拉电阻拉高,并作为输入。并因此作为输入时,P2口的管脚被外部拉低,输出电流。出现这种现象的原因是由于内部上拉。当P2口被当做16位地址外部数据存储器或者外部程序存储器进行存取时,P2口输出高八位的地址。当给出的地址为1时,它可以利用内部上拉优势,当对外部八位地址数据存储器读写时,P2口输出特殊功能寄存器的内容,P2端口在FLASH编程和校验的时候能够接收高控制信号和八位地址信号 。

★ P3口——准双向的8位I/O口,具有内部上拉电阻。

P3口能够作为普通I/O口。在编程校检时,P3口负责接收某些控制信号;可以驱动4个TTL。作为输入时,应该先将输出锁存器置位1;同时P3端口还具有各种替代的功能。P3口同时为闪烁编程和编程校验接收一些控制信号。P3口也可作为AT89C51的一些特殊功能口,如下表所示:

12

表3.2-1 P3口特殊功能表 管口脚 P3^0 P3^1 P3^2 P3^3 P3^4 P3^5 P3^6 P3^7

备选功能 RXD(串行输入口) TXD(串行输出口) INT0(外部中断0) INT1(外部中断1) T0(记时器0外部输入) T1(记时器1外部输入) WR(外部数据存储器写选通) RD(外部数据存储器读选通) 3.3 RST键

该键的功能为复位输入。当振荡器复位器件时,要保持RST引脚的两个机器周期的高电平的时间。

3.4 PEROM阵列和锁定位

通过正确的控制信号的组合可以让整个PEROM阵列和三个锁定位电擦除,并保持ALE管脚处于低电位10ms实现。在芯片的擦操作中,该操作必须执行的时间是在代码阵列全部置1并且在任何非空存储字节被重复编程以前。而且,8051芯片设置有稳态逻辑,可在零频率的情况下进行静态逻辑,支持软件可选的两种掉电模式。在闲置模式的情况下,CPU停止工作,但是计数器、RAM、定时器、串口和中断系统仍在继续工作。在掉电模式下,冻结振荡器并且保存RAM中的内容,将所用的其他芯片的功能都禁止,一直到下一个硬件复位为止。

4 系统软件设计

4.1 主程序的设计及流程图

显示屏软件主要有向屏体提供显示数据的功能,并且产生各种控制信号,而达到让屏幕显示我们所需的显示内容的目的。该系统的软件采用C语言来编写,按照模块化得到设计思路而设计。首先分析程序所要实现的功能,程序要实现动态显示,向左移动两大功能。主程序的工作流程如图4-1-1所示。

13

开始 点阵显示 结束

图4.1-1 主程序工作流程图

4.2 显示程序的设计

LED点阵的显示方法是采用的动态扫描显示,,并能实现左移的功能。图4-2-1为显示的程序流程图。采用PCtoLCD2002字模软件取出想要显示的汉字的字模,该次设计实验设计的汉字是“您好”。

14

开始 k变量超值? Y N n变量超值? N m变量超值? Y N num值? N 写入程序 Y Y Flag ==0 138B显示 138A显示 结束

图4.2-1 显示程序流程图

5 硬件的制作与调试

5.1 系统的组装

在确定好硬件,程序编写好过后,能够制作出如图5-1-1所示类似的实物图。实物完成后必须对其进行调试,检查设计功能是否实现。

15

图5.1-1 实物图

16*16点阵的LED电子显示屏的电路系统比较小,但是线路也很麻烦,特别是在焊接点阵屏时,对于焊接的技术也是相当重要的,整个电路系统中只要右一处错误出现,则会影响整个电路,并且检测起来也相当的麻烦,而且电路需要相交的线也较多,对于各种锋利的引脚要注意处理,否则会将带有包皮的导线刺破,则会对电路造成短路现象。

完成实物后进行调试,首先把程序下载到单片机里,再接通电源,观察点阵显示是否清晰稳定,是否实现左移功能。 5.2 程序的调试

固件程序设计完成后,采用Keil编译器进行编译,调试Keil完全是图形化界面,有着良好的人机接口,支持单步调试,插入断点,还可以观察程序运行中各变量的取值变化情况。而且还支持Wave硬件仿真器,使用起来很方便。

首先在Keil里新建一个工程,把所有的C源文件添加进工程(.h头文件系统自动添加)然后编译。编译无误后,可以使用Wave硬件仿真器。使用时,首先要对仿真环境进行设置。然后画出PCB电路图,在画PCB电路时要特别注意的几个方面是电路板的过孔比较大,定位孔的放置,在焊接时,要注意先焊接的元器件是否会影响以后的元器件的焊接。安装好电路后就将程序写入到AT89S52中,将AT89S52插入驱动电路,若每个所需的发光二级管都能被点亮,这说明该电路的硬件成功完成;若发现二极管没有被全部点亮,则需要用万能表仔细的检查电路板是否是由于焊接不当被短路或者断开等。可以直接检查不亮的二极管的电路出现了什么问题,问题找出来后进行

16

修补,完成后再进行操作,若每个灯被点亮即成功完成。

6 结束语

通过做这次关于LED点阵的设计,我了解最多的就是关于LED显示屏的显示的知识,对于显示屏的组成及相关的制作,有了更深一步的了解,对单片机的一些相关的引脚的排列、作用、功能知道的更为具体,虽然在设计过程中遇到了很多不懂的知识,但是都通过去查阅相关的资料和请教相关的老师和同学一一解决了。通过这次的课程设计,还是有一些收获。马上大三上期就要完了,现在回顾一下我的已过的大学生活,再和刚进大学时那豪情万丈的心情相比较,只能说我的大学还真是失败。记得刚进大学时,信心满满的对自己说我要怎么怎么的过自己的大学,不将大学生涯浪费掉,结果现在的现状简直就是两个完全相反的情况,对于现在的我来说,我只能尽可能的认真的学习自己的专业知识,,不让剩下的这半年时间浪费掉。

随着社会的发展,我们的生活也越来越好,正是因为这样,我们才有更多的精力和金钱用来做其他的事情,现在我们能安心的呆在学校学习,首先是归功于国家的发展,最主要的是要感谢我们的父母,有了他们的无微不至的照顾和辛苦的在外打拼才能提供我们现在安逸的在学校学习;其次,要感谢的就是教育我们的老师们,正因为有了他们的无私的传授我们知识,我们才有了追逐梦想的能力。所以由衷的感谢他们对我的照顾和培养。

17

附录

附录1:程序清单

//用两个138和两个595设计16*16LED点阵显示屏,向左移动显示“您好”// #include #include #define uchar unsigned char #define uint unsigned int bit flag; sbit SH_CP=P2^0; sbit DS=P2^2; sbit U2_E1=P1^6; sbit ST_CP=P2^1; sbit U3_E1=P1^7; uchar code table[ ]= {

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*\

0x04,0x02,0x08,0x0C,0x10,0x00,0x3F,0xEE,0xC4,0x01,0x08,0x81,0x11,0x11,0xE6,0x4D,

0x20,0x21,0x2F,0xC1,0x20,0x01,0x24,0x07,0x2A,0x00,0x31,0x88,0x00,0x06,0x00,0x00,/*\您\

0x08,0x02,0x08,0x44,0x0F,0xA8,0xF8,0x10,0x08,0x68,0x0F,0x86,0x00,0x00,0x01,0x00,

0x41,0x02,0x41,0x01,0x47,0xFE,0x49,0x00,0x51,0x00,0x61,0x00,0x01,0x00,0x00,0x00,/*\好\

18

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*\ };

void delay(unsigned int x) { uchar j; while(x--)

//1ms

for(j=0;j<123;j++); }

void WriteByte(uchar date) { uchar k;

for(k=0;k<8;k++) { SH_CP=0; date=date>>1; DS=CY; SH_CP=1; } }

void display(void) {

uchar num,temp,n,m,k; P1=0; //p1口138相连

for(k=0;k<3;k++) //含空格,3个字符。 {

for(n=0;n<16;n++) //每字16行

19

{

for(m=0;m<4;m++) //重复显示4次 ,也就是延时 {

for(num=n;num<16+n;num++)

{ } else { }

delay(1); if(temp==8) {

flag=!flag; temp=0; }

ST_CP=0;

WriteByte(table[2*num+(k*32)+0]); WriteByte(table[2*num+(k*32)+1]); ST_CP=1; if(flag==0) {

P1=temp; U2_E1=1; delay(1);

P1=0; //关显示,消隐 temp++;

P1=_crol_(temp,3); U3_E1=1; delay(1);

P1=0; //关显示,消隐 temp++;

20

} } } } }

void main() { while(1) { } }

display();

21

附录2:仿真结果图

22

附录3:Protel原理图

23

附录4:4个8*8LED组成的显示屏

24

附录5:PCB图

25

参考文献

[1] 吴金戊、沈庆阳、郭庭吉:8051单片机实践与应用,清华大学出版社,2004.6,P126-P130

[2] 刘欣铭、张广斌:LED显示屏技术综述,黑龙江电力,2003.5,P294-P296 [3] 李群芳、肖看、张士军:单片微型计算机与接口系数,电子工业出版,2012.12,P88-P90

[4] 何立民:单片机初级教程,北京航空航天大学出版社,2000.2,P18-P3 [5] 阳进:基于单片机的LED显示屏的汉字显示,中国科技信息,2005.12,P112 [6] 徐爱钧、彭秀华:.Keil Cx51 V7.0单片机高级语言编程与Vision2应用实践,北京电子工业出版社,2004.11,P34-P45

[7] 李朝青:单片机原理及接口技术(第三版),北京航空航天大学出版,2005.3,P122-P125

[8] 王宜怀:单片机原理及其嵌入式应用教程,北京希望电子出版社,2002.1,P111-P113

[9] 韩润萍、陈小萍:点阵LED显示屏控制系统,微计算机信息,2003.10,P50-P51 [10] 诸昌铃:LED显示屏系统原理及工程技术,电子科技大学出版社,2000.9,P10-P20 [11] 李群芳:单片微型计算机与接口技术,电子工业出版设,2012.12,P22-P23 [12] 周志敏、周纪海、纪爱华:LED驱动电路设计实例,电子工业出版社,2008.4,P45-P60

26

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

Top