单片机原理与应用
课程设计报告
课程设计名称: LED点阵广告牌的设计
专业班级:
学生姓名:
学 号:
指导教师:
设计时间: 2012.6.4——2012.6.15
成 绩:
信 电 工 程 学 院
摘要
LED点阵电子显示屏是一种新型信息显示媒体,集微电子技术、光电子技术、计算机技术、信息处理技术于一体的大型显示系统。以其色彩鲜艳,动态范围广,亮度高,寿命长,工作性能稳定,制作简单和安装方便等特点,广泛应用于广告、证券、信息传播、新闻发布等方面。
本文设计了一款以单片机ATS51为控制器的LED点阵显示屏系统设计的16*16LED点阵广告牌。给出了系统框图,硬件模块设计图、软件流程图和程序。硬件模块设计方面,主控制系统采用单片机控制方式,实现点阵 LED显示屏的驱动及信息的保存与显示。LED显示点阵主要由LED、字模及其电路构成。通过单片机的控制驱动电路,采用扫描方式进行显示。为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。
关键词 单片机;LED;点阵
1绪论…..........................................................................................................................................1
1.1 LED点阵显示屏的设计背景及意义…..............................................................................1
1.2 LED点阵显示屏的技术现状及发展趋势..........................................................................1
1.2.1 我国LED产业发展现状.............................................................................................1
1.2.2 LED显示屏的发展趋势..............................................................................................2
1.2.3 选题意义.....................................................................................................................2
1.3 设计目标及采取的方案.....................................................................................................2
1.3.1 本设计的目标.............................................................................................................2
1.3.2 本设计采取的方案.....................................................................................................3
2 系统总体分析.............................................................................................................................4
2.1 工作原理.............................................................................................................................4
2.2 总体设计.............................................................................................................................4
3系统硬件设计..............................................................................................................................5
3.1 ATC51芯片的介绍..........................................................................................................5
3.2 74LS154芯片的介绍..........................................................................................................5
3.3 点阵式汉字LED显示屏设计.............................................................................................7
3.3.1 16*16点阵LED原理及应用......................................................................................7
3.3.2 LED点阵的显示文字图形原理..................................................................................8
4 系统软件设计............................................................................................................................11
4.1 程序设计............................................................................................................................11
5 调试与仿真................................................................................................................................14
5.1 仿真效果............................................................................................................................14
5.2 调试中出现的问题............................................................................................................14
结论................................................................................................................................................15
参考文献........................................................................................................................................16
附录................................................................................................................................................17
附录1 16*16的点阵图文显示屏的硬件原理图.........................................................................17
附录2 硬件实物图.................................................................................................................17
附录3 完整程序.....................................................................................................................18
附录4 元件清单.....................................................................................................................25
1 绪论
1.1 LED点阵显示屏的设计背景及意义
在现代化和信息化社会的高速发展过程中,最具意义的莫过于LED大屏幕点阵显示已经渗透到各行各业的信息显示中。随着宽带网络的快速发展,数字化的多媒体内容将在信息世界中占据主流,新型的大屏幕显示设备将代替传统电视机成为人们享受信息和多媒体内容的中心。与传统的显示设备相比,正是这种未来的巨大需求让LED大屏幕点阵显示技术成为众人目光的焦点。
在各大商场、车站以及各类办事窗口甚至在我们学校校门口、食堂门口和移动营业厅门口都装了LED点阵显示屏来发布一些通知或广告。随着信息产业的高速发展,LED点阵显示作为信息传播的一种重要手段,已成为一个飞速发展的新兴产业,市场空间巨大,发展前景广阔,并已广泛应用于各种需要进行信息宣传的公众场所,例如各大商场里的广告宣传、火车站为旅客提供售票信息显示、公交车辆报站显示、证券与银行信息显示、交通信号灯的亮灭等。因此,LED点阵显示已成为现代化和信息化社会的一个重要标志。
LED点阵设计主要应用于LED点阵显示屏,它是利用发光二极管点阵模块组成的平面式显示屏幕。由于它具有发光效率高、使用寿命长、节能、组态灵活、色彩丰富、显示方式变化多样以及无电离辐射等优点,在国内外得到了极为广泛的应用。LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性、可靠性、全色化方向发展。
1.2 LED点阵显示屏的技术现状及发展趋势
1.2.1 我国LED产业发展现状
我国的LED显示屏产业经过几年的发展,基本形成了一批具有一定规模的骨干企业。据不完全统计,至1998年底,年度销售总额在1000万元以上的企业有20多家,其销售总额达6亿元左右,占行业市场总额的85%以上。全国从事LED显示屏的各类企业有100余家,从业人员近6000人,行业年度销售总额近8亿元人民币,1996年、1997年的增长速度均保持40%左右,1998年略有回落。在国内市场上,国产LED显示屏的市场占有率近100%,国外同类产品基本没有市场,四十三届世乒赛主会场天津体育中心、京九铁路、北京西客站、首都机场、浦东机场等,均由国内代表企业中标。技术水平相对领先,我国LED显示屏产业在规模发展的同时,产品技术推陈出新,一直保持比较先进的水平。90年代初即具备了成熟的16级灰度256色视频控制技术及无线遥控等国际先进水平技术,近年在全彩色LED显示屏、256级灰度视频控制技术、集群无经线控制、多级群控技术等方面均有国内先进、达到国际水平的技术和产品出现;LED显示屏控制专用大规模集成电路也已由国内企业开发生产并得到应用。LED显示屏产业培养形成了一批LED显示屏科技队伍,在全国LED显示屏行业的从业人数6000人中,科技人员有2800多人,将近50%。LED显示屏产业正成为我国电子信息产业的重要组成部分,也是平板显示领域唯一立足国内形成的民族高科技产业。
1.2.2 LED显示屏的发展趋势
现代信息社会中,作为人一机信息视觉传播媒体的显示产品和技术得到迅速发展,进入二十一世纪的显示技术将是平板显示的时代,LED显示屏作为平板显示的主导产品之一无疑会有更大的发展。高亮度、全彩化蓝色及纯绿色LED产品自出现以来,成本逐年快速降低,已具备成熟的商业化条件。基础材料的产业化。使LED全彩色显示产品成本下降,应用加快。LED产品性能的提高,使全彩色显示屏的亮度、色彩、白平衡均达到比较理想的效果,完全可以满足户外全天候的环境条件要求,同时,由于全彩色显示屏性价比的优势,预计在未来几年的发展中,全彩色LED显示屏在户外广告媒体中会越来越多地代替传统的灯箱、霓红灯、磁翻板等产品,体育场馆的显示方面全彩色LED屏更会成为主流产品。全彩色LED显示屏的广泛应用会是LED显示屏产业发展的一个新的增长点。
未来LED显示屏会向着标准化、规范化,产品结构多样化的方向发展[2]。
1.2.3 选题意义
该设计课题使我们能够掌握LED显示屏的基本显示原理和设计方法,对LED显示屏这个行业能有更为深刻的了解和认识。并且对本学期所学习的单片机课程理论进行了实践,使我们对单片机原理与应用课程的理论知识有了新的更深的认识,并且通过此次设计课题掌握了51单片机的的软硬件开发工具的使用方法,为以后从事相关行业的工作积累了实际工作经验。目前我国的信息行业发展迅速,作为主要平面显示媒介的LED显示屏的作用也越来越广泛,相关的从业人员也会越来越紧缺。但同时应该清楚的认识到我国的LED技术虽然发展迅速但和世界先进水平还有一定的差距。因此此课题不论是对自己的就业还是对我国LED显示技术的发展都有非常现实与积极的意义。
1.3 设计目标及采取的方案
1.3.1 本设计的目标
本设计的理论基础是单片机原理与应用,模电和数电。比如ATC51芯片的一些工作原理是在MCS—51的基础上通过改进完成的。74LS154的工作原理数电里也学习过。
本设计完成了16*16LED点阵动态显示两个以上汉字,并可以利用按键控制其左右移动。
通过本设计不仅可以复习之前学过的知识,而且可以通过查阅课外资料学到书本上没有的知识,还锻炼了我们的动手能力。通过这次课程设计把我们在学校学习的理论知识和实际应用有机地结合起来,把理论跟实践相结合,培养了我们的专研精神。
1.3.2 本设计采取的方案
(1)根据实验指导书的要求确定系统应该具有的功能
(2)按照系统功能将系统分模块组合起来
(3)根据系统功能与结构编写实验程序,并通过keil软件进行编译并找出程序中的错误,改正这些错误
(4)确定所需的元器件,然后利用proteus软件画出系统电路图并进行仿真
(5)仿真成功后根据仿真图制作实际硬件图
(6)最终能在LED电路板上显示实验指导书上所要求的汉字显示形式。
2 系统总体分析
2.1 工作原理
利用ATC51单片机进行LED点阵显示屏的设计与制作是利用单片机控制技术,编写程序,通过程序控制LED的显示,显示所要显示的内容与形式。技术线路为通过程序控制ATC51芯片输出高低电平,高低电平控制分别控制LED的亮和灭,最终达到所要显示的内容。在显示电路中,主要靠按键来实现各种显示形式的切换。
我们将LED点阵的16条行线直接接在P0口和P2口,至于列选扫描信号则是由4-16线译码器74LS154来选择控制,这样一来列选控制只使用了单片机的4个I/O口,节约了很多I/O资源,为单片机系统扩充使用功能提供了条件。考虑到P0口必需设置上拉电阻,我们采用1 kΩ排电阻作为上拉电阻。
2.2 总体设计
由上述工作原理,我们画出了该系统的总体框图见图2-1。
图2-1 系统总体框图
3 系统硬件设计
本设计采用以ATC51单片机为核心芯片的电路来实现,主要由ATC52芯片、时钟电路、列扫描驱动电路(74LS154)、16*16 LED点阵5部分组成。
3.1 ATC52芯片的介绍
因为在程序中,所使用的内部存储器的空间较大,对于51系列单片机,高128B被特殊功能寄存器占用,对于52系列单片机,高128B与特殊功能寄存器有相同的地址,而物理上是分开的,故使用了AT1C52芯片。
ATC52是一种带8kB闪烁可编程可擦除只读存储器(Falsh Programmable and Erasable Read OnlyMemory,FPEROM)的低电压、高性能CMOS型8位微处理器,俗称单片机。该器件采用ATMEL公司高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,能够进行1 000次写/擦循环,数据保留时间为10年。它是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。因此,在智能化电子设计与制作过程中经常用到ATC52芯片。
ATC52是一个低功耗高性能的单片机,共有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器和1个全双工串行通信口,ATC52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
3.2 74LS154芯片的介绍
(1)54/74154 为 4 线-16 线译码器,当选通端(G1、G2)均为低电平时,可将地址端(ABCD)的二进制编码在一个对应的输出端,以低电平译出。 如果将G1和G2中的一个作为数据输入端,由ABCD对输出寻址,74LS154还可作1线-16线数据分配器,见图3-1。
图3-1 74LS154芯片
(2)引脚功能介绍
A、B、C、D 译码地址输入端(低电平有效)
G1、G2 选通端(低电平有效)
0-15 输出端(低电平有效)
(3)74LS154真值表,见表3-1
表3-1 74LS154真值表
Inputs输入 | Outputs输出 | ||||||||||||||||||||
G1 | G2 | D | C | B | A | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
L | L | L | L | L | L | L | H | H | H | H | H | H | H | H | H | H | H | H | H | H | H |
L | L | L | L | L | H | H | L | H | H | H | H | H | H | H | H | H | H | H | H | H | H |
L | L | L | L | H | L | H | H | L | H | H | H | H | H | H | H | H | H | H | H | H | H |
L | L | L | L | H | H | H | H | H | L | H | H | H | H | H | H | H | H | H | H | H | H |
L | L | L | H | L | L | H | H | H | H | L | H | H | H | H | H | H | H | H | H | H | H |
L | L | L | H | L | H | H | H | H | H | H | L | H | H | H | H | H | H | H | H | H | H |
L | L | L | H | H | L | H | H | H | H | H | H | L | H | H | H | H | H | H | H | H | H |
L | L | L | H | H | H | H | H | H | H | H | H | H | L | H | H | H | H | H | H | H | H |
L | L | H | L | L | L | H | H | H | H | H | H | H | H | L | H | H | H | H | H | H | H |
L | L | H | L | L | H | H | H | H | H | H | H | H | H | H | L | H | H | H | H | H | H |
L | L | H | L | H | L | H | H | H | H | H | H | H | H | H | H | L | H | H | H | H | H |
L | L | H | L | H | H | H | H | H | H | H | H | H | H | H | H | H | L | H | H | H | H |
L | L | H | H | L | L | H | H | H | H | H | H | H | H | H | H | H | H | L | H | H | H |
L | L | H | H | L | H | H | H | H | H | H | H | H | H | H | H | H | H | H | L | H | H |
L | L | H | H | H | L | H | H | H | H | H | H | H | H | H | H | H | H | H | H | L | H |
L | L | H | H | H | H | H | H | H | H | H | H | H | H | H | H | H | H | H | H | H | L |
L | H | X | X | X | X | H | H | H | H | H | H | H | H | H | H | H | H | H | H | H | H |
H | L | X | X | X | X | H | H | H | H | H | H | H | H | H | H | H | H | H | H | H | H |
H | H | X | X | X | X | H | H | H | H | H | H | H | H | H | H | H | H | H | H | H | H |
表中H—表示高电平。
(4)与单片机引脚的连接
地址输入端A、B、C、D分别接单片机的P0.0、P0.1、P0.2、P0.3口来控制选择第几列显示。选通端G1接P1.4口,G2接地。
(5)与点阵引脚的连接
74LS154芯片的1-8脚对应接上面两个点阵引脚的列线,9-17脚(12脚接地)对应接下面两个点阵引脚的列线。点阵引脚图见下图3-3。
3.3 点阵式汉字LED显示屏设计
3.3.1 16*16点阵LED原理及应用
设计LED点阵显示屏时必须掌握点阵工作原理才能进行更深层设计。16*16LED点阵实质上就是4块8*8点阵LED级联而成的,因此特给出 8*8 点阵LED的工作原理。图3-2为8*8点阵LED外观及引脚图,其等效电路如图3-3所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则Y0=1,X0=0即可。应用时限流电阻可以放在X轴或Y轴。而16*16就是在8*8原理的基础上将四块8*8级联而成,见图3-4。
图3-2 8*8点阵LED外观及引脚图
图3-3 8*8点阵LED等效电路图
图3-4 四块8x8点阵LED级联成16x16点阵
3.3.2 LED点阵的显示文字图形原理
LED驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。以16×16点阵为例,把所有同一行的发光管的阴极连在一起,把所有同一列的发光管的阳极连在一起(共阴的接法),先送出对应第1列发光管亮灭的数据并锁存,然后选通第1列使其燃亮一定的时间,然后熄灭;再送出第2列的数据并锁存,然后选通第2列使其燃亮相同的时间,然后熄灭;以此类推,第16列之后,又重新燃亮第1列,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上的汉字的每一笔都是同时出现的。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。
显示数据可通过单片机的P0,P2口传输到点阵行引脚。
LED点阵显示模块进行的方法有两种:
(1)水平方向(X方向)扫描,即逐列扫描的方式(简称列扫描方式):此时用一个P口输出列码决定哪一列能亮(相当于位码),用另一个P口输出行码(列数据),决定该列上哪个LED亮(相当于段码)。能亮的列从左到右扫描完16列(相当于位码循环移动16次)即显示出一个完整的图像。
(2)竖直方向(Y方向)扫描,即逐行扫描方式(简称行扫描方式):此时用一个P口输出决定哪一行能亮(相当于位码),另一个P口输出列码(行数据,行数据为将列数据的点阵旋转90度的数据)决定该行上哪些LED灯亮(相当于段码)。能亮的行从上向下扫描完16行(相当于位码循环移位16次)即显示一帧完整的图像。
本设计应用的是第一种的扫描方法,即水平方向(X方向)扫描。
每一个字由16行16列的点阵形成显示,即每个字均由256个点阵来表示,我们可以把每一个点理解为一个像素。一般我们使用的16*16的点阵宋体字库是每一个汉字在纵横各16点的区域内显示的。汉字库从该位置起的32字节信息记录了该字的字模信息。事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素范围内的任何图形。
我们以水平方向(x方向)扫描显示汉字的“杨”为例来说明其扫描原理,每一个字由16行16列的点阵组成显示,如下图,如果用8位的ATS51的单片机来控制,由于单片机的总线为8位,一个字需要拆分成两个部分。一般我们把它分解成上部分和下部分,上部分由8*16的点阵组成,下部分也由8*16的点阵组成。在本例中单片机首先显示的是左上角的第一列的部分,即第0列的P0.0~P0.7口。方向为P0.7到P0.0,显示汉字“杨”的时候,P0.0到P0.2都是灭的,P0.3亮,因为行接阴极,即二进制11110111,转换为16进制为F7H,如图3-5所示。
上半部分第一列完成之后,继续扫描下半部分的第一列,即从P2.7向P2.0方向扫描,从上图可以看到,这一列P2.2亮,其余全部灭,所以代码为11111011,16进制为FBH,然后单片机转向上半部的第二列,除了P0.3亮,其他的都不亮,即为11110111,16进制为F7H,这一列扫描完成之后继续进行下半部分的扫描,除了P2.0和P2.1亮,其他的为不亮,为二进制11111100,即16进制FCH。按照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“杨”的扫描代码为 :F7H,FBH ,F7H ,FCH ,37H ,FFH,00H,00H,B7H,FFH,77H,FEH,F5H,F7H,BDH,DBH,9DH ,ECH,2DH,F7H,B5H, F9H,39H,BEH,BDH,7FH,3FH,80H,FFH,FFH,FFH,FFH。
图3-5 显示原理图
由这个原理可以看到,无论显示何种字体或图像,都可以用这种方法来分析出它的扫描代码从而显示在屏幕上。了解汉字的显示原理之后,那如何得到汉字的字模信息呢?现在有一些现成的汉字字模生成软件,可从网上下载汉字字库提取程序直接提取字库,如图3-6所示的为一种字模生成软件,软件打开后输入汉字,点击“检取”后,十六进制数据汉字代码即可以自动生成,把我们需要的竖排数据复制到我们的程序即可。
图3-6 字模生成软件
4 系统软件设计
4.1 程序设计
系统软件采用汇编语言编写,按照模块化的设计思路设计。首先分析程序所要实现的功能,程序要实现动态显示并能左右移动的功能。程序分为主程序和中断程序。
(1)主程序的工作流程如图4-1所示。
图4-1 主程序流程图
(2)显示子程序工作流图如图4-2所示。
图4-2
(3)按键子程序流程图如图4-3。
图4-3
5 调试与仿真
Proteus仿真时,单片机需要加载程序,加载程序为.hex文件。本设计利用Keil软件,在新建项目时选择ATC52单片机作为CPU,将相应程序导入,在“Options For Target”对话窗口中,选中“Output”选项中的“Create Hex File ”,编译链接后就可以生成.hex文件。在Proteus ISIS中,选中ATC52并单击鼠标左键,对ATC52进行设置,设置单片机时钟频率为12MHz,按照正确的文件路径加载.hex文件。对单片机设置完毕后就可以开始仿真了。仿真过程中如有硬件问题可在Proteus ISIS中直接修改,如有软件问题可在keil中直接修改,通过keil与Proteus的联合调试就可以得到预期的结果。Proteus软件目前版本中没有16*16点阵模块,本设计中采用Proteus软件中现有的4个8*8点阵模块组合成一个16*16点阵模块,利用Proteus软件设计点阵式LED滚动汉字显示屏硬件电路原理图如附录图。
5.1 仿真效果
5.2 调试中出现的问题
延时问题:在显示子程序中需要调用延时子程序,如果延时过短,虽然能提高显示屏的亮度,但是将无法达到预定的效果,每行还没有显示完全就进入了下一行的扫描,甚至锁存器还没有输出到显示屏,便进入到下一个扫描周期,如果时间过长,不但显示屏的亮度会降低,而且扫描的过程变为间断的,人眼看到的不是完整的汉字,这两种情况都是不成功的,要想达到最佳的显示效果,就得根据锁存器的锁存时间,得出扫描一行的最短时间,再结合实践,便能得出延时的最佳时间,这样显示屏才能显示稳定的汉字。
结论
焊接注意事项:
1)焊接前首先要把原理图看仔细,然后要合理安排所有的元器件的位置;
2)电烙铁加热后温度很高,要小心拿放,焊接时更要小心被烫伤;
3)在焊接两个相距较近的孔时要防止焊锡贴在一起导致短路;
4)焊接时电烙铁温度不够导致焊锡很难熔化,既浪费时间又焊的不好;
5)由于器件问题导致有些按钮接触不良,导致调试时按钮按下去显示器上显示不了,要用力多按几下才可以;
本次做硬件设计也是我们第一次完全自己在空白板上焊元件并连接电路,第一次做这个没经验,我们就用导线一个一个的连接,由于焊好了就固定了,很难改,由于我们这个设计需要连接的线特别多,比较复杂,焊完后调试总是没现象,经过多次的改电路、测试、请教老师,我们发现原来8*8LED的行线跟列线并不是像我们想象的那样整齐,它们是错乱排布的,必须通过测试了解它们的行列控制口。由于一个一个的焊接导线很麻烦又费时间而且错了又很难修改,老师指导我们焊排针再插排线,这样就省事多了,经过老师的悉心指导,我们最后终于调试成功了。
通过本次课程设计,不仅有效巩固了我们本学期所学单片机原理与技术的相关知识,加强了对重知识点的记忆和理解,以及如何使用PCB板进行实物制作,受益匪浅;也锻炼了我们的耐心,在面对这么多次的修改调试失败后,我们仍一次次不厌其烦地检查修改电路。在这次试验过程中我们发现对于自己陌生不会的东西不要害怕,要敢于尝试,敢于失败。刚开始我们对焊接不熟悉也没有接触过焊接方面的知识,一开始焊的奇形怪状的,很难看,但焊多了就有感觉了,就能焊好了。所以,实践是可以让我们很好的掌握一门技的。
参考文献
[1] 高玉芹.单片机原理与应用及C51编程技术[M].北京:机械工业出版社,2011.6
[2] 严天峰.单片机应用系统设计与仿真调试[M].北京:北京航空航天大学出版社,2005
[3]李光飞等.单片机课程设计实例指导[M].北京:北京航空航天大学出版社,2005
[4] 苏平.单片机原理与接口技术[M].北京:电子工业出版社,2003.8
[5] 赵长德,雷田玉.微型计算机原理与接口技术[M].北京:机械工业出版社,1999.10
附录
附录1
整体电路原理图
附录2
硬件实物图
附录3
完整程序
ORG 0000H
AJMP READY
ORG 000BH
AJMP INT_0
;只需更改点阵数据和要显示的总字数
READY:MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
MOV SP,#70H
MOV 36H,#2D ;控制移动的速度
MOV 37H,#00H
MOV 3AH,#9D ;设置要显示的总字数
LCALL DATA_CHUSHI
SETB EA ;中断初始化
SETB ET0
MOV TMOD,#01H
MOV TH0,#0A6H
MOV TL0,#00H
SETB TR0
;主程序
MAIN:ACALL DISP_READY ;调用显示子程序
ACALL KEY ;调用按键子程序
AJMP MAIN ;循环调用子程序
DATA_CHUSHI:MOV 35H,#00H
MOV 38H,#00H
MOV 39H,#01H ;初始化时已显示第一个字
MOV 3BH,#0A0H ;暂存R0指向地址
MOV DPTR,#DATA1
MOV R0,#0A0H ;点阵数据存放地址
MOV 30H,#32D ;数据字节数
SEND_DATA0:MOV A,#00H ;将表中第一个数据地址存入R0
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ 30H,SEND_DATA0 ;共32字节
MOV R0,#0C0H ;点阵数据存放地址
MOV 30H,#32D ;数据字节数
SEND_DATA1:MOV A,#00H ;将左移时所需存储的数据地址存入R0
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ 30H,SEND_DATA1
MOV DPTR,#DATA1+32
MOV R0,#80H ;点阵数据存放地址
MOV 30H,#32D ;数据字节数
SEND_DATA2:MOV A,#00H ;将右移时所需存储的数据地址存入R0
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ 30H,SEND_DATA2
RET
KEY:MOV P3,#0FFH
MOV A,P3
ANL A,#00000001B ;由一个按键控制(对应单片机P3.0口)
CJNE A,#00000001B,KEY_PANDUAN
RET
KEY_PANDUAN:MOV 34H,A ;判断是否确实有键按下
ACALL KEY_DELAY
MOV A,P3
ANL A,#00000001B
CJNE A,34H,KEY_EXIT
ACALL KEY_CHULI
KEY_EXIT: RET
KEY_CHULI:JB ACC.0,KEY_CHULI_EXIT ;有键按下后做相应处理
MOV A,37H ;移动方式的切换
ADD A,#40H ;A加除00H以外的任何值都可
MOV 37H,A
LCALL DATA_CHUSHI
RET
KEY_CHULI_EXIT:RET
KEY_DELAY: ;按键延时
DLY_LP1: MOV R1,#20
MOV R6,#50
DLY_LP2:
NOP
NOP
NOP
DJNZ R6,DLY_LP2
DJNZ R7,DLY_LP1
END_DLYMS:RET
;显示程序
DISP_READY:MOV R0,3BH
MOV 30H,#16D
MOV 31H,#00H
DISP:MOV A,@R0 ;行列扫描显示
MOV P0,A
INC R0
MOV A,@R0
MOV P2,A
MOV P1,31H
ACALL DISP_DELAY
MOV P0,#00H
MOV P1,#0FFH
MOV P2,#00H
INC 31H
INC R0
DJNZ 30H,DISP
DISP_EXIT: RET
;显示延时
DISP_DELAY:MOV 32H,#2
D1:MOV 33H,#150
DJNZ 33H,$
DJNZ 32H,D1
RET
;中断处理程序
INT_0:PUSH ACC
MOV TH0,#0A6H ;重装初值
MOV TL0,#00H
INC 35H
MOV A,35H
CJNE A,36H,INT0_EXIT
MOV 35H,#00H
ACALL WHICH_WAY
INT0_EXIT:POP ACC
RETI
WHICH_WAY:MOV A,37H ;选择左移还是右移
CJNE A,#00H,WAY2
ACALL ZUOYI
RET
WAY2:
ACALL YOUYI
RET
ZUOYI: MOV 50H,#0A1H ;初始化时已显示第一个字
MOV 51H,#0C1H
MOV 3CH,#16D
INC 38H
MOV A,38H
CJNE A,#16D,ZUOYI_THEN1
MOV 38H,#00H
INC 39H
MOV A,39H
CJNE A,3AH,ZUOYI_THEN
MOV 39H,#00H
MOV DPTR,#DATA1
ZUOYI_THEN: MOV 3CH,#32D
MOV R1,#0C0H
ZUOYI_SEND_DATA: MOV A,#00H ;左移将字送入R1
MOVC A,@A+DPTR
MOV @R1,A
INC R1
INC DPTR
DJNZ 3CH,ZUOYI_SEND_DATA
MOV 3CH,#16D
ZUOYI_THEN1:
MOV R1,51H ;将字分上下部分显示
MOV A,@R1
RLC A
MOV @R1,A
DEC R1
MOV A,@R1
RLC A
MOV @R1,A
MOV R1,50H
MOV A,@R1
RLC A
MOV @R1,A
DEC R1
MOV A,@R1
RLC A
MOV @R1,A
INC 50H
INC 50H
INC 51H
INC 51H
DJNZ 3CH,ZUOYI_THEN1
RET
YOUYI: MOV 50H,#0A0H
MOV 51H,#80H
MOV 3CH,#16D
INC 38H
MOV A,38H
CJNE A,#16D,YOUYI_THEN1
MOV 38H,#00H
INC 39H
MOV A,39H
CJNE A,3AH,YOUYI_THEN
MOV 39H,#00H
MOV DPTR,#DATA1
YOUYI_THEN:MOV 3CH,#32D
MOV R1,#80H
YOUYI_SEND_DATA:MOV A,#00H ;右移将字送入R1
MOVC A,@A+DPTR
MOV @R1,A
INC R1
INC DPTR
DJNZ 3CH,YOUYI_SEND_DATA
MOV 3CH,#16D
YOUYI_THEN1:MOV R1,51H ;将字分上下部分显示
MOV A,@R1
RRC A
MOV @R1,A
INC R1
MOV A,@R1
RRC A
MOV @R1,A
MOV R1,50H
MOV A,@R1
RRC A
MOV @R1,A
INC R1
MOV A,@R1
RRC A
MOV @R1,A
INC 50H
INC 50H
INC 51H
INC 51H
DJNZ 3CH,YOUYI_THEN1
RET
DATA1:DB 0x08,0x20,0x06,0x30,0x04,0x40,0x3F,0xF8,0x21,0x08,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00
DB 0x00,0x40,0x10,0x40,0x10,0x40,0x10,0x44,0x1F,0xFE,0x10,0x00,0x10,0x00,0x10,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x10,0x20,0x10,0x40,0x10,0x80,0x10
DB 0x10,0x00,0x10,0xF8,0x10,0x88,0xFE,0x88,0x10,0x88,0x10,0x88,0x38,0x88,0x34,0x88,0x54,0x88,0x50,0x88,0x91,0x08,0x11,0x0A,0x12,0x0A,0x12,0x0A,0x14,0x06,0x10,0x00
DB 0x10,0x00,0x08,0xF8,0x08,0x88,0xFE,0x88,0x02,0x90,0x04,0x90,0x08,0xA0,0x1C,0x90,0x2A,0x88,0x48,0x84,0x88,0x84,0x08,0xC4,0x08,0xA8,0x08,0x90,0x08,0x80,0x08,0x80
DB 0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x08,0x7F,0xFC,0x02,0x08,0x02,0x08,0x02,0x08,0x02,0x08,0x02,0x08,0x02,0x08,0x04,0x08,0x04,0x08,0x08,0x88,0x08,0x50,0x70,0x20
DB 0x01,0x00,0x11,0x00,0x11,0x10,0x1F,0xF8,0x11,0x00,0x21,0x00,0x01,0x04,0xFF,0xFE,0x03,0x00,0x05,0x80,0x09,0x40,0x11,0x30,0x21,0x0E,0xC1,0x04,0x01,0x00,0x01,0x00
DB 0x00,0x04,0xFF,0xFE,0x00,0x00,0x00,0x08,0x3E,0xFC,0x22,0x88,0x22,0x88,0x22,0x88,0x32,0xC8,0x2A,0xA8,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x2A,0xA8,0x24,0x90
DB 0x10,0x40,0x10,0x24,0x13,0xFE,0x10,0x00,0xFD,0xFC,0x25,0x04,0x25,0xFC,0x24,0x00,0x27,0xFE,0x4A,0x02,0x29,0xFC,0x10,0x20,0x28,0x20,0x44,0x20,0x84,0xA0,0x00,0x40
DB 0x07,0xC0,0x18,0x30,0x20,0x08,0x40,0x04,0x4C,0x,0x8C,0x62,0x80,0x02,0x80,0x02,0x90,0x12,0x98,0x32,0x4C,0x,0x47,0xC4,0x20,0x08,0x18,0x30,0x07,0xC0,0x00,0x00
附录4
元件清单
名称 | 型号 | 数量 |
8*8LED点阵 | LD-1088BS | 4 |
单片机芯片 | STCC52RC | 1 |
排阻 | A 103G | 1 |
按键 | 1 | |
4-16译码器 | 74LS154 | 1 |
导线 | 若干 | |
晶振 | 12MHz | 1 |
电容 | 30pF | 2 |
电解电容 | 1 | |
电阻 | 510欧 | 1 |
电阻 | 4.7千欧 | 1 |