基于STC89C54单片机的汉字点阵显示屏的设计毕业设计

上传人:仙*** 文档编号:34644688 上传时间:2021-10-22 格式:DOC 页数:30 大小:1.19MB
返回 下载 相关 举报
基于STC89C54单片机的汉字点阵显示屏的设计毕业设计_第1页
第1页 / 共30页
基于STC89C54单片机的汉字点阵显示屏的设计毕业设计_第2页
第2页 / 共30页
基于STC89C54单片机的汉字点阵显示屏的设计毕业设计_第3页
第3页 / 共30页
点击查看更多>>
资源描述
毕业设计(论文)题 目:基于基于 STC89C54STC89C54 单片机的汉字点阵显示屏的设计单片机的汉字点阵显示屏的设计系 别: 年级专业: 学生姓名: 学 号: 指导教师: 完成时间: 摘摘 要要在现代化的社会里,因为 LED 具有功耗低、寿命长、性能好的优点,由单片机控制 LED 来实现文字、图像信息显示的应用也越来越广泛,其使用价值也越来越受重视。本设计基于 STC89C54 单片机来实现汉字显示的功能,介绍了汉字点阵显示系统的设计过程。选用了 4 块 8*8 的 LED 点阵模块来构成一个 16*16 的点阵显示屏,它主要由单片机 STC89C54 的 P1 口和 P2 口来控制其行选,采用时 8 位串入并出芯片 74HC595 来控制其列选。由集成 8 个 NPN 达林顿管的 ULN2803 来提供驱动电流。因为 ULN2803 有反相功能,所以在发送显示信息时,我们通过给模块要求亮的行置 1,而给相应的列来置 1,从而使相应的二极管导通,于是字便被显示出来了,此后再对字进行扫描显示,便会产生动态效果。此外,本设计增加语音播报功能,使该系统性能得到显著提升。关键词关键词:单片机;74HC595;ULN2803AbstractAbstractIn modern society, because the LED has low power consumption, long life, performance advantages, controlled by single chip LED text, image information display applications are increasingly being used, its value in use is also growing attention.This design based STC89C54 microcontroller to achieve the function of the system of Chinese characters cycle through the character dot matrix display system design process, selection of four 8 x 8 LED dot matrix module to form a 16 * 16 screen, it mainly consists ofmicrocontroller STC89C54 port P1 and P2 port to control the line selected, again using the 8 for the string into and out of the chip 74HC595 to control the column selected. Integrated 8 Darlington ULN2803 to drive current.ULN2803 inverting function, so send display information through the different points of the requirements of the bright line of modules set to the appropriate column to set, so that the corresponding diode conduction, so the word willdisplayed, after which the word scan, there will be a dynamic effect.Keywords: SCM; 74HC595; ULN2803目目 录录摘 要.IAbstract.II第一章 系统设计方案 .11.1 系统方案的确定 .1第二章 硬件设计 .22.1 主控芯片 .22.1.1 STC89C54 单片机 .22.1.2 单片机信号引脚 .22.1.4 51 单片机最小系统 .32.1.5 中断控制 .42.2 I/O 扩展芯片.62.3 驱动芯片 .72.4 汉字显示点阵屏 .92.4.1 点阵屏模块 .92.4.2 8*8 点阵工作原理说明 .92.5 电源电路.102.6 单片机的时钟电路.102.7 单片机的复位电路.112.8 原理框图 .112.9 整体硬件设计电路 .12第三章 软件设计 .133.1 点阵屏主程序流程图 .133.2 装载函数流程图 .133.3 显示函数流程图 .14第四章 系统调试 .154.1 硬件调试 .154.2 软件调试 .154.2.1 程序跳转错 .15结束语 .16参考文献 .17附录 1 .18附录 2 .19附录 3 实物图片 .23致 谢 .24第一章第一章 系统设计方案系统设计方案1.11.1 系统方案的确定系统方案的确定LED 点阵显示系统的总体框图如图 1-1 所示,硬件电路大体上可以分单片机及其外围电路、显示驱动电路、I/O 口扩展电路、语音播报电路四部分。本设计实现16*16 单色汉字循环显示、右移滚动显示、无线控制和语音播报功能。硬件部分采用 4 块 8*8 点阵屏级联的方式实现,点阵屏的行列各为 16 管脚,考虑到单片机I/O 口资源比较紧张,需要扩展 I/O 口,故采用 8 位 74HC595 串行输入并行输出芯片来扩展 I/O 口。由集成 8 个 NPN 型达林顿管的 ULN2803 来提供驱动电流。语音播报模块采用 WT588D 语音芯片,配合其编程软件,可以把语音下载到指定地址的FLASH 中,通过单片机给语音模块控制信号,实现在显示汉字的同时,朗读显示的内容。整个系统以 STC89C54 为控制芯片,P1 和 P2 口为行扫描控制端,两列上拉排阻增强单片机 I/O 口的驱动能力,利用 ULN2803 来满足 LED 屏的驱动电流。P0口为芯片 74HC595 的输入,且 2 片 74HC595 级联后为列扫描控制。系统提供12MHz 的时钟电路和按键控制的复位电路。通过软件程序调用不同的代码来显示字符或文字。本设计采用动态扫描方式逐列轮流点亮 LED 点阵屏。对于 1616 的点阵来说,显示一帧图像需要发送 16 次行、列字型码。首先发送第一列的字型码,使其处于有效、可以被点亮,而其他列处于无效的的状态,然后发送相对应的行值,这样第图 1-1 点阵显示系统的总体框图主控芯片 STC89C543 根控制线I/O 扩展串入并出74HC59516*16 LED点阵显示屏16 根线行驱动 ULN2803WT588D语音播报模块5V 电源4 根线一列的 LED 灯根据字型码可以亮灭,接着为了消除阴影,发送使 LED 灯熄灭的行字型码,是所有的 LED 灯熄灭。依此循环发送行列值,可以显示图像。采用扫描方式显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。显示数据通常存储在单片机的 ROM 中,按 8 位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并列传输的方案是不可取的。软件部分编程采用基于 Windows XP 系统的 Keil C。此软件界面美观,操作方便,易于程序的编写。最后通过 STC-ISP 编程软件将正确的程序写入 STC89C54芯片中,通过硬件电路显示。第二章第二章 硬件设计硬件设计2.12.1 主控芯片主控芯片2.1.1 STC89C54 单片机单片机本设计采用 STC89C54 单片机,该单片机拥有 16KB 的可编程的闪存(Flash programmable and erasable read only memory)、1280 字节 RAM。片上闪存允许100000 次编程烧写,在系统开发时可以十分容易地进行程序修改,即使程序错误也不会成为废品。由于在单片机集成电路上包括 8 位 CPU 和闪存,32 个并行 I/O接口,以及定时器等部件使 STC89C54 成为强大的控制器,它为很多单片机控制系统提供一种高效灵活的解决方案。另外 STC89C54 单片机出厂时已经完全加密,无法解密。并且利用内部集成 ISP 功能,外接一个 MAX232 芯片,通过串口可以方便下载程序。签于以上理由,最终选择 STC89C54 单片机为主控芯片。2.1.2 单片机单片机信号引脚信号引脚51 系列单片机 8031、8051 及 89C51/89S51 均有 40Pin 封装的双列直插 DIP 封装。图 2-1 是它们的引脚配置:40 个引脚中,正电源和地线两根,4 组 8 位共 32 个I/O 口,中断口线与 P3 口线复用。下面对这些引脚的功能加以解释说明:Pin20:接地引脚。Pin40:正电源脚,工作时,接+5V 电源。Pin19:时钟 XTAL1 脚,片内振荡电路的输入端。Pin18:时钟 XTAL2 脚,片内振荡电路的输出端。8051 的时钟有两种方式,一种是片内时钟振荡方式,但需在 18 和 19 脚外接石英晶体(2-12MHz)和振荡电容,振荡电容的值一般取 10p-30p。另外一种是外部时钟输入方式,即将 XTAL1 接地,外部时钟信号从 XTAL2 脚输入。输入输出(I/O)引脚 P0、 P1、P2、P3。in39-Pin32 为 P0.0-P0.7 输入输出脚。 Pin1-Pin8 为 P1.0-P1.7 输入输出脚。 Pin21-Pin28 为 P2.0-P2.7 输入输出脚。 Pin10-Pin17 为 P3.0-P3.7 输入输出脚。 Pin9:RESET/Vpd 复位信号复用脚,当 8051 通电,时钟电路开始工作,在RESET 引脚上出现 24 个时钟周期以上的高电平,系统即初始复位。 8051 的复位方式可以是自动复位,也可以是手动复位。该设计采用手动复位。此外,RESET/Vpd 还是一复用脚,Vcc 掉电期间,此脚可接上备用电源, 以保证单片机内部 RAM 的数据不丢失。 Pin30:ALE/ 当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE 端将有一个 1/6 时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。如果单片机是 EPROM,在编程其间, 将用于输入编程脉冲。Pin29: 当访问外部程序存储器时,此脚输出负脉冲选通信号,PC 的 16 位地址数据将出现在 P0 和 P2 口上,外部程序存储器则把指令数据放到 P0 口上,由 CPU读入并执行。Pin31:EA/Vpp 程序存储器的内外部选通线,ST89C54 单片机,内置有 16kB 的程序存储器,当 EA 为高电平时,读取内部程序存储器指令数据,如果 EA 为低电平,则不管地址大小,一律读取外部程序存储器指令。图 2-1 STC89C54 芯片图2.1.4 51 单片机最小系统单片机最小系统STC89C54 由于拥有达到 16K 的内部程序存储器和 1280 字节的 RAM 已经满足了一般的设计需求,所以只需要建立单片机最小系统,即可满足本设计的控制部分的要求。硬件连接如图 2-2 所示:51 单片机的 RST 为复位信号端,高电平有效。当维持低电平时单片机将正常读指令处理。当复位时 PC 指向 0000H。当刚刚接通单片机电源时,由于电源的冲击,将通过电容流过一定的电流,在电阻上产生一定的正电压,RST 高电平使得单片机复位,待电源稳定了,电容相当于断路,使得 RST 引脚接地,为低电平,单片机进入正常工作。但用户要求复位时,按下 S2 按键,VCC 绕过电容流过 10K 电阻,向地拉电流,RST 引脚处于高电平,单片机复位,PC 指向 0000H 地址。2.1.5 中断控制中断控制STC89C54 的中断控制是指 MCS-51 提供给用户的中断控制手段,实际上就是一些特殊功能寄存器。与中断有关的特殊寄存器有中断允许控制寄存器 IE 和中断优先级控制寄存器 IP。在 MCS-51 单片机中有 5 个中断源。允许中断称“中断开放”,不允许中断称“中断屏蔽”。因此,当对所运行的程序不希望有某个中断请求打断它图 2-2 STC89C54 最小系统时,可以对该中断加以屏蔽。本设计的程序中有此应用。STC89C54 对中断请求源的开放或屏蔽是由中断允许寄存器 IE 控制的。IE 的格式如表 2-1 所示:表 2-1 STC89C54 IE 寄存器 IE AFHAEH ADH ACH ABH AAHA9H A8H(A8H) EA ES ET1 EX1 ET0 EX0 中断允许寄存器 IE 对中断的开放和关闭实现两级控制。所谓两级控制就是有一个总的开关中断控制位 EA(IE.7) ,当 EA=0 时,关闭所有的中断申请,即任何中断申请都不接受;当 EA=1 时,CPU 开放中断,但 5 个中断源还要由 IE 的低 5位的各对应控制位的状态进行中断允许控制,IE 中各位的含义如下: EA:中断允许总控制位。EA=0,屏蔽所有中断请求;EA=1,CPU 开放中断。对各中断源的中断请求是否允许,还要取决于各中断源的中断允许控制位的状态。 ES:串行口中断允许位。ES=0,禁止串行口中断;ES=1,允许串行口中断。 ET1:定时器/计数器 T1 的溢出中断允许位,ET1=0,禁止 T1 中断;ET1=1,允许 T1 中断。 EX1:外部中断 INT1 中断允许位。EX1=0,禁止 INT1 中断;EX=1,允许INT1 中断。 ET0:定时器/计数器 T0 的溢出中断允许位。ET0=0,禁止 T0 中断;ET0=1,允许 T0 中断。 EX0:外部中断 INT0 中断允许位。EX0=0,禁止 INT0 中断;EX0=1,允许INT1 中断。特殊功能寄存器 TMOD 为定时器的方式控制寄存器,寄存器中每位的定义如图 2-3 所示。高 4 位用于定时器 1,低 4 位用于定时器 0。其中:M1、M0 用来确定所选的工作方式,如表 2-2 所示。图 2-3 TMOD 定时器方式寄存器表 2-2 工作方式选择C/T 定时器方式或计数器方式选择位。C/T=1 时,为计数器方式;C/T=0 时,为定时器方式。GATE 定时器/计数器运行控制位,用来确定对应的外部中断请求引脚(INT0,INT1)是否参与 T0 或 T1 的操作控制。当 GATE=0 时,只要定时器控制寄存器 TCON 中的 TR0(或 TR1)被置 1 时,T0(或 T1)被允许开始计数(TCON 各位含义见后面叙述) ;当 GATE=1 时,不仅要 TCON 中 TR0 或 TR1 置位;还需要 P3 口的 INT0 或 INTl 引脚为高电平;才允许计数。特殊功能寄存器 TCON 用于控制定时器的操作及对定时器中断的控制。其各位定义如图 2-4 所示。其中 D0D3 位与外部中断有关。TR0、TR1:定时器 T0、T1 的运行控制位。该位置 1 或清 0 用来实现启动计数或停止计数。TF0、TF1:定时器 T0、T1 的溢出中断标志位。当 T0 计数溢出时由硬件自动置 1;在 CPU 中断处理时由硬件清为 0;TMOD 和 TCON 寄存器在复位时其每一位均清零。本设计中中断寄存器和定时器配合使用,精确定时 1ms。使用定时器中断模式之前,要对定时器进行初始化,即要确定定时器的工作模式、初值、开中断和打开定时器。2.22.2 I/OI/O扩展芯片扩展芯片图2-5 74HC595逻辑表图 2-4 TCON 寄存器本设计使 用 74HC595 来扩展并行 I/O 口,节约单片机资源。其逻辑电路图如2-5 所示。74HC595 内含 8 位串入、串/并出移位寄存器和 8 位三态输出锁存器。寄存器和锁存器分别有各自的时钟输入 (SCLK 和 SLCK) , 都是上升沿有效。当 SCLK 从低到高电平跳变时, 串行输入数据 (SDA) 移入寄存器; 当 SLCK 从低到高电平跳变时, 寄存器的数据置入锁存器。清除端 (CLR) 的低电平只对移位寄存器复位 (QS 为低电平) , 而对锁存器无影响。当输出允许控制 (EN) 为高电平时, 并行输出 (Q0Q7) 为高阻态, 而串行输出 (QS) 不受影响。74HC595 最多需要 5 根控制线, 即 SDA、SCLK、SLCK、CLR 和 EN。本设计的 I/O 扩展部分的电路图如 2-6 所示。其中 CLR 可以直接接到高电平, 用软件来实现寄存器清零; EN 直接接到低电平,不需要软件改变亮度;把其余三根线和单片机的 I/ O 口相接, 即可实现单片机对 LED 的控制。数据从 SDA 口送入 74HC595 , 在每个 SCLK 的上升沿, SDA 口上的数据移入寄存器, 在 SCLK 的第 9 个上升沿, 数据开始从 QS 移出。如果把第一个 74HC595 的 QS 和第二个 74HC595 的 SDA 相接, 数据即移入第二个 74HC595 中, 照此一个一个接下去, 可接任意多个。数据全部送完后, 给 SLCK 一个上升沿, 寄存器中的数据即置入锁存器。此时如果 EN 为低电平, 数据即从并口 Q0Q7 输出, 把 Q0Q7 与 LED 的 8 段相接, LED 就可以实现显示了。图 2-6 74HC595 扩展 I/O 口电路 .- -. -. . . . ( .,- - - _/ ;-:- _-_ _U_n_. ooo_ | |_!_|_!_|_!_|_!_| | c(_ .(_ .(_ .( /, | |_|_|_|_| | ,_|,L_,|_|/;_()()=()() (o)(o) (o)(o)-(o)(o) 952.32.3 驱动芯片驱动芯片ULN2803 属于高电压大电流达林顿晶体管系列,该芯片中的八个 NPN 达林顿管来驱动低逻辑电平数字电路和大电流高电压要求的灯,继电器,打印机和其它类似负载间的接口的理想器件。广泛应用于计算机、工业和消费类的产品中、所有器件的集电极开路输出和用于瞬变抑制的续流钳位二极管。ULN2803 的设计与标准TTL 兼容。其内部逻辑如图 2-7 所示。 该驱动芯片最大可以提供 500mA 的驱动电流,每个 LED 灯需要 5-10mA 的驱动电流,每行有 16 个 LED 灯,大约需要 160mA 的驱动电流,使用 ULN2803 可以满足设计要求。本设计驱动电路连接图 2-8 所示:图2-7 ULN2803内部框图图 2-8 ULN2803 驱动电路2.42.4 WT588DWT588D语音模块语音模块本设计采用广州唯创科技有限公司的集单片机和语音电路于一体的可编辑语音芯片 WT588D 语音模块/芯片做为语音核心电路,实现语音播报功能。WT588D 系列语音单片机功能多、音质好、应用范围广、性能稳定,弥补了以往各类语音芯片应用领域狭小的缺陷。WT588D 语音模块/芯片工作电压为 DC2.8V5.5V,支持WAV、MP3、WMA 等格式音频,有 MP3 控制模式、按键控制模式(10 种按键触发控制方式)、按键组合控制模式、 并口控制模式、一线串口控制模式、三线串口控制模式以及三线串口控制控制端口扩展输出模式,丰富的使用模式为开发人员的应用提供了很大便利条件。本设计采用上升沿按键模式。该语音芯片支持 6K22KHz 采样率的音频加载,几乎可以将加载的音频音质完整无损的通过喇叭播放出来。WT588D 系列语音单片机能通过配套软件 WT588D voiceChip 轻而易举的做到语音组合播放、插入完美的陶冶静音。有 220 个可控制的语音地址位,每个地址位能加载 128 段语音可组合语音。WT588D 系列语音单片机模块内置 SPI-FLASH 存储器,WT588D 系列语音单片机芯片可根据实 际用法外置 SPI-FLASH 存储器,只需更换 SPI-FLASH 的内容就可实现不同的控制模式、语音组合的切换。WT588D 系列语音单片机支持 SPI-FLASH 内容在线下载,选用 WT588D 模块还是芯片,模块本身带有最小系统应用电路,只需连接好音频输出,以及控制端,通电即可工作,应用较方便。WT588D 语音芯片体积小,适合应用在要求电路板体积小的电路上。WT588D 采用数码形式压缩音频,音域广,播放语音时无底噪音,声音还原度好,能与 MP3 相媲美。工业性能好,能确保 WT588D 在多种复杂的环境下正常的进行工作。通过配套的电脑操作软件,就能对 WT588D 完成所有功能的设置,WT588D 软件人性化界面操作,功能编辑简单透彻。图 2-9 语音模块原理图语音模块的硬件原理图如图 2-9 所示。本设计使用按键上升沿触发方式,当单片机收到播放声音信号时,单片机的 I/O 口发送低电平,给语音模块的按键接口,也就是语音模块接收到单片机发送的低电平,由此信号触发语音模块发送指定的声音。2.52.5汉字显示汉字显示点阵屏点阵屏2.5.1 点阵屏模块点阵屏模块本设计为 4 块 8*8 的单色点阵屏拼接而成。其中每块 8*8 单色点阵屏如图 2-10 所示。本点阵模块显示颜色为红色,点亮一个 LED 的电压为 1.5V,电流为 5-10mA。2.5.2 8*8 点阵工作原理说明点阵工作原理说明图2-10 8*8单色点阵屏图2-11 8*8点阵LED结构从图 2-11 可以看出, 8*8 点阵共需要 64 个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置 0 电平,某一行置 1 电平,则相应的二极管就亮;因此要实现一根柱形的亮法,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述: 一根竖柱:对应的列置 0 ,而行则采用扫描的方法来实现。 一根横柱:对应的行置 1 ,而列则采用扫描的方法来实现。2.6 电源电路电源电路该电路直接可以将输入的交流电源转化成+5V 的直流电源。该整流桥能够通过的最大电流为 2A;稳压管 W7805 能够将输入 10V 的电压降低为+5V,其最大工作电流为 1.5A,在它的输入端并联一个 0.33 微法的电容,输出端并联一个 0.1微法的电容,可以保证它正常工作;发光二极管串接一个 10K 的限流电阻作为电源工作指示灯。2.7 单片机的时钟电路单片机的时钟电路图2-12 电源电路图 2-13 单片机晶振电路图 2-14 单片机复位电路MCS-51 片内有一个高增益反相放大器,其输入端(XTAL1)和输出端(XTAL2)用于外接定时元件构成自激振荡电路。定时元件是由石英晶体和微调电容组成的并联谐振电路。电容 C1 和 C2 对频率有微调作用,电容容量的选择范围为 5pF30pF.振荡频率的选择范围为 1.2MHz12MHz。在本方案选择 12MHZ 石英晶体和 20pF 电容组成的并联谐振电路作为单片机的时钟电路。根据该电路可以知道单片机的指令周期为 1 微秒。单片机的时钟电路如图 2-13 所示。2.8 单片机的复位电路单片机的复位电路RST/VPD端的外部复位电路有两种工作方式:上电自动复位和按键手动复位。根据单片机可靠复位要求,即要求 RST/VPD端保持 2 个机器周期以上的高电平,本系统采用按键手动复位,相当于 RST 端直接接高电平,复位电路如图 2-14 所示: 2.92.9 原理框图原理框图图 2-15 电路为 1 块 88 点阵显示电路连接图。本设计利用一块 8*8 点阵来体会和掌握点阵屏的显示汉字的原理,为 16*16 点阵屏做理论依据和技术支持。 (1).把“单片机系统”区域中的 P1 端口用 8 芯排芯连接到“点阵模块”区域中的“ DR1 DR8 ”端口上; (2).把“单片机系统”区域中的 P3 端口用 8 芯排芯连接到“点阵模块”区域中的“ DC1 DC8 ”端口上; 如果要显示大的图象可多个点阵拼在一起,只须将点阵的行和行相串联,列和列相串联。用 74HC595 来控制单个行就可以了。 (多个点阵屏的连接)图2-15 原理框图多个点阵显示时,常将所有位的行选线并联在一起,由一个 8 位 IO 口控制,而列分别由另一个 74HC595 控制;也可采用并行扩展口构成显示电路,通常,需要扩展器件管脚的较多,价格较高。本设计将介绍一种利用单片机的一个并行IO 口实现多个点阵显示的简单方法,图 2-1 所示是该电路的硬件原理图。其中,74HC595 是 8 位并行输出门控串行输入移位寄存器。显示时,其显示数据以串行方式从 STC89C54 的 P0.2 口输出送往移位寄存器 74HC595 的 SDA 端,单片机的P0.1 和 P0.0 输出 74HC595 的正确时序信号,然后将变成的并行数据从输出端Q0Q7 输出,以控制点阵的列。由 STC89C54 的 P1P2 口输出高低电平,以对行控制。2.102.10 整体硬件设计电路整体硬件设计电路图 2-16 为设计的整体硬件电路图。本设计采用 4 块 8*8 单色点阵屏级联成一个 16*16 的点阵屏,来完成显示汉字的功能。以 STC89C54 为主控芯片,ULN2803 为驱动芯片,控制行。74HC595 为 8 位串入并出芯片,扩展 I/O 口,控制列。另外,还有单片机的最小系统等基本电路。为了提高单片机 I/O 口的驱动能力,本设计在 P0 口增加了 10K 的上拉电阻。图 2-16 整体硬件电路图第三章第三章 软件设计软件设计 3.13.1 点阵屏主程序点阵屏主程序流程图流程图 图 3-1 主程序流程图本设计实现了多个汉字的循环滚动显示,程序流程图如图 3-1 所示。软件部分主要实现初始化包括各个寄存器的赋初值,清除 74HC595 控制线和数据线数据,给定时器 1 赋初值。主程序调用了两个主要的子函数:装载字型码函数和显示函数。装载函数实现在字型码表中把将要显示的字型码存放到 32 个字节的缓冲区中的功能。显示函数完成发送相对应的行列字型码的工作。3.23.2装载函数流程图装载函数流程图装载函数的流程图如图 3-2 所示。装载函数实现把将要显示的字型码装载到一个 32 字节的缓冲区中,以备显示程序发送字型码。首先判断是否要装载数据,判断的依据在于定时器是否溢出(定时器 1 定时 1ms,然后通过一个变量计数 50 次溢出,总延时 50ms),当到达设定的时间,通过一定的算法,获得装载数据的初始指针。依次装载 16 组数据,完成函数功能。具体算法:因为每 32 个字型码是一初始化定时器 1开中断、开定时器开始装载函数调用显示函数结束帧数据(一幅图像),每帧有 16 列,假定显示 2 个字符,字型码为 64 个 8 位二进制数据。则需要显示的总列数为 48 列,而移动的列数范围为0,31通过移动的列数来获得在字型码数组中显示的指针。3.33.3显示函数流程图显示函数流程图依次装载数据结束开始判断是否装载数据获得显示指针图 3-2 装载函数流程图图 3-3 显示函数流程图结束开始发送列值发送行值判断是否发送完 16 次延时熄灭74HC595 是 8 位串入并出的 I/O 扩展芯片。595 发送列码,循环 16 次送完一帧列值,使列循环点亮。在发送列值的同时发送相对应的存放在缓冲区的行值,使一帧图像显示。接着延时一段时间后,控制 P1 口和 P2 口的高低电平,使行的电压处于高电平状态,从而使整个点阵屏全灭,循环滚动显示。第四章第四章 系统调试系统调试当完成前面所有工作后,进入最后环节系统调试。虽然前面的工作非常重要,但系统调试也是在整个工作中起着举足重轻的作用。通过它,我们可以查出硬件设计和软件设计中存在的错误及可能出现的不协调问题,以便修改设计。4.14.1 硬件调试硬件调试硬件调试主要是电路线路的调试,检查所用的元器件型号是否正常。在此次调试中点阵屏是重点,因为这次用的是 4 块 8*8 的点阵屏,而不是 16*16 的点阵屏。4 块点阵屏拼接起来的,左右 2 块点阵屏的行相互焊接起来,上下 2 块点阵屏的列相互焊接起来,比较复杂。存在虚焊或不小心焊错的情况。在显示中发现有一列没有点亮, (所用元器件正常情下)经检查:.点阵屏的某一列虚焊 .列控制芯片 74HC595 的一端脚无输出信号,原因是面包板的一插孔存在断路现象,换插孔后,输出正常。4.24.2 软件调试软件调试本设计在制作的过程中遇到了很多问题,观测到了很多实验现象。通过上百次的调试,烧写程序,观看实验结果,认真逐一排错,最后才实现设计功能。软件的调试是通过对用户程序的编译,连接,执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程软件调试的一般方法是先独立后联机、先分块后组合、先单步后连续。在软件调试过程中通常会出现如下的情况。4.2.1 程序跳转错程序跳转错这种错误是程序运行不到指定的地方或发生死循环,通常是用错变量或变量初值设置不正确等。具体现象是只显示第一个字,而不显示以后的字节。通过软件仿真发现字型码的显示指针数值存在误差,修改算法,确保缓冲区数据的正确性,来实现循环显示的功能。 4.2.2 显示汉字太闪烁显示汉字太闪烁 刚开始实现单字显示后,在设计循环显示时,发现汉字显示的太闪烁,突兀感太强,整体效果不流畅,有种说不出来的感觉。因为本设计采用动态扫描循环显示,在增加整帧的延时时间,使其显示的时间延长,相当于在熄灭的时间不变的情况下,显示时间和总时间均增加。反复调整时间,也不能达到预期效果。最后,采用同一个汉字显示 60 次后在显示下一个汉字的方式,增加了显示时间,使显示自然,效果较好。4.2.3 显示汉字有重影显示汉字有重影通过编写附录 1 中的测试程序,发现点阵屏全亮(除去 3 个坏点外) ,说明硬件电路基本正确。编写简单的汉子循环显示程序时,发现单独显示一个程序时,不错,字迹清晰,美观。然而在换字(显示下一字符)后,部分行列有重影现象,具体说就是在显示第二个字的时候,有部分第一个字符亮的电平还接着亮,和第二个字符的字型码重叠显示,构成阴影效果。更改换字速度和延时时间,均不能达到消除重影的目的。后来在发送一个字型码后,延时一段时间,发送使整个屏全灭的行码,在发送下一个字符。根据此编程思想,解决了汉字重影显示的问题。4.2.4 增加语音模块,调试有问题增加语音模块,调试有问题在设计的后期阶段,为了增加本设计的亮点,增加了语音播报功能。刚开始采用的是单片机三线式控制语音播报模块,实现同时触发语音播报和汉字两个功能。然而在根据 WT588D 语音芯片的时序,编写了控制播报函数,在主程序相应的位置根据播报函数,发送不同的地址码,实现语音播报功能。然而在整机调试过程中,发现,可以实现语音播报功能,然而整个汉字屏的产生了闪烁,由于设计是在滚动模式下有语音播报功能,所以不能采取在汉字循环显示模式下增加单个汉字显示的次数解决问题的办法。分析具体原因,发现根据语音芯片的时序,可知在发送一个地址码时,即完成一次调用播报函数,大概需要 20ms 的时间。本函数的占用的时间太长是根本原因。最后更改语音模块的播放模式,采用按键控制播放模式(经过实际验证本模式不需要太长的时间就能触发语音播放) 。用单片机的一个 I/O 端口发送高低电平给语音模块的按键输入端口。实现由单片机控制在点阵屏显示的同时,给语音模块发送播报信号。4.2.5 不能实现汉字循环模式和滚动模式的切换不能实现汉字循环模式和滚动模式的切换在完成点阵屏汉字循环模式和滚动模式的程序后,发现单独使用任一模式,都能达到预期效果,然而在改写为根据按键选择显示模式后,却只显示汉字滚动模式,而不能实现汉字循环模式。刚开始一直认为是硬件问题,是没有把按键值送给单片机,更改按键电路,增加一个 10K 的上拉电阻,结果不变。分析错误原因,查找程序,发现在调用滚动模式时,有一个内嵌的 while(1)死循环,使程序一直处于滚动模式。将该处死循环该为判断按键是否有效的判断语句,使在按键无效时,点阵屏工作在滚动模式,在按键有效时,能停止滚动模式的工作,根据按键的选择值执行不同的显示模式。结束语结束语本次毕业设计是利用 8 位单片机开发系统, 设计 16*16 汉字显示点阵屏系统,循环滚动显示老师,您辛苦了。 该设计方法已多次应用于学生单片机实验的显示电路和多种仪器显示系统中,在日常生活中经常见。 将该显示程序调入其它主程序中,即可完成显示功能。通过本次设计,发现自己的编程思想还不成熟,有些子程序编写的并不规范,可移植性不好。另外,本设计给人的视觉效果不好,有一种突兀的感觉,有待改正,整体功能较简单,争取以后能开发出上位机软件。参考文献参考文献1 张志良编著.单片机原理及控制技术.北京:机械工业出版社,20062 陈明萤编著.8051 单片机课程设计实训教材.北京:清华大学出版社,20043 张义,陈敌北编著,例说 8051.北京:人民邮电出版社, 20064 魏泽鼎编著.单片机应用技术与实例.北京:电子工业出版社,2004 5 孙育才编著.单片微型计算机及其应用.南京:东南大学出版社,20046 沈德金, 陈粤初编著.单片机接口电路与应用程序实例.北京:航天航空大学出版社,1990. 7 李朝青编著.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,1998附录附录1 1 测试程序测试程序以下是汉字点阵屏显示系统的测试程序,主要实现点阵屏的全亮和全灭,来检测点阵屏硬件设计的正确与否。检查点阵屏是否存在坏灯。SLCK BIT P0.0SCLK BIT P0.1SDA BIT P0.2 ORG 0000HSJMP STARTORG 0030HSTART:MOV R1,#16CLR SDACLR SCLKCLR SLCKSETB SDAD3:CLR SCLKNOPSETB SCLKDJNZ R1,D3SETB SLCK MOV P2,#0FFHMOV P2,#0FFHACALL DELAY_1SAJMP STARTDELAY_1S:MOV R6,#100D1:MOV R5,#40D2:MOV R4,#123NOPDJNZ R4,$DJNZ R5,D2DJNZ R6,D1RETEND 通过本程序,实现了点阵屏的全亮和全灭。说明点阵屏硬件电路设计比较合理,不存在接错线的现象。另外发现有一块点阵屏存在坏灯的现象。附录附录2 2 设计程序设计程序以下是 16*16 汉字显示点阵屏的总程序。该程序实现了循环滚动显示“老师,您辛苦了!” 。/*程序名称:LED1616 点阵流动显示汉字简要说明:最大可显示 16*16 汉字 P1 口接上行线,P2 口接下行线,P0 口接列扫描线编 写: wgypan*/#include #include /移位库函数头文件sbit SLCK=P00;/74HC595 锁存信号sbit SCLK=P01;/74HC595 移位信号sbit SDA=P02;/74HC595 数据端/*参数设置*/#define hang1 P1 /上行线#define hang2 P2 /下行线#define sum sizeof(hanzi)/32 /自动计算汉字字数#define ziti 16 /字体大小(宽度)#define light 50 /显示亮度#define move_speed 50 /移动速度unsigned char code hanzi=0 x02,0 x22,0 x22,0 x22,0 x22,0 x22,0 xFE,0 x23,0 x23,0 x22,0 x26,0 x2A,0 x72,0 x22,0 x02,0 x00,0 x10,0 x10,0 x20,0 x20,0 x40,0 x7C,0 x92,0 x12,0 x22,0 x22,0 x42,0 x42,0 x02,0 x0E,0 x00,0 x00,/*老,0*/0 x00,0 x3F,0 x00,0 x00,0 xFF,0 x00,0 x4F,0 x48,0 x48,0 x48,0 x7F,0 x48,0 x48,0 x48,0 x4F,0 x00,0 x02,0 xE4,0 x08,0 x70,0 x80,0 x00,0 xF0,0 x00,0 x00,0 x00,0 xFF,0 x00,0 x20,0 x10,0 xE0,0 x00,/*师,1*/0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x1A,0 x1C,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,/*,,2*/0 x01,0 x02,0 x0C,0 x3F,0 xC0,0 x09,0 x16,0 x60,0 x20,0 x2F,0 x20,0 x24,0 x22,0 x31,0 x20,0 x00,0 x00,0 x04,0 x1C,0 xC0,0 x1C,0 x02,0 x02,0 x92,0 x4A,0 x82,0 x02,0 x0E,0 x00,0 x90,0 x0C,0 x00,/*您,3*/0 x01,0 x21,0 x21,0 x29,0 x25,0 x23,0 xA1,0 x61,0 x21,0 x23,0 x25,0 x29,0 x21,0 x21,0 x01,0 x00,0 x00,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 xFF,0 x20,0 x20,0 x20,0 x20,0 x20,0 x00,0 x00,0 x00,/*辛,4*/0 x02,0 x22,0 x22,0 x22,0 x22,0 xFA,0 x22,0 x2F,0 x22,0 x22,0 xFA,0 x22,0 x22,0 x22,0 x22,0 x00,0 x00,0 x00,0 x00,0 x7E,0 x44,0 x44,0 x44,0 xC4,0 x44,0 x44,0 x44,0 x7E,0 x00,0 x00,0 x00,0 x00,/*苦,5*/0 x00,0 x40,0 x40,0 x40,0 x40,0 x40,0 x40,0 x4F,0 x48,0 x50,0 x50,0 x60,0 x60,0 x40,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x02,0 x01,0 xFE,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,/*了,6*/0 x00,0 x00,0 x00,0 x0F,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 xFA,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,/*!,7*/;hang=0 x80,0 x40,0 x20,0 x10,0 x08,0 x04,0 x02,0 x01,0 x80,0 x40,0 x20,0 x10,0 x08,0 x04,0 x02,0 x01;unsigned int k=0;unsigned int j; unsigned char a=0; /用于软件延时 unsigned char s=(sum+1)*ziti; /s 为全部列数unsigned char disbuf162=0,0,0,0; /定义显示缓冲区(16 行两列的二维数组以开辟 1 个 16*16 汉字的空间)bit move_st; /移动标志/*可变延时*/void delay(void) unsigned char i;for(i=0;i=move_speed) /move_speed 控制移动速度 if(ks-ziti-1) k=0; /整屏移动列数 k1=k/ziti; k2=k%ziti; j=ziti*2*k1+k2; /显示指针 k+; move_st=1; a=0; /*装载显示数据至缓冲区*/void load_hanzi(void) unsigned char i;unsigned char disbuf1161=0,0;run_move();if(move_st) for(i=0;i15;i+) disbufi0=disbufi+10;/移位处理 disbufi1=disbufi+11;/移位处理 disbuf150=hanzij; disbuf151=(hanziziti+j); move_st=0; /*发送 595 函数*/void fasong (int m)char xx;for(xx=0;xx8;xx+) P0=m & 0 x04;/保留 P0 第 3 位(P0.2)的数据,别的位清零,P0.2 是74HC595 的数据端SCLK=0;/移位时钟上升沿_nop_();m=_crol_(m,1);/循环左移 1 位,并把值给变量 p,循环 8 次,完成一个8 位的数据串入SCLK=1;/移位时钟上升沿/*595 锁存时序函数*/void shixu_595 (void)SLCK=1;_nop_(); SLCK=0;/锁存时钟上升沿/*扫描显示数据缓冲区的内容*/void display(void)unsigned char y;unsigned int p;for (y=0;y=0 & y=8 & y=15) p=0;fasong(p);p=_crol_(hangy,3);fasong(p);shixu_595(); hang1=disbufy0; hang2=disbufy1; delay(); hang1=0; hang2=0; /*主程序*/void main (void) init(); EA=1; /开中断 TR0=1; ET0=1; while(1) load_hanzi();display();附录附录3 3 实物图片实物图片致致 谢谢短短的半个月的毕业设计,很快就要结束了。这段时间的毕业设计生活,使我对单片机有了更多的了解。本设计是在老师的细心指教下顺利完成的,老师的严谨的治学态度给我留下了深刻的印象,老师对我的谆谆教导是我能够完成本次毕业设计任务的重要基础。本次毕业设计还要感谢公司同事们的引导和帮助,以及提供了良好的实践环境;还有各位帮助我做毕业设计的同学,一直都不断的鼓励我支持我;还有就是指导我答辩的各位老师,谢谢老师们参加我的答辩!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 销售管理


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!