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

上传人:仙*** 文档编号:27671870 上传时间:2021-08-19 格式:DOC 页数:30 大小:1.22MB
返回 下载 相关 举报
基于STC89C54单片机的汉字点阵显示屏的设计毕业设计_第1页
第1页 / 共30页
基于STC89C54单片机的汉字点阵显示屏的设计毕业设计_第2页
第2页 / 共30页
基于STC89C54单片机的汉字点阵显示屏的设计毕业设计_第3页
第3页 / 共30页
点击查看更多>>
资源描述
毕业设计(论文) 题 目:基于 STC89C54 单片机的汉字点阵显示屏的设计 系 别: 年级专业: 学生姓名: 学 号: 指导教师: 完成时间: 毕业设计( 论文) I 摘 要 在现代化的社会里,因为 LED 具有功耗低、寿命长、性能好的优点,由单片 机控制 LED 来实现文字、图像信息显示的应用也越来越广泛,其使用价值也越来 越受重视。本设计基于 STC89C54 单片机来实现汉字显示的功能,介绍了汉字点阵 显示系统的设计过程。选用了 4 块 8*8 的 LED 点阵模块来构成一个 16*16 的点阵 显示屏,它主要由单片机 STC89C54 的 P1 口和 P2 口来控制其行选,采用时 8 位 串入并出芯片 74HC595 来控制其列选。由集成 8 个 NPN 达林顿管的 ULN2803 来 提供驱动电流。因为 ULN2803 有反相功能,所以在发送显示信息时,我们通过给 模块要求亮的行置 1,而给相应的列来置 1,从而使相应的二极管导通,于是字便 被显示出来了,此后再对字进行扫描显示,便会产生动态效果。此外,本设计增加 语音播报功能,使该系统性能得到显著提升。 关键词:单片机;74HC595;ULN2803 毕业设计( 论文) II Abstract In 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 毕业设计( 论文) 目 录 摘 要 .I Abstract .II 第一章 系统设计方案 .1 1.1 系统方案的确定 .1 第二章 硬件设计 .2 2.1 主控芯片 .2 2.1.1 STC89C54 单片机 .2 2.1.2 单片机信号引脚 .2 2.1.4 51 单片机最小系统 .3 2.1.5 中断控制 .4 2.2 I/O 扩展芯片 .6 2.3 驱动芯片 .7 2.4 汉字显示点阵屏 .9 2.4.1 点阵屏模块 .9 2.4.2 8*8 点 阵工作原理说明 .9 2.5 电源电路 .10 2.6 单片机的时钟电路 .10 2.7 单片机的复位电路 .11 2.8 原理框图 .11 2.9 整体硬件设计电路 .12 第三章 软件设计 .13 3.1 点阵屏主程序流程图 .13 3.2 装载函数流 程图 .13 3.3 显示函数流程图 .14 第四章 系统调试 .15 4.1 硬件调试 .15 4.2 软件调试 .15 4.2.1 程序跳转错 .15 结束语 .16 参考文献 .17 附录 1 .18 附录 2 .19 附录 3 实物图片 .23 致 谢 .24 毕业设计( 论文) 1 第一章 系统设计方案 1.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 点阵显示系统的总体框图 主控芯片 STC89C54 3 根控制线 I/O 扩展串入并出74HC595 16*16 LED 点阵显示屏16 根线 行驱动 ULN2803 WT588D 语音播报模块 5V 电源 4 根线 毕业设计( 论文) 2 一列的 LED 灯根据字型码可以亮灭,接着为了消除阴影,发送使 LED 灯熄灭的行 字型码,是所有的 LED 灯熄灭。依此循环发送行列值,可以显示图像。 采用扫描方式显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。 显示数据通常存储在单片机的 ROM 中,按 8 位一个字节的形式顺序排放。显示时 要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输 的问题。从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。显然, 采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列 数很多时,并列传输的方案是不可取的。 软件部分编程采用基于 Windows XP 系统的 Keil C。此软件界面美观,操作方 便,易于程序的编写。最后通过 STC-ISP 编程软件将正确的程序写入 STC89C54 芯片中,通过硬件电路显示。 第二章 硬件设计 2.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 脚,片内振荡电路的输出端。 毕业设计( 论文) 3 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 芯片图 毕业设计( 论文) 4 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 最小系统 毕业设计( 论文) 5 时,可以对该中断加以屏蔽。本设计的程序中有此应用。STC89C54 对中断请求源 的开放或屏蔽是由中断允许寄存器 IE 控制的。IE 的格式如表 2-1 所示: 表 2-1 STC89C54 IE 寄存器 IE AFH AEH ADH ACH ABH AAH A9H 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 工作方式选择 毕业设计( 论文) 6 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.2 I/O扩展芯片 本设计使 用 74HC595 来扩展并行 I/O 口,节约单片机资源。其逻辑电路图如 2-5 所示。 74HC595 内含 8 位串入、串/并出移位寄存器和 8 位三态输出锁存器。寄 存器和锁存器分别有各自的时钟输入 (SCLK 和 SLCK) , 都是上升沿有效。当 图2-5 74HC595逻辑表 图 2-4 TCON 寄存器 毕业设计( 论文) 7 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.3 驱动芯片 ULN2803 属于高电压大电流达林顿晶体管系列,该芯片中的八个 NPN 达林顿 管来驱动低逻辑电平数字电路和大电流高电压要求的灯,继电器,打印机和其它类 图 2-6 74HC595 扩展 I/O 口电路 .- -. -. . . . ( .,- - - _/ ;-:- _- -_ _U_n_. ooo_ | |_!_|_!_|_!_|_!_| | c(_ .(_ .(_ .( /, | |_|_|_|_| | ,_|,L_,|_ _| /;_()()=()() (o)(o) (o)(o)-(o)(o) 95 毕业设计( 论文) 8 似负载间的接口的理想器件。广泛应用于计算机、工业和消费类的产品中、所有器 件的集电极开路输出和用于瞬变抑制的续流钳位二极管。ULN2803 的设计与标准 TTL 兼容。其内部逻辑如图 2-7 所示。 该驱动芯片最大可以提供 500mA 的驱动电流,每个 LED 灯需要 5-10mA 的驱 动电流,每行有 16 个 LED 灯,大约需要 160mA 的驱动电流,使用 ULN2803 可以 满足设计要求。本设计驱动电路连接图 2-8 所示: 图2-7 ULN2803内部框图 图 2-8 ULN2803 驱动电路 毕业设计( 论文) 9 2.4 WT588D语音模块 本设计采用广州唯创科技有限公司的集单片机和语音电路于一体的可编辑语音 芯片 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 所示。本设计使用按键上升沿触发方式,当单 片机收到播放声音信号时,单片机的 I/O 口发送低电平,给语音模块的按键接口, 图 2-9 语音模块原理图 毕业设计( 论文) 10 也就是语音模块接收到单片机发送的低电平,由此信号触发语音模块发送指定的声 音。 2.5汉字显示点阵屏 2.5.1 点阵屏模块 本设计为 4 块 8*8 的单色点阵屏拼接而成。其中每块 8*8 单色点阵屏如图 2- 10 所示。本点阵模块显示颜色为红色,点亮一个 LED 的电压为 1.5V,电流为 5- 10mA。 2.5.2 8*8 点阵工作原理说明 从图 2-11 可以看出, 8*8 点阵共需要 64 个发光二极管组成,且每个发光二极 管是放置在行线和列线的交叉点上,当对应的某一列置 0 电平,某一行置 1 电平, 图2-10 8*8单色点阵屏 图2-11 8*8 点阵LED结构 毕业设计( 论文) 11 则相应的二极管就亮;因此要实现一根柱形的亮法,对应的一列为一根竖柱,或者 对应的一行为一根横柱,因此实现柱的亮的方法如下所述: 一根竖柱:对应的列置 0 ,而行则采用扫描的方法来实现。 一根横柱:对应的行置 1 ,而列则采用扫描的方法来实现。 2.6 电源电路 该电路直接可以将输入的交流电源转化成+5V 的直流电源。该整流桥能够通 过的最大电流为 2A;稳压管 W7805 能够将输入 10V 的电压降低为+5V,其最大 工作电流为 1.5A,在它的输入端并联一个 0.33 微法的电容,输出端并联一个 0.1 微法的电容,可以保证它正常工作;发光二极管串接一个 10K 的限流电阻作为电 源工作指示灯。 2.7 单片机的时钟电路 MCS-51 片内有一个高增益反相放大器,其输入端(XTAL1)和输出端 (XTAL2)用于外接定时元件构成自激振荡电路。定时元件是由石英晶体和微调 电容组成的并联谐振电路。电容 C1 和 C2 对频率有微调作用,电容容量的选择范 图2-12 电源电路 图 2-13 单片机晶振电路 图 2-14 单片机复位电 路 毕业设计( 论文) 12 围为 5pF30pF.振荡频率的选择范围为 1.2MHz12MHz。在本方案选择 12MHZ 石 英晶体和 20pF 电容组成的并联谐振电路作为单片机的时钟电路。根据该电路可以 知道单片机的指令周期为 1 微秒。单片机的时钟电路如图 2-13 所示。 2.8 单片机的复位电路 RST/VPD 端的外部复位电路有两种工作方式:上电自动复位和按键手动复位。 根据单片机可靠复位要求,即要求 RST/VPD 端保持 2 个机器周期以上的高电平, 本系统采用按键手动复位,相当于 RST 端直接接高电平,复位电路如图 2-14 所示: 2.9 原理框图 图 2-15 电路为 1 块 88 点阵显示电路连接图。本设计利用一块 8*8 点阵来体 会和掌握点阵屏的显示汉字的原理,为 16*16 点阵屏做理论依据和技术支持。 (1).把“单片机系统”区域中的 P1 端口用 8 芯排芯连接到“ 点阵模块”区域中的“ DR1 DR8 ”端口上; (2).把“单片机系统”区域中的 P3 端口用 8 芯排芯连接到“ 点阵模块”区域中的“ DC1 DC8 ”端口上; 如果要显示大的图象可多个点阵拼在一起,只须将点阵的行和行相串联,列和 列相串联。用 74HC595 来控制单个行就可以了。 (多个点阵屏的连接) 多个点阵显示时,常将所有位的行选线并联在一起,由一个 8 位 IO 口控制, 而列分别由另一个 74HC595 控制;也可采用并行扩展口构成显示电路,通常,需 要扩展器件管脚的较多,价格较高。本设计将介绍一种利用单片机的一个并行 IO 口实现多个点阵显示的简单方法,图 2-1 所示是该电路的硬件原理图。其中, 图2-15 原理框图 毕业设计( 论文) 13 74HC595 是 8 位并行输出门控串行输入移位寄存器。显示时,其显示数据以串行 方式从 STC89C54 的 P0.2 口输出送往移位寄存器 74HC595 的 SDA 端,单片机的 P0.1 和 P0.0 输出 74HC595 的正确时序信号,然后将变成的并行数据从输出端 Q0Q7 输出,以控制点阵的列。由 STC89C54 的 P1P2 口输出高低电平,以对 行控制。 2.10 整体硬件设计电路 图 2-16 为设计的整体硬件电路图。本设计采用 4 块 8*8 单色点阵屏级联成一 个 16*16 的点阵屏,来完成显示汉字的功能。以 STC89C54 为主控芯片, ULN2803 为驱动芯片,控制行。74HC595 为 8 位串入并出芯片,扩展 I/O 口,控 制列。另外,还有单片机的最小系统等基本电路。为了提高单片机 I/O 口的驱动能 力,本设计在 P0 口增加了 10K 的上拉电阻。 图 2-16 整体硬件电路图 毕业设计( 论文) 14 第三章 软件设计 3.1 点阵屏主程序流程图 图 3-1 主程序流程图 本设计实现了多个汉字的循环滚动显示,程序流程图如图 3-1 所示。软件部分 主要实现初始化包括各个寄存器的赋初值,清除 74HC595 控制线和数据线数据, 给定时器 1 赋初值。主程序调用了两个主要的子函数:装载字型码函数和显示函数。 装载函数实现在字型码表中把将要显示的字型码存放到 32 个字节的缓冲区中的功 能。显示函数完成发送相对应的行列字型码的工作。 3.2装载函数流程图 装载函数的流程图如图 3-2 所示。装载函数实现把将要显示的字型码装载到一 个 32 字节的缓冲区中,以备显示程序发送字型码。首先判断是否要装载数据,判 断的依据在于定时器是否溢出(定时器 1 定时 1ms,然后通过一个变量计数 50 次 溢出,总延时 50ms),当到达设定的时间,通过一定的算法,获得装载数据的初 始指针。依次装载 16 组数据,完成函数功能。具体算法:因为每 32 个字型码是一 帧数据(一幅图像),每帧有 16 列,假定显示 2 个字符,字型码为 64 个 8 位二进 制数据。则需要显示的总列数为 48 列,而移动的列数范围为0,31通过移动的列数 来获得在字型码数组中显示的指针。 初始化定时器 1 开中断、开定时器 开始 装载函数 调用显示函数 结束 毕业设计( 论文) 15 3.3显示函数流程图 依次装载数据 结束 开始 判断是否 装载数据 获得显示指针 图 3-2 装载函数流程图 图 3-3 显示函数流程图 结束 开始 发送列值 发送行值 判断是否发 送完 16 次 延时 熄灭 毕业设计( 论文) 16 74HC595 是 8 位串入并出的 I/O 扩展芯片。595 发送列码,循环 16 次送完一 帧列值,使列循环点亮。在发送列值的同时发送相对应的存放在缓冲区的行值,使 一帧图像显示。接着延时一段时间后,控制 P1 口和 P2 口的高低电平,使行的电 压处于高电平状态,从而使整个点阵屏全灭,循环滚动显示。 第四章 系统调试 当完成前面所有工作后,进入最后环节系统调试。虽然前面的工作非常重要, 但系统调试也是在整个工作中起着举足重轻的作用。通过它,我们可以查出硬件设 计和软件设计中存在的错误及可能出现的不协调问题,以便修改设计。 4.1 硬件调试 硬件调试主要是电路线路的调试,检查所用的元器件型号是否正常。在此次调 试中点阵屏是重点,因为这次用的是 4 块 8*8 的点阵屏,而不是 16*16 的点阵屏。 4 块点阵屏拼接起来的,左右 2 块点阵屏的行相互焊接起来,上下 2 块点阵屏的 列相互焊接起来,比较复杂。存在虚焊或不小心焊错的情况。 在显示中发现有一列没有点亮, (所用元器件正常情下)经检查:.点阵屏的 某一列虚焊 .列控制芯片 74HC595 的一端脚无输出信号,原因是面包板的一插 孔存在断路现象,换插孔后,输出正常。 4.2 软件调试 本设计在制作的过程中遇到了很多问题,观测到了很多实验现象。通过上百次 的调试,烧写程序,观看实验结果,认真逐一排错,最后才实现设计功能。软件的 调试是通过对用户程序的编译,连接,执行来发现程序中存在的语法错误与逻辑错 误并加以排除纠正的过程软件调试的一般方法是先独立后联机、先分块后组合、先 单步后连续。在软件调试过程中通常会出现如下的情况。 4.2.1 程序跳转错 这种错误是程序运行不到指定的地方或发生死循环,通常是用错变量或变量初 值设置不正确等。具体现象是只显示第一个字,而不显示以后的字节。通过软件仿 真发现字型码的显示指针数值存在误差,修改算法,确保缓冲区数据的正确性,来 实现循环显示的功能。 毕业设计( 论文) 17 4.2.2 显示汉字太闪烁 刚开始实现单字显示后,在设计循环显示时,发现汉字显示的太闪烁,突兀感 太强,整体效果不流畅,有种说不出来的感觉。因为本设计采用动态扫描循环显示, 在增加整帧的延时时间,使其显示的时间延长,相当于在熄灭的时间不变的情况下, 显示时间和总时间均增加。反复调整时间,也不能达到预期效果。最后,采用同一 个汉字显示 60 次后在显示下一个汉字的方式,增加了显示时间,使显示自然,效 果较好。 4.2.3 显示汉字有重影 通过编写附录 1 中的测试程序,发现点阵屏全亮(除去 3 个坏点外) ,说明硬 件电路基本正确。编写简单的汉子循环显示程序时,发现单独显示一个程序时,不 错,字迹清晰,美观。然而在换字(显示下一字符)后,部分行列有重影现象,具 体说就是在显示第二个字的时候,有部分第一个字符亮的电平还接着亮,和第二个 字符的字型码重叠显示,构成阴影效果。更改换字速度和延时时间,均不能达到消 除重影的目的。后来在发送一个字型码后,延时一段时间,发送使整个屏全灭的行 码,在发送下一个字符。根据此编程思想,解决了汉字重影显示的问题。 4.2.4 增加语音模块,调试有问题 在设计的后期阶段,为了增加本设计的亮点,增加了语音播报功能。刚开始采 用的是单片机三线式控制语音播报模块,实现同时触发语音播报和汉字两个功能。 然而在根据 WT588D 语音芯片的时序,编写了控制播报函数,在主程序相应的位 置根据播报函数,发送不同的地址码,实现语音播报功能。然而在整机调试过程中, 发现,可以实现语音播报功能,然而整个汉字屏的产生了闪烁,由于设计是在滚动 模式下有语音播报功能,所以不能采取在汉字循环显示模式下增加单个汉字显示的 次数解决问题的办法。分析具体原因,发现根据语音芯片的时序,可知在发送一个 地址码时,即完成一次调用播报函数,大概需要 20ms 的时间。本函数的占用的时 间太长是根本原因。最后更改语音模块的播放模式,采用按键控制播放模式(经过 实际验证本模式不需要太长的时间就能触发语音播放) 。用单片机的一个 I/O 端口 发送高低电平给语音模块的按键输入端口。实现由单片机控制在点阵屏显示的同时, 给语音模块发送播报信号。 4.2.5 不能实现汉字循环模式和滚动模式的切换 在完成点阵屏汉字循环模式和滚动模式的程序后,发现单独使用任一模式,都 能达到预期效果,然而在改写为根据按键选择显示模式后,却只显示汉字滚动模式, 而不能实现汉字循环模式。刚开始一直认为是硬件问题,是没有把按键值送给单片 毕业设计( 论文) 18 机,更改按键电路,增加一个 10K 的上拉电阻,结果不变。分析错误原因,查找 程序,发现在调用滚动模式时,有一个内嵌的 while(1)死循环,使程序一直处于滚 动模式。将该处死循环该为判断按键是否有效的判断语句,使在按键无效时,点阵 屏工作在滚动模式,在按键有效时,能停止滚动模式的工作,根据按键的选择值执 行不同的显示模式。 结束语 本次毕业设计是利用 8 位单片机开发系统, 设计 16*16 汉字显示点阵屏系统, 循环滚动显示 老师,您辛苦了。 该设计方法已多次应用于学生单片机实验的显示电路和多种仪器显示系统中, 在日常生活中经常见。 将该显示程序调入其它主程序中,即可完成显示功能。通 过本次设计,发现自己的编程思想还不成熟,有些子程序编写的并不规范,可移植 性不好。另外,本设计给人的视觉效果不好,有一种突兀的感觉,有待改正,整体 功能较简单,争取以后能开发出上位机软件。 毕业设计( 论文) 19 参考文献 1 张志良编著 .单片机原理及控制技术.北京:机械工业出版社,2006 2 陈明萤编著 .8051 单片机课程设计实训教材.北京:清华大学出版社,2004 3 张义,陈敌北编著, 例说 8051.北京:人民邮电出版社, 2006 4 魏泽鼎编著 .单片机应用技术与实例.北京:电子工业出版社,2004 5 孙育才编著 .单片微型计算机及其应用.南京:东南大学出版社,2004 6 沈德金 , 陈粤初编著.单片机接口电路与应用程序实例.北京:航天航空大学出版 社,1990. 7 李朝青编著.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学 出版社,1998 毕业设计( 论文) 20 附录1 测试程序 以下是汉字点阵屏显示系统的测试程序,主要实现点阵屏的全亮和全灭,来检 测点阵屏硬件设计的正确与否。检查点阵屏是否存在坏灯。 SLCK BIT P0.0 SCLK BIT P0.1 SDA BIT P0.2 ORG 0000H SJMP START ORG 0030H START: MOV R1,#16 CLR SDA CLR SCLK CLR SLCK SETB SDA D3: CLR SCLK NOP SETB SCLK DJNZ R1,D3 SETB SLCK MOV P2,#0FFH MOV P2,#0FFH ACALL DELAY_1S AJMP START DELAY_1S:MOV R6,#100 D1: MOV R5,#40 D2: MOV R4,#123 NOP DJNZ R4,$ DJNZ R5,D2 DJNZ R6,D1 RET END 通过本程序,实现了点阵屏的全亮和全灭。说明点阵屏硬件电路设计比较合理, 不存在接错线的现象。另外发现有一块点阵屏存在坏灯的现象。 毕业设计( 论文) 21 附录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 x0 C,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, 毕业设计( 论文) 22 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; /整屏移动列数 毕业设计( 论文) 23 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 /保留 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) 毕业设计( 论文) 24 unsigned char y; unsigned int p; for (y=0;y=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(); 毕业设计( 论文) 25 附录3 实物图片 毕业设计( 论文) 26 致 谢 短短的半个月的毕业设计,很快就要结束了。这段时间的毕业设计生活,使我 对单片机有了更多的了解。 本设计是在老师的细心指教下顺利完成的,老师的严谨的治学态度给我留下了 深刻的印象,老师对我的谆谆教导是我能够完成本次毕业设计任务的重要基础。 本次毕业设计还要感谢公司同事们的引导和帮助,以及提供了良好的实践环境; 还有各位帮助我做毕业设计的同学,一直都不断的鼓励我支持我;还有就是指导我 答辩的各位老师,谢谢老师们参加我的答辩!
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸下载 > CAD图纸下载


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

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


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