动态LED点阵显示屏设计与制作 毕业论文.doc_第1页
动态LED点阵显示屏设计与制作 毕业论文.doc_第2页
动态LED点阵显示屏设计与制作 毕业论文.doc_第3页
动态LED点阵显示屏设计与制作 毕业论文.doc_第4页
动态LED点阵显示屏设计与制作 毕业论文.doc_第5页
免费预览已结束,剩余21页可下载查看

下载本文档

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

文档简介

毕 业 设 计(论 文)题目 动态led点阵显示屏设计与制作 系部 * 专业 * 姓名 * 学号 * 指导教师: *老师 2013 年 6 月7日目录 第1章:引言(2)第2章:方案论证(3)2.1:方案选择(3)2.2:单片机最小系统设计(4)2.3:按键及接口设计(6)2.4:显示及接口设计(6)2.5:驱动电路的设计(7)第3章:88点阵显示器控制系统的硬件设计(8)3.1:硬件系统的总体设计(8)3.2:单片机at89c51的分析(9)3.3:具体电路及功能分析(10)3.4:88点阵显示电路原理图(11)第4章:88点阵控制系统的软件设计(12)4.1:软件总体设计及功能的描述(12)4.2:单片机系统资源分配(13)4.3:软件主程序和显示程序流程图 (14) 注:(单片机源程序见附录1)第5章:样品的制作与调试(15)5.1:原材料的选择与采购(15)5.2:印刷电路板的设计与制作(15)5.3:单片机的测试(16)5.4:硬件及软件的调试(16)5.5:整机的测试与调试(17)第6章:使用说明书(18)第7章:致谢(19)参考文献(20)附录1:源程序 (21)第1章:引言led点阵显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。led显示又可以分为单色显示和双色显示,可以按照需要的大小、形状和颜色进行组合,并用单片机控制实现各种文字或图形的变化,达到宣传和提示的目的。据不完全统计,1991年,全国led显示屏的产值还不到亿元人民币,而在1993年,仅蓝通公司一家企业的显示屏产值即达1亿多人民币。同时也可广泛应用到军事、车站、宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业。目前大多数的led点阵显示系统自带字库。其显示和动态效果(主要是显示内容的滚动)的实现主要依靠硬件扫描驱动,该方法虽然比较方便,但显示只能按照预先的设计进行。而实际上经常会遇到一些特殊要求的动态显示,比如电梯运行中指示箭头的上下移动、某些智能仪表幅值的条形显示、广告中厂家的商标显示等。这时一般的显示系统就很难达到要求。另外,由于受到存储器本身的局限,其特殊字符往往难以显示,同时显示内容也不能随意更改。因此就提出了一种利用pc机和单片机控制的led显示系统通信方法。该方法可以对显示内容进行实时控制,从而实现诸如动态显示效果。同时用户也可以在pc机上进行显示效果的预览,显示内容亦可以即时修改。同时它具有发光率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的用于公交汽车、商店、体育场馆、车站、学校、银行、高速公路等公共场所的信息发布和广告宣传。led 显示屏发展较快,本文讲述了基于at89c51单片机88 led汉字点阵滚动显示的基本原理、硬件组成与设计、程序编写与调试、proteus软件仿真等基本环节和相关技术。第2章:方案论证2.1 方案选择2.1.1 需要实现的功能 显示预先想要显示的内容,在本设计中要求显示“毕业设计”四个文字,显示方式分三种:逐字显示,向上滚动显示,向左滚动显示。2.1.2 设计思路根据需要实现的功能,初步确定设计方案如下: 通过单片机编程依次显示汉字“志存高远”。 p0口作为io口,作为字符数据输出口。 p2口作为io口,作为字符显示扫描输出口。 p1.0、p1.1和p1.2口分别接k1、k2和k3,作为控制信号的输入。 通过改变电阻的大小来改变显示字符的亮度。2.1.3 单片机at89c51的选择 本方案最大的特点在于核心控制芯片的选择,采用at89c51单片机,利用at89c51的掉电工作方式,构成高可靠、低功耗系统方法。at89c51的采用有很多方面的优势。应用at89c51作为控制核心的设计大多在性能上要求很高。原因在于,在一些应用场合,单片机并不是每时每刻都在工作,而是多数时间处于守候状态 。为使单片机系统工作更省电、更可靠,我们可以使单片机在不工作时处于掉电工作方式,其工作状态被冻结,如at89c51处于掉电工作方式时耗电仅十几微安。此外,at89c51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,cpu停止工作。但ram,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存ram的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。2.2 单片机最小系统设计2.2.1 各部分具体电路1、单片机的时钟电路 at89c51单片机内部的振荡电路是一个高增益反向放大器,引线xtal1和xtal2分别是放大器的输入端和输出端。单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。at89c51的时钟产生方式有两种:内部时钟电方式和外部时钟方式。由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。内部时钟方式:利用其内部的振荡电路在xtal1和xtal2引线上外接定时元件,内部振荡电路产生自激振荡。最常用的是在 xtal1和xtal2之间接晶体振荡器与电路构成稳定的自激振荡器,如图2-1电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为12mhz的石英晶体,电容器一般选择30pf左右。图2-1使用片内振荡电路的时钟电路2 、单片机的复位电路 本设计中at89c51是采用上电自动复位和按键复位两种方式。最简单的复位电路如图2-2所示。上电瞬间,rc电路充电,rst引线端出现正脉冲,只要rst端保持10ms以上的高电平,就能使单片机有效地复位。其中r1选择1k的电阻,电容器一般选择22f。2.3 按键及接口设计2.3.1 独立式按键接口设计本设计按键较少,采用独立式按键简单而方便。独立式按键就是各键相互独立,每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其它输入线上的工作状态。因此,通过检测输入线的电平状态很容易判断哪个按键被按下了。设计采用的是中断方式的独立式按键工作电路,按键直接与at89c51的i/o口线相接,通过读i/o口,判定各i/o口线的电平状态,即可识别出按下的键。独立式按键电路中,一般采用上拉电阻,这是为了保证在按键断开时,各i/o口线有确定的高电平。2.4 显示器及接口设计2.4.1 88点阵led显示器的组成原理及控制方式本次设计中采用88点阵led显示器,简称led点阵板或led矩阵板。它是以发光二极管为像素,按照行与列的顺序排列起来,用集成工艺制成的显示器件。有单色和双色之分,这种显示器有共阳极接法和共阴极接法两种,设计中用到的是共阳极的显示器。共阳极接法的原理图如图2-4所示,图中画出了88点阵的二极管。每一行发光二极管的阳极接在一起,有一个引出端r,每一列发光二极管的阴极接在一起,有一个引出端c。当给发光二极管阳极引出端r1加高电平,阴极引出端c1加低电平时,左上角的二极管被点亮因此,对于行和列的电平进行扫描控制时,可以达到显示不同汉字的目的。例如“毕业设计”的显示可以按照从左到右,先下后上的顺序写出编码。然后写入单片机的数据存储单元中。“毕业设计”4个字的编码表如下:tab: db 0efh,83h,0abh,83h,0abh,83h,0eeh,0e0h ;电 db 0ffh,0c7h,0efh,83h,0efh,0efh,0cfh,0efh ;子 db 0b1h,0b5h,04h,0bfh,0b1h,0b5h,9bh,0a4h :设 db 0bbh,0bbh,1bh,0a0h,0bbh,0bbh,9bh,0bbh :计 db 00h,00h,00h,00h2.4.2 88点阵led显示器与单片机的接口 88点阵led的引脚图如图2-5所示,当采用单片机进行控制时,连接点阵显示器的共阳极r端需经驱动三极管9012与单片机的p2口相连,而共阴极c端需经限流电阻与单片机的p0口相连。在编程控制时,将88点阵led显示分成行和列两部分,字符数据从p0口输出,扫描控制字从p2口输出,每一列由一个字节的数据组成,数据可一次送入,然后扫描一行,显示一个字需要扫描8次。图2-5 88点阵led引脚的排列图2.5 驱动电路的设计显示器驱动是一个非常重要的问题,如果驱动能力差,显示器亮度就低;而驱动器长期在超负荷下运行则很容易损坏。如果是静态显示,则led驱动器的选择较为简单,只要驱动器的驱动能力与显示器工作电流相匹配即可。而且只须考虑段的驱动,因为,共阳极接+5v,而共阴极接地,所以位的驱动无须考虑。动态显示则不然,由于一位数据的显示是由段和位选信号共同配合完成的,因此,必须同时考虑段和位的驱动能力,而且段的驱动能力决定位的驱动能力。理论分析表明,同样的驱动器,当其驱动静态显示器时,其亮度为驱动动态显示器的n倍,n近似为显示位数。所以要使动态显示器达到静态显示器的亮度,必须将驱动器能力提高n倍。本设计中,因为采用了88点阵led显示器,用at89c51单片机进行控制,因此它很适宜于按扫描方式动态显示多个字符数据,所以我们只选用了8个pnp型三极管作为驱动显示器的电路。因at89c51单片机的io口有20ma的吸入电流,正因为这一特点,使的本设计中的驱动电路部分大大简化,不用附加专门的驱动电路即可正常工作。第3章 88点阵显示器控制系统硬件设计3.1 硬件系统的总体设计本设计采用at89c51 作控制器,显用9012三极管驱动,示器用8*8共阳led,点阵,改变电阻(270欧)的大小可改变显示字符的亮度。po作为字符数据输出口,p2为字符显示扫描输出口。12mhz晶振,第31脚(ea)接电源,p1.0-p1.2口分别接开关k1、k2、k3。 根据设计要求与设计方案,硬件电路的设计框图如图3-1所示。硬件电路结构由8个部分组成:时钟电路、复位电路、按键接口电路、电源电路、点阵显示阳极驱动电路、点阵显示阴极驱动电路和88点阵显示电路。按键电路复位电路电源电路时钟电路 单 片 机点阵显示器阳极驱动电路点阵显示器阴极驱动电路88点阵led显示器图3-1 88点阵显示器组成原理框图3.2 单片机at89c51的分析 由于at89c51片内有8k的flash程序存储器,并且io口可直接驱动点阵显示器,所以由它组成小系统硬件非常简单。3.2.1 at89c51单片机芯片的性能及功能图3-2 at89c51 引脚图1 性能说明与mcs-51 兼容8k字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0hz-24hz三级程序存储器锁定256*8位内部ram32可编程i/o线两个16位定时器/计数器一个数据指针dptr8个中断源可编程全双工串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路2 管脚说明 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.3 具体电路及功能分析1 按键接口控制电路 本设计采用轻触开关k1、k2和k3分别控制字符的显示方式,k1:控制字符逐字显示,k2:控制字符向上显示,k3:控制字符向左显示。2 显示电路 本设计采用双色88点阵模块显示,但是在设计中我们只用单色显示,我们通过改变限流电阻的阻值的大小来改变显示字符的亮度。3 电源电路 电源电路采用普通的三端集成稳压电源。为整个系统提供+5v的电压。3.4 88点阵显示器原理图图3-3 88点阵显示器电气原理图第4章 88点阵控制系统的软件设计4.1 软件总体设计及功能描述4.1.1 系统主要程序的设计 本设计系统采用了结构化、模块化,并且利用键扫描程序代替程序中的1ms延时程序,既为了按键的快速响应,又可以提高动态显示的扫描频率,从而减少了文字显示时的闪烁现象。1 主程序 主程序在刚上电时对系统进行初始化,然后读一次键开关状态,由键标志位(00h、01h、02h)决定显示方式。主程序流程图如4-1所示。2 初始化程序 在系统初始化时,对四个端口进行复位,将显示用的字符数据从rom表中装入内存单元50h6fh中。“毕业设计”中的每个文字占有8个地址单元。3 显示程序显示程序是由显示主程序和显示子程序组成。显示主程序负责每次显示时的显示地址首址(在b寄存器中)、每个字的显示时间(由30h中的数据决定)和下一个显示地址的间隔(31h中的数据决定)的处理。显示子程序则负责对指定8个地址单元的数据进行输出显示,显示一个完整文字的时间约为8ms。在显示子程序中,1ms延时程序是用调用键扫描子程序的方法实现的。图4-2为逐字显示及向上滚动显示方式的显示控制程序流程图。4.2 单片机系统资源的分配资 源功能与作用00h02h用于存放键标志位21h24h为数据显示缓冲区50h6fh用于存放显示字符数据表t0t2为定时中断入口标志30h用于控制显示静止字的时间31h用于静止字显示跳转地址步距0ffh0.5ms延时计数器14h10ms延时计数器64h1ms延时计数器表4-1 单片机系统资源分配4.3 主程序和显示程序流程图开始调用键扫描子程序(keywork)20h.0=1?20h.1=1?20h.2=1?转逐字显示程序(fun0)转向上滚动显示程序(fun1)转向左滚动显示程序(fun2)图4-1 主程序流程图逐字或上移显示开始设1帧显示时间及换帧步距寄存器b、r4、r5赋初值调显示子程序(display)(r4)1=0?(b)=#68h?显示首址修改:(b)+r5(b)转start1图4-2 逐字显示及向上滚动显示时的流程图第5章 样品的制作与调试5.1 原材料的选择与采购本次设计在原材料的选择与采购上做到了设计最优化,即用最小的开支,获得性价比较高的元器件和材料。设计中,印刷电路板采用单面板,给人看起来没有太复杂的感觉。选元器件时,尽量选择能使电路简化的器件。例如,为了不增大电路板的体积及减小功耗,本设计采用atmel公司的at89c51单片机,可编程io口多,工作电压范围宽,利用at89c51掉电工作方式,还可以构成高可靠、低功耗系统方法。5.2 印刷电路板的设计与制作在电路原理图图的设计中,由于连线很密,又加上自己画图不是很熟练,因此在布线的时候出现了很多的无法在底层板面布线的情况,为了使整个电路板看起来既美观又不出现短路的现象,我在底层板和顶层板之间多加上了几个焊盘,利用跳线将其连接起来,在设计跳线的时候我尽可能的把所有的跳线都压在点阵的下面,这样看起来就好象没有使用跳线,达到了使电路板美观的目的。同时也使整个电路板看起来很紧凑。电路图做好以后,就是制板了。这里,我们用的是多功能版,下面就是在多功能板上安装和焊接元件了。安装和焊接其实是并行的,即边安装边焊接。在这个过程中,各类元件一定要按顺序进行,即按由低到高的顺序。例如,先安装较低的电阻和跳线等器件并焊好,最后安装较高的元件,这样会使所制的板更完善。5.3 单片机的测试判断单片机芯片及时钟系统是否正常工作有一个简单的办法,就是用万用表测量单片机晶振引脚(18、19脚)的对地电压,以正常工作的单片机用数字万用表测量为例:18脚对地约2.24v,19脚对地约2.09v。对于怀疑是复位电路故障而不能正常工作的单片机也可以采用模拟复位的方法来判断,单片机正常工作时第9脚对地电压为零,可以用导线短时间和5v连接一下,模拟一下上电复位,如果单片机能正常工作了,说明这个复位电路有问题。5.4 硬件及软件的调试5.4.1 硬件调试 硬件调试是利用开发系统、基本测试仪器,通过执行开发系统有关命令或运行适当的测试程序来检查用户系统硬件中是否存在故障。其具体操作步骤如下:第一步是目测,在印好电路板之后,先检查印制线是否有断线、是否有毛刺、是否与其它线或焊盘粘连、焊盘是否有脱落、过孔是否有未金属化现象。而在目测的过程中,我们发现有一条印制线断开,因此我们用焊锡使这条断线连在一起。第二步是用万用表测量。在目测完之后,利用万用表来测量连线和接点,检查它们的通断状态是否和设计一样。再检查各种电源线和地线是否有短路现象,在检查的过程中,发现不管是连线还是接点都符合设计规定,电源和地线也没有短路现象。第三步是加电检查。给印制板加电时,我们检查到的器件的电源端符合要求的电压值+5v,同时接地端的电压为0。第四步是联机检查。利用系统和单片机开发系统用仿真电缆连接起来,发现联机检查完后以上是连接都正确、畅通、可靠。5.4.2 软件调试软件调试是通过对用户所编程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除的过程。其具体的操作步骤是:第一步是在具有汇编软件的主机上和用户系统连接起来,进行调试准备。第二步是单步运行。第三步是系统连调,即进行软件和硬件联合调试。经调试,软件运行良好。5.5 整机的调试与测试 在上面的调试工作做好以后,接下来就要做整机的调试与测试工作了,将程序烧录单片机以后,给整机加上+5v的电压,一开始不能实现预期的功能。经万用表检测发现at89c51单片机的31脚上没有加上+5v的电压而导致单片机不能正常的工作。排除故障后加电,系统能以正常的上电初始化了。但是我们在整机测试的过程中发现点阵在左移显示和上滚显示的时候速度很快,经过同组同学的讨论分析后,我们修改了程序中的延时程序,将显示1帧显示时间控制进行了适当的调整。最后达到了我们预期的目的。第6章 使用说明本次设计的用单片机控制的显示电路使用比较简单,操作方便。它主要是通过一个88点阵来显示汉字字符,通过不同的按键来选择控制字符的显示方式。在通电以后,显示屏全亮,随后进入逐字显示状态。按下复位键k1,系统自动复位,显示屏全亮,随后进入待命状态。按下功能键k2,系统就会进入上滚显示状态。按下功能键k3,系统就会进入左移显示状态。按下功能键k4,系统就会进入逐字显示状态。另外,我们可以通过改变限流电阻值的大小来改变显示字符的亮度,通过改变程序中字符数据来实现显示不同的字符,通过改变程序中的延时程序来控制字符移动速度的快慢。第7章 致谢 通过这次毕业设计,我遇到了很多以前在学习过程中没有遇到的问题,同时也巩固和温习了我以前学习的专业基础知识。例如,在实际制作的过程当中,通过对电路方案的确定,提高了我分析电路和计算电路中有关参数的能力。通过对电路软件的设计,提高了我对单片机编程的能力。通过对电路板的布线、电路板的制作和元器件的焊接,提高了我实际的动手能力。当然,在设计电路的过程中,由于自己知识的匮乏,也遇到了很多的困难。比如:在在本次设计制作过程中,我们一开始在题目理解上出现偏差,致使我们在设计初期遇到了很大的困难。在编程时由于疏忽没有写对操作码而造成软件的故障。还有就是在查阅相关资料的时候,常常不能有针对性地去查找,至使浪费了大量的时间。然而,在整个设计过程中,让我感触最深刻的是通过毕业设计不仅让我初步地了解到一个产品的开发流程。还培养了我们勇于探索、严格推理、用实践去检验理论的严谨治学态度。在论文的撰写上我花费了不少的时间,因为本设计涉及到的知识面非常广泛,所以在撰写论文时需要查找大量的资料。但是在查阅资料的过程中,又培养了我从文献、科学实验、生产实践、和调查研究中获取知识的能力,提高了我借助别人的经验,从别人的科研成果中寻求解决问题新途径的能力,同时,也让我认识到,要尊重他人的知识产权。在设计过程中,因为工作量较大,所以一定要分块进行,即每一阶段都有侧重点,然而,当中很可能会出现一些变化,这就要求你要根据条件变化而调整工作重点的应变能力。在设计中,涉及的知识面很广泛,能力要求包括:运用理论去处理问题的能力 ,实验能力,外语水平,计算机运用水平,书面及口头表达能力等。要想在短时间内在这么多方面都做的很好很不现实,这时团队的力量就显得很重要了。在共同合作的过程中,又提高了我对同学友爱团结、协作攻关,一起开拓进取的基本素质。最后,我想说的是,从开始接受课题、着手编程到上机调试,莫禾胜老师都给予了热情的指导,并提出了许多宝贵的建议,解决了不少问题,这里,我向指导老师致以衷心的感谢。另外,还要感谢那些给过自己启发与帮助的同学,正是指导老师与那些同学的帮助,我的毕业设计才得以顺利完成。参考文献151系列单片机设计实例 李光飞,楼然苗 北京航空航天大学出版社,2003年3月 2单片机应用系统设计入门向导与设计实例 韩志军,沈晋源 机械工业出版社,2005年1月3at89系列单片机原理与接口技术 王幸之,钟爱琴,王雷,王闪 北京航空航天大学出版社,2004年5月 4单片机原理及接口技术 朱定华 电子工业出版社,2001年4月5智能仪器原理及应用 赵茂泰 电子工业出版社,2004年2月6利用单片机89c52的一个并行io口实现多个led显示的一种简单方法国外电子元器件 刘东红 2002年第8期附录1源程序 1程序结构设计 (1)主程序 主程序用于对系统进行初始化,扫描按键的开关状态,由按键标志位值(00h、olh、02h)决定显示方式。(2)初始化子程序 用于对端口进行复位操作,将显示所用的字符数据从字符表中装入内存单元50h6fh中。字符表中的每个文字占用8个地址单元。 (3)显示子程序显示子程序由显示功能选择程序和显示控制程序组成。显示功能选择程序负责每次显示时的显示首地址(在b寄存器中)、每个字的显示时间(由30h中的数据决定)和下一个显示地址的间隔(由3lh中的数据决定)的处理。显示控制程序则负责对指定8个地址单元的数据进行输出显示,显示一个完整文字的时间约为8ms。在显示子程序中,1ms延时程序是通过调用按键扫描子程序来实现的。(4)按键扫描子程序用于将按键的状态扫描至20h单元的低3位(20h.0、20h.1、20h.2)中。同时在程序中利用按键扫描子程序代替显示子程序中的1ms延时程序,既可提高按键的响应速度,又可提高动态显示的扫描频率,减少文字显示时所出现的闪烁现象。2主要程序模块清单主程序代码如下:start: mov 20h,#00h ;20h内存单元清零 setb 00h ;20h.0位置1startl:lcall powerclr ;调用上电初始化子程序 jb 00h,fun0 ;20h.0位为1时,执行fun0 jb 01h,fun1 ;20h.1位为l时,执行funl jb 02h,fun2 ;20h.2位为1时,执行fun2ajmp start1;初始化程序代码如下:powerclr:mov a,#0ffh ;四端口置1 mov p1,a mov p2,a mov p3,a mov p0,a mov dptr,#tab ;取“电子设计”字符表首地址 clr a mov 21h,a ;21h24h内存单元清零 mov 22h,a mov 23h,a mov 24h,a mov r3,a ;r3寄存器清零 mov r1,#50h ;设置字符表移入内存单元首地址 mov r2,#20h ;设置查表次数(32次) clloop: movc a,a+dptr ;查表字符数据移入内存单元 mov r1,a mov a,r3 inc a mov r3,a inc r1 djnz r2,clloop ;判断是否已查表32次,若未完则跳转至clloop rettab: db 0efh,83h,0abh,83h,0abh,83h,0eeh,0e0h ;电 db 0ffh,0c7h,0efh,83h,0efh,0efh,0cfh,0efh ;子 db 0blh,0b5h,04h,0bfh,0b1h,0b5h,9bh,0a4h ;设 db 0bbh,0bbh,1bh,0aoh,0bbh,0bbh,9bh,0bbh ;计按键扫描子程序代码如下:keywork: mov p1,#0ffh ;置输入状态 jnb p1.0,keyl ;p1.0为0时(有键按下)转keyl jnb p1.1,key2 ;p1.1为0时(有键按下)转key2 jnb p1.2,

温馨提示

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

评论

0/150

提交评论