




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、盐城工学院电气工程学院课程设计指导书课程名称:单片机原理与接口技术适用专业:电气工程及其自动化 设计题目: led 1632点阵led显示屏的设计班 级bmz电气081学 号0861402120学生姓名阚磊学院名称电气工程学院专业名称电气工程及其自动化指导教师周云龙32目 录1课题要求与内容.21.2 课题来源及研究意义21.3 论文主要工作22 系统总体设计12.1 系统基本组成及工作原理12.2 系统的主要元器件介绍22.2.1 at89c51简介32.2.2 74hc154简介62.2.3 74hc595简介73 系统硬件电路设计103.1 led显示屏设计103.2 驱动电路设计133
2、.2.1 行驱动电路143.2.2 场扫描驱动143.2.3 扫描显示工作过程153.3 单片机及外围电路设计153.3.1 时钟振荡器153.3.2 复位电路设计164 系统软件设计184.1 主程序设计184.2 串行显示一个字节程序设计184.3 显示程序设计204.4 软件调试204.4.1 编译、连接项目,形成目标文件204.4.2 运行调试观察结果205 系统仿真与分析21结论23致谢24参考文献25附录1 程序代码26附录2 硬件原理图29课题要求与内容1.1 课题来源及研究意义设计目的:利用单片机并行控制led点阵显示;掌握单片机与led点阵块之间接口电路设计及编程设计要求:利
3、用取模软件建立标准字库,编制程序实现点阵循环左移显示“盐城工学院”5个汉字,思考问题:要获得较高的刷新频率应该采用多高频率的时钟晶振?1.2 论文主要工作论文主要介绍了系统总体设计、系统硬件电路设计、系统软件设计这三个部分。在各个章节,分别对其进行了较为详细的介绍。第一章主要介绍系统基本组成及工作原理,选择了动态扫描的驱动显示方法;对系统选用的主要元器件at89c51、74hc154、74hc595进行了适当的介绍。第二章介绍了系统硬件电路设计,先简单的叙述了8x8led点整模块的工作原理和内部电路图。然后讲述了驱动电路,分为行和列驱动电路,以及它们如何实现汉字的动态显示。第三章详细叙述了系统
4、软件设计,程序设计主要包括主程序、延时程序、发一个字节程序、显示程序。对其中的主要程序,绘制了相对应的流程图,明了的显示了所需编写软件的工作流程。还有对编写完成后的程序进行调试,在keil下进行编译、连接,形成单片机可执行的二进制文件。第四章简要的分析了仿真中出现的几种问题,然后对其原因讲解,一点一点排除出现的问题,最后得到了所想要的结果。2 系统总体设计根据led显示屏控制系统的应用以及显示设备驱动的具体要求,本章设计了 led文字显示屏的体系结构和工作流程。2.1 系统基本组成及工作原理系统的大体结构图如如图2-1所示,图文显示屏的硬件模块基本结构可以分为屏体和控制器和驱动器三大部分: 单
5、片机led点阵显示屏行列驱动器2-1系统框图屏体部分主要是8个88的led点阵组成的1632的led点阵和行列驱动电路构成。不论是图形还是文字,都是控制与组成这些图形或文字的各个点所在的位置相对应的led器件发光。根据屏幕所需的平面面积大小,选择一定数量的led。用点阵方式构成图形或文字,是非常灵活的,可以根据需要任意组合和变化,只要设计好合适的数据文件,每个led发光器件占据数据中的一位,通过对点阵上全部的led进行控制,在需要该led器件发光时,数据中相应的位填1,否则填0,这样依照所需显示的图形文字,按显示屏的各行各列逐点填写显示数据,就可以构成一个显示数据文件,得到比较满意的显示效果。
6、由于文字的显示点阵格式比较规范,可以采用现行计算机通用的字库字模,如汉字的宋体、楷体和黑体等多种可供选择的方案;其大小也可以有 1616、2424、3232、4848 等不同规格。因为本次毕业设计使用的四个88的led点阵组成一个1616得led点阵,然后通过级联,把两个1616的led连在一起组成了1632的led点整 ,分别显示汉字,所以仍然可以使用1616的字模。字体选择了在1616规格下,显示的比较清晰、容易识别的宋体。从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在的位置相对应的led器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称
7、为静态驱动显示方式。1632的点阵共有512个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,1632的点阵需要512/8=64个锁存器。这个数字很庞大,因为我们仅仅是1632的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。具体就1632的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(共阳极
8、的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。显然
9、,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并列传输的方案是不可取的。采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到led的亮度。解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采
10、用重叠处理的方法。即在显示本行各列数据的同时,传送下一列数据。为了达到重叠处理的目的,列数据的显示就需要具有所存功能。经过上述分析,就可以归纳出列驱动器电路应具有的功能。对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。控制器部分主要是单片机及其外围电路。由16行32列组成的1632图文显示屏其 led 发光器件数量相当大,不宜使用静态显示驱动电路,而采用多行的同名列共用一套列驱动器。控制电路负责有序的选通各行,在选通每一列之前还要把该列各行
11、的数据准备好。这样,这一行上的led发光器件就可以根据列数据进行显示。这种时序控制电路,一般都采用单片机实现。at89c51移位寄器74hc5951移位寄器74hc5952移位寄器74hc5953移位寄器74hc5954416译码器74hc1548x8led1,28x8led3,48x8led5,68x8led7,8图2-2 系统逻辑结构控制电路采用单片机,主要负责控制存储显示数据模块、安排控制信号的定时与顺序、控制驱动led显示点阵的电路等。驱动电路,则分为行驱动电路和列驱动电路,用来驱动led显示点阵。综上所述,系统逻辑结构如图2-2所示。2.2 系统的主要元器件介绍2.2.1 at89c
12、51简介 at89c51是美国atmel公司生产的低电压,高性能cmos 8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(perom)和128bytes的随机存取数据存储器(rom),器件采用atmel公司的高密度、非易失性存储技术生产,兼容标准mcs-51指令系统,片内置通用8位中央处理器(cpu)和flash存储单元。功能强大at89c51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。2.2.1.1 at89c51主要性能参数与mcs-51产品指令系统完全兼容4k字节可重擦写flash闪速存储器1000次擦写周期全静态操作:0hz-24mhz三级加密程序存储
13、器1288字节内部ram32个可编程i/o 口线2个16位定时/计数器6个中断源可编程串行uart通道低功率空闲和掉电模式2.2.1.2 at89c51 功能特性概述at89c51提供以下标准功能:4k字节flash闪速存储器,128字节内部ram,32个i/0 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,at89c51可将至0hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止cpu的工作,但允许ram,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存ram中的内容,但振荡器停止工作并禁止其他所有部件工作直到下
14、一个硬件复位。2.2.1.3 at89c51 引脚功能说明at89c51单片机的的引脚见图2-3。p0口:p0口是一组8位漏极开路型双向i/o,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个ttl逻辑门电路,对端口写“1”可作为高阻抗输入端用在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在flash编程时,p0接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。p1口:p1口是一个带内部上拉电阻的8位双向i/o口,p1的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对端口写“1”
15、,通过内部的上拉电阻把端口拉倒高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。flash编程和程序校验期间,p1接收低8位地址。p2口:p2口是一个带有内部上拉电阻的8位双向i/o口,p2的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行move dptr指令)时。p2口送出高8位地址数据。在访问8位地址的外部数
16、据存储器(例如执行movx ri指令)时,p2口线上的内容(也即特殊功能寄存器(sfr)区总r2寄存器的内容),在整个访问期间不改变。flash编程或校验时,p2亦接收高位地址和其他控制信号。图2-3 at89c51 引脚p3口:p3口是一组带有内部上拉电阻的8位双向i/o口,p3口输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对p3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的p3口将用上拉电阻输出电流(iil)。p3口除了作为一般的i/o口线外,更重要的用途是它的第二功能,如表2-1所示:表2-1 p3口的第二功能端 口 引 脚 第 二 功 能p
17、3.0 rxd (串行输入口)p3.1 txd (串行输出口)p3.2 (外中断0)p3,3 (外中断1)p3.4 t0 (定时/计数器0)p3.5 t1 (定时/计数器1)p3.6 (外部数据存储器写选通)p3.7 (外部数据存储器读选通)p3口还接收一些用于flash闪速存储器编程和程序校验的控制信号。rst:复位输入。当振荡器工作时,rst引脚出现两个机器周期以上高电平将单片机复位。ale/:当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器。ale仍一时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目
18、的。但要注意的是:每当访问外部数据存储器时将跳过一个ale脉冲。对flash存储器编程期间,该引脚还用于输入编程脉冲()。如有必要,可通过对特殊功能寄存器(sfr)区中的8eh单元的d0位置位,可禁止ale操作。该位置位后,只有一条movx和movc指令ale才会被激活,此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ale无效。:程序存储允许()输出是外部程序存储器的读选通信号,当at89c51由外部程序存储器取指令(或数据)时,每个机器周期两次有效,即输出两个脉冲,在此期间,当访问外部数据存储器,这两次有效的信号不出现。ea/vpp:外部访问允许,欲使cpu仅访问外部程序存储器(地址
19、为0000h-ffffh),ea端必须保持低电平(接地)。需要注意的是:如果加密位lb1被编程,复位时内部会锁存ea端状态。如ea端为高电平(接vcc端),cpu则执行内部会锁存ea端状态。flash存储器编程时,该引脚加上+12v的编程允许电源vpp,当然这必须是该器件是使用12v编程电压vpp。xtal1:振荡器反相放大器的及内部时钟发生器的输入端。xtal2:振荡器3放大器的输出端。2.2.2 74hc154简介4 线16线译码器简要说明: 74hc154 为4 线16线译码器,其主要电特性的典型值如下:当选通端(g1、g2)均为低电平时,可将地址端(abcd)的二进制编码在一个对应的输
20、出端,以低电平译出。若将g1和g2中的一个作为数据输入端,由abcd对输出寻址, 74hc154 还可作1线16线数据分配器。74hc154管示意脚图如图2-4,其中最外面的那些数字和字母是外部功能引脚。靠近内部的数字,为管脚的分部情况。功能表如表2-2所示。图2-4 74hc154管脚示意图引出端符号:a、b、c、d 译码地址输入端(低电平有效) g1、g2 选通端(低电平有效) 015 输出端(低电平有效) 特点简述:1 、典型传播延迟:21纳秒2 、电源静态电流:80毫安(74hc)三宽电源电压范围:2 - 6v的3 、低输入电流:1 ma最大正常使用时的典型参数:1 、电源电压(vcc
21、): 26 v 2 、直流输入/输出电压: 0vcc v3 、工作环境温度: 4085 4 、输入上升/下降延时: vcc = 2.0 v 1000 nsvcc = 4.5 v 500 nsvcc = 6.0 v 400 ns表2-2 74hc154功能表输入低电平输出控制译码值g1g2dcballllll0lllllh1llllhl2llllhh3lllhll4lllhlh5lllhhl6lllhhh7llhlll8llhllh9llhlhl10llllhh11llhhll12llhhlh13llhhll14llhhhl15lhhhhh-hlxxxx-hhxxxx-2.2.3 74hc595
22、简介特点简述: 1 、 低静态电流:80 ma最大2 、 低输入电流:1 ma最大 3 、 8位串行,并行输出移位寄存器 与存储 4 、 宽工作电压范围:为2v到6v 5 、 级联 6 、 移位寄存器具有直接清除 7 、 保证移频:dc至30兆赫正常使用时的典型参数:1 、电源电压(vcc): 26 v2 、直流输入/输出电压: 0vcc v3 、工作环境温度 : 40854 、输入上升/下降延时:vcc = 2.0 v 1000 nsvcc = 4.5 v 500 nsvcc = 6.0 v 400 ns图2-5 74hc595内部原理图如图2-5所示,74hc595有3层结构:第一层为移位
23、d触发器;第二层为锁存d触发器;第三层为输出态门;当复位信号为0时,移位d触发器清0;当移位脉冲从l-h时,第一个移位d触发器的q=d;其它的qn=qn-1; 当锁存脉冲从0-1时,第二层为锁存d触发器的输出=/输入; 当oe=1时,595的输出为高阻态; 当oe=0时,595的输出为第二层为锁存d触发器的输出的反相; 74hc595的数据端: qa-qh: 八位并行输出端,可以接点阵的8列。qh: 级联输出端。将它接下一个595的si端。si: 串行数据输入端。 74hc595的控制端说明: reset: 复位信号 。shitf clock:移位时钟。serial data input:串行
24、数据输入。output enable:输出使能。latch clock:锁存时钟 。/sclr(10脚):低电平时将移位寄存器的数据清零。通常将它接vcc。 sck(11脚):上升沿时数据寄存器的数据移位。qa-qb-qc-.-qh;下降沿移位存器数据不变。(脉冲宽度:5v时,大于几十纳秒就行了。通常都选微秒级) rck(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。通常将rck置为低电平,当移位结束后,在rck端产生一个正脉冲(5v时,大于几十纳秒就行了。通常都选微秒级),更新显示数据。 /g(13脚): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张
25、,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。 注:74hc164和74hc595功能相仿,都是8位串行输入转并行输出移位寄存器。74hc164的驱动电流(25ma)比74hc595(35ma)的要小,14脚封装,体积也小一些。 74hc595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。与164只有数据清零端相比,595还多有输出端时能/禁止控制端,可以使输出为高阻态。 3 系统硬件电路设计led显示屏控制系统主要由8个88 led显示点阵模块和单片机控制系统组成,led显示点阵模
26、块用于led显示点阵的驱动,单片机主要负责驱动led显示点阵和控制信号等。3.1 led显示屏设计图3-3是一种8 8的led点阵单色行共阳模块的内部结构图,其单点工作电压uf为18 v,正向电流if为810 ma。当某一行线为高电平而某一列线为低时,其行列交叉的点就被点亮;而当其某一列线为高时,其行列交叉的点为暗;当某一行线为低电平时,无论列线如何,对应这一行的点全部为暗。图3-3 8 8的led点阵单色行共阳模块的内部结构图可以用基里安的方法将四个8 8点阵显示屏构成16 16点阵显示屏,其具体的连接方法如图3-4所示。图中,将(a)和(b)的8列(阳极)、(c)和(d)的8列(阳极)分别
27、对应相连,同时将(a)和(c)的8行(阴极)、 (b)和(d)的8行(阴极)分别对应相连。即可形成一个16行(每一行有16个led)、16列(每一列也有16个led)的1616点阵显示器,其中可将这256个点称为一页,这样,显示字符时。只要对一页中对应的亮灭进行控制即可。8x8 led点阵单色行共阳模块 a阴极(8位)8x8 led点阵单色行共阳模块 c阴极(8位)阳极(8位)8x8 led点阵单色行共阳模块 b阴极(8位)阳极(8位)8x8 led点阵单色行共阳模块 d阴极(8位)阳极(8位)阳极低8位阳极高8位阴极高8位阴极低8位阴极16位阳极16位阳极(8位)图3-4 88单色led显示
28、点阵模块组成1616示意图按照上述示意图,在proteus的原理图中画出了16 16 led模块,如图3-5所示。图中各显示模块引脚采用标号方式 ,减少了交叉接线。图3-5 新建的16 16 led模块用于显示的16 32单色led显示点阵模块,每块有512个独立led;为了减少引脚且便于封装,led显示点阵模块采用阵列形式排布,即在行列线的交点处接有显示led。因此,led点阵显示模块的显示驱动只能采用动态驱动方式,每次最多只能点亮一行led(共阳形式led显示点阵模块)或一列led(共阴形式led显示点阵模块),本次毕业设计采用的是共阳的8 8单色led显示点阵模块组成的。单片机通过操作p
29、1的低四位线i/o接口控制来完成对led显示屏内每个led显示的亮、暗控制操作。以此类推,可实现整屏led点阵的亮、暗控制,从而实现led显示屏汉字或图象的显示控制操作。3.2 驱动电路设计根据驱动方式的不同,led大屏幕显示方式可以分为静态显示和动态扫描显示两种。静态显示是指将一幅画面输入以后要保持到下一幅画面的输入:动态显示是指将画面分为若干部分分别进行刷新。静态显示每一个像素需要一套驱动电路,如果显示屏为 nm 个像素(led)屏,则需要 nm 套驱动电路;动态扫描显示则采用多路复用技术,如果是 p路复用的话,则每p个像素需一套驱动电路,nm个像素仅需 nn/p 套驱动电路。另外,对于静
30、态显示方式,需要较多的译码驱动装置,需要的引线也比较多;对于动态扫描显示方式,每列有一个列驱动器,各列的同名行共用一个列驱动器。由列给出列有效信号,从第一列开始,按顺序依次对各列进列扫描(把该列与电源一端接通)。另一方面,根据各行锁存的数据,确定相应的行驱动器是否将该行与电源的另一端接通。接通的行,就在该列该行点亮 led,未接通的行所对应的led熄灭。当一列的持续扫描时间结束后,下一列又以同样的方法进行显示。全部各列都扫过一遍后(一个扫描周期),又从第一列开始下一个周期的扫描。只要扫描周期的时间比人眼 1/25 秒的暂留时间短,就不容易感觉出闪烁现象。显示数据通常以字节的形式顺序存放在控制系
31、统的存储器中。在行扫描、列控制显示时,把显示数据从存储器中取出传送到每一列对应的行驱动器上,这就存在行数据传输方式的问题。从控制电路到行驱动器的数据传输可以采用并行方式或串行方式,它们各有优缺点:数据并行传输的速度比较快,但是随着屏幕的增大,点阵模块数量的增多,线路会越来越复杂;数据串行传输的速度比较慢,但它可以大大简化传输线路,对于列数较多的led显示屏来说,采用串行传输方式比较合适。采用串行传输的方法,控制电路可以只用一根信号线,将行数据一位一位传往行驱动器,与此同时,行驱动器中每一行都把当前数据传向后一行,并从前一行接收新数据,一直到一列的各行数据全部传输到位后,才能并行地进行显示。对于
32、串行传输来说,数据要经过并行到串行和串行到并行两次变换,因此列数据的准备时间可能相当长,在列扫描周期确定的情况下,留给列显示的时间就少一些,以至影响到led的亮度。解决串行传输中列数据准备和行数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本列各行数据的同时,准备下一列的行数据,这就需要列数据的显示具有锁存功能。本行己准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一列的列数据,而不会影响本列的显示。3.2.1 行驱动电路由于1632点阵显示器有16行,为充分利用单片机的接口,本电路中加入了一个4-16线译码器74hc154,其输入是一个16进制码,解码输出为低态扫描信
33、号,它们的管脚示意图如图4所示。把74hc154的e1和e2引脚接地,然后以a、b、c、d四脚为输入端。就会形成16种不同的输入状态,分别为00001111,然后使每种状态只控制一路输出,即会有16路输出。74hc154芯片的管脚如图3-4所示。图3-6 74hc154的管脚示意图如果一行32点全部点亮,则通过74hc154的电流将达320 ma,而实际上,74hc154译码器提供不了足够的吸收电流来同时驱动32个led同时点亮,因此,应在74ls154每一路输出端与1632点阵显示器对应的每一行之间用一个三极管来将电流信号放大,可以选用的是达林顿三极管tip127。这样,74hc154某一输
34、出脚为低电平时,对应的三极管发射极为高电平,从而使点阵显示器的对应行也为高电平。3.2.2 场扫描驱动本系统场扫描驱动电路的设计可用串入并出的通用集成电路74hc595来作为数据锁存。74hc595是一个八位串行输入三态并行输出的移位寄存器,它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。其管脚见图3-7所示,其中ds是串行数据的输入端,st_cp是存储寄存器的输入时钟,sh_cp是移位寄存器的输入时钟,q7是串人数据的输出,oe是对输人数据的输出使能控制,q0q7为串入数据的并行输出。从ds口输入的数据可在移位寄存器的sh_cp脚上升沿的作用下输入到74hc595中
35、。并在st_cp脚的上升沿作用下将输入的数据锁存在74hc595中,这样,当oe为低电平时,数据便可并行输出。为了避免与pc机串口输入的数据相互干扰,也可使用模拟串口p14p17来分别输出串行数据、移位时钟sh_cp、存储信号st_cp和并行输出的使能信号oe。图3-7. 74hc595外形及引脚3.2.3 扫描显示工作过程将8片74hc595进行级连,可共用一个移位时钟sh_cp及数据锁存信号st_cp。这样,当第一行需要显示的数据经过88=64个sh_cp时钟后便可将其全部移入74hc595中,此时还将产生一个数据锁存信号st_cp将数据锁存在74hc595中,并在使能信号oe的作用下,使
36、串入数据并行输出,从而使与各输出位对应的场驱动管处于放大或截止状态;同时由行扫描控制电路产生信号使第一行扫描管导通,相当于第一行led的正端都接高,显然,第一行led管的亮灭就取决于74hc595中的锁存信号;此外,在第一行led管点亮的同时,再在74hc595中移入第二行需要显示的数据,随后将其锁存,同时由行扫描控制电路将第一行扫描管关闭而接通第二行,使第二行led管点亮,以此类推,当第十六行扫描过后再回到第一行,这样,只要扫描速度足够高,就可形成一幅完整的文字或图像。3.3 单片机及外围电路设计3.3.1 时钟振荡器 at89c51中有一个用于构成内部振荡器的高增益反相放大器,引脚xtal
37、和xtal2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,单片机18(x1)、19(x2)引脚接由12m晶振和两个33pf电容构成的时钟电路,振荡电路如图3-8所示。图3-8 使用内部时钟的电路外接石英晶体(或陶瓷振荡器)及电容c1、c2接在放大器的反馈回路中构成并联振荡电路。对外接电容c1、c2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低,振荡器工作的稳定性,起振的难易程序及温度稳定性,如果使用石英晶体,则推荐电容使用30pf10pf,而如使用陶瓷振荡器建议选择40pf10f。用户也可以采用外部时钟,采用时钟的电路如
38、图。在这种情况下,外部时钟脉冲接到xtal1端,即内部时钟发生器的输入端,xtal2则悬空,如图3-9所示。图3-9 使用外部时钟的电路由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。除使用晶体振荡器外,如对时钟频率要求不高,还可以用电感或陶瓷谐振器代替。电路中的电容c1和c2一般取30pf左右,而晶体的振荡频率范围通常是1.2mhz12mhz,晶体振荡器频率高,则系统的时钟频率也高,单片机运行速度也就快。但反过来运行速度快对存储器的要求就高,对印制电路板的工艺要求也高(线间
39、寄生电容要小)。mcs-51在通常应用情况下,使用振荡频率为6mhz的石英晶体,而12mhz主要是在高速串行通信的情况下才使用。随着技术的发展,单片机的时钟频率也在逐步提高,现在高速芯片已达40mhz。定时振荡器的工作可由专用寄存器pcon的pd位进行控制,把pd位置“1”,振荡器停止工作,系统进入低功耗状态。振荡电路产生的振荡脉冲并不直接使用,而是经分频后再为系统所用。振荡脉冲经过二分频后才作为系统的时钟信号,在二分频的基础上再三分频产生ale信号,在二分频的基础上再六分频就得到机器周期信号。3.3.2 复位电路设计当mcs-5l系列单片机的复位引脚rst(全称reset)出现2个机器周期以
40、上的高电平时,单片机就执行复位操作。如果rst持续为高电平,单片机就处于循环复位状态。根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。本次设计采用的复位电路如图3-4所示:图3-10 复位电路由图3-10可见,9引脚接由电源、电容、电阻构成的上电复位电路,即通过外部复位电路的电容充电来实现。这样,只要电源vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就完成了系统的复位初始化。4 系统软件设计本课题主要采用的软件是keil c51。keil c51 是美国keil software 公司出品的51 系列兼容单片机c 语言软件开发系统,与汇编相比,c 语言在
41、功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用c 来开发,体会更加深刻。keil c51 软件提供丰富的库函数和功能强大的集成开发调试工具,全windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到keil c51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。程序设计主要包括主程序、延时程序、发一个字节程序、显示程序。4.1 主程序设计主程序执行过程简述如下:单片机上电复位,通过p1高三位端口来控制四片74hc595和74hc154的工作状态。先调用显示程序,显示“培养”两字
42、,显示之后马上熄灭,接着调用延时程序,延时约1秒钟,然后以左移的方式显示事先写在芯片里的“徐工孙华奋斗吧、努力吧,小小的尝试嘻嘻”这22个字,等到全都显示完毕,延时约5秒钟。转向while死循环,又从显示“培养”开始一个新的周期。程序流程图如图4-1所示。i/o口定义及初始化调用显示子程序显示 培养调用延时子程序 延时约1秒左移程序调用延时子程序 延时约5秒开始图4-1 主程序流程图4.2 串行显示一个字节程序设计串行显示一个字节程序简述:单片机发送一个bit的数据,输出移位时钟(srclk),循环执行8次,关74hc154四十六译码器,输出锁存时钟(rclk),开四十六译码器选中的对应行,接
43、着返回子程序。移一位数据输出输出移位时钟关四十六译码器8位发送完?输出锁存时钟开四十六译码器并选中对应行子程序返回否是图4-2 串行显示一个字节程序流程图4.3 显示程序设计静止显示是所有显示方式中最简单的一种。在发送点阵数据给单片机时,根据已经制作好的显示屏的结构特征,即一屏能显示2 个汉字,将汉字每 2个分为一组,按组发送。而单片机接收汉字时是将一组汉字按行的顺序存储后再按组依次存储下去, 其存储的结构如图3-10 所示。显示时是将按组顺序存储的点阵数据,按行扫描依次取出,逐行点亮 led。在一屏汉字显示完毕后,循环显示一段时间后,点阵地址偏移 2 个字节,接着显示下一屏数据,其流程图如图
44、4-3所示。 选中显示屏第一行调用串行传送一个字节子程序四六译码器选择下一行点阵地址偏移 2 个字节16 行是否全部扫完?第一行是否全部发送?是否子程序返回是否图4-3 显示流程图4.4 软件调试4.4.1 编译、连接项目,形成目标文件打开keil新建工程文件,然后添加源程序文件,可以是现在word或是其它文本编辑软件中写好源程序,最后把文件后缀名改成“.c”,再直接导入新建的工程中,还可以在工程中直接新建源程序本件。把源程序全部录入后,先粗略的检查一遍,主要改正明显的各种错误,这样可以减少之后的修改工作量。接着options for target “target 1” ,点击output ,
45、勾选create hex 那个选项,一边生成可执行的文件。然后点击project菜单下的built target命令然后再进行编译、连接,形成目标文件。编译、连接用project菜单下的built target命令(或快捷键f7),也可以直接点击工具栏中相对应的图标。编译、连接和形成目标文件分别如下图4-4和图4-5所示。编译、连接时,如果程序存在语法有错,则不会通过编译,并在下面的信息窗口给出相应的出错提示信息,其中错误是一定得改正的,警告可以忽略,当然没有警告是最好的。双击下面显示错误信息的那一行,可以直接定位错误所在的行,用户可以方便的对程序进行修改。修改后再编译、连接,继续进行调试,这
46、个过程可能会重复多次。如果没有任何语法上的错误,则编译、连接成功,并且信息窗口给出提示信息。4.4.2 运行调试、观察结果当工程项目顺利的通过项目编译、连接后,就可以运行它来观察结果。运行调试过程:先用debug菜单下的start/stop debug session命令,启动调试过程。用debug菜单下的go连续运行。用debug菜单下的stop running命令停止运行。用view菜单调出各种输出窗口观察结果。运行结果如图4-6所示:图4-4程序编译图4-5连接创建目标文件图4-6系统软件运行结果5 系统仿真与分析在proteus软件中先从元件库中加载要使用的那些元件,然后把元件放在图纸
47、上一个一个的接线,尽量不让线交错,便于查看、分析,有必要时,使用接线标号法。画好后的电路原理图见附录2。完成所有元器件的接线后,在单片机上右击选edit properties,在program file 那一行右侧点击,然后选择前面生成的以“.hex”为后缀名的文件,为单片机at89c51添加可执行文件。然后点击左下角的相关图表,开始进行仿真。前几次仿真时,因为程序中的几个比较关键的延时时间没有控制的很好,所以出现过led上就一行led上的灯点亮,而且从上到下,不断地循环扫描。原本应该显示完整的“盐城工学院”五个字,但实际却只是显示了前五行的数据。也就是说看上去一次只能点亮五行的,虽然是能够显
48、示所需要的字符,但延时太大了。估计是刷新频率过低造成的,因为频率低,每次扫描的间隔时间长,很明显就出上图中现逐行扫描的情况。出现这种情况,硬件原因一般是晶振或单片机的主频太低,软件原因一般是显示程序中的延时时间过长。先是查看比较简单的硬件原因,当我把晶振频率调调至12mhz时,点阵屏显示效果比原来要强一点,能感觉到显示的行数比之前多了。但当我把晶振频率调高到24mhz,再仿真试了一次,发现问题并没有很好的解决,虽然显示的行数多了,但中间好几行没有正常显示,从理论上讲,24hz以上的刷新率就能看到连续稳定的显示,刷新率越高,显示就越稳定,同时刷新率越高,显示驱动程序占用的cpu时间也越多。实验证
49、明,在目测条件下刷新率在40hz以下的画面看起来闪烁比较严重,刷新率在50hz以上基本察觉不出画面的闪烁,刷新率达到85hz以上时再增加画面闪烁将没有明显改善。在这里刷新频率先按50计算,即延时时间为1/(50*16)ms=1.25ms,也就是说延时只要小于1.25ms就可以稳定的显示了,为了方便,并本次毕业设计中取延时1ms。修改延时参数,在重新编译生成可执行文件,再次进行仿真(晶振的频率为12mhz),虽然这次显示了完整的字符,但还是出现了新的问题:字符的对应点移动速度快,前一屏显示的字还没来的急让它灭掉,新一屏的字又考试两了,某一时刻显示的除了本来应该显示的,还包括了前一时刻的,简单的说
50、就是左移显示于存在残影,当移动速度很快使,就会出现“粗体”。因为程序中并没设置左移速度相关的参数,所以左移速度主要是由晶振的频率决定的。在这方面,分别在多中频率下进行了软件仿真。发现在 晶振的频率为6mhz时,左移显示基本上没有再出现重影的现象了。结论在这2周的时间里,通过不断地努力完成了以下任务:1 、使用proteus设计系统电路图中使用网络标号法,可以让原理图更清晰、明了,减少连线,容易理解、分析。2 、在理论分析基础上,使用proteus设计了系统电路图,包括串行通信电路、单片机外围电路、led点阵显示电路等,仿真完成了单片机控制led点阵显示屏显示汉字。3 、没有选择汇编语言,使用c
51、语言编写了单片机部分的程序,实现系统控制。更容易理解、调试、修改。4 、硬件和软件完成以后,对系统进行了仿真测试,并对测试结果进行了适当的分析。本设计中存在的些许不足:1 、没有实现与pc上位机的通信,只是把字模代码写在单片机内部,显示内容固定。2 、显示方式单一,仅仅实现了左移,而且左移速度无法控制。3 、设计显示程序时,方法存在缺陷,编写并排显示四个汉子的程序时,编译通过但无法生成可执行文件。4 、硬件电路中没有设计相关的抗干扰电路,软件中没有设计容错层序之类的部分。5 、没有设计pcb版图,没有自己动手做一个实物。在本次毕业设计中,我深刻体会到以下几点:1 、要多参考相关的图书、文档,并
52、从中汲取知识、方法,适当的加以运用。2 、此次毕业设计也遇到了不少困难,如仿真软件中没有现成的16x16led点阵、一时忘了如何用一根线实现通信、汉字字模的提取等,必须认真思考并参考相关书籍,从中得到解决的方法,一个一个的解决出现各种的问题。3 、通过毕业设计,让我深刻体会到学好专业知识的重要性,此次设计硬件和软件相结合,电路的设计和调试需要熟练掌握单片机、模拟电路、数字电路、通信电路等知识,而软件的设计要熟练掌握c语言。让我懂得理论与实践相结合的重要,看似很简单的事可能其中有某些点比较难处理,毕业设计时遇到的问题通过老师和其他同学的帮助得以解决。致谢本文是在周云龙老师的悉心指导下完成的。历时
53、二周的毕业设计已经告一段落,在这二周的时间里,从对课题的理解,方案的设计,到电路的制作,再到论文的写作,中间有着自己的努力,更有着老师和同学的关心和巨大的帮助。在课题进行期间,经过自己不断的搜索努力以及白老师的耐心指导和热情帮助,本设计已经基本完成。因为平常不常使用word,在编写word文档时,对有些应该掌握的功能不了解,比如分页符等,导致每次前面稍有改动,后面的排版就全乱。周老师也给出了诸多修改意见,使本文无论从内容上还是排版上更加的充实、完善。在此,我非常真切地向他们表示感谢。虽然在这次设计中对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力、不断完善。这二周的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。由于自身水平有限,设计中一定存在很多不足之处,敬请各位老师批评指正。参考文献1 陈益飞等.单片机原理及应用技术.国防工业出版社.20112 陈保江等.mcs单片机应用系统实用指南m.北京:机械工业出版社,1997.3 马忠梅.单片机的c语言应用程序设计m北京:航空航天大学出版杜,1999.4 诸昌衿.led显示屏系统原理及工程技术m.电子科技大学出版社,2000.5 诸昌钤.led 显示屏系统原理及工程技术m.电子科技大学出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建农信春季招聘194人考前自测高频考点模拟试题及参考答案详解
- 班组安全活动培训的意义
- 动态策略适配-洞察与解读
- 2025年双鸭山饶河县公开竞聘农场社区工作者80人模拟试卷带答案详解
- 资本市场动态监测-洞察与解读
- 2025河南驻马店市正阳县县管国有企业招聘20人(第二批)考前自测高频考点模拟试题及答案详解(新)
- 2025北京海淀镇社区卫生服务中心招聘15人模拟试卷及答案详解一套
- 2025辽宁省营口市鲅鱼圈区校园招聘教师24人(辽宁师范大学专场)模拟试卷及参考答案详解
- 2025福建医科大学安全保卫人员招聘2人(五)考前自测高频考点模拟试题附答案详解
- 2025广东惠州市博罗县碧盛环保科技有限公司招聘及模拟试卷及一套答案详解
- 2025房屋宅基地买卖合同
- 广东省深圳市罗湖区2025-2026学年高三第一学期开学质量检测语文(含答案)
- 2025年南网春招笔试试题及答案
- 2025餐饮业简易劳动合同范本下载
- 南通蓝浦环评报告书
- 商户维护与管理办法
- 2025年武汉市中考英语试卷真题(含答案)
- 浙江省舟山市2024-2025学年高二下学期6月期末物理+答案
- 2025至2030中国金属铬行业产业运行态势及投资规划深度研究报告
- 2025年陕西省中考英语试题卷(含答案及解析)
- cma资料培训课件
评论
0/150
提交评论