16*16点阵课程设计.doc

上传人:土8路 文档编号:11068250 上传时间:2021-06-25 格式:DOC 页数:28 大小:935.50KB
返回 下载 相关 举报
16*16点阵课程设计.doc_第1页
第1页 / 共28页
16*16点阵课程设计.doc_第2页
第2页 / 共28页
16*16点阵课程设计.doc_第3页
第3页 / 共28页
16*16点阵课程设计.doc_第4页
第4页 / 共28页
16*16点阵课程设计.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《16*16点阵课程设计.doc》由会员分享,可在线阅读,更多相关《16*16点阵课程设计.doc(28页珍藏版)》请在三一文库上搜索。

1、单片机课程设计 1616点阵姓名:马云班级:09电气3班学号:P091812934指导老师:马慧兰日期:二一二年一月二日星期一1616点阵课程设计第一章 绪 论1.1 设计课题背景知识单片微型计算机(single chip microcomputer)简称单片机,它是为各类专用控制器而设计的通用或专用微型计算机系统,高密度集成了普通计算机微处理器,一定容量的RAM和ROM以及输入/输出接口,定时器等电路于一块芯片上构成的。单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高

2、,灵活性好,开发较为容易。在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字,汉字显示屏也广泛应用到汽车报站器,广告屏等。所以研究LED显示有实用的意义。LED显示屏分为图文显示屏和视频显示屏,均由LED矩阵块组成。图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、电视、VCD节目以及现场实况。LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于交通运输、车站、商场、医院、宾馆、证券市场、工业企业管理等公共场所。 LED显

3、示屏可以显示变化的数字、文字、图形图像;不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。 LED之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。这些优点概括起来是:亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。现代LED的发展很快,很多研究领域非常已经深刻,实际情况是:很多相关的知识已经远远超出我们在校学生的能力范围,所以在此只是简单的研究一下用单片机驱动的LED显示移动的汉字。目的有三:一是亲手制作一个简

4、单实用的显示文字的LED点阵;二是通过制作LED点阵增强对LED点阵的了解和应用,以及复习巩固单片机知识;三是通过团队合作,增强团队合作的意识,为以后走向社会工作打下基础,并且增强了同学之间的友谊。汉字显示方式是先根据所需要的汉字提取汉字点阵(如1616 点阵),将点阵文件存入ROM,形成新的汉字编码;而在使用时则需要先根据新的汉字编码组成语句,再由MCU根据新编码提取相应的点阵进行汉字显示。不论显示图形还是文字,都是控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光。通常事先把需要显示的图形文字转换成点阵图形,在按照显示控制的要求以一定的格式形成显示数据。对于只控制通断的图文显示

5、屏来说,每个LED发光器件占据数据中的1位(1bit),在需要该LE D器件发光的数据中相应的位填1,否则填0。当然,根据控制电路的安排,相反的定义同样时可行的。这样依照所需显示的图形文字,按显示屏的各行各列逐点填写显示数据,就可以构成一个显示数据文件。显示图形的数据文件,其格式相对自由,只要能够满足显示控制的要求即可。文字的点阵格式比较规范,可以采用现行计算机通用的字库字模。组成一个字的点阵,其大小也可以有1616、2424、3232、4848等不同规格。用点阵方式构成图形或文字,是非常灵活的,可以根据需要任意组合和变化,只要设计好合适的数据文件,就可以得到满意的显示效果。因而采用点阵式图文

6、显示屏显示经常需要变化的信息,是非常有效的。图文显示屏的颜色,有单色、双色、和多色几种。最常用的是单色图文屏。单色屏多使用红色或橘红色或橙色LED点阵单元。双色图文屏和多色图文屏,在LED点阵的每一个“点”上布置有两个或多个不同颜色的LED发光器件。换句话说,对应于每种颜色都有自己的显示矩阵。显示的时候,各颜色的显示点阵是分开控制的。事先设计好各种颜色的显示数据,显示时分别送到各自的显示点阵,即可实现预期效果。每一种颜色的控制方法和单色的完全相同,因此掌握了单色图文显示屏的原理,双色屏和多色屏就不难理解了。为了吸引观众增强显示效果,可以有多种显示模式。最简单的显示模式是静态显示。与静态显示模式

7、相对应,就有各种动态显示模式,它们所显示的图文都是能够动的。按照图文运动的特点又可以分为闪烁、平移、旋转、缩放等多种显示模式。产生不同显示模式的方法,并不意味着一定要重新编写显示数据,可以通过一定的算法从原来的显示数据直接生成。例如,按顺序调整行号,可以使显示图文产生上下平移;而顺序调整列显示数据的位置,就可以达到左右平移的目的;刷新的时间控制,要考虑运动图形文字的显示效果。刷新太慢,动感不显著;刷新太快了,中间过程看不清。一般刷新周期可控制在几十毫秒范围之内。本次毕业设计中,由本人和钟桂,张维平组成一组,我负责硬件部分电路图的设计和软件部分程序的设计和调试,目的是应用简单方便的电路连接和程序

8、完成汉字的换色与移动。钟桂负责用设计好的点阵电路制作PCB电路板,包括完成PCB板的制作,张维平负责制作另外一块在面包板上连的点阵线连板子的焊接与调试,各人的分工不同只是工作侧重点的不同,大家是在一起互相学习互相帮助,共同完成设计任务。第二章 硬件设计2.1设计框图及介绍 LED点阵总体框图如图1.1所示,点阵电路大体上可以分成微机本身的硬件、显示驱动电路、控制信号电路三部分。控制电路部分包括一个51CUP和一些外围电路。在整个电路当中此控制电路部分相当于一个上位机,它负责控制整个电路以及相应的程序的运行、与PC机的串行通讯、以及给屏体电路部分发送命令。点阵显示屏体、以及它的行和列的各个驱动电

9、路。由于两部分的电路在制板时可以放到一起,所以可以将其字库放到控制电路部分使用串行通讯方式来与屏体电路部分进行数据和命令的传送。此显示电路采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。由行译码器给出的行选通信号,从第一行开始,按顺序依次对各行进行扫描(把该行与电源的一端接通)。另一方而,根据各列锁存的数据,确定相应的列驱动器是否将该列与电源的另一端接通。接通的列,就在该行该列点燃相应的LED;未接通的列所对应的LED熄灭。可通过扫描输出口的控制实现颜色的转换。图2.1 点阵显示的总体框图2.2 51系列单片机简介单片机(Microcontroller,又称微处理器)

10、是在一块硅片上集成了各种部件的微型机,这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。8051单片机的基本结构见图2.2。图2.2 8051单片机的基本结构8051是MCS-51系列单片机的一个产品。MCS-51系列单片机是Intel公司推出的通用型单片机,8051单片机系列指的是MCS-51系列和其他公司的8051衍生产品。这些衍生品是在基本型基础上增强了各种功能的产品。这些产品给8位单片机注入了新的活力,给它的开发应用开拓了更广泛的前景。8051系列的内部结构可以划分为CPU、存储器、并行口、串行口、定时器/计数器、中断逻辑几部分。(1

11、)中央处理器8051的中央处理器由运算器和控制逻辑构成,其中包括若干特殊功能寄存器(SFR)。算术逻辑单元ALU能对数据进行加、减、乘、除等算术运算;“与”、“或”、“异或”等逻辑运算以及位操作运算。ALU只能进行运算,运算的操作数可以事先存放到累加器ACC或寄存器TMP中,运算结果可以送回ACC或通用寄存器或存储单元中,累加器ACC也可以写为A。B寄存器在乘法指令中用来存放一个乘数,在除法指令中用来存放除数,运算后B中为部分运算结果。程序状态字PSW是个8位寄存器,用来寄存本次运算的特征信息,用到其中七位。PSW的格式如下所示,其各位的含义是:CY:进位标志。有进位/错位时CY=1,否则CY

12、=0。 AC:半进位标志。当D3位向D4位产生进位/错位时,AC=1,否则AC=0,常用于十进制调整运算中。F0:用户可设定的标志位,可置位/复位,也可供测试。RS1、RS0:四个通用寄存器组选择位,该两位的四种组合状态用来选择03寄存器组。OV:溢出标志。当带符号数运算结果超出-128+127范围时OV=1,否则OV=0。当无符号数乘法结果超过255时,或当无符号数除法的除数为0时OV=1,否则OV=0。P:奇偶校验标志。每条指令执行完,若A中1的个数为奇数时P=1,否则P=0,即偶校验方式。控制逻辑主要包括定时和控制逻辑、指令寄存器 、译码器以及地址指针DPTR和程序寄存器PC等。单片机是

13、程序控制式计算机,即它的运行过程是在程序控制下逐条执行程序指令的过程:从程序存储器中取出指令送指令存储器IR,然后指令译码器ID进行译码,译码产生一系列符合定时要求的微操作信号,用以控制单片机的各部分动作。8051的控制器在单片机内部协调各功能部件之间的数据传送、数据运算等操作,并对单片机发出若干控制信息。这些控制信息的使用专门的控制线,诸如PSEN、ALE、EA以及RST,也有一些是和P3口的某些端子合用,如WR和RD就是P3.6和P3.7,他们的具体功能在介绍8051引脚是一起叙述。(2)存储器组织8051单片机的存储器结构特点之一是将程序存储器和数据存储器分开,并有各自的寻址机构和寻址方

14、式,这种结构称为哈佛结构单片机。这种结构与通用微机的存储器结构不同,一般微机只有一个存储器逻辑空间,可随意安排ROM或RAM,访存时用同一种指令,这种结构称为普林斯顿型。8051单片机在物理上有四个存储空间:片内程序存储器和片外程序存储器、片内数据存储器和片外数据存储器。8051片内有256K数据存储器RAM和4KB的程序存储器ROM。除此之外,还可以在片外扩展RAM和ROM,并且各有64KB的寻址范围。也就是最多可以在外部扩展2*64KB存储器。8051的存储器组织结构如图2.3所示。图 2-3 8051存储器组织结构64K字节的程序存储器(ROM)空间中,有4K字节地址区对于片内ROM和片

15、外ROM是公用的,这4K字节地址是0000HFFFH。而1000HFFFFH地址区为外部ROM专用。CPU的控制器专门提供一个控制信号EA用来区分内部ROM和外部ROM的公用地址区:当EA接高电平时,单片机从片内ROM的4K字节存储器区取指令,而当指令地址超过0FFFH后,就自动的转向片外ROM取指令。当EA接低电平时,CPU只从片外ROM取指令。程序存储器的某些单元是保留给系统使用的:0000H0002H单元是所有执行程序的入口地址,复位以后,CPU总是丛0000H单元开始执行程序。0003H002AH单元均匀地分为五段,用做五个中断服务程序的入口。用户程序不应进入上述区域。8051的RAM

16、虽然字节数不很多,但却起着十分重要的作用。256个字节被分为两个区域:00H7FH时真正的RAM区,可以读写各种数据。而80HFFH是专门用于特殊功能寄存器(SFR)的区域。对于8051安排了21个特殊功能寄存器,每个寄存器为8位,所以实际上128个字节并没有全部利用。内部RAM的各个单元,都可以通过直接地址来寻找,对于工作寄存器,则一般都直接用R0R7,对特殊功能寄存器,也是直接使用其名字较为方便。8051内部特殊功能寄存器都是可以位寻址的,并可用“寄存器名.位”来表示,如ACC.0,B.7等。2.3 单片机最小应用系统电路设计图2.4 单片机最小应用系统原理图 注: 该最小系统由按键复位R

17、ESET电路、晶体振荡电路以及I/O接口电路组成。复位的实现通常用2种方式: 开机上电复位和外部手动复位,本设计用的是外部手动复位。电路图2.5如下:图2.5 单片机复位图AT89C51工作电压VCC=5V,其EA引脚需接高电平,5V电源电路如图2.6所示。图2.6 单片机电源原理图注: 该电源电路主要模块为IC7805,它能输出稳定的 5V电源,图中整流桥是将市电转变为直流电,电容起到虑波作用由7805的OUT引脚输出5V电压。2.4 LED点阵介绍88单色点阵共需要64个发光二极管组成,且每个二极管是放置在行线与列线的叉点上。本设计是一种实用的汉字显示屏的制作,制作的是单色点阵。直接使用了

18、51单片机实验箱256个高亮度发光管,组成了16行16列的发光点阵。实际使用时可以根据这个原理自行扩充显示的字数。对比下面的88单色点阵和88双色点阵可以看出,其实88双色点阵就是两块88单色点阵组合在一起的。要实现用两种颜色显示,只要在电路的设计中适当的连线就可以了。 88单色和双色点阵LED结构分别如下图2.8和2.9所示。 图2.7 88点阵外观及引脚图 图2.8 88单色点阵内部图 图2.9 88双色点阵内部图2.5 LED显示方式汉字显示屏用于显示汉字、字符及图像信息,在公共汽车、银行、医院及户外广告等地方都有广泛的应用。下面是简单的汉字显示屏的制作,由单片机控制汉字的显示内容。为了

19、降低成本,使用了四块88的LED点阵发光管的模块,组成了一个1616的LED点阵显示屏,如图2.10所示。在这里仅做了四个汉字的显示,在实际的使用中可以根据这个原理自行的扩展显示的汉字,下面是介绍汉字显示的原理。 图2.10 四块88的LED点阵组成1616的LED点阵LED驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。以1616点阵为例,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定的时间,然后熄灭;再送出第2行的数据并锁存

20、,然后选通第2行使其燃亮相同的时间,然后熄灭;.第16行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。显示数据传输采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响

21、到LED的亮度。采用串行传输中列数据准备和列数据显示的时间矛盾,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一行的列数据。为了达到重叠处理的目的,列数据的显示就需要有锁存功能。对于列数据准备来说,它应能实现串入并出的移位功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串行移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。LED点阵显示模块进行的方法有两种:(1)水平方向(X方向)扫描,即逐列扫描的方式(简称列扫描方式):此时用一个P口输出列码决定哪一列能亮(相当于位码),用另一个P口输出行码(列数据),决定该行上那哪个LED亮(相当于段码)。能亮的列从左到右扫描完

22、16列(相当于位码循环移动16次)即显示出一个完整的图像。(2)竖直方向(Y方向)扫描,即逐行扫描方式(简称行扫描方式):此时用一个P口输出决定哪一行能亮(相当于位码),另一个P口输出列码(行数据,行数据为将列数据的点阵旋转90度的数据)决定该行上哪些LED灯亮(相当于段码)。能亮的行从上向下扫描完16行(相当于位码循环移位16次)即显示一帧完整的图像。本设计应用的是第一种的扫描方法,即水平方向(X方向)扫描。每一个字由16行16列的点阵形成显示,即每个字均由256个点阵来表示,我们可以把每一个点理解为一个像素。一般我们使用的1616的点阵宋体字库,即所谓的1616,是每一个汉字在纵横各16点

23、的区域内显示的。汉字库从该位置起的32字节信息记录了该字的字模信息。事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素范围内的任何图形。我们以水平方向(x方向)扫描显示汉字的“江”为例来说明其扫描原理,每一个字由16行16列的点阵组成显示,如图下的,如果用8位的AT89S51的单片机来控制,由于单片机的总线为8位,一个字需要拆分成两个部分。一般我们把它分解成上部分和下部分,上部分由8*16的点阵组成,下部分也由8*16的点阵组成。在本例中单片机首先显示的是左上角的第一列的部分,即第0列的P00P07口。方向为P00到P07,显示汉字“江”的时候,P00到P04都是灭的,P05亮,即二进制

24、00001000,转换为16进制为08H,如图2.11所示。上半部分第一列完成之后,继续扫描下半部分的第一列,为了接线的方便,我们仍设计成由上往下的扫描方式,即从P27向P20方向扫描,从上图可以看到,这一列所有的都不亮,所以代码为00000000,16进制为00H,然后单片机转向上半部的第二列,除了P05亮,其他的都不亮,即为00000100,16进制为04H,这一列扫描完成之后继续进行下半部分的扫描,除了P21亮,其他的为不亮,为二进制00100000,即16进制20H。按照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“马”的扫描代码为 :08H,20H,06H,20H,

25、80H,7EH,63H,80H0CH,04H,00H,04H,20H,04H,20H,04H20H,04H,3FH,FCH,20H,04H,20H,04H20H,04H,20H,04H,00H,04H,00H,00H 图2.11 点阵显示原理图由这个原理可以看到,无论显示何种字体或图像,都可以用这种方法来分析出它的扫描代码从而显示在屏幕上。了解汉字的显示原理之后,那如何得到汉字的字模信息呢?现在有一些现成的汉字字模生成软件,可从网上下载汉字字库提取程序直接提取字库,如图2.12所示的为一种字模生成软件,软件打开后输入汉字,点击“检取”后,十六进制数据汉字代码即可以自动生成,把我们需要的竖排数据

26、复制到我们的程序即可。图2.12 汉字字模生成软件2.6 点阵的移动 1数据的上下移动(1)列扫描方式向上移动列向组字显示字符竖直方向的移动。若是列向组字,希望显示向上移动一个字符,第1次扫描从行码的点阵数组中取第116个数据,送行码输出口,对应于这16个数据,同时用列码输出口输出列码,分别控制扫描第116列。由于是列向组字(上高下低),扫描完成这16个数据后,第2次扫描的16个数据,应将原来的第1次扫描的16个行码每一个都循环右移一位,使显示的点都上移一行(如果是显示向下滚动则应循环左移),再进行扫描。如此,每进行下一次的扫描,把上一次的16个行码都循环右移一位,再进行扫描就实现了数据的向上

27、移动。也可以用字型的方法容易理解,以下的1616的LED显示一个字是8个字型,首先扫描的而是第一个字型,同样是16行,16列扫描,16次显示;完成一个字型后,再扫描第二个字型;完成第二个字型后,再扫描第三个字型以此类推,即可产生该文字向上移动的感觉当把第一个字型编码中,每行显示的数据都右移一位,以产生第二个字型编码,即可产生字符向上滚动的感觉。当第一个字符扫描完成后,就进行这样的调整动作,以产生第二个字型的编码。同样的,当第二个字型完成之后,就进行这样的调整动作,以产生第三个字型的编码。调整的动作是先将8个编码根据序填入储存器,例如第1行编码存入20地址,第2行编码存入21地址要进行上移调整时

28、,则从20地址数据开始,每笔数据都右移一位即可。 下图2.15仅以字型移动的方法画图。 图2.15 字形法上下移动示意图(2)行扫描方式上下移动行向组字显示字符竖直方向的移动方法1:延长数组法。如果是行向组字,希望显示向上移动的一个字符,第1次扫描从列码的点阵数组中取第116个数据,送列码输出口,对应于这8个数据,同时用行码输出口输出行码,分别控制扫描第116行。第2次扫描从点阵数组中取第217个额数据(第17个数据与地1个数据同),分别送列码输出口,对应于这16个数据,同时用行码输出口输出行码,仍分别控制地116行。第3次扫描从点阵数组中取第318个数据(第18个数据与地2个数据同)扫描;如

29、此就实现了字符的向上移动。方法2:数组数据“循环左移法”。实现数组数据循环左移的方法与上类似。也有:用数组数据循环左移子程序;不用子程序,而是用变量判断控制实现数组数据的循环左移。2.7 点阵颜色的转换图2.16 双色88点阵扫描接口图 为了简便起见,以下以88双色点阵为例介绍双色的转换原理。前面已经介绍过了,88双色点阵其实就相当于2个88单色点阵组合在一起,上图2.16的2个88单色点阵就相当于一个88的单色点阵。在设计电路的时候可以使显示信号从公用的引脚接入,接到89C51的一个PORT口,把显示红色的部分和显示黄色的部分分别接到89C51的另外两个PORET口,在编写程序的时候,使显示

30、红色的扫描信号输出就显示了红色,当显示黄色的扫描扫描信号输出时,就显示了黄色。2.8 LED阵列驱动电路正向点亮一颗LED,至少也得10到20毫安,若电流不够大,则LED不够亮!而不管是8051的输入还是输出端其高态输出电流都不是很高,不过12毫安而已。因此,很难直接高态驱动LED。这时候就需要额外的驱动电路,分别针对共阳极和共阴极LED阵列,有两种不同的驱动方式。针对输出态的不同,分为:高态扫描-高态显示,高态扫描-低态显示,低态扫描-高态显示和低态扫描-低态显示四种方式。下面针对设计中实际用到的一种驱动方式介绍一种:共阴型低态扫描-低态显示信号驱动电路。图2.17所示是针对共阴性LED阵列

31、而设计的驱动电路,在这种驱动电路采用低态扫描,也就是任何时间只有一个高态信号,其他则为低态。一行扫描完成之后,再把高态信号转到临近的其他行。扫描信号经限流电阻接到PNP晶体管的基极,晶体管的集电极接地,射极则连至LED点阵的列引脚,若要同时点亮该列的16个LED,则晶体管的电流必须大于200毫安才行。常用的2N3904之类就可以达到当低态的列扫描信号输入晶体管的基极后,该晶体管即为正向,而产生电流,即可使该列的LED具有点亮的条件所要的显示信号连接到一个PNP晶体管的基极,而该晶体管的射极连接到VCC,同样的,当低态的显示信号输入时,晶体管的集电极电流将流入行LED的阳极,即可点亮该行的LED

32、。如图2.17所示. 图2.17共阴型低态扫描-低态显示信号驱动电路若要并接多个LED阵列,如连接使用4个88LED阵列,连接成1616LED阵列,则一个扫描信号同时驱动两个LED阵列。如在本设计中要显示的字比较大,用一个88的点阵无法显示完整,这就需要用四块88的点阵组成一块1616的点阵,这样就可以显示完整的汉字了,若要并联多个88的LED组成1616的点阵,则一个扫描信号同时要驱动两行的LED。如下图2.18所示。 图2.18 1616的点阵驱动图这时候就需要靠锁存器(74LS373)将这两组显示信号锁住,此处的锁存器是以低态输出的,其输出的电压可达24毫安,足以驱动一个LED;若嫌不足

33、,可以选用74A373其输出的电压可达48毫安,当74LS373得G脚为高态时,数据可以从输入端传输到锁存器中;G脚为低态时,数据被锁住,不会随输入端而变。另外OC脚为输出控制引脚,当OC脚为高态时,输出呈现高阻抗;OC为低态时,数据会由锁存器输出。在这个电路之中驱动的扫描信号总共有16条,如果直接由8051输出,将占用2个PORT口,浪费了宝贵的资源,不太理想,在此使用的是一个4对16的译码器 (74LS154),这个译码器是将输入的16进位码解码输出低态的扫描信号。输出的低态扫描信号可直接接到PNP晶体管的基极,如果太大的话也可以先经过限流电阻再接到PNP晶体管的基极,信号最后经过晶体管的

34、放大后即可推动16个LED点阵了。第三章 软件设计3.1 单片机延时子程序延时程序在单片机编程中使用非常广泛,也很重要,在本毕业设计的程序中用到了延时子程序,所以在此详细的叙述一下。在弄清延时程序指令的用法之前,要清楚的了解延时程序的基本概念,机器周期和指令周期的区别和联系、相关指令的用法等。 我们知道程序设计是单片机开发最重要的工作,而程序在执行过程中常常需要完成延时的功能。例如在本设计中,行向的扫描要控制每行的扫描时间,还有所有的字移动有一定的时间间隔,而在所有的字移动一遍结束的一瞬间到下一遍移动开始的一瞬间要有延时,这时的延时可以和移动的时间相同以保持移动的连贯性,也可以不同作为每次从头

35、开始的停顿,在上述就可以通过延时程序来完成。 1. 机器周期和指令周期 (1)机器周期是指单片机完成一个基本操作所花费的时间,一般使用微秒来计量单片机的运行速度,51单片机的一个机器周期包括12 个时钟振荡周期,也就是说如果51 单片机采用12MHz 晶振,那么执行一个机器周期就只需要1s;如果采用的是6MHz 的晶振,那么执行一个机器周期就需要2 s。 (2)指令周期是指单片机执行一条指令所需要的时间,一般利用单片机的机器周期来计量指令周期。 在51 单片机里有单周期指令(执行这条指令只需一个机器周期),双周期指令(执行这条指令只需要两个 机器周期),四周期指令(执行这条指令需要四个机器周期

36、)。除了乘、除两条指令是四周期指令,其余均 为单周期或双周期指令。也就是说,如果51 单片机采用的是12MHz 晶振,那么它执行一条指令一般只需 12 微秒的时间;如果采用的是6MHz 晶振,执行一条指令一般就需24微秒的时间。以12MHZ晶振为例,指令周期、机器周期与时钟周期的关系是: 指令周期:CPU执行一条指令所需要的时间称为指令周期,它是以机器周期为单位的,指令不同,所需的机器周期也不同。 时钟周期:也称为振荡周期,一个时钟周期晶振的倒数。 MCS-51单片机的一个机器周期=6个状态周期=12个时钟周期。 MCS-51单片机的指令有单字节、双字节和三字节的,它们的指令周期不尽相同,一个

37、单周期指令包含一个机器周期,即12个时钟周期,所以一条单周期指令被执行所占时间为12(1/12000000)=1s。 了解以上概念后,那么可以依据单片机器件手册中89C51的指令执行周期和其所用晶振频率来完成需要精确延时时间的延时程序。 2. 延时指令 在单片机编程里面并没有真正的延时指令,从上面的概念中我们知道单片机每执行一条指令都需要一 定的时间,所以要达到延时的效果,只须让单片机不断地执行没有具体实际意义的指令,从而达到了延时 的效果。 (1)数据传送指令 MOV 数据传送指令功能是将数据从一个地方复制、拷贝到另一个地方。 如:MOV R7,#80H ;将数据80H 送到寄存器R7,这时

38、寄存器R7 里面存放着80H,就单这条 指令而言并没有任何实际意义,而执行该指令则需要一个机器周期。 (2)空操作指令 NOP 空操作指令功能只是让单片机执行没有意义的操作,消耗一个机器周期。 (3)循环转移指令 DJNZ 循环转移指令功能是将第一个数进行减1 并判断是否为0,不为0 则转移到指定地点;为0 则往下执行。 如:DJNZ R7,KK ;将寄存器R7 的内容减1 并判断寄存器R7 里的内容减完1 后是否为0,如果 不为0 则转移到地址标号为KK 的地方;如果为0 则执行下一条指令。这条指令需要2个机器周期。 循环转移指令(DJNZ )除了可以给定地址标号让其跳转外,还可以将地址标号

39、改成$,这样 程序就跳回本指令执行。例如: DJNZ R7,$ ;R7 内容减1 不为0,则再次执行本指令;为0 则往下执行,当R7 的值改为10 时,则执行完该条程序所需的时间为2*10=20 s。利用以上三条指令的组合就可以比较精确地编写出所需要的延时程序。下面是本设计的程序中延时程序的计算:MOV R3,#200; 1D1: MOV R5,#250; 1F1: DJNZ R5, F1; 2*R5DJNZ R3,D1; 2*R3+(1+2*R5)*R3RET 2上面这个子程序共有四条指令,现在分别就每一条指令 被执行的次数和所耗时间进行分析。 第一句:MOV R3,#200 在整个子程序中

40、只被执行一次,且为单周期指令,所以耗时1s 第二句:MOV R5,#250 从看到只要R3-1不为0,就会返回到这句,共执行了R3次,共耗时200s 第三句:DJNZ R5,F1 只要R5-1不为0,就反复执行此句(内循环R5次),又受外循环R3控制,所以共执行R3*R5次,因是双周期指令,所以耗时2*R3*R5s。所以精确延时时间为:1+(1200)+(2250200)+(2200)+2 =(2*250+3)*200+3 =100603s 100ms =0.1s8个字都下移完?3.3 PROTEUS仿真Proteus仿真时,单片机需要加载程序,加载程序为.HEX文件。本设计利用Keil Vision2, 在新建Keil项目时选择AT89C52单片机作为CPU,将源程序导入,在“Options For Target”对话窗口中,选中“Output”选项中的“Create HEX File”,编译链接后就可以生成.HEX文件。在Proteus ISIS中,选中AT89C51并单击鼠标左键,对AT89C51进行设置,设置单片机时钟频率为12MHz,按照正确的文件路径加载.HEX文件。对单片机设置完毕后

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1