毕业设计(论文)-基于单片机的LED电子屏设计.doc_第1页
毕业设计(论文)-基于单片机的LED电子屏设计.doc_第2页
毕业设计(论文)-基于单片机的LED电子屏设计.doc_第3页
毕业设计(论文)-基于单片机的LED电子屏设计.doc_第4页
毕业设计(论文)-基于单片机的LED电子屏设计.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2012 届毕业设计说明书 基于单片机的 led 电子屏 系 、 部: 学生姓名: 指导教师: 职称 专 业: 班 级: 完成时间: 摘摘 要要 本设计使用 mcs-51 系列单片机 at89c51 设计点阵电子显示屏,并使用一 些辅助电路,用 16*16led 点阵显示屏为例进行显示,在点阵电子显示屏上显 示字符等信息。该系统主要依靠手动和中断方式进行控制显示屏。可以在点阵 电子显示屏上显示字母、数字和一些符号,利用程序的设计可以使点阵屏上进 行动态的显示,使其输出信息。本设计是利用程序设计在点阵电子显示屏上动 态的显示汉字。利用电子技术对外部器件的扩展,使之拥有更高的点阵数目可 以进一步显示汉字等一些复杂的字符,使输出的信息可以更加清晰,显示更加 明了。 关键词关键词:单片机,led 点阵,程序设计,动态显示 abstract the design of mcs-51series single-chip at89c51design of led dot matrix display, and the use of some auxiliary circuits, with 16 *16led dot matrix display screen for display, on the dot matrix character information displayed on an electronic display. the system mainly rely on manual and interrupt control display. in the electronic dot matrix display letters, numbers and symbols, using a program to design can make the screen dynamic display, making the output information. this design is the use of program design in electronic dot matrix screen dynamic display of chinese characters. the use of electronic technology to the external device extended, so that it has a high number of dots can further display chinese characters and some other complex characters, so that the output of the information can be more clear, shows more clear. key words: scm, led dot matrix, program design, dynamic display 目目 录录 1 绪 论3 3 1.1 选题背景及国内外研究现状 4 1.1.1 选题背景 4 1.1.2 国内外研究现状4 1.2 设计目标及采取的方案 5 1.2.1 本设计的目标5 1.2.2 本设计采取的方案6 2 方案的实现 7 7 2.1 总体设计 7 3 系统硬件设计 9 9 3.1 at89c51 芯片的介绍9 3.2 列驱动电路11 3.3 行驱动电路12 3.4 pnp 三极管14 3.5 点阵式汉字 led 显示屏设计15 3.5.1、1616 点阵 led 原理及应用15 3.5.2、led 点阵的显示文字图形原理 16 3.5.3、 点阵的移动19 3.6 整体电路图21 3.6.1 led 显示屏工作原理介绍23 4 系统软件设计2424 4.1 程序设计 24 5 系统调试 2626 5.1 实物连接 26 5.2 系统硬件部分调试方法 26 5.3 短路与虚焊检测 27 5.4 调试结果分析 27 结束语 2828 致 谢 2929 参考文献 3030 附 录 3131 1 1 绪绪 论论 1.11.1 选题背景及国内外研究现状选题背景及国内外研究现状 1.1.1 选题背景 led 显示屏是八十年代后期在全球迅速发展起来的新型信息显示媒体,显 示屏由几万几十万个半导体发光二极管像素点均匀排列组成。利用不同的 材料可以制造不同色彩的 led 像素点。目前应用最广的是红色、绿色、黄色。 而蓝色和纯绿色 led 的开发已经达到了实用阶段。led 显示屏可以显示变化的 数字、文字、图形图像;不仅可以用于室内环境还可以用于室外环境,具有投 影仪、电视墙、液晶显示屏无法比拟的优点1。 在短短的十来年中,led 点阵显示屏就以亮度高、工作电压低、功耗小、 小型化、寿命长、耐冲击和性能稳定的优点迅速成长为平板显示的主流产品, 在信息显示领域得到了广泛的应用。led 的发展前景极为广阔,目前正朝着更 高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性、可靠性、全色 化方向发展。led 显示屏的应用涉及社会经济的许多领域,主要包括:(1)证 券交易、金融信息显示。 (2)机场航班动态信息显示。 (3)港口、车站旅客引 导信息显示。 (4)体育场馆信息显示。 (5)道路交通信息显示。 (6)调度指挥 中心信息显示。 (7)邮政、电信、商场购物中心等服务领域的业务宣传及信息 显示。 (8)广告媒体新产品等。 1.1.2 国内外研究现状 (1)我国 led 产业发展现状 我国的 led 显示屏产业经过几年的发展,基本形成了一批具有一定规模的 骨干企业。据不完全统计,至 1998 年底,年度销售总额在 1000 万元以上的企 业有 20 多家,其销售总额达 6 亿元左右,占行业市场总额的 85%以上。全国从 事 led 显示屏的各类企业有 100 余家,从业人员近 6000 人,行业年度销售总额 近 8 亿元人民币,1996 年、1997 年的增长速度均保持 40%左右,1998 年略有回 落。在国内市场上,国产 led 显示屏的市场占有率近 100%,国外同类产品基本 没有市场,四十三届世乒赛主会场天津体育中心、京九铁路、北京西客站、首 都机场、浦东机场等,均由国内代表企业中标。技术水平相对领先,我国 led 显 示屏产业在规模发展的同时,产品技术推陈出新,一直保持比较先进的水平。 90 年代初即具备了成熟的 16 级灰度 256 色视频控制技术及无线遥控等国际先 进水平技术,近年在全彩色 led 显示屏、256 级灰度视频控制技术、集群无经 线控制、多级群控技术等方面均有国内先进、达到国际水平的技术和产品出现; led 显示屏控制专用大规模集成电路也已由国内企业开发生产并得到应用。led 显示屏产业培养形成了一批 led 显示屏科技队伍,在全国 led 显示屏行业的从 业人数 6000 人中,科技人员有 2800 多人,将近 50%。led 显示屏产业正成为我 国电子信息产业的重要组成部分,也是平板显示领域唯一立足国内形成的民族 高科技产业。 (2)led 显示屏的发展趋势 现代信息社会中,作为人一机信息视觉传播媒体的显示产品和技术得到迅 速发展,进入二十一世纪的显示技术将是平板显示的时代,led 显示屏作为平 板显示的主导产品之一无疑会有更大的发展,并有可能成为二十一世纪平板显 示的代表性主流产品。高亮度、全彩化蓝色及纯绿色 led 产品自出现以来,成 本逐年快速降低,已具备成熟的商业化条件。基础材料的产业化。使 led 全彩 色显示产品成本下降,应用加快。led 产品性能的提高,使全彩色显示屏的亮 度、色彩、白平衡均达到比较理想的效果,完全可以满足户外全天候的环境条 件要求,同时,由于全彩色显示屏价格性能比的优势,预计在未来几年的发展 中,全彩色 led 显示屏在户外广告媒体中会越来越多地代替传统的灯箱、霓红 灯、磁翻板等产品,体育场馆的显示方面全彩色 led 屏更会成为主流产品。全 彩色 led 显示屏的广泛应用会是 led 显示屏产业发展的一个新的增长点。 未来 led 显示屏会向着标准化、规范化,产品结构多样化的方向发展2。 (3)选题意义 该设计课题使我们能够掌握 led 显示屏的基本显示原理和设计方法,对 led 显示屏这个行业有了较为深刻的了解和认识。并且对大学期间所学习的一 些理论进行了实践,使我们对所学过的理论知识有了新的认识。并且通过该设 计课题掌握了 51 单片机的的软硬件开发工具的使用方法,为以后从事相关行业 的工作积累了实际工作经验。目前我国的信息行业发展迅速,作为主要平面显 示媒介的 led 显示屏的作用也越练越广泛,相关的从业人员也会越来越紧缺。 但同时应该清楚的认识到我国的 led 技术虽然发展迅速但和世界先进水平还有 一定的差距。因此此课题不论是对自己的就业还是对我国 led 显示技术的发展 都有非常现实与积极的意义 1.21.2 设计目标及采取的方案设计目标及采取的方案 1.2.1 本设计的目标 毕业设计是学生完成本专业教学计划达到培养目标的重要的教学环节,是 教学计划中综合性最强的实践性教学环节,它对于培养学生正确的思想和工作 作风,提高学生综合运用专业知识分析和解决实际问题的能力,达到工程技术 人员所必须具备的基本素质等方面具有重要的意义。 本设计的理论基础是单片机技术基础,模拟和数子电路。比如 at89c51 芯 片的一些工作原理是在 mcs51 的基础上通过改进完成的。三极管和 74ls164 74hc595 的工作原理也分别在模拟和数子电路里介绍过。 通过本设计不仅把以前学过的知识重新温习,而且在查阅课外资料时还有 好多芯片都是以学过的芯片为基础,并且在其基础上改进和完善的。通过这次 毕业设计使我在学校学习的理论知识和实际应用有机地结合起来,同时也能培 养我独立思考、勇于创新的科学态度和钻研精神,为我将要踏上工作岗位做一 次提前的锻炼。 1.2.2 本设计采取的方案 1) 利用单片机控制技术控制 led 的显示,再结合单片机的程序作线路布 置,即硬件设计。 2) 行列电路设计,分析电路图确定整个系统大概的规模。 3) 进行系统分析,通过系统分析,确定该系统该具有那些功能,有那些 模块,各个模块之间是怎样联系的,以及怎样组合的。 4) 确定所需的元器件,然后通过电路图进行连接。 5) 集合程序调试,调试整个的系统模块的功能,看各个功能是否能正常 运行,并找出程序中的错误,改正这些错误。 6) 最终能在 led 电路板上显示所要的图形或汉字。 2 2 方案的实现方案的实现 2.12.1 总体设计总体设计 从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字 的各个点所在的位置相对应的 led 器件发光,就可以得到我们想要的显示结果, 这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。1616 的点阵共 有 256 个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩 展端口,按 8 位的锁存器来计算,1616 的点阵需要 256/8=32 个锁存器。这 个数字很庞大,因为我们仅仅是 1616 的点阵,在实际应用中的显示屏往往要 大得多,这样在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中 的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。 动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现 多行(比如 16 行)的同名列共用一套驱动器。具体就 1616 的点阵来说,把 所有同 1 行的发光管的阳极连在一起,把所有同 1 列的发光管的阴极连在一起 (共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第 1 行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第 2 行使其燃亮相同的时间,然后熄灭;以此类推,第 16 行之后,又重新燃亮第 1 行,反复轮回。当这样轮回的速度足够快(每秒 24 次以上),由于人眼的视 觉暂留现象,就能够看到显示屏上稳定的图形了。 采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个 驱动器。显示数据通常存储在单片机的存储器中,按 8 位一个字节的形式顺序 排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在 一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并列方 式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大, 相应的硬件数目多。当列数很多时,并列传输的方案是不可取的。 采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传 往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据 按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后, 这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成 列数据准备(传输)和列数据显示两部分。对于串行传输方式来说,列数据准 备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了, 以致影响到 led 的亮度。 解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处 理的方法。即在显示本行各列数据的同时,传送下一列数据。为了达到重叠处 理的目的,列数据的显示就需要具有所存功能。经过上述分析,就可以归纳出 列驱动器电路应具有的功能。对于列数据准备来说,它应能实现串入并处的移 位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好 的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数 据,而不会影响本行的显示。图 1 为显示屏电路实现的结构框图。 图 1 显示屏电路框图 单 片 机 列驱动器 led 显示点阵 电源 行 驱 动 器 3 3 系统硬件设计系统硬件设计 3.13.1 at89c51at89c51 芯片的介绍芯片的介绍 at89c51 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 图片见下图。 图 2 89c51 管脚图 vcc:供电电压。 gnd:接地。 p0 口:p0 口为一个 8 位漏级开路双向 i/o 口,每脚可吸收 8ttl 门电流。当 p1 口的管脚第一次写 1 时,被定义为高阻输入。p0 能够用于外部程序数据存储器, 它可以被定义为数据/地址的第八位。在 fiash 编程时,p0 口作为原码输入口, 当 fiash 进行校验时,p0 输出原码,此时 p0 外部必须被拉高。 p1 口:p1 口是一个内部提供上拉电阻的 8 位双向 i/o 口,p1 口缓冲器能接收 输出 4ttl 门电流。p1 口管脚写入 1 后,被内部上拉为高,可用作输入,p1 口 被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 flash 编程和校验时,p1 口作为第八位地址接收。 p2 口:p2 口为一个内部上拉电阻的 8 位双向 i/o 口,p2 口缓冲器可接收,输 出 4 个 ttl 门电流,当 p2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为 输入。并因此作为输入时,p2 口的管脚被外部拉低,将输出电流。这是由于内 部上拉的缘故。p2 口当用于外部程序存储器或 16 位地址外部数据存储器进行 存取时,p2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势, 当对外部八位地址数据存储器进行读写时,p2 口输出其特殊功能寄存器的内容。 p2 口在 flash 编程和校验时接收高八位地址信号和控制信号。 p3 口:p3 口管脚是 8 个带内部上拉电阻的双向 i/o 口,可接收输出 4 个 ttl 门电流。当 p3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输 入,由于外部下拉为低电平,p3 口将输出电流(ill)这是由于上拉的缘故。 p3 口也可作为 at89c51 的一些特殊功能口,如下表所示: 口管脚 备选功能 p3.0 rxd(串行输入口) p3.1 txd(串行输出口) p3.2 /int0(外部中断 0) p3.3 /int1(外部中断 1) p3.4 t0(记时器 0 外部输入) p3.5 t1(记时器 1 外部输入) p3.6 /wr(外部数据存储器写选通) p3.7 /rd(外部数据存储器读选通) p3 口同时为闪烁编程和编程校验接收一些控制信号。 rst:复位输入。当振荡器复位器件时,要保持 rst 脚两个机器周期的高电平 时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的 地位字节。在 flash 编程期间,此引脚用于输入编程脉冲。在平时,ale 端 以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作 对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储 器时,将跳过一个 ale 脉冲。如想禁止 ale 的输出可在 sfr8eh 地址上置 0。此时, ale 只有在执行 movx,movc 指令是 ale 才起作用。另外,该 引脚被略微拉高。如果微处理器在外部执行状态 ale 禁止,置位无效。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机 器周期两次/psen 有效。但在访问外部数据存储器时,这两次有效的/psen 信 号将不出现。 /ea/vpp:当/ea 保持低电平时,则在此期间外部程序存储器(0000h-ffffh) , 不管是否有内部程序存储器。注意加密方式 1 时,/ea 将内部锁定为 reset; 当/ea 端保持高电平时,此间内部程序存储器。在 flash 编程期间,此引脚也 用于施加 12v 编程电源(vpp) 。 xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。 xtal2:来自反向振荡器的输出 3.23.2 列驱动电路列驱动电路 列驱动电路由集成电路 74hc595 构成,它具有一个 8 位串行输入/输出或者 并行输出的移位寄存器和一个 8 位输出锁存器的结构,而且移位寄存器和输出 锁存器的控制是各自独立的,可以实现在显示本行各列数据的同时,传送下一 行的列数据,即达到重叠处理的目的。 74hc595 的管脚及内部结构形式如图 3 所示。它的输入侧有 8 个串行移位寄 存器,每个移位寄存器的输出都连接一个输出锁存器。引脚 ser 是串行数据的 输入端。引脚 srclk 输入移位寄存器的移位时钟脉冲,在其上升沿发生移位, 并将 ser 的下一个数据打入最低位。移位后的各位信号出现在各移位寄存器的 输出端,也就是输出锁存器的输入端。rclk 是输出锁存器的打入信号,其上升 沿将移位寄存器的输出打入到输出锁存器。引脚是输出三态门的开放信号,oe 只有当其为低时锁存器的输出才开放,否则为高阻态。信号是移位寄存srclr 器的清零输入端,当其为低时移位寄存器的输出全部为 0,由于 srclk 和 rclk 两个信号是互相独立的,所以能够做到输入串行移位与输出锁存互不干扰。芯 片的输出端为 qaqh,最高位 qh 可作为多片 74hc595 级连应用时,向上一级 的级连输出。但因 qh 受输出锁存器打入控制,所以还从输出锁存器前引出了 qh,作为与移位寄存器完全同步的级连输出。移位寄存和输出锁存的时序波 形如图 4 所示: 3.33.3 行驱动电路行驱动电路 72ls164 为 8 位移位寄存器,其主要电特性的典型值如下: 图 4 移位寄存和输出锁存的时序波形图 图 3 74hc595 管脚图和内部逻辑图 54/74164 185mw 54/74ls164 80mw 当清除端(clear)为低电平时,输出端(qaqh)均为低电平。 串行数据输 入端(a,b)可控制数据。当 a、b 任意一个为 低电平,则禁止新数据输入, 在时钟端(clock)脉冲上升沿作用下 q0 为低电平。当 a、b 有一个为高电平, 则另一个就允许输入数据,并在 clock 上升沿作用下决定 q0 的状态。 引脚功能: clock :时钟输入端 clear: 同步清除输入端(低电平有效) a,b :串行数据输入端 qaqh: 输出端 图 5 74ls164 封装图 图 6 74ls164 的内部逻辑图 极限值 电源电压 7v 输入电压 5.5v 工作环境温度 54164 -55125 74164 -070 储存温度 -65150 图 7 真值表 h高电平 l低电平 x任意电平 低到高电平跳变 qa0,qb0,qh0 规定的稳态条件建立前的电平 qan,qgn 时钟最近的前的电平 图 8 时序图 3.43.4 pnppnp 三极管三极管 8550 为 pnp 型三极管,内部结构如图 9 所示。发射极 e 接 5v 电源,基极 接译码信号输出端,集电极接输出驱动 led 点阵屏。当译码器端口输出为低电 平时,发射极与基极电势差为 5v基极中带负电的电子越过 pn 结扩散到发 0 v 射区。发射极产生和电子扩散方向相反的电流,由于基极电子大量扩散到发射 极集电极电子扩散到基极中形成了电流。当译码器端口输出高电平时发射极 c i 与基极之间的电势差为 5v,由于发射极与基极之间电势差的减少基 0 v b v 极电子向发射极扩散的电子数量减少故集电极电流也随之减少。故 8550 在驱动 电路中起到提供驱动电流和选通开关的作用。 pnp 5v led e i 0 v 0 v 图图 9 9 内部结构图内部结构图 3.53.5 点阵式汉字点阵式汉字 ledled 显示屏设计显示屏设计 3.5.1、1616 点阵 led 原理及应用 设计时必须掌握点阵工作原理方能进行更深层设计。16x16led 点阵其实就 是 4 块 8x8 点阵 led 级联而成的,因此特给出 88 点阵 led 的工作原理。 图 10 为 88 点阵 led 外观及引脚图,其等效电路如图 11 所示,只要其对应 的 x、y 轴顺向偏压,即可使 led 发亮。例如如果想使左上角 led 点亮,则 y0=1,x0=0 即可。应用时限流电阻可以放在 x 轴或 y 轴。而 16x16 就是在 8x8 原理的基础上将四块 8x8 级联而成,如图 12 图 10 88 点阵 led 外观及引脚图 图 11 88 点阵 led 等效电路 图 12 四块 8x8 点阵 led 级联成 16x16 点阵 3.5.2、led 点阵的显示文字图形原理 汉字显示屏用于显示汉字、字符及图像信息,在公共汽车、银行、医院及户 外广告等地方都有广泛的应用。下面是简单的汉字显示屏的制作,由单片机控 制汉字的显示内容。为了降低成本,使用了四块 88 的 led 点阵发光管的模块, 组成了一个 1616 的 led 点阵显示屏,如图 12 所示。在这里仅做了二十五个 汉字的显示,在实际的使用中可以根据这个原理自行的扩展显示的汉字,下面 是介绍汉字显示的原理。 led 驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描 驱动电路就可以实现多行的同名列共用一套列驱动器。以 1616 点阵为例,把 所有同一行的发光管的阴极连在一起,把所有同一列的发光管的阳极连在一起 (共阴的接法) ,先送出对应第 1 列发光管亮灭的数据并锁存,然后选通第 1 列 使其燃亮一定的时间,然后熄灭;再送出第 2 列的数据并锁存,然后选通第 2 列使其燃亮相同的时间,然后熄灭;.第 16 列之后,又重新燃亮第 1 列,反 复轮回。当这样轮回的速度足够快(每秒 24 次以上) ,由于人眼的视觉暂留现 象,就能看到显示屏上稳定的图形。该方法能驱动较多的 led,控制方式较灵 活,而且节省单片机的资源。 显示数据可通过单片机的 p0,p2 口接驱动电路传输到点阵行引脚。 led 点阵显示模块进行的方法有两种: (1)水平方向(x 方向)扫描,即逐列扫描的方式(简称列扫描方式):此 时用一个 p 口输出列码决定哪一列能亮(相当于位码) ,用另一个 p 口输出行码 (列数据) ,决定该列上哪个 led 亮(相当于段码) 。能亮的列从左到右扫描完 16 列(相当于位码循环移动 16 次)即显示出一个完整的图像。 (2)竖直方向(y 方向)扫描,即逐行扫描方式(简称行扫描方式):此 时用一个 p 口输出决定哪一行能亮(相当于位码) ,另一个 p 口输出列码(行数 据,行数据为将列数据的点阵旋转 90 度的数据)决定该行上哪些 led 灯亮(相 当于段码) 。能亮的行从上向下扫描完 16 行(相当于位码循环移位 16 次)即显 示一帧完整的图像。 本设计应用的是第一种的扫描方法,即水平方向(x 方向)扫描。 每一个字由 16 行 16 列的点阵形成显示,即每个字均由 256 个点阵来表示, 我们可以把每一个点理解为一个像素。一般我们使用的 1616 的点阵宋体字库, 即所谓的 1616,是每一个汉字在纵横各 16 点的区域内显示的。汉字库从该 位置起的 32 字节信息记录了该字的 字模信息。事实上这个汉字屏不仅可以显示汉字,也可以显示在 256 像素范 围内的任何图形。 我们以水平方向(x 方向)扫描显示汉字的“杨”为例来说明其扫描原理, 每一个字由 16 行 16 列的点阵组成显示,如图下的,如果用 8 位的 at89s51 的 单片机来控制,由于单片机的总线为 8 位,一个字需要拆分成两个部分。一般 我们把它分解成上部分和下部分,上部分由 8*16 的点阵组成,下部分也由 8*16 的点阵组成。在本例中单片机首先显示的是左上角的第一列的部分,即第 0 列的 p00p07 口。方向为 p07 到 p00,显示汉字“杨”的时候,p00 到 p02 都 是灭的,p03 亮,因为行接阴极,即二进制 11110111,转换为 16 进制为 f7h, 如图 13 所示。 上半部分第一列完成之后,继续扫描下半部分的第一列,即从 p27 向 p20 方 向扫描,从上图可以看到,这一列 p2.2 亮,其余全部灭,所以代码为 11111011,16 进制为 fbh,然后单片机转向上半部的第二列,除了 p03 亮,其 他的都不亮,即为 11110111,16 进制为 f7h,这一列扫描完成之后继续进行下 半部分的扫描,除了 p20p21 亮,其他的为不亮,为二进制 11111100,即 16 进制 fch。 按照这个方法,继续进行下面的扫描,一共扫描 32 个 8 位,可以得出汉字 “杨”的扫描代码为 : f7h fbh f7h fch 37h ffh 00h 00h b7h ffh 77h feh f5h f7h bdh dbh; 9dh ech 2dh f7h b5h f9h 39h beh bdh 7fh 3fh 80h ffh ffh ffh ffh; 图 13 显示原理图 由这个原理可以看到,无论显示何种字体或图像,都可以用这种方法来分析 出它的扫描代码从而显示在屏幕上。了解汉字的显示原理之后,那如何得到汉 字的字模信息呢?现在有一些现成的汉字字模生成软件,可从网上下载汉字字 库提取程序直接提取字库,如图 14 所示的为一种字模生成软件,软件打开后输 入汉字,点击“检取”后,十六进制数据汉字代码即可以自动生成,把我们需 要的竖排数据复制到我们的程序即可。 图 14 3.5.3、 点阵的移动 以下以 1616 点阵为例介绍点阵的移动。要显示一个字符,该字符的点阵 数据可以列向(纵向)16 点组字,又可以行向(横向)16 点组字。无论哪一种 组字方法,都既可以显示字符的水平方向的移动,又可以显示竖直方向的移动。 本设计主要采用汉字的左移,所以以下只作左移显示的解释。 显示字符的左右移动 (1) 列扫描方式左移动:列向组字显示字符水平方向的移动(左滚动) 在这里有两个方法: 方法 1:延长数组法。将原来字符点阵数组的 16 个数据重复一遍延长, 点阵数组的数据个数为 32 个。每扫描一帧取 8 个数据显示,下一帧取数要在数 组中后移一个数取数。循环一遍扫 16 帧。可以假想有两块 1616 的点阵模块 (共 32 帧)水平平行排列,用一个恰好能罩住 16 列点阵的中空方框去罩这个 点阵,第 1(第 1 帧)罩住最左边数起第一列开始的 16 列,就扫描显示这 16 列;第 2 次(第 2 帧)使方框右移一列,罩住做左边数起第 2 列开始的 16 列, 就扫描显示这 16 列;这样每扫描完一帧使方框右移一列,最后 第 16 次(第 16 帧)时,罩住左边数起的第 16 列开始的 16 列,就扫描显示这 16 列。如此完成 16 帧画面的扫描显示,也就完成了整个一次移动循环扫描、 之后反复循环,即可呈现显示字符沿水平向左移动的图像,如图 15 所示。 图 15 方框图法左右移动示意图 因为是列向组字(列扫描方式,点阵数据为行码,上边为低位下面为高位) , 希望显示移动的一个字符,第 1 次扫描从行码的点阵数组中取第 116 个数据, 送行码输出口,对应于这 8 个数据,同时用列码输出口输出列码,分别控制第 116 列。扫描完前 16 个数据之后,第 2 次扫描从点阵数组中取第 318 个数据 (第 18 个数据与第 1 个数据同) ,送行码输出口,对应于这 16 个数据,同时用 列码输出口输出列码,仍分别控制扫第 116 列。第 3 次扫描从点阵数组中取第 520 个数据(第 20 个数据码与第 2 个数据码相同)扫描;如此 实现字符向左移动。 以上完成一个图形移动的方法,也可以看成是移动 16 个不同的字形。如图 2.13 所示,首先扫描第一个字型,同样是 16 行,16 次扫描,16 次显示;完成 一个字型的扫描以后,再扫描第二个字型;完成第二个字型的扫描之后,再扫 描第三个字型依此类推,即可产生该文字的左移的感觉。 假设如果原本某个汉字的字型(第一个字型) ,其编码为: 00h,10h,20h,30h,40h,50h,60h,70h,80h,90h,0a0h,0b0h,0c0h,0d0h0e0h,0f 0h; 第二个字型的编码为: 20h,30h,40h,50h,60h,70h,80h,90h,0a0h,0b0h,0c0h,0d0h0e0h,0f0h, 00h,10h 也就是把第一个字型的编码中,第 1 列显示数据,变为第 2 列显示数据;第 2 列显示数据,变成第 3 列显示数据;第 3 列显示数据,变成第 4 列显示数据; 第 4 列显示数据,变成第 5 列显示数据以此类推。 当第一个字型扫描显示完成之后,就进行这样的动作调整,以产生第二个字 型的编码。同样的,当第二个字型扫描完成之后,就进行这样的调整动作,以 产生第三个字型的编码。这个调整动作时先将 16 个编码根据序填入存储器,例 如第 1 行编码存入 20h,第二行编码存入 21h要进行左移调整时, 则先将 20h 地址的数据转移到 36h 地址,再将 21 h 地址的数据转移到 20 h 地 址,将 22 h 地址的数据转移到 21 h 地址,将 23 h 地址的数据转移到 22 h 地 址,将 24 h 地址的数据转移到 23 h 地址,将 25 h 地址的数据转移到 24 h 地 址,将 26 h 地址的数据转移到 25 h 地址,将 27 h 地址的数据转移到 26 h 地 址,将 28 h 地址的数据转移到 27h 地址 本设计主要采用以上方法实现左移,其他方法在此不再说明。 3.63.6 整体电路图整体电路图 图 16 单片机最小系统 123456 a b c d 654321 d c b a title numberrevisionsize b date:17-may-2012sheet of file:e:信信mydesign.ddbdrawn by: a 1 b 2 qa 3 qb 4 qc 5 qd 6 clk 8 clr 9 qe 10 qf 11 qg 12 qh 13 u3 74ls164 a 1 b 2 qa 3 qb 4 qc 5 qd 6 clk 8 clr 9 qe 10 qf 11 qg 12 qh 13 u4 74ls164 1 2 vcci con2 1 2 vcco con2 1 2 3 4 5 6 j2 con6 1 2 3 4 5 6 j1 con6 q8 pnp q16 pnp q15 pnp q14 pnp q7 pnp q13 pnp q12 pnp q11 pnp q3 pnp q10 pnp q9 pnp q1 pnp q2 pnp q4 pnp q5 pnp q6 pnp 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 a1 led 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 a3 led 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 a2 led 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 a4 led ser 14 srclk 11 srclr 10 rclk 12 e 13 o0 15 o1 1 o2 2 o3 3 o4 4 o5 5 o6 6 o7 7 q7 9 vcc 16 gnd 8 u2 74hc595 ser 14 srclk 11 srclr 10 rclk 12 e 13 o0 15 o1 1 o2 2 o3 3 o4 4 o5 5 o6 6 o7 7 q7 9 vcc 16 gnd 8 u1 74hc595 16 220 15 220 14 220 13 220 12 220 8 220 7 220 6 220 5 220 10 220 11 220 4 220 2 220 1 220 3 220 9 220 r9 4.7k r12 4.7k r13 4.7k r11 4.7k r14 4.7k r10 4.7k r15 4.7k r16 4.7k r8 4.7k r7 4.7k r6 4.7k r5 4.7k r4 4.7k r3 4.7k r2 4.7k r1 4.7k vcc vcc vcc vcc b a a0a1a2a3a4a5a6a7 a8a9a10a11a12a13a14a15 a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 b0b1b2b3b4b5b6b7 b8b9b10b11b12b13b14b15 b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 d0d1d2d3d4d5d6d7d8d9d10 d11 d12 d13 d14 d15 d0d1d2d3d4d5d6d7d8d9d10 d11 d12 d13 d14 d15 d0d1d2d5d6d7d8d9d10 d11 d12 d13 d14 d15d3d4vcc sck ab sclt sclh data_in sck ab sclt sclh data_out vcc 信信0902 信信 图 17 点阵屏电路图 3.6.1 led 显示屏工作原理介绍 将 2 片 74hc595 进行级连,可共用一个移位时钟 sck 及数据锁存信号 rck。这样,当第一行需要显示的数据经过 4x8=32 个 sck 时钟后便可将其全部 移入 74hc595 中,此时还将产生一个数据锁存信号 rck 将数据锁存在 74hc595 中,并在使能信号 g 的作用下,使串入数据并行输出,从而使与各输出位对应 的场驱动管处于放大或截止状态;同时由行扫描控制电路产生信号使第一行扫 描管导通,相当于第一行 led 的正端都接高,显然,第一行 led 管的亮灭就取 决于 74hc595 中的锁存信号;此外,在第一行 led 管点亮的同时,再在 74hc595 中移入第二行需要显示的数据,随后将其锁存,同时由行扫描控制电 路将第一行扫描管关闭而接通第二行,使第二行 led 管点亮,以此类推,当第 16 行扫描过后再回到第一行,这样,只要扫描速度足够高,就可形成一幅完整 的文字或图像。从理论上说,不论显示图形还是文字,只要控制与组成这些图 形或文字的各个点所在的位置相对应的 led 器件发光,就可以得到我们想要的 显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。16x16 的点阵共有 256 个发光二极管,显然单片机没有这么多的端口,如果我采用锁 存器来扩展端口,按 8 位的锁存器来计算,16x16 的点阵需要 256/8=32 个锁存 器。在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个 很庞大的数字。因此在实际应用中的显示屏几乎都不采用这种设计,而采用另 外一种称为动态扫描的显示方法。 动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实 现多行(比如 16 行)的同名列共用一套驱动器。具体就 16x16 的点阵来说,把 所有同 1 行的发光管的阳极连在一起,把所有同 1 列的发光管的阴极连在一起 (共阳极的接法) ,先送出对应第一行发光管亮灭的数据并锁存,然后选通第 1 行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第 2 行使其燃亮相同的时间,然后熄灭;以此类推,第 16 行之后,又重新燃亮第 1 行,反复轮回。当这样轮回的速度足够快(每秒 24 次以上) ,由于人眼的视觉 暂留现象,就能够看到显示屏上稳定的图形了。 采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一 个驱动器。显示数据通常存储在单片机的存储器中,按 8 位一个字节的形式顺 序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存 在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并列 方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量 大,相应的硬件数目多。当列数很多时,并列传输的方案是不可取的。 采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位 传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数 据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之 后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分 解成列数据准备(传输)和列数据显示两部分。对于串行传输方式来说,列数 据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少 了,以致影响到 led 的亮度。 解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠 处理的方法。即在显示本行各列数据的同时,传送下一列数据。为了达到重叠 处理的目的,列数据的显示就需要具有所存功能。经过上述分析,就可以归纳 出列驱动器电路应具有的功能。对于列数据准备来说,它应能实现串入并处的 移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备 好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列 数据,而不会影响本行的显示。 4 4 系统软件设计系统软件设计 4.14.1 程序设计程序设计 系统软件采用 c 语言编写,按照模块化的设计思路设计。首先分析程序所要 实现的功能,程序要实现串口通信,静态显示,动态显示三大功能。其功能结 构如图 2-4 所示。通信程序接收上位机数据,交给主程序处理再通过控制程序 选择不同的显示程序进行显示。 主程序的工作流程如图 18 所示: 图图 1818 主程序流程图主程序流程图 程序开始时首先必须对单片机进行初始化,其中初始化的内容包括:中断优 先级的设定,中断初始化,串行通信时通信方式的选择和波特率的设定,各 io 口功能的设定等。初始化完成后程序进入待机状态等待中断的发生,该程序中 主要用到了两个外部中断源和串行中断。外部中断源由按键的电平变化触发, 外部中断主要功能是选择 led 点阵显示屏的控制方式是由按键控制还是上位机 控制和显示状态是静态显示还是动态显示。串行中断包括发送中断和接收中断 都是由软件触发。中断产生后由预先初始化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论