基于C51单片机的LED点阵显示屏的设计.doc

上传人:可****阿 文档编号:30707653 上传时间:2022-08-06 格式:DOC 页数:32 大小:10.36MB
返回 下载 相关 举报
基于C51单片机的LED点阵显示屏的设计.doc_第1页
第1页 / 共32页
基于C51单片机的LED点阵显示屏的设计.doc_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《基于C51单片机的LED点阵显示屏的设计.doc》由会员分享,可在线阅读,更多相关《基于C51单片机的LED点阵显示屏的设计.doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、烟台大学毕业论文(设计)摘要 当今社会,广告宣传已经成了人们生活中随处可见并重要的一部分。广告的媒介除了我们常见的报纸、书刊、电台和网络之外,更常见的就是LED点阵广告屏。这种屏幕具有经济实惠、对环境要求小、节省能源、亮度高、直观等特点,成为了现在常见的一道风景。不管是大公司的外景宣传,还是小门店的产品介绍,LED点阵屏随处可见。彩色点阵屏已经渐渐取代了露天的大荧幕,成为常见的广告宣传手段。与此同时,巨大的信息量和美观性也为丰富人们的日常生活、点缀城市起到了至关重要的作用。本设计便为基于C52单片机的简单LED点阵显示屏,通过C52控制行列芯片进行动态扫描,显示规定的汉字或者图形。也可以通过对

2、C52内部烧录改变所需显示的内容。该设计具有可扩展性,可以扩充LED点阵屏幕的数量来同时显示更多的汉字。关键词 单片机;LED点阵屏;信息显示;广告Abstract: Nowadays society, advertising has became ubiquitous in peoples lives and the important part. In addition to our common advertising media newspapers, books, radio and online, the more common is the LED dot matrix scre

3、en advertising. This screen has an economic benefit, environmental requirements of small, energy saving, high brightness, visual characteristics, a common landscape now. Regardless of the location of large companies is publicity, or small stores Products, LED dot matrix display everywhere. Color dot

4、 matrix display has gradually replaced the open-air big screen, a common means of advertising. At the same time, we can add more LED dot matrixes to display more informations.Key words: SCM;LED dot matrix display;Information display;Advertisement目 录1 绪 论11.1 本课题的研究意义及必要性11.2 LED的现状和发展趋势12 硬件总体设计32.1

5、 主要设计框图及思路32.2 所需要芯片及各芯片功能介绍32.2.1各主要芯片简单介绍32.3 各模块电路图设计及原理72.4 系统的软件设计82.4.1 KeiluVERSION、protues介绍82.4.2 动态扫描及取字库原理8图2.12 程序流程图93 详细设计103.1 电路详细设计104 程序实现144.1 主要显示程序原理及实现144.1.1动态行扫描程序框图144.1.2实现显示内容的左滚动原理154.1.3单片机延时子程序185 设计结果测试205.1 Proteus和Keil仿真结果20结 束 语21致 谢22参考文献23附录A 部分代码24附录B 总电路图291 绪 论

6、1.1 本课题的研究意义及必要性单片机是一种集成微处理芯片,高密度集成了普通计算机的微型处理器,具有8kB的ROM和P0、P1、P2、P3输入输出接口,且集成了定时器等电路。自其问世以来就因性价比极高而广受欢迎:其因价格低廉、功能强大、对环境要求低、编程简易方便、灵活而广泛应用在一些工控机和智能化仪表装置里面。LED点阵显示屏就是其一种常见的运用。自从改革开放以来,人们的生活水平日渐提高。纯粹的物质需求已经不能满足人们的需要。人们对信息的渴求也越来越强烈。广告已经成为人们获取信息重要的一部分。LED显示屏有图文显示屏和视频显示屏两种。其中图文屏可以显示单色或者彩色的简单图形、文字,广泛应用在医

7、院、火车站、学校教学楼、小型门店等场所;视频显示屏通过上位机控制,能实时的显示视频、实况转播等,多用在足球场、大型会客厅等场所。而且,不同尺寸规格和亮度的LED为室内和室外信息显示提供了多种选择。LED之所以收到广泛的欢迎和应用,跟它的多项优点是分不开的。其概括起来主要是:成本低、体积小、亮度高、设计简单、需要电压低、功耗小、耐冲击、稳定、寿命长。现在LED正在向着更小体积、更大点阵密度、更多色彩和更小成本发展。由于LED技术的快速发展,有很多已经超出在校生所接触到的知识范围,所以本设计旨在利用最简单主要的单色屏显示演示LED屏的工作过程和原理,并实现其显示内容的滚动效果。可以通过更改程序中的

8、点阵字库来改变所需要显示的内容。且该设计具有较好的扩展性,要使其能同时显示更多的内容,只需要再接通上相应数量的点阵屏模块即可。还可以通过修改烧录在单片机ROM的程序内容来实现更多的动态效果如缩放、文字切入等。1.2 LED的现状和发展趋势自从1907年HjRound发现了金刚砂通电之后可以出现发光的现象1,并继此由后人发明了发光二极管,已经过去了一个多世纪。一个多世纪以来,LED技术得到了很大的发展。早先的LED是单个的发光管,结构比较简单。通过单向导电的方式点亮发光。它由阳极脚(1)、阴极脚(2)、内部芯片(3)和环氧树脂保护外壳组成。外壳不仅可以起到保护芯片的作用,还可以透光聚光,使LED

9、显示效果更强。早期LED外形如图1.1所示。图1.1 发光二极管(LED)外形图随着科技的发展,人们已经不能满足于只能简单用作电源通断指示、普通照明用的发光二极管。随着要求的不断升高,更直接更方便的LED显示期间应运而生。如共阴极数码管、电平管、字符管等的外形虽然各不相同,他们的根本原理是相同的,即通过排列不同形状不同颜色的LED,用电路控制不同的点亮方式显示内容。从此,LED产品的应用更加广泛。不论是出租车计价器,投票计数牌、昂贵仪器的显示面板,都可以看到它们的身影。LED点阵通过将一定数量的发光二极管通过矩阵的形式排列在一起,用类似我们现在的液晶显示器的显示方式显示一定像素内字符或图片。常

10、见的点阵数量有57、44、88、1616等,可以通过排列组成更大的点阵。因为采用不同颜色的外壳和制作材料,LED点阵可以显示多种颜色,常见的有红色、蓝色、绿色。通过不同颜色的通断、灰度搭配,可以显示几乎所有我们常见的颜色。这也是近些年来LED被广泛运用的原因之一。相信在未来,LED照明和现实技术将会得到更大的进步和发展,继而有取代常规大功耗室外现实设备的趋势。2 硬件总体设计2.1 主要设计框图及思路本设计主要硬件电路框图如图2.1所示。单片机最小系统 行驱动 列驱动 LED点阵模块串口电源EEPROM图2.1 硬件电路框图电路主要可以分为通信、电源、驱动、控制四个部分。其中通信口负责从上位机

11、与单片机进行数据传输;电源负责给整个电路供电;驱动分为行驱动和列驱动,LED点阵的每一个同名行都有一个行驱动电路,通过逐行扫描的方式动态产生低电平,行驱动芯片一般由译码器担当;列驱动电路通过对字库数据进行锁存、在需要燃亮的列上产生一个高电平,与行驱动产生的低电平形成一个电流通路,使LED发光。2.2 所需要芯片及各芯片功能介绍现将实现本电路所需要的主要芯片及起到作用列举,如表2-1所示:表2.1 电路中所需要的芯片器件名称在电路中起到的作用所需要的数量STC89C51主要器件,控制整个电路1红色3mmLED点阵显示模块874LS154行驱动芯片174HC595列驱动芯片4MAX232通信控制1

12、24C256数据存储12.2.1各主要芯片简单介绍 STC89C52289C52单片机提供以下标准功能:内部8KB的闪存空间,256字节的内部RAM,32个输入输出口,3个16位定时计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。其芯片结构如图2.2所示:图2.2 89C52的引脚图 LED点阵本设计采用的是红色3mmLED 88点阵,其内部原理是64个红色发光二极管8行8列分布,并将同名行的行引脚和同名列的列引脚依次相连(如图2.3-a所示),通过在行脚加上一个低电压、列脚接入一个+5V电压而引燃交叉点上的LED(如图2.3-b所示)。 a b图2.3 LED点阵

13、内部构造及点亮原理以单色88LED点阵为例,背面16条引脚的排列顺序是如图2.3-b所示的。其中引脚上字母a-h依次表示8行的行引脚,引脚上数字1-8依次表示的是从右往左数的8列的列引脚。在使用之前,需要用万用表提前测试好引脚的行列分布。若想自行扩充LED点阵的数量,只需准备若干个相同点阵屏,将所有屏的同名行依次连接、所有同名列依次连接。连接方法如图2.4所示(注:在此处为了连接方便,定义图中LED点阵的左手边引脚从上往下依次是1-8行,右手边引脚从上往下依次是1-8列):图2.4 扩展LED数量的接法 74LS15474LS154是4线-12线译码器,其引脚图如图2.5所示:图2.5 74L

14、S154的引脚图当其选通端G1和G2均为低电平的时候,可以将地址端A、B、C、D数据的二进制编码在某一个输出端以低电平译出。如:当G1和G2均为低电平,A、B、C、D口的二进制编码为0101(译为十进制为5)时,输出口5将为低电平,其他输出口为高。 75HC59574HC595是8位串行输入、并行输出或并行输出移位寄存器,具有高阻态、关断状态。其中,脚QA-QH为八位并行输出端,可以将芯片寄存器中的数据并行输出,用来控制数码管的8个端口;QH为级联输出端,用来接下一个595芯片的输入;SI是串行数据输入段,用来接收串行数据;/SRCLR的作用是低电平时清空移位寄存器的数据,一般接VCC;SRC

15、K脚在上升沿的时候将数据寄存器中的数据移位,可以用来实现LED显示内容的滚动;RCK脚为上升沿时将移位寄存器的数据给数据存储寄存器,可以用来更新需要显示的数据。595芯片的引脚图如图2.6所示:图2.6 74HC595的引脚图 MAX232MAX232是通信电路的主要部分。其芯片主要分为三部分,第一部分是电荷泵电路,有1-6脚和4只电路组成。其功能是产生+12V和-12V两个电源,提供给串口电平;第二部分是数据转换,由7-13脚构成两个数据通道。其中11-14脚为第一数据通道,7-10脚为第二数据通道,TTL/CMOS数据从T1IN、T2IN输入转换成RS232数据从T1OUT、T2OUT送到

16、DB9插头,DB9插头的RS232数据从R1IN、R2IN转换成TTL/CMOS数据后从R1OUT、R2OUT输出;第三部分是由15-16脚组成的供电部分。其引脚图如图2.7所示:图2.7 MAX232引脚图 24C25624C256为EEPROM串行CMOS芯片。其A0、A1、A2口为器件选择地址,SDA口为串行数据地址,SCL口为串行时钟地址,WP为写保护。单片机89C51通过读SDA和SCL脚读取24C256中的内容,并将其显示于LED显示屏上。也可以通过PC机将编辑好的数据内容下载到24C256芯片内。其引脚图如图2.8所示:图2.8 24C256引脚图2.3 各模块电路图设计及原理此

17、设计的电路图可以分为LED驱动电路、通信电路和数据存储电路。其中,行驱动电路如图2.9-a所示,通过单片机的P20-P23口输出递增数据,对74LS154进行控制,使其16个输出口可以依次输出低电平,对连接的LED进行逐行扫描。154的使能端之一G1接单片机的P2.7,如果需要对显示进行“消隐”只需拉高P2.7即可,可以防止LED点阵在显示的时候出现“鬼影”现象。列驱动电路如图2.9-b所示,74HC595的串行数据输入端(SI)接单片机的RXD,数据移位端(SRCK)接单片机的TXD口,当单片机串口以方式0输出时,可以将数据输入到595芯片的锁存器中。其主要流程是:首先将为数据送到单片机的R

18、XD,在TXD上产生一个上升沿,595中原有的数据进行移位,高位依次左移,并空出寄存器的最低位并接收RXD上的为数据。595的RCK接单片机的P1.6口,当需要将595中的数据锁存显示的时候,只需要将P1.6拉高。 a b图2.9 驱动电路通信电路由MAX232组成,单片机的串口通过MAX232将TTL电平转换成EAI适合的电平3,实现了单片机和PC机之间的通信。其原理图如图2.10所示:图2.10 MAX232组成的通信电路存储电路主要由24C256组成,可以用SDA口进行双向数据传送,可以传送、接受地址和所有数据。单片机89C51通过读SDA和SCL脚读取24C256中的内容,并将其传送给

19、列驱动的锁存器,继而显示于LED显示屏上。其原理图如图2.11所示:图2.11 数据存储电路2.4 系统的软件设计2.4.1 KeiluVERSION、protues介绍Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统4,配合英国Labcenter electronics公司出版的Proteus,它们可以帮助人们实时的仿真一些以前需要通过硬件才能实现的程序和电路,大大方便了开发者的工作。在proteus里,可以通过添加硬件芯片和对其引脚进行连线来制作仿真电路,而且它与现实中制作的电路有相同的仿真效果,通过一些仪表、屏幕,可以直观的观察到电路运行结果

20、。从事单片机系统开发者还可以在keil中新建工程编制程序,用它将程序编译成机器语言,配合proteus实现更多的工作和更好的效果。2.4.2 动态扫描及取字库原理在该设计中,采用了动态行扫描的方式来点亮LED点阵。LED点阵并不能同时点亮多行,但是为了显示出同时点亮一整个屏幕的效果,我们就需要对其进行“扫描”。我们以“赵”字为例,当154选通点阵的第一行的时候,4块88点阵中左上角块第一行只有第三个点是燃亮的(从右往左),那么这一行的行数据就是“00100000”,转换成十六进制就是08H;右上角的点阵第一行没有亮点,即行数据为“00000000”,转换成十六进制为00H。在显示这一行的时候,

21、单片机同时向595芯片的数据寄存器中输送串行数据以节省时间。然后154的G1脚拉高进行消隐,即熄灭所有的LED。完成消隐之后595芯片数据寄存器中的数据移入输出寄存器,同时154的G1口拉底、输出变为第二行,燃亮LED点阵第二行的数据。同上可以得到,“赵”字第二行的数据为08H,08H。当十六行全部扫描完毕,“赵”字的第一帧也显示完。这整个过程耗时很少,由于人眼睛视觉暂留的现象,会感到“赵”字的每一行是同时点亮的。同时我们可以通过上述方法得到“赵”字字库的所有数据即:08H,00H,08H,08H,08H,88H,7EH,88H,08H,50H,0AH,50H,FFH,20H,08H,20H,

22、28H,50H,2EH,48H,28H,8CH,39H,04H,48H,00H,44H,06H,83H,FCH,00H,00H此整个显示流程用框图表示如图2.12所示:图2.12 程序流程图3 详细设计3.1 电路详细设计该设计的详细电路图如图3.1所示。其中,部分1为单片机最小系统,部分2为行驱动电路,部分3为列驱动电路,部分4为LED显示模块。图3.1 详细电路设计 单片机最小系统单片机最小系统由复位电路、晶振电路以及I/O接口电路组成。其中,复位通常有两种方式实现:开机上电复位和手动复位。本设计采用的是开机上电复位。手动复位设计有一个复位按键,其原理图如图3.2所示:图3.2 单片机手动

23、复位电路STC89C52的工作电压时+5V,其EA引脚需要接通Vcc。5V供电电路图如图3.3所示:图3.3 单片机5V电源接线图 行驱动电路详细介绍。在实际的电路焊接中,跟用软件仿真其实是有一定的差别的。在仿真中,定义好了引脚的电平高低,输出就一定是稳定的+5V或者是0V。但是在实际的电路中,会存在导线电阻、电压不稳定等等一系列的不确定因素,所以在电路的设计和焊接过程中就需要注意这些问题。比如74LS154芯片的输出,即使译出之后的结果是只有一个引脚是0V,其他的是Vcc,但也总会出现本该是Vcc的引脚却是有2.3V左右的电压的情况。这种情况将导致在高电平的引脚仍会跟列线产生一个电压差,虽然

24、这个电压压降不足5V,但是也足以点亮交叉点上的LED,产生“灰度”点亮的状况。在实际应用中非常影响设计结果的美观性。所以就要在每一行引脚后面加一个NPN的三极管起到放大和稳定电压的作用。也且,不管行引脚和列引脚,都要增加限流电阻以保证电路的安全稳定。实际电路中的行驱动如图3.4所示:图3.4 实际电路图中的行驱动 列驱动电路同行驱动电路一样,列驱动电路在实际中也是需要加限流电阻来保证稳定的。其电路如图3.5所示:图3.5 列驱动电路的限流电阻、LED点阵显示模块在本论文的第二部分已经简单介绍过LED动态扫描的原理。LED点阵扫描的方式有两种:(1) 竖直方向扫描,即如第二部分所描述的那样,用一

25、个P口输出的低电平的行码决定哪一行能亮,另一个P口则负责输出高电平的行码。能点亮的行从上到下扫描完16行,显示完一个完整的图像或字符。(2) 水平方向扫描,即逐列扫描方式,与竖直方向扫描相反,由一个P口输出高电平的列码决定哪一列可以点亮,然后由另一个P口输出低电平的行码用以点亮该列的相应点。逐一扫描完16列,显示完整内容。不论哪一种扫描方式,其主要原理都是相同的:即一个负责一次选择点亮行(列),另一个输入此行(列)的字库数据。以列扫描方式为例,完整扫描一个字的过程如图3.6所示:图3.6 点阵列扫描示例由这个原理可以知道,无论是需要显示何种文字或者图形,只要是在点阵的像素之内都是可以实现的。如

26、果字模完全是由人工计算的话是一个很浩大的工程。那么了解了显示原理之后如何简单得到汉字的字模信息呢?现在有很多现成的字模提取软件,可以免费从网上下载使用。如图3.7所示就是一款多功能的字模生成软件,打开软件之后直接输入汉字,选择好扫描方式和汉字显示方向、字体之后,点击“检取”就可以得到字模数据,把我们需要的数据复制到代码中即可。图3.7 检取字模用的软件4 程序实现4.1 主要显示程序原理及实现4.1.1动态行扫描程序框图本设计采用动态行扫描的方式,通过74LS154进行行数据的输送,74HC595进行列数据(即字库数据)的并行输出。其主要原理图如图4.1所示:开始154G1拉高关显示2.0口输

27、出选通数据,选通154某一行输出单片机将列数据最高位依次给595芯片寄存器N8位传完?Y595数据锁存开显示N1帧显示完?Y选通下一行图4.1 动态行扫描框图动态行扫描代码分析:MOV R5, #16;/一共需要扫描16行 MOV OFFSET, #00H;/数据指针偏移量清0MA1: CALL TAKE;/调用子程序,用来取数 SETB EN;/拉高G1口,关显示 DEC p1;/将行值自加一 CLR RCK; SETB RCK;/将595寄存器内容给锁存器 CLR EN;/开显示 DJNZ R5, MA1;/如果没有显示完16行,则继续显示 DJNZ SPEED, MAIN TAKE子程序

28、分析MOV R7, #9;/取出半角字数据的个数 MOV R0, #D_F;/数据缓冲区首地址存入R0 PUSH DPH PUSH DPL;/数据保护 MOV A, OFFSET;/将查表偏移给寄存器AQUSH1: ADD A, DPL MOV DPL, A MOV A, DPH ADDC A, #00H MOV DPH, A CLR A MOVC A, A+DPTR;/查表取数 MOV R0, A;/存储数据 INC R0;/修改地址指针 MOV A, #16;/修改查表偏移量 DJNZ R7, QUSH1;/数据未取完继续 POP DPL POP DPH INC OFFSET;查表偏移量+

29、1 4.1.2实现显示内容的左滚动原理由于屏幕尺寸的限制,此屏幕能够同时显示的内容十分有限。要使其在有限的屏幕内显示更多的信息,就需要信息的滚动显示。该设计实用的是内容左滚动方式。其实现原理框图如图4.2所示:图4.2 显示内容左移程序实现显示内容左移程序的原理是:设定程序的起始地址是00H,并定义F初始值为0,以准备选择点阵扫描出口。定义了查表偏移量A,设为00H的初始位置,再下面的74LS154扫描指针的初值设为00H,从第1个拐角开始扫描,即第0行。从M3开始程序的循环,因为F的初值是0,所以先从P1口输出扫描信号。扫描信号输出后,取码指针先去的第一个码送到点阵的上半部分,打开上部分点阵

30、的74LS595锁存器关闭下面部分74LS595锁存器,使点阵的上半部分点亮。然后指针自加一,将上下点阵开关轮换,即打开下面的595锁存器,关闭上面的595锁存器。取相邻的码送到点阵的下半部分,紧挨着的延时程序是设定每列扫描的时间: MOV R3,#50; DJNZ R3,$;延时时间为:1+(2*50)=101us0.1ms再下面的一行代码:“DJNZ R6,M3;”由此循环可以计算出显示一个一整屏的时间为:0.1ms*16=1.1 ms,再下面的“DJNZ R1,M2;”规定了每个屏幕的停留时间也即字符间隔多长时间向左移动一列,由此循环可以计算出此时间为:0.1ms*16*65=104ms

31、=0.1s。每当显示内容向左移动一位,取字库的指针自动加2去找寻下一段字库代码,。最后的部分代码:XRL A,#128;NZ M1;CPL F0; JMP START;此段代码的意思是:在所有的显示内容全部左移完毕之后,再从第一个显示内容开始重新移动。在此设计中用到了4个全角字符,一共128个字库段,查表偏移量从0开始,每次加2,到128时循环结束,改变F的状态,跳到程序的最上面开始部分,重新移动自负。在本论文的之前已经提到过,本设计具有可扩展性。可以增加代码中的字库数量来增加需要显示的内容,需要的只是将字库内容拷贝到本程序的字库表中,并改变程序中相应字库数量的变量和较少其他内容。此程序最终的

32、显示效果应该是:开始停0.1秒,从右边进入汉字,并缓缓向左移动,移动的速度为每0.1秒一下。 在主程序的开始的延时作为一次移动的末尾时到开始下一次重复移动开始之间的停顿,和字符移动的时间间隔相同,保持了移动的平稳连贯性。依此循环4.1.3单片机延时子程序延时程序在单片机中的应用十分广泛且至关重要。本程序中用到了延时子程序。在弄清楚延时程序的用法之前需要了解其原理,以及机器周期和指令周期的区别、联系等。(1) 机器周期是指的单片机完成一个基本的操作所需要的时间,一般用微妙级来计算。52单片机的一个机器周期包括了12个时钟振荡周期,也就是说如果52单片机采用的是12MHz的晶振,那么执行一个机器周

33、期就需要1uS;如果采用的是24MHz的晶振,那么执行一个机器周期就需要0.5uS。(2) 指令周期指的是单片机执行一条指令所需要的时间,一般知道一条指令需要多少个机器周期之后利用机器周期来计算指令周期。在52单片机中有单周期指令(即执行这条指令需要一个机器周期)、双周期指令(即执行这条指令需要两个机器周期)、四周期指令等。除了乘法和除法两条指令为4周期指令之外,其他的一般都为单周期或双周期指令。也就是说,如果52单片机采用的是12MHz的晶振,那么它执行一条指令一般就需要12微妙的时间。(3) 时钟周期也叫震荡周期,指的是晶振震荡一次所需要的时间,此时间是晶振参数的倒数。单片机中并没有严格意

34、义上真正的延时指令。从上面所介绍的可以知道,单片机每执行一个指令就需要一定的时间。所以想要达到延时的效果,只需要让单片机不断执行一些没有实际意义的指令就可以。(1) 数据传送指令 MOV 数据传送指令功能是将数据从一个地方复制、拷贝到另一个地方。如:MOV R7,#80H ;将数据80H送到寄存器R7,这时寄存器R7 里面存放着80H,就单这条 指令而言并没有任何实际意义,而执行该指令则需要一个机器周期。 (2) 空操作指令 NOP 空操作指令功能只是让单片机执行没有意义的操作,消耗一个机器周期。 (3) 循环转移指令 DJNZ 循环转移指令功能是将第一个数进行减1 并判断是否为0,不为0 则

35、转移到指定地点;为0 则往下执行。 如:DJNZ R7,KK ;将寄存器R7 的内容减1 并判断寄存器R7 里的内容减完1 后是否为0,如果 不为0 则转移到地址标号为KK 的地方;如果为0 则执行下一条指令。这条指令需要2个机器周期。 循环转移指令(DJNZ )不仅可以让程序跳转到其他行,还可以将地址标号改成$使其跳转到本条指令。例如: DJNZ R7,$ ;R7 内容减1之后如果不为0,则再次执行本指令;为0 则往下执行,当R7 的值改为10 时,则执行完该条程序所需的时间为2*10=20 s。利用循环跳转指令往复循环就可以实现长时间的延时。利用上面的延时指令通过计算就可以精确的控制延时时

36、间。本设计中的延时程序如下:MOV R3,#200;D1: MOV R5,#250;F1: DJNZ R5, F1;DJNZ R3,D1;RET 2由以上所说的计算方法,可以知道此段程序精确延时时间为:1+(1200)+(2250200)+(2200)+2=0.1S延时程序的设计框图如4.3所示:图4.3 单片机延时子程序框图5 设计结果测试5.1 Proteus和Keil仿真结果根据此程序的设计原理,我在Proteus和Keil上对此设计进行了仿真。基本实现了设计的要求,LED显示屏可以正常显示所需要的汉字,程序的编译也可以通过。最终的仿真结果如图5.1所示: a b 图5.1 本设计在Pr

37、oteus中的仿真结果结 束 语毕业设计终于告一段落。这象征着大学四年的结束和新的生活方式的开始。很庆幸我有过这么快乐而充实的四年。毕业设计这段时间,我感受到了工作的不易和努力的充实感。几个月的毕业设计以来,经常去网上或者图书馆查阅资料,经常去实验室一坐就是一天,有时候连午饭都忘记吃。在这个过程中感觉到了苦。但是当最后终于经历过了,完成了这个过程,我感觉到更多的是一种充实感和怀念感,怀念那些一群人在一起努力的感觉。当然,有过努力就会有收获和多多少少的遗憾。现将我所得到的和我感觉到的遗憾及不足写下,作为自己这几个月来的总结罢:(一)收获在毕业设计之前,虽然有过多次的课程设计和软件设计大赛,但是从

38、来没有这么全身心的投入到自己的工作当中。在毕业设计这段时间中,我学到了很多以前课堂上学过但是忘记了的和以前课堂上没有讲过的东西。忘了谁说过那么一句话,“知识都是死的,人是活的”。这几个月我深切体会到了这句话的内涵。本来觉得很简单的一个电路,检查许多遍也感觉非常可行,但是当付诸到实践中,焊到板子上就会出现出乎意料的结果。整个设计过程我无时无刻不体会到动手和动脑的重要性,一些理论上的东西在实际中根本就不会那么容易的给你呈现出来,它需要在理论的基础上加上自己的办法。实践出真知,这句话是对的。(二)遗憾和不足不细心的缺点使我在设计的过程中受尽了苦头,此设计原理虽然简单,但是飞线比较繁琐。正是因为之前没

39、有认认真真了解芯片的各个引脚的作用,只是一味的去连接,导致后来出现了很多大面积的错误,重新反工了好多次,浪费了太多的时间;在设计中也出现了很多“虚焊”的地方,导致最后实物的结果不尽人意,最严重的一个错误是刚开始没有好好检查,将PNP三极管误用作NPN三极管,结果导致行线的驱动全部接错。很庆幸最终我能意识到自己错误出现在哪里,这也能让我在以后类似的工作中多多少少有些经验。致 谢通过几个月的努力,毕业设计终于完成。在这其中得到了很多人的大力帮助,在此表示由衷的感谢:感谢我的父母,感谢你们给我提供机会来到大学,经历我人生中最重要的四年,此生永远不忘你们的恩情。感谢孙红霞老师,在我的毕业设计期间给了我

40、很多的帮助,帮我解答了很多问题,也不厌其烦的帮我解说关于毕业设计的问题。也在过程中督促我们的工作。感谢小组刘兆伟老师和王培进老师,也给我们提供了很多技术上的帮助。感谢组员同学们,在整个毕业设计期间是你们一直陪伴在我身边,能无时无刻帮我解答问题,陪我买器件,教我如何使用软件。感谢大学四年教过我的任课老师,是你们让我开阔了视野增长了知识。感谢母校,永志难忘。参考文献1 褚昌玲 LED显示技术原理及工程技术M. 成都:电子科技大学出版社 2000: 11-15 2 百度百科 AT89C52 3 李光学. 单片机课程设计实例指导M.北京:北京航空航天大学出版社,2003:38-41.4 百度百科 Ke

41、il uVersion 附录A 部分代码1、 汇编实现代码:D_F EQU 40H ;第一个显示数据缓冲器 D_MB EQU 30H ;数据位移动次数寄存器 D_AM EQU 31H ;显示半角字个数寄存器 DAMT EQU 32H ;显示半角字个数倍数寄存器 OFFSET EQU 33H ;数据指针偏移量 SPEED EQU 34H ;移动速度寄存器 S_I BIT p1.4 ;数据总线 RCK BIT p1.5 ;锁存信号线 SCK BIT p1.6 ;移位时钟信号线 EN BIT p1.7 ;消隐信号线;-程序入口地址- ORG 0000H JMP START ORG 0030H;=;

42、初始化;=START: MOV SP, #0AH ;修改堆栈指针 CLR A ;清累加器 MOV R7, #5 MOV R0, #D_FST1: MOV R0, A INC R0 DJNZ R7, ST1 MOV R7, #20H MOV R0, #D_MBST2: MOV R0, A INC R0 DJNZ R7, ST2 ;寄存器清0 MOV p1, #00H MOV DPTR, #DTAB ;数据表首地址放入DPTR MOV DAMT, #1 ;显示的半角字的个数的倍数 MOV SPEED, #1;=; 主程序;=MAIN: MOV R5, #16 ;扫描16行 MOV OFFSET,

43、#00H ;数据指针偏移量清0MA1: CALL QUSHU ;调用取数子程序 SETB EN ;关显示 DEC p1 ;修改行值 CLR RCK SETB RCK ;锁存显示数据 CLR EN ;开显示 DJNZ R5, MA1 ;16行未完继续 DJNZ SPEED, MAIN MOV SPEED, #4 ;移动速度 INC D_MB MOV A, D_MB CJNE A, #8, M_OUT MOV D_MB, #0 ;1个半角字符要移动8次 MOV A, #16 ADD A, DPL MOV DPL, A CLR A ADDC A, DPH MOV DPH, A ;地址指针修改 INC

44、 D_AM MOV A, D_AM CJNE A, #151, M_OUT ;显示的半角字符的个数 MOV D_AM, #00H DJNZ DAMT, M_OUT MOV DAMT, #1 ;显示的半角字的个数的倍数 MOV DPTR, #DTAB ;循环滚动显示 MOV p1, #00HM_OUT: JMP MAIN;=; 取出并发送一行数据子程序;=QUSHU: MOV R7, #9 ;取出半角字数据的个数 MOV R0, #D_F ;数据缓冲区首地址存入R0 pUSH DPH pUSH DPL ;数据保护 MOV A, OFFSET ;查表偏移量放入AQUSH1: ADD A, DPL MOV DPL, A MOV A, DPH ADDC A, #00H MOV DPH, A CLR A MOVC A, A+DPTR ;查表取数 MOV R0, A ;存储数据 INC R0 ;修改地址指针 MOV A, #16 ;修改查表偏移量 DJNZ R7, QUSH1 ;数据未取完继续 pOP DPL POP DPH INC OFFSET ;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁