基于单片机控制的LED点阵系统_第1页
基于单片机控制的LED点阵系统_第2页
基于单片机控制的LED点阵系统_第3页
基于单片机控制的LED点阵系统_第4页
基于单片机控制的LED点阵系统_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、本科毕业设计说明书(论文)第 PAGE 52 页 共 NUMPAGES 52 页1 绪论随着电子技术和信息技术的迅速发展,LED的应用范围越来越广泛。它作为一个重要的宣传平台,已经受到全社会的普遍认可和广泛使用。如今,它几乎成为各个广场和大型超市的必备品。然而这些功能的实现离不开单片机的功劳。单片机是一种微型处理器,负责数据的接收、发送和处理的工作。LED显示屏则可以显示变化的数字、文字、图形和图像等。它不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏等无法比拟的优点1。点阵显示器的特点是可以按照实物所需要的大小、形状和颜色进行组合,用单片机控制实行各种文字或图形的变化,

2、达到广告宣传和提示的目的。1.1 课题背景及意义LED点阵电子显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。它以其色彩鲜艳动、态范围广、亮度高、寿命长、工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。点阵式LED显示技术是近几年发展较快的显示技术之一,其抗干扰能力强等特点使得其在户外广告、公共告示等方面得到了广泛的应用,因此研究点阵式LED显示屏接口与控制技术具有较高的实际应用价值。LED显示屏的应用涉及社会经济的许多领域,主要包括:(1) 证券交易、 HYPERLINK /baidu?word=金融论文&tn=baby5iadmin_pg&fyb=0

3、t _blank 金融信息显示。(2) 机场航班动态信息显示。(3) 车站旅客引导信息显示。(4) 体育场馆、道路交通信息显示。(5) 调度指挥中心显示。(6) 邮政、电信、商场购物中心等服务领域的业务宣传显示。(7) 广告媒体新产品宣传显示等。实际生活中经常会遇到一些特殊要求的动态显示,比如电梯运行中指示箭头的上下移动、某些智能仪表幅值的条形显示、广告中厂家的商标显示等。这时一般的显示系统就很难达到要求2。另外,由于受到存储器本身的局限,其特殊字符或图案也往往难以显示,同时显示内容也不能随意更改。1.2 本课题相关介绍本课题要求自选单片机及其周边芯片,设计点阵LED与单片机的接口电路,并编制

4、单片机的软件,并对系统进行仿真调试。该设计提出采用软件仿真平Proteus对点阵式LED滚动汉字显示屏进行仿真,在Proteus中完成硬件电路的设计,同时采用KeilC集成开发平台设计程序,可在计算机上仿真实现点阵滚动汉字显示屏的滚动显示。本设计提出一种利用单片机控制的LED显示系统通讯方法。该方法可以对显示内容(包括汉字和特殊图符)进行实时控制,从而实现滚动的动态显示效果。该方法同时还可以调节动态显示的速度,并且用户也可以同时进行显示效果的预览仿真,显示内容亦可以较方便的修改3。论文章节安排在撰写此论文之前,我在学校的图书馆里参阅了大量有关单片机介绍和LED显示电路设计等相关书籍,并且通过网

5、络查找搜集了较多的相关论文。经过反复多次对这些资料进行详细的摘要和严谨的对比整理,我从中学习到很多新的相关专业知识,加深并丰富了我对单片机的理解。最后,我写出了这篇点阵LED显示电路和系统设计的论文。其中各个章节安排如下:第一章 绪论主要讲述该设计的背景,意义以及设计思想。第二章 系统的总体方案设计主要是硬件组成部分及与设计电路相关的芯片介绍。第三章 系统的软件部分。第四章 系统仿真,显示符合设计要求的显示结果。2 系统的硬件部分设计本设计主要采用单片机及其周边芯片,设计点阵LED与单片机的接口电路。2.1 设计要求(1) 通过对80C51单片机的C语言编程,实现汉字的左移滚动显示。(2) 成

6、本低,功能强,设计明了化实用化。(3) 动态显示过程的仿真成果中没有明显的抖动。2.2 设计基本方案为使该模块化的点阵式LED显示屏控制系统使用更加方便,并具有较高的灵活性和视觉舒适性,我对系统的硬件做了非常精心的设计4。本设计的硬件电路包括:主控单片机模块、译码器选择数据模块、LED显示模块这三大模块。总体组成框图如图2.1所示。译码器LED显示模块主控单片机送断码值到显示模块驱动显示模块图2.1 总体结构框图图2.1 简略的描述了系统的结构,本系统先由主控单片机来控制译码器进行位选,然后再将段码的值通过主控单片机的I/O口送往LED显示模块进行汉字的显示。2.3 硬件电路芯片介绍该设计主要

7、介绍LED显示电路所采用的主要芯片,如单片机80C51,译码器74LS138。此外,还简要阐述了选取这些芯片的优点。2.3.1 单片微型计算机简介单片微型计算机(Single Chip Micro Computer)简称单片机,它是一种把组成微型计算机的各功能部件:中央处理单元CPU、一定容量的随机存储器RAM和只读存储器ROM、I/O接口电路、定时器/计数器以及串行口等制作在一块芯片中的计算机,从而实现微型计算机的基本功能5。单片机具有结构简单、控制功能强、可靠性高、体积小、价格低等特点,在家用电器、智能化仪器、工业控制以及火箭导航尖端技术领域都发挥着十分重要的作用6。单片机的内部结构示意图

8、如下图2.2所示。 单片机 接口电路及外设等 + + 软 件 单片机应用系统 图2.2 单片机内部结构示意图 图2.3 单片机应用系统组成示意图单片机实质上是一个芯片,在实际应用中通常很难直接把单片机和受控对象进行电气连接,而是必须外加各种扩展接口电路以至外部设备,连同受控对象和单片机程序软件构成一个单片机应用系统。单片机应用系统是以单片机为核心,配以输入、输出、显示、测量和控制等外围电路和软件能实现一种或多种功能的实用系统。单片机应用系统的组成示意图如上图2.3所示7。2.3.2 系统芯片的选择 方案一:8031芯片内部无ROM,需要外扩程序存储器,由此造成电路焊接的困难,况且使用8031还

9、需要另外购买其他的芯片,从而造成成本比较高,且性价比低。方案二:80C51芯片内部有ROM,且片内ROM全部采用Flash ROM,它能够在3V的超低压工作,与51系列单片机完全兼容。因此,本设计选择80C51芯片。2.3.3 主控制单片机80C51是一种高性能CMOS8位微处理器,俗称 HYPERLINK /view/1012.htm t _blank 单片机,它带有4K字节闪烁可编程可擦除 HYPERLINK /view/132973.htm t _blank 只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压

10、,高性能CMOS8位微处理器,俗称 HYPERLINK /view/1012.htm t _blank 单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的80C51是一种高效微控制器, 80C2051是它的一种精简版本。80C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案8。80C51引脚即外观如图2.4所示。图2.4 80C51引脚外观图2.3.4 80C51接口说明Vss(20脚):接地。VCC(40脚):主电

11、源+5V。XTAL1(19脚):接外部晶体的一端。在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,对于HMOS单片机,该端引脚必须接地;对于CHMOS单片机,此引脚作为驱动端。XTAL2(18脚):接外部晶体的另一端。在片内它是个振荡电路反相放大器输出端,振荡电路的频率是晶体振荡频率。若需采用外部时钟电路,对于HMOS单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬浮。RST(9脚):单片机刚刚接上电源时,其内部各寄存器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位。PSEN(29脚):在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。C

12、PU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。PSEN端同样可驱动8个LSTTL负载。我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。ALE/(30脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚()也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可以用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0

13、位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。EA/VPP(31脚):当EA端输入高电平时,CPU从片内程序存储器地址0000H单元开始执行程序。当地址超出4KB时,将自动执行片外程序存储器的程序。当EA输入低电平时,CPU仅访问片外程序存储器。在对87C51EPROM编程时,此引脚用于施加编程电压VPP。输入/输出引脚:(1) P0.0P0.7(39脚32脚)。(2) P1.0P1.7(1脚 8 脚)。(3) P2.0P2.7(

14、26脚21脚)。(4) P3.0P3.7(10脚17脚)。80C51单片机P3口的第二功能如表2.1所示。表2.1 80C51单片机P3口第二功能引脚号第二功能P3.0RXD(串行输入线)P3.1TXD(串行输出线)P3.2(外部中断0输入线)P3.3 (外部中断0输入线)P3.4T0(定时器0外部计数脉冲输入)P3.5T1(定时器1外部计数脉冲输入)P3.6(外部数据存储器写选通信号输出)P3.7(外部数据存储器写选通信号输出)一个16*16的点阵显示系统由单片机80C51,74LS138,1个16*16的LED点阵模块,单片机的时钟复位电路和P0口的上拉电阻组成。16*32的点阵显示电路由

15、单片机80C51,4个74LS138和2个16*16的LED点阵模块组成。该电路所设计的电子屏可显示多个汉字,并实现左移滚动。2. LED点阵制作 HYPERLINK /view/52538.htm t _blank LED(Light Emitting Diode),50年前人们已经了解半导体材料可产生光线的基本知识,第一个商用二极管产生于1960年。LED是英文Light Emitting Diode(发光二极管)的缩写,它的基本结构是一块电致发光的半导体材料,置于一个有引线的架子上,然后四周用环氧树脂密封,即固体封装,所以能起到保护内部芯线的作用,所以LED的抗震性能好9。点阵式LED的

16、显示采用逐列扫描方式。工作时,由单片机取出第一列需要显示的内容经延时一段时间后再进行下一列点阵数据的显示。需要注意的是,每次只能选通一列数据,即要通过不断的逐列扫描变换来实现汉字或字符的显示。2.4.1 显示模块的选择方案一:点阵显示,是由八行八列的发光二极管集成在一块电路上组成,主要用来显示汉字,同时也能显示数字和少量图像。而且程序简单,显示的效果比较清晰。方案二:LED数码管静态显示,电路容易理解且驱动的程序简单,多片七段译码器驱动显示,这不仅增加了成本,还需要占用单片机多个I/O口,也给电路的焊接带来一定的困难,因此不选用这种方案作为显示模块。经过两种方案的比较,最后选择方案一:LED的

17、点阵显示。2.4.2 LED驱动模块的选择方案一:采用静态锁存方式,将每一个LED发光管的一端接至单片机的一个I/O口,另一端通过电阻接电源。这种方法可以直接驱动LED,原理简单,驱动能力强,LED的亮度也可以通过限流电阻调节,非常方便,但此种方法太浪费单片机的I/O口,只适合于较小的系统。方案二:采用动态扫描方式,通过三极管驱动并联在一起的LED发光管的一端(共阴极或共2端),LED发光管的另一脚接通用I/O口,控制其亮灭。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源10。比较以上两种方案,系统设计中采用方案二。2.4.3 主要芯片74LS138的介绍译码器是组合逻辑电路的

18、一个重要的器件,芯片74LS138为 3线8线译码器, 74LS138译码器的引脚(管脚)如下图2.5所示。图2.5 74LS138的引脚图所谓译码,就是将每一组代码的含意翻译出来的过程。译码是编码的逆过程。广泛被使用的译码器是74LS138译码器,因此该设计中采用74LS138且其作用也就是将一组码转换为想要的确定的信息。74LS138为3线8线译码器,共有54/74S138和54/74LS138 两种线路结构型式。其工作原理:当一个选通端(E3)为高电平,另两个选通端(E1和E2)为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平的方式译出。利用E1、E2和E3可级

19、联扩展成一个24线的译码器;若外接一个反相器还可以级联扩展成为32线译码器。若将选通端中的一个作为数据的输入端时,74LS138还可作 HYPERLINK /view/990217.htm t _blank 数据分配器。假设地址端的值为001,那么则说明其/Y1输出口是有效的,且其输出值为10111111。假设地址端的值为010,那么则说明其/Y2输出口是有效的,且其输出值为11011111。假设地址端的值为011,那么则说明其/Y2输出口是有效的,且其输出值为11101111。在该毕业设计中,由于单片机中的P2口只有八个数据线,显然不够三十二个数据使用。因此,74LS138译码器在此是用于扩

20、展数据的输入端的。4个74LS138译码器正好一共有三十二个输出端口,于是就对应了LED显示屏中的三十二个列选端。满足了16*32点阵式LED显示屏的列需求。74LS138译码器引脚功能如表2.2所示。表2.2 74LS138译码器功能表 输 入输 出S1S2+S3ABC011111111111111111100000111111110001101111111001011011111100111110111110100111101111010111111011101101111110110111111111102.5 16*16 LED点阵显示制作我们以Version1.0字模精灵为例,每一个

21、汉字由一个16行16列的点阵组成显示。即国标汉字库中的每一个字均由256点阵来表示。2.5.1 16*16 LED点阵的内部结构及工作原理我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏幕不仅可以显示汉字,也可以显示在256像素范围内的任何图形。这里我们以“尚”字说明,如图2.6所示。 图2.6 “尚”字显示图用8位的80C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。在此我们把它拆分为上部和下部,上部由8*16点阵组成,下部也由8*16点阵组成。在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的P00P07口。方向为P00到

22、P07,显示汉字“尚”时,由上往下排列,为P00亮,P01灭,P02灭,P03灭,P04灭,P05灭,P 06灭,P 07 灭。即二进制10000000,转换为16进制为 80H。第一列的上半部完成后,继续扫描第一列的下半部,为了接线的方便,我们仍设计成由上往下扫描,从上图可以看到,这一列全部为不亮,即为00000000,16进制则为00H。 然后单片机转向第二列的上半部,P01点亮,为01000000,即16进制40h.这一列完成后继续进行下半部分的扫描,P20点亮,为二进制00000001,即16进制01H。依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“尚”的扫描代码

23、为: 080H,000H, 040H,001H, 067H,0FFH,034H,004H 01CH,008H, 015H,0FCH,007H,030H,0FDH,050H 005H,090H, 00DH,050H, 017H,0F8H,064H,012H 02CH,009H, 017H,0FEH, 020H,002H,040H,001H由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。不过现在有很多现成的汉字字模生成软件,就不必去画表格算代码了。打开字模精灵软件,设定一下输出方式, 输入汉字后,再单击“取模”。十六进制数据的汉字代码即可自动生成,

24、把我们所需要汉字代码复制到我们的C程序中即可,如下图2.7所示。图2.7 汉字字模生成图2.6 硬件系统的整体设计图与原理分析硬件系统的整体设计图如下图2.8所示。图2.8 硬件系统的整体设计图原理分析:Proteus 7.4软件中只有8*8和5*7等LED点阵,所以需要由小的LED屏拼接成一个大的LED显示屏。上图的LED显示部分是由8个8*8的点阵构成整体的16*32点阵屏,可以同时显示两个汉字(或4个英文字母)。要注意的是:在Proteus7.4软件中,由于点阵块数太多,所以其接线比较的复杂。此处采用以上接线方式,把8个LED点阵屏以“一共两行,每行4个”的方式紧凑连接在一起,隐藏了那些

25、错综复杂的连线,使我们在视觉上觉得更清新,更一目了然。原理图中,拼接后的点阵式LED显示屏采用的是逐列扫描的工作方式。将事先已经编写好的C语言程序输入到单片机中,80C51单片机的P2口的P2.0口至P2.2口连接4个74LS138(3线8线)译码器的输入端,再由4组8个相应的输出端,与连接LED显示屏对应的列端相连,用来选中所要显示的字符的列。单片机的P0口负责输入所要显示的第一个字的代码信息,P1口负责输入所要显示的第二个字的代码信息。然后又由P0口负责输入所要显示的第二个字的代码信息,P1口负责输入所要显示的第三个字的代码信息,这样在我们的视觉上就感觉字是在连续着在向左移动了。这样依次类

26、推,所有的字都能连续的左移着显示出来。另外,在对单片机进行校验时,P0口须接上10K左右的上拉电阻,就是上图中的RP1电阻。对于74LS138译码器U2来说,其中E1端必须为高电平才能有效,也就是说此时译码器才能正常工作。E2和E3端是低电平有效,用来接地端。其余的3个译码器的原理都是这样。 2.7 小结本章节主要介绍了设计中硬件电路用到的单片机80C51芯片的总体结构和各个重要引脚的功能、显示电路中主要器件74LS138译码器的各个引脚及其功能、以及整体设计结构框图的讲解和具体实现字符的连续左移显示的详细分析。3 系统的软件部分设计应用系统中的应用软件是根据系统功能要求而设计的,能可靠地实现

27、系统的各种功能。3.1 程序设计思路与结构系统采用模块化结构,包括主程序、延时程序、显示子程序11。3.1.1 程序设计思路计算机按照给定的程序,逐条执行指令,以完成某项规定的任务。因此,使用计算机必须编写出计算机能执行的程序,用简短的C语言程序进行设计,实现与计算机的通讯,能方便改动显示的内容,使显示内容能够一个接一个的左移滚动慢慢的显示。由单片机80C51的P2口输出进行片选。片选1有效时,将所要显示的汉字的段码值送给P0,P1。驱动相应段点亮。直到送完16个段码就可以显示一个汉字了。3.1.2 程序设计流程图系统程序主要由开始、初始化、主程序、字库等组成。其中主程序和子程序的流程图如图3

28、.1和图3.2所示。Y开始初始化调用显示程序调整数据指针是否显示完图3.1 主程序流程图对图3.1主程序流程图的简要分析如下:首先“开始”,然后对整个系统进行初始化,之后调用相应的显示程序,之后开始调整一下数据的指针,判断此时需要显示的字符是否已经显示完毕。如果已经显示完毕就返回到系统“初始化”的时刻继续进行接下来的流程,如果没有显示完毕则返回到“调用显示程序”的时刻继续接着的流程。开始设一帧显示时间关闭显示并调整指针设片选及数据指针查汉字上部数据及显示查汉字下部数据及显示延时1ms结束是否显示完汉字一帧时间是否到NNYY图3.2 显示程序流程图对图3.2显示程序流程图的简要分析如下:首先开始

29、,之后设定显示一帧字符所用的时间,然后设定片选指针以及数据指针,然后查找相应的汉字或字符的上部数据及显示,接着查找查相应的汉字或字符的下部数据及显示,然后对整个系统延时1ms,之后关闭之前显示的字符内容并调整相关数据的指针,此时判断需要显示的字符是否显示完毕。若没有显示完毕,则返回到“设片选及数据指针”处进行重新工作流程;若已经显示完毕,则判断此时一帧的时间是否完毕。如果时间没有完毕,则返回至“设定一帧显示时间”处重新设定该时间;反之整个系统程序结束完成。3.2 模块程序设计该设计中主要由系统初始化、LED动态显示、汉字显示程序设计以及显示设计几个部分组成。3.2.1 系统初始化将事先已经编写

30、好的C语言程序输入到单片机中,80C51单片机的P2口的P2.0口至P2.2口连接4个74LS138(3线8线)译码器的输入端,再由4组8个相应的输出端,与连接LED显示屏对应的的列端相连,用来选中所要显示的字符的列。对于74LS138译码器U2来说,其中E1端必须为高电平才能有效,也就是说此时译码器才能正常工作。E2和E3端是低电平有效,用来接地端。其余的3个译码器的原理都是这样。 3.2.2 LED动态显示此次设计理论显示结果为在显示屏上,汉字按照从右向左的顺序一个个显示。设计时可采用如下方法:首先将LED显示屏对应的显示缓冲区全部清零,即 LED显示空白,然后通过延时程序来设定各个字符的

31、动态显示时间,显示缓冲区依次加入一个汉字点阵数据并进行扫描显示,这样就可达到动态显示的效果12。 单片机的P0口负责输入所要显示的第一个字的代码信息,P1口负责输入所要显示的第二个字的代码信息。然后又由P0口负责输入所要显示的第二个字的代码信息,同时P1口来负责输入所要显示的第三个字的代码信息,这样在我们的视觉上就感觉字是在连续着在向左移动了。这样依次类推,所有的字都能连续的左移着显示出来。3.2.3 汉字显示程序设计打开“字模精灵”软件,设定一下参数设置,即:选择C51格式,字节倒序,冗余格式,纵向取模。 这样输入单个的汉字后,再单击“取模”。此时十六进制数据的汉字代码即可自动生成,把我们所

32、需要汉字代码复制到我们的C语言程序中就可以了13。从字模软件中得到需要显示汉字的代码值。如“王晓璐”的代码为:unsigned char code ziku= /字符码的存放格式为:从左到右共16列,并按列的上下部分依次存放 /一组即为一列/*转换字符 王 */0 x00,0 x20,0 x02,0 x20,0 x82,0 x20,0 x82,0 x20,0 x82,0 x20,0 x82,0 x20,0 x82,0 x20,0 xFE,0 x3F,0 x82,0 x20,0 x82,0 x20,0 x82,0 x20,0 x82,0 x20,0 xC3,0 x20,0 x82,0 x30,0

33、 x00,0 x20,0 x00,0 x00,/*转换字符 晓 */0 x00,0 x00,0 xFE,0 x0F,0 x42,0 x04,0 x42,0 x04,0 xFE,0 x4F,0 x00,0 x21,0 x84,0 x19,0 x84,0 x07,0 x47,0 x01,0 x5C,0 x01,0 x24,0 x3F,0 x64,0 x41,0 x94,0 x40,0 x04,0 x41,0 xC0,0 x71,0 x00,0 x00,/*转换字符 璐 */0 x42,0 x10,0 x42,0 x10,0 xFE,0 x0F,0 x42,0 x28,0 x40,0 x3E,0 x

34、3E,0 x20,0 xE2,0 x1F,0 x22,0 x11,0 x3E,0 x0A,0 x08,0 x01,0 x9F,0 x7E,0 x64,0 x22,0 xB4,0 x22,0 x0C,0 x7F,0 x00,0 x01,0 x00,0 x00,;3.2.4 显示设计汉字显示的原理:汉字的显示主要是通过将需要显示的汉字的段码值送入显示模块而完成的。首先从字模软件中得到需要显示汉字的段码值。void delay(int t) for(t;t0;t-);void show()for(n=0;n32*19-1;n+=2)/共十九个字/for(k=0;k10;k+) /每个字显示的时间/

35、for(i=0;i4;i+) /4个字符区 for(j=0;j32*19-1)P0=zikua-32*19;else P0=zikua;delay(10);if(b32*19-1) P1=zikub-32*19; else P1=zikub; void main() while(1)show();3.3 小结本章主要介绍了软件设计中的主程序和显示程序的流程图以及对其内容的简要介绍,以及相关的软件程序,并最终达到所要求的LED显示结果。4 系统仿真Proteus内容全面包括其能实验的内容包括软件部分的汇编、C51 等语言的调试过程,也包括硬件接口电路中的大部分类型。对同一类功能的接口电路,可以采

36、用不同的硬件来搭建完成,因此采用Proteus 仿真软件进行实验教学,克服了用单片机实验教学板教学中硬件电路固定、学生不能更改、实验内容固定等方面的局限性,可以扩展学生的思路和提高学生的学习兴趣。4.1 仿真环境介绍Proteus是目前最好的模拟单片机外围器件的工具,它可以仿真51系列、AVR,PIC等常用的MCU及其外围电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI器件,部分IIC器件)14。当然,软件仿真精度有限,而且不可能所有的器件都找得到相应的仿真模型,用开发板和仿真器当然是最好选择,可是对于单片机爱好者,或者简单的开发应该是比较好的选择。Proteus与其

37、它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。KeilC51是美国KeilC Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC5软件提供丰富的库函数和功能强大

38、的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。4.2 仿真过程与结果利用以上两种软件,就可以进行仿真了。这里以一个16*32点阵汉字显示为例说明。4.2.1 绘制电路图运行PROTEUS的ISIS程序后,进入该仿真软件的主界面。在工作前,要设置VIEW菜单下的捕捉对齐和SYSTEAM下的颜色、图形界面大小等项目。通过工具栏中的P (从库中选择元件命令)命令,在PICK DEVICES窗口中选择电路所需的元件,放置元件并调

39、整其相对位置,元件参数设置,元器件间连线,将电路图绘制完毕。4.2.2 HEX文件的生成利用KEIL51生成HEX文件。具体方法如下:(1) 打开单片机软件开发系统KEIL uVision,单击“uVision”菜单中的“PROJECT”,在此下拉菜单中单击“NEW PROJECT”后。弹出“CREAT NEW PROJECT”对话框。键入新建项目名称。(2) 键入新建项目名并单击“确定后”,在弹出的“SELECT DEVICE”对话框中选择合适的单片机型号,如80C51。(3) 单击“uVision”菜单中的“FILE”,在此下拉菜单中选择“NEW”后,打开一个空的文本编辑口,在此窗口总键入

40、程序,创建新的源程序“一个16*16点阵汉字显示.C”(如是汇编语言程序的话为“一个16*16点阵汉字显示.ASM)文件。(4) 在左边的“PROJECT”窗口的“FILE”页中单击文件组,再单击鼠标右键后,在弹出的窗口中选中“ADD FILES TO GROUP” “SOURCE GROUP1”选项,将“一个16*16点阵汉字显示.C”程序导入到“SOURCE GROUP 1”中。(5) 在“PROJECT”下拉菜单中,选择“OPTIONS FOR TARGET”对话框,在此对话框中“OUTPUT”选项卡中的“CREAT HEX FILE”选项。(6) 在“PROJECT”下拉菜单中,选择“

41、REBUILD ALL TARGET FILES”项。若程序编译成功,将生产“一个16*16点阵汉字显示.HEX”文件。4.2.3 调试与结果 在PROTEUS ISIS编辑窗口中,单击鼠标右键选中单片机80C51并单击鼠标左键,弹出“EDIT COMPONET”对话框,在此对话框的“CLOCK FREQUENCY”栏中设置单片机晶振频率为12MHz,在“PROGRAM FILE”栏中单击浏览选中KEIL生成的HEX文件15。单击运行,就可以看到仿真的结果了。本设计中显示的是“南京理工大学泰州科技学院06电气Z王晓璐”的字样,下图4.1为显示“大学”字样。图4.1 16*32 LED点阵仿真结

42、果图4.2显示的是“电气”的字样。图4.2 16*32点阵仿真结果其余的汉字依次仿真结果如图4.3所示。图4.3 动态显示所有汉字这样,每一个字依次向左滚动显示的效果就出来了。4.3 小结采用PROTEUS进行单片机仿真,可以大大缩短单片机的开发周期。它不仅能仿真单片机CPU 的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。本系统仿真结果,满足设计需求。实际操作灵活,使用方便。结束语LED点阵显示应用很广,在市场上已有比较成熟的产品,但价格比较高,在一些应用中性价比不高。故本次设计的LED点阵显示控制系统是以单片机为基础,采用优越的Flash存储器为数据存储器,利用接口

43、电路实现与PC机的有效连接并进行数据的传输,用简短的汇编程序使LED点阵显示实现了汉字滚动显示。其特点:(1) 显示内容能从左到右滚动显示。(2) 显示内容不限,内容可随时改动。(3) 系统显示误差小,性能稳定。(4) 硬件结构简单,显示美观,应用灵活。需要改进和不足:(1) 由于制作仓促,本次设计只是用软件设计和测试,并没有制作出实体。(2) 如果要投入生产还需要改进显示屏、显示方式等。(3) 由于时间的原因制作的作品比较粗糙,还有待改进。致 谢 首先,要感谢我的指导老师, 本次课程设计是在老师的亲切关怀和悉心的指导下完成的。在此我谨致以崇高的敬意和衷心的感谢!每当遇到自己不能解决的问题时,

44、老师总是不厌其烦地开导我,给予深刻的意见和指导,从课题确定到制作大纲,从理论分析到程序设计,无不体现了老师对我的关怀。老师对待每一项工作都严谨细致、一丝不苟,而这正是我以后工作、学习中的榜样;同时,我还要感谢大学期间各位任课老师在学习上给予我的指导和帮助,是他们在两年的本科学习中指导我们学习,教给我们知识的同时,最重要的是教给了我们许多做人的道理,将为我今后的工作和生活产生久远的影响。最后,感谢在一起度过愉快大学生活的各位同学,正是由于你们的帮助和鼓励,我才能够突破一次次的障碍、克服一次次的困难,顺利的完成这次毕业设计。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有许

45、多可敬的师长、同学、朋友给了我很大的帮助,在这里请接受我诚挚的谢意。 谢谢大家! 参 考 文 献1 胡健, 刘玉宾. 定时/计数器,单片机原理与接口技术M. 北京: 机械工业出版社, 2005.2 向继文, 廖立新. 基于80C51的LED系统设计J. 机电产品开发与创新, 2007, 20 (2): 6263.3 范立南. 单片机原理及应用教程M北京: 北京大学出社, 2006.4 刘盛雄, 周奇, 韦云隆. 基于单片机的LED显示设计与制作J. 重庆工学院学报, 2006, 20 (8): 9092.5 辛友顺, 胡永生. 初步介绍单片机应用系统设计与实现M. 福州: 福建科学技术出版社,

46、 2005.6 张齐. 显示技术及单片机应用系统设计技术M. 北京: 电子工业出版社, 2004.7 李建忠. 单片机原理及应用M. 西安: 西安电子科技大学出版社, 2002. 8 韩建国, 廖俊必. 单片机原理及应用M. 北京: 高等教育出版社, 2007.9 刘刚, 朱杰斌, 刘兆峰. 单片机原理及应用M. 北京: 中国林业出版社, 2006.10 蒋立平. 数字电路M. 南京: 南京理工大学出版社, 2001.11 王建宇, 戴跃伟, 侯晓霞. 微型计算机原理及应用M. 北京: 化学工业出版社, 2001.12 KEN MARTIN. 数字集成电路与设计M. 北京: 电子工业出版社,

47、2002.13 王尔乾, 杨士强. 数字逻辑与数字集成电路M. 北京: 清华大学出版社, 2002. 14 郝建国, 郑燕, 薛延侠. 单片机在电子电路设计中的应用M. 北京: 清华大学出版社, 2006.15 杨刚, 周群. 电子系统设计与实践M. 北京: 电子工业出版社, 2004.附录A 点阵电路整体硬件电路图附录资料:不需要的可以自行删除 C语言图形模式速成第一节 图形模式的初始化Turbo C 提供了非常丰富的图形函数,所有图形函数的原型均在graphics. h 中,本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。另外,使用图

48、形函数时要确保有显示器图形驱动程序*.BGI,同时将集成开发环境options/Linker中的Graphics lib选为on,只有这样才能保证正确使用图形函数。 不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器,在不同模式下也有不同分辨率。因此,在屏幕作图之前,必须根据显示器适配器种类将显示器设置成为某种图形模式,在未设置图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式),此时所有图形函数均不能工作。设置屏幕为图形模式,可用下列图形初始化函数:void far initgraph(int far *gdriver, int far *gmode,char *pat

49、h);其中gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。有关图形驱动器、图形模式的符号常数及对应的分辨率见graphics. h。图形驱动程序由Turbo C出版商提供,文件扩展名为.BGI。 根据不同的图形适配器有不同的图形驱动程序。例如对于EGA、 VGA 图形适配器就调用驱动程序EGAVGA.BGI。#include stdio.h#include graphics.hint main()int gdriver, gmode;gdriver=VGA;gmode=VGAHI;initgraph(&gdriver, &gmode, C:TC2.0

50、BGI);bar3d(100, 100, 300, 250, 50, 1); /*画一长方体*/getch();closegraph();return 0;有时编程者并不知道所用的图形显示器适配器种类,或者需要将编写的程序用于不同图形驱动器,Turbo C 提供了一个自动检测显示器硬件的函数,其调用格式为:void far detectgraph(int *gdriver, *gmode);其中gdriver和gmode的意义与上面相同。 自动进行硬件测试后进行图形初始化:#include stdio.h#include graphics.hint main()int gdriver, gmo

51、de;detectgraph(&gdriver, &gmode); /*自动测试硬件*/printf(the graphics driver is %d, mode is %dn,gdriver,gmode); /*输出测试结果*/getch();initgraph(&gdriver, &gmode, C:TC2.0BGI);/* 根据测试结果初始化图形*/bar3d(100, 100, 300, 250, 50, 1); /*画一长方体*/getch();closegraph();return 0;上例程序中先对图形显示器自动检测,然后再用图形初始化函数进行初始化设置,但Turbo C提供了

52、一种更简单的方法, 即用gdriver=DETECT 语句后再跟initgraph()函数就行了。采用这种方法后,上例可改为:#include stdio.h#include graphics.hint main()int gdriver=DETECT, gmode;initgraph(&gdriver, &gmode, C:TC2.0BGI);bar3d(50, 50, 150, 30, 50, 1);getch();closegraph();return 0;另外,Turbo C 提供了退出图形状态的函数closegraph(),其调用格式为:void far closegraph(voi

53、d);第二节 屏幕颜色的设置和清屏函数对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。在Turbo C中分别用下面两个函数: 设置背景色: void far setbkcolor(int color);设置作图色: void far setcolor(int color);其中color 为图形方式下颜色的规定数值,对EGA,VGA显示器适配器,有关颜色的符号常数及数值见graphics.h。清除图形屏幕内容但不清除图形背景使用清屏函数,其调用格式如下: voide far cleardevice(void);#include stdio.h#include graphics.

54、hint main()int gdriver, gmode, i,aa;gdriver=DETECT;initgraph(&gdriver, &gmode, C:TC2.0BGI); /*图形初始化*/setbkcolor(0); /*设置图形背景*/cleardevice();for(i=0; i=15; i+)setcolor(i); /*设置不同作图色*/circle(320, 240, 20+i*10); /*画半径不同的圆*/getch();for(i=0; i=15; i+)setbkcolor(i); /*设置不同背景色*/cleardevice();circle(320, 24

55、0, 20+i*10);getch();aa=getmaxcolor();printf(maxcolor=%d,aa);getch();closegraph();return 0;另外,TURBO C也提供了几个获得现行颜色设置情况的函数。 int far getbkcolor(void); 返回现行背景颜色值。int far getcolor(void); 返回现行作图颜色值。int far getmaxcolor(void); 返回最高可用的颜色值。第三节 基本画图函数基本图形函数包括画点,线以及其它一些基本图形的函数。本节对这些函数作一全面的介绍。 、画点. 画点函数 void far

56、putpixel(int x, int y, int color); 该函数表示有指定的象元画一个按color 所确定颜色的点。对于颜色color的值可从表3中获得而对x, y是指图形象元的坐标。在图形模式下,是按象元来定义坐标的。对VGA适配器,它的最高分辨率为640 x480,其中640为整个屏幕从左到右所有象元的个数,480为整个屏幕从上到下所有象元的个数。屏幕的左上角坐标为(0,0),右下角坐标为(639, 479),水平方向从左到右为x 轴正向,垂直方向从上到下为y轴正向。TURBO C的图形函数都是相对于图形屏幕坐标,即象元来说的。关于点的另外一个函数是: int far getp

57、ixel(int x, int y); 它获得当前点(x, y)的颜色值。 II、有关坐标位置的函数 int far getmaxx(void);返回x轴的最大值。int far getmaxy(void);返回y轴的最大值。int far getx(void); 返回游标在x轴的位置。void far gety(void); 返回游标有y轴的位置。void far moveto(int x, int y); 移动游标到(x, y)点,不是画点,在移动过程中亦画点。void far moverel(int dx, int dy); 移动游标从现行位置(x, y)移动到(x+dx, y+dy)的

58、位置,移动过程中不画点。、画线I. 画线函数TURBO C提供了一系列画线函数: void far line(int x0, int y0, int x1, int y1); 画一条从点(x0, y0)到(x1, y1)的直线。void far lineto(int x, int y); 画一作从现行游标到点(x, y)的直线。void far linerel(int dx, int dy); 画一条从现行游标(x,y)到按相对增量确定的点(x+dx, y+dy)的直线。void far circle(int x, int y, int radius); 以(x, y)为圆心,radius为半

59、径,画一个圆。void far arc(int x, int y, int stangle, int endangle,int radius); 以(x,y)为圆心,radius为半径,从stangle开始到endangle结束(用度表示)画一段圆弧线。在TURBO C中规定x轴正向为0 度,逆时针方向旋转一周, 依次为90,180, 270和360度(其它有关函数也按此规定,不再重述)。 void ellipse(int x, int y, int stangle, int endangle,int xradius,int yradius);以(x, y)为中心,xradius,yradiu

60、s为x轴和y轴半径,从角stangle 开始到endangle结束画一段椭圆线,当stangle=0,endangle=360时, 画出一个完整的椭圆。void far rectangle(int x1, int y1, int x2, inty2); 以(x1, y1)为左上角,(x2, y2)为右下角画一个矩形框。 void far drawpoly(int numpoints, int far *polypoints); 画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。polypoints整型数组必须至少有2 倍顶点数个无素。每一个顶点的坐标都定义为x,y

温馨提示

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

最新文档

评论

0/150

提交评论