资源描述
I摘摘 要要本系统是从实际应用角度出发,针对当前市场上流行的 LED 产品的应用领域而设计制作的多功能电子显示屏,可用于商场导购促销显示、新闻与广告显示、车站机场班次时间资讯显示等。 LED 电子显示屏根据题目设计要求,硬件部分主要包括 STC89C52 单片机系统、16块 8*8LED 点阵显示模块构成 16*64 点阵、显示驱动电路、键盘输入控制器等部分,软件编程主要用的是 C 语言。本系统不仅能够实现数字、字母、汉字等预存信息的切换显示,同时还可以实现信息的定时循环、上下左右滚屏、LED 显示亮度连续可调,另外,本系统可以和 PC 机通讯,通过 PC 机串口对显示信息进行更新。通过对此 LED 广告屏的设计,满足了设计要求,实现了设计的目的。关键词:关键词:LED 电子显示屏 ,16*64 点阵 ,STC89C52 单片机 IIAbstractThis system sets out from the actual application angle and aim at current spread on the market of the multi-function electronics monitor of the applied realm but design creation of LED product, can used for market to lead to buy promote sales to show, news and advertisement show, the station airports number times information show etc.LED electronics the monitor design a request according to the topic. the hardware part mainly includes STC89 C52 list slice machine system and 16 pieces of ses show that the mold piece constitutes 16*64point, show to drive parts like the electric circuit, keyboard importation controller etc .softwares weaving a distance what to use mainly is a C language .This system can not only carry out number, letter of alphabet, and Chinese characters.etc. to prepare to save a cutting over of information to suggest, but also can carry out an information in fixed time circularly, the top and bottom Be or so to roll to hold, LED show that the bright degree is in a row adjustable, moreover, this system can pass with PC machine communication one PC machine string to show that the information carries on renewal .Pass the design that holds to this LED advertisement, satisfied a design request, carried out the purpose of design.Key words:LED electronics monitor, 64 of 16point, STC89 C52 list slice machine青岛理工大学琴岛学院专科毕业设计说明书(论文)目目 录录摘摘 要要.IAbstractAbstract.II1 1 绪绪 论论.11.11.1 课题背景课题背景 .11.21.2 LEDLED 广告屏广告屏.12 2 系统方案设计系统方案设计.32.12.1 LEDLED 广告屏功能的实现广告屏功能的实现.32.22.2 单片机的选型单片机的选型.53 3 硬件设计硬件设计.63.13.1 系统结构系统结构.63.23.2 电路的具体设计电路的具体设计.74 4 系统的软件设计系统的软件设计.104.14.1 程序设计程序设计 .104.24.2 字模提取字模提取 .114.34.3 LEDLED 显示方式显示方式.114.44.4 串行通信方式串行通信方式 .125 5 系统功能测试系统功能测试.125.15.1 测试工具测试工具.125.25.2 键盘键盘.125.35.3 单元模块电路单元模块电路.125.45.4 系统整体功能系统整体功能.13总总 结结.13致致 谢谢.14参考文献参考文献.15附附 录录.16附录附录 1 1 控制电路电路图控制电路电路图.16附录附录 2 2 程序程序.24 11 1 绪绪 论论1.11.1 课题背景课题背景LED 显示屏是从实际应用角度出发,针对当前市场上流行的 LED 产品的应用领域而设计制作的多功能电子显示屏,可用于学校信息栏、商场导购提示、广告传播、车站航班班次时间资讯显示等。16 行*64 列 LED 电子显示屏根据题目设计要求进行的一个简易设计,硬件部分主要包括 STC89C51 或 89C52 单片机系统、16 块 8*8LED 点阵显示模块构成的显示屏、显示驱动电路、键盘输入控制器等部分。本系统不仅能够实现数字、字母、汉字等预存信息的切换显示,同时还可以实现信息的定时循环、上下左右滚屏、LED 显示亮度连续可调、另外,本系统可以和 PC 机通讯,通过 PC 机串口对显示信息进行更新。1.21.2 LEDLED 广告屏广告屏近年来 LED 显示屏市场得到了迅猛的发展,已经广泛应用到银行、邮电、税务、机场、车站、证券市场及其它交易市场、医院、电力、海关、体育场等多种需要进行公告、宣传的场合。LED 广告屏分为数码显示屏、图文显示屏和视频显示屏,均由LED 矩阵块组成。LED 数码显示屏的显示器件为 7 段码数码管,适于制作时钟屏、利率屏等,显示数字的电子显示屏。 图文显示屏可与 计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、 三维动画、录像、电视、VCD 节目以及现场实况。LED 显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于金融、税务、工商、邮电、 体育、广告、厂矿企业、交通运输、教育系统、 车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。 2.5m 宽茶色和透明磨砂 树脂板已由无锡正成企业安装调试成功!大大改善了 LED 的整体效果 ,有效时间达 20 年之久,耐高温达 150 度,低温达-45 度。LED 显示屏可以显示变化的数字、文字、图形图像;不仅可以用于室内环境还可以用于室外环境,具有 投影仪、电视墙、液晶显示屏无法比拟的优点 。1.2.11.2.1 LEDLED 研究意义研究意义LED 之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。这些优点概括起来是:亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。LED 的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。所以,具有极高的研究价值。1.2.2 LED 显示产品系列显示产品系列A、单色、彩色条形显示屏;B、计算机控制数码显示屏;C、单色图文显示屏;D、三色(红、绿、黄)图文显示屏;E、点阵和数码混合显示屏(证券屏) ;F、双基色(红、绿)多媒体视频同步显示屏;G、三基色(红、绿、蓝)多媒体视频同步显示 2屏。1 1.2.3 LED 显示屏分类显示屏分类按显示颜色分为:单红色、单绿色、红绿双基色、 红绿蓝三色;按使用功能分为:图文显示屏、多媒体视频显示屏、行情显示屏、条形显示屏;按使用环境分为:室内显示屏、室外显示屏、半户外显示屏;按发光点直径分为:3.0、3.7、4.8、5.0、8.0、ph8、ph10、ph16、ph20 等。基本发光点非行情类 LED 显示屏中,室内 LED 显示屏按采用的 LED 单点直径可分为 3mm、3.75mm、5mm、8mm、和 10mm 等显示屏;室外 LED 显示屏按采用的象素直径可分为 16mm、19mm、22mm 和 26mm 等 LED 显示屏。行情类 LED 显示屏中按采用的数码管尺寸可分 2.0cm(0.8inch)、2.5cm(1.0inch)、3.0cm(1.2inch)、4.6cmm(1.8inch)、5.8cm(2.3inch)、7.6cm(3inch)等 LED 显示屏。1 1.2.4 显示颜色显示颜色LED 显示屏按显示颜色分为单基色 LED 显示屏(含伪彩色 LED 显示屏) ,双基色LED 显示屏和全彩色(三基色)LED 显示屏。按灰度级又可分为16、32、64、128、256 级灰度 LED 显示屏等.1.2.5 显示性能显示性能LED 显示屏按显示性能分为文本 LED 显示屏、图文 LED 显示屏,计算机视频LED 显示屏,电视视频 LED 显示屏和行情 LED 显示屏等。行情 LED 显示屏一般包括证券、利率、期货等用途的 LED 显示屏。 32 系统方案设计系统方案设计2.1 LED 广告屏功能的实现广告屏功能的实现2.1.1 显示方式的实现显示方式的实现从理论上讲,不论是显示文字还是显示图形,只要控制与组成这些文字与图形的各个点所对应位置的 LED 器件发光就可以得到想要的显示结果,这样同时控制各个发光点亮灭的方法称为静态驱动显示方式,这种方式所需端口较多,若用锁存器来扩展端口,那么按 8 位锁存器计算,一个 1616 点阵需要 16168=32 个锁存器,这个数字很庞大,因为一个 1616 的点阵就需 32 个锁存器,而实际中点阵显示屏要大得多,所需锁存器数量很大,相应锁存器成本就是一个庞大的数字,现实中不采用这种方法,而是采用动态扫描方式。所谓动态扫描,简单的说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套驱动器,以 1616 的点阵为例把所有同一行发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳接法) ,先送出对应第一行发光管亮灭的数据并锁存,然后选通第一行使其点亮一定时间,然后熄灭,再送出第二行的数据并锁存,然后选通第二行,使其点亮一定时间,然后熄灭一直到第 16 行熄灭,重新点亮第一行,这样反复轮回,当这样的轮回次数足够快(每秒 24 次以上) ,由于人眼视觉的暂留现象,我们就能看到显示屏上的图形了。具体接线形式如图 21 所示。C1 C2 C3 C4R1R2R3R4图 21 LED 接线形式(共阳接法)2.1.2 传输方式的选择传输方式的选择采用动态扫描进行显示时,每行有一个行驱动器各行的同名列共用一个列驱动器,显示数据通常存储在单片机的存储器中,按 8 位一个字节的形式顺序排放,显示时要 4把一行中各列的数据传送到相应的列驱动器中,这就存在一个显示数据传输的问题,从控制电路到列驱动器的数据传输可以采用并行方式和串行方式,显然用并行方式时,从控制电路到驱动电路的线路数量比较大,相应硬件数量大当列很多时并行传输的方式是不可取的。采用串行传输方式,控制电路可以只有一根信号线,将列数据逐位的传送到列驱动器,在硬件上无疑是经济的,但是,串行传输过程较长,数据按顺序逐位的输出给列驱动器,只有当一行的各列数据都传送到位后这一行的各列才能并行的显示,这样对于一行的显示过程就可以分解为列数据准备传输和列数据显示两个过程,对于串行传输方式来看列数据准备时间要长一些,在行扫描周期确定的情况下,行显示的时间就会缩短,以致会影响到 LED 的亮度效果。2.1.3 时间矛盾问题的解决时间矛盾问题的解决解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法解决,即在显示本行各列数据的同时,传送下一行的列数据,为了达到重叠处理的目的,列数据的显示就需要具有锁存功能,经过上述分析,可以归纳出列驱动电路应该具有的功能:对于列数据来说,应能实现串入并出的移位功能;对于列数据显示来说应具有并行锁存的功能,这样本行已准备好的数据打入并行锁存器进行显示,串联移位寄存器就可以准备下一行的列数据,而不影响本行的显示时间原理图如下:列驱动列驱动列驱动列驱动行驱动16*16 点阵16*16 点阵16*16 点阵16*16点阵89C52 单片机图 2-2 LED 工作原理图3 硬件电路大致可以分成单片机系统以及外围电路、行驱动电路、列驱动电路、单片机的系统及外围电路。单片机采用 89C51 或 89C52 或与其兼容的系列芯片,系统采用 12MHZ 或更高频率的晶振,以获得较高的刷新频率,使显示更稳定,单片机的串口和列驱动器相连用来送显示数据,P1 口低 4 位与行驱动相连送出行显信号,P1.5-P1.7 口用来发送控制信号 P0 和 P2 口空闲,有必要时可以扩展系统的 ROM、RAM。2.2 单片机的选型单片机的选型由于采用单片机系统来实现。鉴于 STC89C52 单片机比传统的 51 系列 8 位单片机 5具有更加丰富的资源,而且数据处理速度快,同时“STC89C52 单片机除了具备单片机最小系统电路外还包括有电源电路、复位电路等,体积小,可靠性高。本系统的设计采用双单片机系统,一个主要用于完成多功能显示控制功能,另一个主要用于实时时钟显示、实时温度检测显示、无线通讯以及其他的扩展发挥部分功能,这样提供了充足的内部空间和更多的外部接口;同时由于安装和调试工作可以并行进行,极大地缩短了总体设计和制造的时间。 63 硬件设计硬件设计3.1 系统结构系统结构本硬件的设计原理就是利用单片机控制发光二级管的亮灭,在同一时刻,点亮的LED 灯就会组成特定的图形或符号,以便用作广告宣传、信息提示等。系统整体由单片机和 PC 机两大部分构成 : 单片机为核心的模块一:包括 16*64LED 点阵、驱动电路等。实现功能:主要用来实现点阵的显示,包括特定标语库内容的显示,并实现上下左右滚屏等各种花样显示;存储器用来存储汉字和 ASCII 码的点阵库,并实现掉电不丢失功能。PC 机为核心的模块二:包括 PC 机软件和 MAX232 芯片。实现功能:上位机主要实现标语库的数据更新,上位机软件通过 MAX232 芯片将更新内容(汉字或者 ASCII码的机内码)送到单片机,传输到单片机实现数据更新。3.2 电路的具体设计电路的具体设计电路的具体设计主要分为:1.控制电路的设计。2.LED 显示驱动电路设计3.2.1 控制电路的设计控制电路的设计主控制单片机采用 STC89c52 单片机作为主控制器。由于 STC89c52 内置有 2K 字的 SRAM 和 32K 字的内存 FLASH,能满足本系统数据处理及 LED 点阵显示所数据的存储要求;另外,“集成电路”功能较强、性价比高,具有体积小、集成度高、易扩展、功耗小等优点,简化主控制系统的硬件电路设计,可靠性高。STC89C52 是高性能的 CMOS8 位单片机,工作电压 4.0V 到 5.5V,拥有 8K 字节FLASH 存储器和 256 字节片内 RAM,全静态时钟范围从 0-33MHz。它的最大方便之处是支持在系统编程 ISP,可进行高达 1000 次擦写,节约设计成本,单片机的口线中,P2 和 P3 用于液晶显示电路,P1 口用于键盘的扫描电路,P2 也用于 DS1302 和DS18B20 的连接电路。各引脚具体功能:P0 口:P0 口是一个 8 位漏极开路的双向I/O 口。作为输出口,每位能驱动 8 个 TTL 逻 辑电平。对 P0 端口写“1”时,引脚用作高阻抗输入 。当访问外部程序和数据存储器时, P0 口也被作为低 8 位地址/数据复用。在这种模式下 ,P0 具有内部上拉电阻。 在 flash 编程时,P0 口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p1 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。 40 个引脚按引脚功能大致可分为 4 个种类:电源、时钟、控制和 I/O 引脚。 电源: VCC - 芯片电源,接+5V; VSS - 接地端;注:用万用表测试单片机引脚电压一般为 0v 或者 5v,这是标准的 TTL 电平。但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于 0v-5v 之间,其实这 7是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在 0v 或者5v。 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 控制线:控制线共有 4 根, ALE/PROG:地址锁存允许/片内 EPROM 编程脉冲 ALE 功能:用来锁存 P0 口送出的低 8 位地址 PROG 功能:片内有 EPROM 的芯片,在 EPROM 编程期间,此引脚输入编程脉冲。 PSEN:外 ROM 读选通信号。 RST/VPD:复位/备用电源。 RST(Reset)功能:复位信号输入端。 VPD 功能:在 Vcc 掉电情况下,接备用电源。 EA/Vpp:内外 ROM 选择/片内 EPROM 编程电源。 EA 功能:内外 ROM 选择端。 Vpp 功能:片内有 EPROM 的芯片,在 EPROM 编程期间,施加编程电源 Vpp。3.2.2 LED 显示驱动电路设计显示驱动电路设计LED 显示驱动电路: 本次设计中 16 行*64 列 LED 电子显示屏的制作以及其显示驱动电路的设计制作都是非常关键的部分。下面主要介绍一下显示驱动电路的设计。 本 LED 点阵屏采用动态扫描的方式显示,即逐行扫描,工作时先将一行点阵字模通过列驱动输出,然后运用译码器选中对应行,使该行得以显示,接着再送下一行数据,再选中下一行有效,直到 16 行全被扫描一遍。至此,一幅完整的文字信息就显现图 3-1 80C51 引脚图 8出来。然后在反复扫描这 16 行直至显示新的信息。采用这种方式的优点是耗电少,成本低,寿命长,但是也存在显示亮度及内容显示稳定的问题。根据视觉滞留原理,根据视觉滞留原理,每屏的完整的显示时间应控制在 20ms 之内,即 50Hz,人眼看上去才不会觉得闪烁。由于要扫描 16 行的点阵,所以每行的时间绝不能超过20ms16=1.25ms,同时也不是每行的扫描时间越短越好,因为 LED 的亮度同电流的大小和维持时间的长短有关。LED 点阵块的单点静态电流一般在 10mA 左右,由于占空比是 1/16,所以单点的动态电流最大可以达到 160mA。在维持时间恒定的情况下,电流越大(不超过额定电流),点阵亮度也越亮,而在电流恒定的情况下,需要一段维持时间来保持亮度。试验表明当输入 LED 的电流为 15mA 时,维持时间至少需要1ms,否则 LED 呈微亮状态。由于设计时设置 STC89c52 单片机的时钟频率为12MHz,而每次传送移行的字模数据有 64 位,经计算传输所需的时间小于 1ms,这样就能充分利用列驱动 74HC595 的锁存功能,即在它接收下一行待显示的数据,还没有锁存新数据的这段时间来显示本行的内容,这样就不需要额外加延时来增加显示屏的亮度。采用这个方法就不要再增加 LED 的列驱动器件,从而使整个硬件结构更简化,成本降低。 行信号的处理是由四十六译码器 74HC154(如图 3-2 所示)来完成译码,输出为高。由于显示屏行的组成是多个模块并联而成的,因而行驱动得功率要求比较大,而且我们进行行扫描时需要所选行为低,故加高速 CMOS-六反相器. 对称的传输延迟和转换时间 来满足要求。 列信号的处理列信号的处理主要由 8 片 8 位带锁存的串入并出移位寄存器74HC595(如图 3-3 所示)来完成。从单片机 IO 口串行输出的 64 位点阵数据随着移位时钟的作用逐位移动到对应位置,在接收到锁存信号后,将数据并行输出至 LED 的列线,最后在行驱动信号作用下点亮一行 LED 象素。 9 图 3-2 74HC154 图 3-3 SN74HC595N SN74HC595N 由一个 8 位串入并出的移位寄存器和一个 8 位输出锁存器构成,其各个引脚功能:SER;串行数据的输入端,SRCLR;移位寄存器的移位时钟脉冲,在其上升沿发生位移,并将 ER 的下一个数据输入最低位。 RCLK;输出锁存器的输入信号,其上升沿将移位寄存器的输出信号输入到输出锁存 器。 104 系统的软件设计系统的软件设计4.1 程序设计程序设计本系统的软件部分主要包括主程序、点阵字模信息提取程序、LED 各显示程序、串行通信程序以及 PC 机客户程序等。主程序流程图(如图 4.1 所示,主程序流程图) 11开始设堆栈设置 6 种显示方式键盘扫描显示显示清零设置汉字代码行列扫描图 4-1 程序设计流程图4.2 字模提取字模提取字模提取是指把我们要的字在点阵中显示出来所用到的程序代码,也就是字的代码。点阵字模信息提取如图 4-2 所示。图 4-2 字模提取软件4.3 LED 显示方式显示方式LED 显示屏的显示方式有静止、上下滚屏、左右滚屏等多种方式。其中上下滚屏显示程序类似,左右滚屏显示程序类似,其他多花样的显示方式程序都是在此基础上进行改动而来的。因此主要给出静态显示、上移显示、左移显示这三种典型方式的程 12序流程图。4.4 串行通信方式串行通信方式每当向 PC 机客户程序里输入新显示内容并发送给单片机时,单片机就产生串行中断,接受待显示信息的机内码,然后再利用点阵字模信息提取程序得到点阵数据送到显示屏。5 系统功能测试系统功能测试5.1 测试工具测试工具测试工具品种繁多,方法各异,不同领域有不同应用。该系统所选测试工具:L285A+型台式数字万用表、直流稳压电源、戴尔 PC、STC单片机编程器等5.2 键盘键盘键盘是用户敲入指令的窗口,本系统的键盘主要是应用于改变显示方式。有 6 种不同的汉字显示方式: 1 表示:从右向左移。2 表示:从左向右移。3 表示:从上向下逐步显示。4 表示:从下向上逐步显示。5 表示:从上向下移。6 表示:从下向上移。5.3 单元模块电路单元模块电路本设计的模块电路有 LED 点阵和与控制电路通信。1)LED 点阵测试:用外接电源实现所有点阵全部点亮,显示部分点阵块无法完全点亮,更换点阵块与检查线路的短路与断路、虚焊等后显示基本正常(因为做得是双面板,里面的线路没有改变,所以感觉还是有虚焊等问题使得有个别发光管二极管还是不亮)。 132)与控制电路通信测试:利用提前做好的单片机编程器,向 STC89C52 单片机烧入程序,单片机接收并校验,接收成功后把 STC89C52 单片机安装到已做好的控制电路中,然后接上电源开始测试。可能是由于电流不够,使得 LED 点阵不清晰,检查后在电路中行列加入 16 个 8050PNP 三极管用以放大电流,来解决电流不足问题,结果测试成功,但 LED 点阵在显示字时有闪烁效果。5.4 系统整体功能系统整体功能系统的整体功能是指是否能满足设计要求所说的功能,例如:是否可以显示字、移动方向、方式等。各单元模块整合后,系统上电,显示屏上显示预存信息,通过机上的键盘可以成功控制显示,包括预存信息切换显示、上下滚屏、左右滚屏等 6 种各种花样显示方式、能成功地显示出字母、数字、汉字、各种字符等信息,通过按键可以控制显示方式等,而且断电后,重新开机,预存的显示信息与时间均可掉电保护。通过 PC 机的客户程序发送需更新信息数据到机上,可以成功地更新显示内容。 经过多次测试,整个系统工作稳定可靠,能够实现上述所有功能。 总总 结结该 LED 点阵电子显示屏系统不仅完成了题目要求的基本功能和发挥功能。本系统以 STC89c52 单片机为核心部件,74HC595 与 74HC154 等多个芯片的功能支持下,最终完成了毕业设计题目中要求的各项任务,包括可以控制 16*64LED 点阵显示屏实现信息的左滚屏、右滚屏、上滚屏、下滚屏等。在设计过程中,力求硬件线路简单、方便、快捷,充分发挥软件在编程方面灵活的特点,来满足系统设计的要求。在设计的过程中,我体会到我在程序编写上的弱点,很多很好的想法实现起来都很困难,例如:在 16*64 点阵中加入时钟,可以显示年月日、时间;加入温度传感器改为智能温度仪,把烧程序的电路和点阵控制电路融合在一起,即省材料,又方便,而且实现电脑与点阵只用数据线连接即可传输数据等等。虽然想法很多,但实现起来对我来说还是有很大的挑战性 通过这次的毕业设计,拓宽了我的知识面,增加感性认识,把所学知识条理化系统化,学到从书本学不到的专业知识,并获得相关专业国内、外科技发展现状的最新信息,激发学生向实践学习和探索的积极性,为今后的学习和将从事的技术工作打下坚实的基础,我深深的体会到了科技知识的重要性,提高了自己解决问题的能力。 通过老师在现场的讲授、座谈、讨论、分析、作业等多种形式,一方面来巩固在书本上学到的理论知识,另一方面,可获得在书本上不易了解和不易学到的知识,使我在实践中得到提高和锻炼。 14致致 谢谢本设计是在姚广芹老师的悉心指导下完成的,在论文设计过程中,姚老师不但给予了我全面的技术指导,还给了我一些相关的资料,花费了大量的心血,使我对于单片机系统有了深刻的认识,并最终得以完成毕业论文,对此,我表示衷心的感谢.姚老师严谨的治学态度、丰富渊博的知识、敏锐的学术思维、精益求精的工作态度、积极进取的科研精神以及诲人不倦的师者风范是我毕生的学习楷模。在三年的大学生涯里,还得到众多老师的关心支持和帮助,在此,谨向老师们致以衷心的感谢和崇高的敬意! 感谢父母对我二十多年来辛勤的养育,并让我获取了一定的知识并最终走向社会,为社会贡献自己! 本毕业设计在设计过程中,还得到不少同学朋友的大力支持和帮助,亦在此表示诚挚的谢意!最后,我要向在百忙之中抽时间对本文进行审阅、评议和参加本人论文答辩的各位老师表示感谢! 15参考文献参考文献1 张毅刚.MCS-51 单片机应用设计【M】.哈尔滨;哈尔滨工业大学出版社,20032 何为民.低功耗单片微机系统设计【M】. 北京:北京航空航天大学出版社,19943 何立民.单片机应用技术选编【M】.北京;北京:航空航天大学出版社,19964 李广弟.单片机基础.【M】北京:北京:航空航天大学出版社,20015 王幸之.单片机应用系统抗干扰技术【M】.北京:北京航空航天大学出版社,20006 杨振江.智能仪器与数据采集系统中的新器件及应用【M】.西安电子科技大学出版社,20017蔡美琴.MCS-51 系列单片机系统及其应用【M】.高等教育出版社,20028张毅刚.单片机原理及应用【M】.北京.高等教育出版社,20089李华.MCS-51 系列单片机实用接口技术【M】.北京;北京航空航天大学出版社,199310涂时亮.单片机软件设计技术【M】.重庆;科学文献出版社重庆分社,198711徐君毅等.单片微型计算机原理及应用【M】.上海;上海科学技术出版社,198812陈粤初等.单片机应用系统设计与实践【M】.北京;北京航空航天大学出版社,199113王毅.单片机器件应用手册【M】.北京;人民邮电出版社,1995 1614 Intel. Microcontroller Handbook【M】,198815 Intel. Software Handbook【M】,1984附附 录录附录附录 1 1 控制电路电路图控制电路电路图 17P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78RST9P3.0/RxD10P3.1/TxD11P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/WR16P3.7/RD17XTAL218XTAL119VSS20P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P2.7/A1528PSEN29ALE30EA/VPP31P0.7/AD732P0.6/AD633P0.5/AD534P0.4/AD435P0.3/AD336P0.2/AD237P0.1/AD138P0.0/AD039VCC40U1STC89C5233pFC2Cap33pFC1Cap1KR2Res212Y1XTALS1S2S3S4S5100pFC3CapVCCVCCVCCOE13RCLK12SER14SRCLR10SRCLK11QA15QB1QC2QD3QE4QF5QG6QH7QH9VCC16GND8U2 SN74HC595N1KR1DS1LED1Q1PNPQ2PNPVCCDS2LED1VCCDS3LED1DS4LED11KR5DS5LED1DS6LED1OE13RCLK12SER14SRCLR10SRCLK11QA15QB1QC2QD3QE4QF5QG6QH7QH9VCC16GND8U3 SN74HC595NOE13RCLK12SER14SRCLR10SRCLK11QA15QB1QC2QD3QE4QF5QG6QH7QH9VCC16GND8U6 SN74HC595NDS7LED1DS8LED11KR91KR10VCCda0STSHY01Y12Y23Y34Y45Y56Y67Y78Y89Y910Y1011GND12Y1113Y1214Y1315Y1416Y1517OE118OE219D20C21B22A23VCC24U4 74HC15412U5ASN74HC04D34U5BSN74HC04D56U5CSN74HC04DVCCAA0AA1AA2AA3K0K1K16LED一一一一一一一一一一07一一一一一一一一一1KR31KR41KR61KR71KR8VCCVCC附录附录 2 程序程序#include#define uchar unsigned char#define uint unsigned intuchar speed=15;sbit ST=P35;sbit SH=P36;sbit DATA=P37; - 18 -sbit EN=P24;sbit K1=P10;sbit K2=P11;sbit K3=P12;sbit K4=P13;sbit K5=P14;sbit K6=P15;bit LeftFlag;bit RightFlag;bit UpFlag;bit DownFlag;bit ZJ1Flag;bit ZJ2Flag=1;void delay(uchar ms)uchar y;for(;ms0;ms-)for(y=120;y0;y-);uchar code hanzi32=/*琴 CB4FA */0 x04,0 x08,0 x7E,0 xFC,0 x08,0 x20,0 x3E,0 xF8,0 x08,0 x20,0 x7E,0 xFC,0 x01,0 x00,0 x02,0 x80,0 x0C,0 x60,0 x32,0 x1E,0 xC1,0 x04,0 x0F,0 xE0,0 x00,0 x20,0 x00,0 x40,0 x00,0 x80,0 x01,0 x00,/*岛 CB4BA */0 x01,0 x00,0 x02,0 x20,0 x0F,0 xF0,0 x08,0 x20,0 x0A,0 x20,0 x09,0 x20,0 x08,0 x60,0 x08,0 x04,0 x0F,0 xFE,0 x08,0 x04,0 x02,0 x04,0 x22,0 x24,0 x22,0 x24,0 x3F,0 xE4,0 x20,0 x34,0 x00,0 x08,/*学 CD1A7 */0 x01,0 x08,0 x10,0 x8C,0 x0C,0 xC8,0 x08,0 x90,0 x7F,0 xFE,0 x40,0 x04,0 x8F,0 xE8,0 x00,0 x40,0 x00,0 x80,0 x7F,0 xFE,0 x00,0 x80,0 x00,0 x80,0 x00,0 x80,0 x00,0 x80,0 x02,0 x80,0 x01,0 x00,/*院 CD4BA */0 x00,0 x80,0 xF8,0 x40,0 x8F,0 xFE,0 x94,0 x04,0 xA0,0 x00,0 xA3,0 xF8,0 x90,0 x00,0 x88,0 x00,0 x8F,0 xFE,0 xA9,0 x20,0 x91,0 x20,0 x81,0 x20,0 x82,0 x22,0 x82,0 x22,0 x84,0 x22,0 x88,0 x1E,/*欢 CBBB6 */0 x00,0 x80,0 x00,0 x80,0 xFC,0 x80,0 x05,0 xFE,0 x85,0 x04,0 x4A,0 x48,0 x28,0 x40,0 x10,0 x40,0 x18,0 x40,0 x18,0 x60,0 x24,0 xA0,0 x24,0 x90,0 x41,0 x18,0 x86,0 x0E,0 x38,0 x04,0 x00,0 x00,/*迎 CD3AD */0 x40,0 x00,0 x21,0 x80,0 x36,0 x7C,0 x24,0 x44,0 x04,0 x44,0 x04,0 x44,0 xE4,0 x44,0 x24,0 x44,0 x25,0 x44,0 x26,0 x54,0 x24,0 x48,0 x20,0 x40,0 x20,0 x40,0 x50,0 x00,0 x8F,0 xFE,0 x00,0 x00,/*您 CC4FA */0 x08,0 x00,0 x09,0 x00,0 x11,0 xFE,0 x12,0 x04,0 x34,0 x40,0 x32,0 x50,0 x52,0 x48,0 x94,0 x44,0 x11,0 x44,0 x10,0 x80,0 x00,0 x00,0 x29,0 x04,0 x28,0 x92,0 x68,0 x12,0 x07,0 xF0,0 x00,0 x00,/!0 x00,0 x00,0 x01,0 x80,0 x03,0 xC0,0 x03,0 xC0,0 x03,0 xC0,0 x03,0 xC0,0 x03,0 xC0,0 x01,0 x80,0 x01,0 x80,0 x01,0 x80,0 x00,0 x00,0 x01,0 x80,0 x03,0 xC0,0 x01,0 x80,0 x00,0 x00,0 x00,0 x00, - 19 -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 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 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,;void SendByte(uchar a)uchar byte,i;byte=a;for(i=0;i8;i+)SH=0;if(byte&0X80)DATA=1;elseDATA=0;SH=1;byte=1;void LeftDisplay(void)uchar i,j,scan,k;for(i=0;i6;i+)if(LeftFlag=1)for(k=0;kspeed;k+)scan=0;if(LeftFlag=1)for(j=0;j31;j+=2)ST=0;SendByte(hanzii+3j+1);SendByte(hanzii+3j);SendByte(hanzii+2j+1);SendByte(hanzii+2j);SendByte(hanzii+1j+1);SendByte(hanzii+1j);SendByte(hanziij+1);SendByte(hanziij);ST=1; EN=0;P2=scan;delay(5);EN=1;scan+;elsebreak;for(k=0;kspeed;k+)scan=0;if(LeftFlag=1)for(j=0;j31;j+=2)ST=0;SendByte(hanzii+4j);SendByte(hanzii+3j+1); - 20 -SendByte(hanzii+3j);SendByte(hanzii+2j+1);SendByte(hanzii+2j);SendByte(hanzii+1j+1);SendByte(hanzii+1j);SendByte(hanziij+1);ST=1;EN=0;P2=scan;delay(5);EN=1;scan+;elsebreak;elsebreak;void RightDisplay(void)uchar i,j,k,scan;for(i=0;i6;i+)if(RightFlag=1)for(k=0;kspeed;k+)scan=0;if(RightFlag=1)for(j=0;j31;j+=2)ST=0;SendByte(hanziij+1);SendByte(hanziij);SendByte(hanzii+1j+1);SendByte(hanzii+1j);SendByte(hanzii+2j+1);SendByte(hanzii+2j);SendByte(hanzii+3j+1);SendByte(hanzii+3j);ST=1;EN=0;P2=scan;delay(5);EN=1;scan+;elsebreak;for(k=0;kspeed;k+)scan=0;if(RightFlag=1)for(j=0;j31;j+=2) - 21 -ST=0;SendByte(hanziij);SendByte(hanzii+1j+1);SendByte(hanzii+1j);SendByte(hanzii+2j+1);SendByte(hanzii+2j);SendByte(hanzii+3j+1);SendByte(hanzii+3j);SendByte(hanzii+4j+1);ST=1;EN=0;P2=scan;delay(5);EN=1;scan+;elsebreak;elsebreak;void UpDisplay(void)uchar i,j,k,scan;char temp=0;for(i=0;i6;)if(UpFlag=1)for(k=0;kspeed;k+)scan=15-temp;if(UpFlag=1)for(j=0;j2*temp+1;j+=2)ST=0;SendByte(hanzii+3j+1);SendByte(hanzii+3j);SendByte(hanzii+2j+1);SendByte(hanzii+2j);SendByte(hanzii+1j+1);SendByte(hanzii+1j);SendByte(hanziij+1);SendByte(hanziij);ST=1;EN=0;P2=scan;delay(5);EN=1;scan+;else - 22 -break;temp+;if(temp=16)temp=0;i+=4;elsebreak;void DownDisplay(void) uchar i,j,k,scan;char temp=30;for(i=0;i6;)if(DownFlag=1)for(k=0;kspeed;k+)scan=0;if(DownFlag=1)for(j=temp;j31;j+=2)j=30ST=0;SendByte(hanzii+3j+1);SendByte(hanzii+3j);SendByte(hanzii+2j+1);SendByte(hanzii+2j);SendByte(hanzii+1j+1);SendByte(hanzii+1j);SendByte(hanziij+1);SendByte(hanziij);ST=1;EN=0;P2=scan;delay(5);EN=1;scan+;elsebreak;temp-=2;if(temp=-2)temp=30;i+=4;elsebreak;void ZJDisplay1(void)uchar i,j,k,scan,temp;for(i=0;i6;)if(ZJ1Flag=1) - 23 -for(k=0;kspeed;k+)scan=0;if(ZJ1Flag=1)for(j=0;j2*temp+1;j+=2)ST=0;SendByte(hanzii+3j+1);SendByte(hanzii+3j);SendByte(hanzii+2j+1);SendByte(hanzii+2j);SendByte(hanzii+1j+1);SendByte(hanzii+1j);SendByte(hanziij+1);SendByte(hanziij);ST=1;EN=0;P2=scan;delay(5);EN=1;scan+;elsebreak;temp+;if(temp=16)temp=0;i+=4;elsebreak;void ZJDisplay2(void)uchar i,j,k,scan,z=0;char temp=30;for(i=0;i6;)if(ZJ2Flag=1)for(k=0;kspeed;k+)scan=15-z;/z 作译码控制if(ZJ2Flag=1)for(j=temp;j31;j+=2)ST=0;SendByte(hanzii+3j+1);SendByte(hanzii+3j);SendByte(hanzii+2j+1);SendByte(hanzii+2j);SendByte(hanzii+1j+1);SendByte(hanzii+1j);SendByte(hanziij+1); - 24 -SendByte(hanziij);ST=1;EN=0;P2=scan;delay(5);EN=1;scan+;elsebreak;temp-=2;z+;if(temp=-2)temp=30;i+=4;z=0;elsebreak;void ClearFlag(void)LeftFlag=0;RightFlag=0;UpFlag=0;DownFlag=0;ZJ1Flag=0;ZJ2Flag=0;void KeyScan(void)if(K1=0)delay(10);if(K1=0)while(!K1);ClearFlag();LeftFlag=1;if(K2=0)delay(10);if(K2=0)while(!K2);ClearFlag();RightFlag=1;if(K3=0)delay(10);if(K3=0)while(!K3);ClearFlag();UpFlag=1;if(K4=0)delay(10);if(K4=0)while(!K4);ClearFlag();DownFlag=1; - 25 -if(K5=0)delay(10);if(K5=0)while(!K5);ClearFlag();ZJ1Flag=1;if(K6=0)delay(10);if(K6=0)while(!K6);ClearFlag();ZJ2Flag=1;void main(void)TMOD=0X01;TH0=(65535-1000)/256;TL0=(65535-1000)%256;ET0=1;EA=1;TR0=1;while(1)if(LeftFlag=1)LeftDisplay();if(RightFlag=1)RightDisplay();if(UpFlag=1)UpDisplay();if(DownFlag=1)DownDisplay();if(ZJ1Flag=1)ZJDisplay1();if(ZJ2Flag=1)ZJDisplay2();void timer0(void) interrupt 1TH0=(65535-1000)/256;TL0=(65535-1000)%256;KeyScan();
展开阅读全文