应用电子技术专业毕业论文.doc

上传人:文库蛋蛋多 文档编号:4024099 上传时间:2023-04-01 格式:DOC 页数:29 大小:1.87MB
返回 下载 相关 举报
应用电子技术专业毕业论文.doc_第1页
第1页 / 共29页
应用电子技术专业毕业论文.doc_第2页
第2页 / 共29页
应用电子技术专业毕业论文.doc_第3页
第3页 / 共29页
应用电子技术专业毕业论文.doc_第4页
第4页 / 共29页
应用电子技术专业毕业论文.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《应用电子技术专业毕业论文.doc》由会员分享,可在线阅读,更多相关《应用电子技术专业毕业论文.doc(29页珍藏版)》请在三一办公上搜索。

1、西安航空职业技术学院毕 业 设 计(论 文)论文题目: 点阵LED多功能系统设计与制作 所属系部: 电子工程系指导老师:洪云飞 职 称: 讲师 学生姓名:刘欣灵 班级、学号:10201234 专 业: 应用电子技术西安航空职业技术学院制2012年 12 月 2 日重庆XX学院 毕业设计(论文)任务书题目: 点阵LED多功能系统设计与制作任务与要求: 采用51单片机作为微控制器.通过1个1616的点阵LED进行文字显示学号和姓名.在目测条件下LED显示屏各点亮度均匀、充足、稳定、清晰无串扰. 文字显示具有每排字有滚动和逐排等显示方式.时间: 年 月 日 至 年 月 日 共 周所属系部: 机电工程

2、系学生姓名:XXX 学 号:XXXXXXXX专业: 机电一体化指导单位或教研室: 指导教师:XXXX 职 称:教师 重庆XX学院制年 月 日毕业设计(论文)进度计划表日 期工 作 内 容执 行 情 况指导教师签 字教师对进度计划实施情况总评 签名 年 月 日 本表作评定学生平时成绩的依据之一点阵LED多功能系统设计与制作【摘要】本论文阐述了基于单片机STC89C51的1616点阵LED电子显示屏的设计。分别阐述了显示屏显示的基本原理,硬件设计、控制方法及其程序的实现。经过调试和分析,设计的结果能够实现对汉字的静态和动态显示,动态显示的内容有多种方式,同时又可通过上位机更新显示的内容。本文给出了

3、一种基于AT89C52单片机的16*16点阵的设计方案,包括系统具体的硬件设计方案,软件流程图和部分汇编语言程序等方面。在负载范围内,只需通过简单的级联就可以对显示屏进行扩展,是一种成本低廉的图文显示方案。可广泛应用于各种公共场合,如车站、码头、银行、学校、火车、公共汽车显示等。关键字:STC89C51;1616点阵;LED;显示屏Abstract: This paper based on single chip STC89C51 16 and lattice LED electronic display design. Are described respectively, and the

4、screen shows the basic principle, hardware design, control methods and the realization of the program. Through testing and analysis, the results of the design can realize the static and dynamic characters, according to the content of the dynamic display a variety of ways, and at the same time, but a

5、lso through the upper machine update display content. This paper presents a method based on the microcontroller of AT89C52 16 * 16 lattice design scheme, including the system of concrete hardware design, software flow chart and part of assembly language program, etc. In the load range, only through

6、the simple cascade can be extended to screen, is a kind of cheap graphic display scheme. Can be widely used in all kinds of public places, such as railway stations, docks, Banks, schools, train, bus display, etc.Key words: STC89C51;16*16 lattice;screen目录1 功能要求和论证的方案- 1 -1.1 方案论证.- 1 -1.1.1 动态扫描简介- 1

7、-1.1.2串行传输的方式.- 2 -1.3显示模块论证. - 3-1.4数据传输论证.- 3 -2 显示原理及显示方式- 4 -2.1 静态显示方式.- 4 -2.2 动态显示方式.- 4 -2.3 点阵显示原理.- 4 -3 系统硬件部分设计- 5 - 3.1单片机系统及外围电路- 5 -3.2 列驱动电路- 5 -3.3 行驱动电路- 7 -3.4 单片机最小系统电路.- 9 - 3.5 电源电路- 10 -4 系统软件部分设计- 10 -4.1 系统主程序设计.- 10 -4.2 显示驱动程序.- 11 -5 系统调试及性能、程序分析- 12 -5.1 调试及性能分析.- 12 -5.

8、2 程序介绍及流程.- 12 -5.2.1 定义端口.- 12 -5.2.2 汉字子模.- 13 -5.3 开中断.- 15 -5.3.1延时程序.- 16 -5.3.2主程序.- 17 -5.3.3 控制点亮程序.- 19-6 制作成果和调试结果- 21 -6.1制作成果.- 21 -6.2调试结果.- 22 -结束语- 23 -参考文献- 24 -1 功能要求和论证的方案要求采用51单片机作为微控制器.通过1个1616的点阵LED进行文字显示学号和姓名.在目测条件下LED显示屏各点亮度均匀、充足、稳定、清晰无串扰. 文字显示具有每排字有滚动和逐排等显示方式.1.1方案论证从理论上说,不论显

9、示图形还是文字,只要控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。1616的点阵共有256个发光二极管,显然单片机没有这么多端口,如果我们采用锁存器来扩展端口,按8位的锁存器来计算,1616的点阵需要256/8=32个锁存器。这个数字很庞大,因为我们仅仅是1616的点阵,在实际应用中的显示屏往往要大的多,这样在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中的显示屏几乎都不采用这种设计,而采用另一种称为动态扫描的显示方法。1.1.1 动态扫描简介动态扫描的意思简单地说就是逐行轮流点亮,这

10、样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套列驱动器。具体就1616的点阵来说,我们把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第一行使其燃亮一定的时间,然后熄灭;再送出第二行的数据并锁存,然后选通第二行使其燃亮相同的时间,然后熄灭; 第十六行之后又重新燃亮第一行,这样反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,我们就能看到显示屏上稳定的图形了。采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。显示数据通常存储在单片机的存储器中,按8位

11、一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并行方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并行传输的方案是不可取的。1.1.2串行传输的方式采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列

12、数据显示两个部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以至影响到LED的亮度。解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一行的列数据。为了达到重叠处理的目的,列数据的显示就需要具有锁存功能。经过上述分析,可以归纳出列驱动器电路应具备的主要功能。对于列数据准备来说,它应能实现串入并出的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。图1-1为显示屏电路

13、实现的结构框图。图1-11.3 显示模块论证 (1)点亮LED数码管的方式有静态和动态2种方法。本文以8段LED作为示例来论证方案(2)这种模块由64个发光LED芯片以88的形式构成一个正方形模块,然后用2列8针引脚将内部电路接口引出,供驱动电路使用。(3)行对应的给LED的阳极,先给第一行以高电平,如果送给16列的代码为EFFF,则第一行的第4个LED被点亮,再给第二行以高电平,如果送给16列的代码为EF07,则第二行的第4、9、10、11、12、13个被点亮,接着给第三行以高电平,同时给列以驱动代码,这样不断地进行行行的扫描,只要速度够快,由于人的视觉暂留作用,就不会感觉到明显的闪烁感。1

14、.4 数据传输论证采用动态显示方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并列传输的方案是不可取的。采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各

15、列数据都以传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一列数据。为了达到重叠处理的目的,列数据的显示就需要具有所存功能。经过上述分析,就可以归纳出列驱动器电路应具有的功能。对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入

16、并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。2显示原理及显示方式下面重点介绍点阵LED数码灯的原理和方式2.1 静态显示方式静态显示方式,即8段LED数码管在显示某一个数码时,加在数码管上的段码保持不变,直至换显其他数码为止。这样数码管的每一段均应由一条输出线来控制,每显示以为数码需要8根输出线,当N位显示则需N8根输出控制线。占用较多I/O资源。2.2动态显示方式为解决静态显示占用较多I/O资源的问题,在多位显示时通常采用动态显示方式,动态显示是将所有数码管的段码线对应并联在一起,由一个8位的输出口控制,每位数码管的公共端分别出一位I/O线控制。显示不

17、同数码时,由位线控制各位轮流显示。位线控制某位选通时,该位应显示数码的段码同时加在段码线上,即每一时刻仅仅有一位数码管是被点亮的,当轮流显示的速度较快(每秒24次以上),由于人眼的视觉暂留现象,看起来就像所有位同时显示一样,这时,我们就能看到稳定的图像了2.3 点阵显示原理点阵显示器实际上就是LED 显示器,构成显示器的所有LED都依矩阵形式排列。从内部结构看,点亮LED 的方法就是要让该LED所对应的Y线、X线加上高、低电平,使LED处于正向偏置状态。使用多行扫描的方式,可以实现很多动态效果,点阵显示器常采用扫描法,扫描方式包括:行扫描和列扫描。行扫描就是控制点阵显示器的行线依次输出有效驱动

18、电平,当每行行线状态有效时,分别输出对应的行扫描码之列线驱动该行LED点亮。列扫描控制列线依次输出有效驱动电平,当第n列有效时,输出列扫描至行线,驱动该列LED点亮。 行扫描和列扫描都要求点阵显示器依次驱动一行或一列(8个LED)。具体就88的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第8行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉

19、暂留现象,就能够看到显示屏上稳定的图形了。3系统硬件部分设计硬件电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路三部分。3.1单片机系统及外围电路单片机采用89C51或其兼容系列的芯片,采用24M或更高频率的晶振,以获得较高的刷新频率,使显示更稳定。单片机的串口与列驱动器相连,用来送显示数据。P1口低4位与行驱动器相连,送出行选信号;P1.5P1.7口则用来发送控制信号。P0和P2口空着,在有必要时可以扩展系统的ROM和RAM。3.2列驱动电路列驱动电路由集成电路74HC595构成,它具有一个8位串入并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各

20、自独立的,可以实现在显示本行各列数据的同时,传送下一行的列数据,即达到重叠处理的目的。74HC595的外形及内部结构如图2所示。它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。引脚SI是串行数据的输入端。引脚SCK是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SI的下一个数据打入最低位。移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端。RCK是输出锁存器的打入信号,其上升沿将移位寄存器的输出打入到输出锁存器。引脚G是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高阻态。SCLR信号是移位寄存器的清零输入端,当其为低时移位寄存器

21、的输出全部为零。由于SCK和RCK两个信号是互相独立的,所以能够做到输入串行移位与输出锁存互不干扰。芯片的输出端为QAQH,最高位QH可作为多片74HC595级联应用时,向上一级的级联输出。但因QH受输出锁存器打入控制,所以还从输出锁存器前引出了QH,作为与移位寄存器完全同步的级联输出。图3-1列驱动及控制3.3行驱动电路单片机P1口低4位输出的行号经4/16线译码器74LS154译码后生成16条行选通信号线,再经过驱动器驱动对应的行线。一条行线上要带动16列的LED进行显示,按每一LED器件20mA电流计算,16个LED同时发光时,需要320mA电流,选用三极管8550作为驱动管可满足要求。

22、图3-2 行控制及驱动3.4单片机最小系统电路复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。RST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。图3-3复位信号的电路逻辑图整个复位电路包括芯片内、外两部分。外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻

23、对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。复位操作有上电自动复位相按键手动复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图4(a)所示。这佯,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。按键手动复位有电平方式和脉冲方式两种。其中,按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的,其电路如图4(b)所示;而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的,其电路如图4(c)所示:(a)上电复位 (b)按键电平复位 (c)按键脉冲复位图3-4复位电路上述电路图中的电阻、电容参数适用于6

24、MHz晶振,能保证复位信号高电平持续时间大于2个机器周期。3.5 电源电路图3-5电源电路4系统软件部分设计这部分重点介绍主程序和显示驱动程序的设计和要求。4.1系统主程序设计 系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;接着自左到右以“滚动”效果显示班级姓名,停留约0.5s;,由于单片机没有停机指令,所以可以设置系统程序不断的循环执行上述显示效果。LED显示屏硬件电路只要硬件质量可靠,引脚焊接正确,一般无需调试即可 正常工作。软件部分需要调试的主要有显示屏刷新频率及显示效果两部分。显示屏刷新率由定时器T0的溢出率和单片机的晶振频率决定,。 从理论上来说,24

25、Hz以上的刷新频率就能看到稳定的连续的显示,刷新率越高,显示越稳定,同时刷新频率越高,显示驱动程序占用的CPU时间越多。试验证明,在目测条件下刷新频率40Hz一下的画面看起来闪烁较严重,刷新频率50Hz以上的已基本察觉不出画面的闪烁,刷新频率达到85Hz以上时再增加画面闪烁没有明显的改善显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。根据软件分层次设计的原理,我们可把显示屏的软件系统分成两大层:第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其它控制信号,配合完成LED显示屏的扫描显示工作。显

26、示驱动程序由定时器T0中断程序实现。系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用C语言编写。4.2 显示驱动程序显示驱动程序在进入中断后首先要对定时器T0重新赋初值以保证显示屏刷新率的稳定,1/16扫描的显示屏的刷新率(帧频)的计算公式如下: 其中fosc为晶振频率,t0为定时器T0初值(工作在16位定时器模式)。然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消

27、隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。5系统调试及性能、程序分析最后程序是否能正常的工作,LED灯是否能正常的显示出来,都要看调试是否得当,下面就主要介绍系统的调试及性能,程序的分析。5.1 调试及性能分析LED显示屏硬件电路只要器件质量可靠,管脚焊接正确,一般无需调试即可正常工作。软件部分需要调试的主要有显示屏刷新频率及显示效果两部分。显示屏刷新率由定时器T0的溢出率和单片机的晶振频率决定,下表给出了实验调试时采用的频率及其对应的定时器T0初值。显示屏刷新率(帧频)与T0初值关系表(24M晶振)刷新率(Hz)255062.57585100120T0初值0xec

28、780xf63c0xf8300xf97e0xfa420xfb1e0xfbee5.2 程序介绍及流程/*头文件*/#include #include #define uint unsigned int#define uchar unsigned char#define NOP() _nop_()5.2.1 定义端口sbit EN_port = P13;sbit DA_in_port = P12;sbit CLK_port = P11;sbit Latch_port = P10;#define ABCD_port P1 /HC138 ABCD端口定义/sbit D_port = P17;/sbit

29、 C_port = P16;/sbit B_port = P15;/sbit A_port = P14;5.2.2 汉字子模uchar code ziku_table=0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*显示8行空白*/0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0

30、xff,0xff,0xff,0xff,0xff,0xff,0xff,/*显示8行空白*/0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xFF,0xFF,0x1F,0xFC,0xEF,0xFB,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xEF,0xFB,0x1F,0xFC,0xFF,0xFF,/*X,0*/0xFF,0xFF

31、,0x1F,0xFC,0xEF,0xFB,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xEF,0xF3,0x1F,0xF4,0xFF,0xF7,0xFF,0xF7,0xF7,0xF7,0xF7,0xF7,0xEF,0xFB,0x1F,0xFC,0xFF,0xFF,/*X,1*/0xFF,0xFF,0x0F,0xF8,0xF7,0xF7,0xF7,0xF7,0xFF,0xF7,0xFF,0xFB,0xFF,0xFD,0x7F,0xFE,0xFF,0xFD,0xFF,0xFB,0xFF,0xF7,0xFF,0xF7,0xF7,0xF7,0xF7,0xFB,0x

32、0F,0xFC,0xFF,0xFF,/*X,2*/0xFF,0xFF,0x7F,0xFE,0xBF,0xFE,0xBF,0xFE,0xBF,0xFE,0xDF,0xFE,0xDF,0xFE,0xEF,0xFE,0xEF,0xFE,0xF7,0xFE,0xFB,0xFE,0x03,0xF0,0xFF,0xFE,0xFF,0xFE,0x3F,0xF8,0xFF,0xFF,/*X,3*/0xFF,0xFF,0x7F,0xFF,0x3F,0xFF,0x5F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xF

33、F,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x1F,0xFC,0xFF,0xFF,/*X,4*/0xFF,0xFF,0x0F,0xF8,0xF7,0xF7,0xF7,0xF7,0xFF,0xF7,0xFF,0xFB,0xFF,0xFD,0x7F,0xFE,0xFF,0xFD,0xFF,0xFB,0xFF,0xF7,0xFF,0xF7,0xF7,0xF7,0xF7,0xFB,0x0F,0xFC,0xFF,0xFF,/*X,2*/0xFF,0xFF,0x0F,0xF8,0xF7,0xF7,0xF7,0xF7,0xFF,0xF7,0xFF,0xFB,0xFF,0xFD,0x7F

34、,0xFE,0xFF,0xFD,0xFF,0xFB,0xFF,0xF7,0xFF,0xF7,0xF7,0xF7,0xF7,0xFB,0x0F,0xFC,0xFF,0xFF,/*X,2*/0xFF,0xFF,0x0F,0xF8,0xF7,0xF7,0xF7,0xF7,0xFF,0xF7,0xFF,0xFB,0xFF,0xFD,0x7F,0xFE,0xFF,0xFD,0xFF,0xFB,0xFF,0xF7,0xFF,0xF7,0xF7,0xF7,0xF7,0xFB,0x0F,0xFC,0xFF,0xFF,/*X,2*/0xBD,0xFF,0xBB,0x83,0xDB,0xBB,0xEF,0xDB,

35、0x01,0xDA,0xEF,0xEB,0xEF,0xEB,0x00,0xDA,0xEF,0xBB,0xCF,0xBB,0xB7,0xBB,0x77,0xA3,0x7B,0xDB,0xFC,0xFB,0xFF,0xFB,0xFF,0xFB,/*X,0*/0x7F,0xFF,0x77,0xF7,0x6F,0xFB,0x03,0x80,0xFB,0xDF,0xFD,0xEF,0x0F,0xF8,0xEF,0xFB,0xEF,0xFB,0x0F,0xF8,0xDF,0xFD,0xDF,0xDD,0xEF,0xDD,0xEF,0xDD,0xF7,0xC3,0xF9,0xFF,/*X,1*/0xFF,0

36、xFF,0x03,0x80,0xBB,0xBF,0x3D,0xDF,0xDD,0xF7,0x03,0xE0,0xDF,0xFF,0x6F,0xFF,0x6F,0xF7,0x07,0xE0,0x7F,0xFF,0x7F,0xDF,0x01,0x80,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,/*X,2*/0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*显示8行空白*/0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff

37、,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*显示8行空白*/0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,;5.3 开中断 图5-1中断流程图uchar data disp_buff32; /32 个显示数据缓存/数据格式为 第1级第1行高八位,低八位,第1级第2行高八位。uchar data disp

38、_han; /目前显示到第几行,第1行数值为0,第2行数值为1。void T0_Set() /*定义中断方式*/TMOD = 0x01; /定时0,工作在方式1TR0 = 1; /启动计数EA = 1; /开总中断ET0 = 1; /开定时器0中断return;5.3.1 延时程序图5-2延时程序流程void delay_1ms(uchar x)uchar j;while(x-)for(j=0;j125;j+); 5.3.2 主程序图5-3主程序流程void main()uchar i;uint data_temp3;uint temp,temp1;uchar hanzi;uchar han;

39、uchar shift;for(i=0;i32;i+) disp_buffi=0xff;T0_Set();while(1)for(hanzi=0;hanzi15;hanzi+)/最多显示多少个字for(shift=0;shift16;shift+)/一个字移位16位for(han=0;han0;i-)temp = (temp1) ;if(temp1&0x0001)!=0) temp = temp + 0x8000; temp1 = (temp11); disp_buffhan*2+1=temp/0x100;disp_buffhan*2+0=temp%0x100;delay_1ms(60); /

40、移位速度5.3.3 控制点亮程序图5-4点亮流程void SLED_Disp() interrupt 1 using 3uchar i;uchar data_buff;uchar temp;uchar han;TH0 = (65536-1000)/256;TL0 = (65536-1000)/256;Latch_port = 0; /HC595锁定输出,避免数据传输过程中,屏数据变化从而显示闪烁CLK_port = 0;han=disp_han;/-temp = disp_han*2 + 1; data_buff = disp_bufftemp;for(i=0;i8;i+)if(data_buff&0x80)!=0) DA_in_port = 1;else DA_in_port = 0;CLK_port = 1;CLK_port = 0;data_buff = 1;temp = disp_han*2;data_buff = disp_bufftemp;for(i=0;i8;i+)if(data_buff&0x80)!=0) DA_in_port = 1;else DA_in_port = 0;CLK_port = 1; CLK_port = 0;data_buff = 1;/- EN_port = 1; /关屏显示,原理为使HC138输出全为1,从而三极管截止,点阵不显示ABC

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号