88LED点阵显示数字0到9.docx
《88LED点阵显示数字0到9.docx》由会员分享,可在线阅读,更多相关《88LED点阵显示数字0到9.docx(10页珍藏版)》请在冰豆网上搜索。
88LED点阵显示数字0到9
单片机技术
课程设计说明书
设计课题:
8×8点阵
专业(系)电气学院
班级
学生姓名
指导老师
完成日期
1.课程设计目的
(1)巩固和提高学过的基础知识和专业知识。
(2)提高运用所学的知识进行独立思考和综合分析、解决实际问题的能力。
(3)培养掌握正确的思维方法和利用软件和硬件解决实际问题的基本技能。
(4)增加对单片机的认识,加深对单片机理论方面的理解。
(5)掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通讯等。
(6)熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
2.课程设计题目和要求
(1)课程设计题目:
单片机控制的跑马灯设计
(2)要求:
利用8×8LED点阵显示数字0到9
3.设计内容
3.1系统功能的描述
用单片机控制8×8LED点阵滚动显示数字0到9,利用硬件与软件相结合的方法,通过单片机将数字的代码分别送到相应的列线上面,经过软件编程使二极管从0到9依次显示数字,如此循环。
3.2系统硬件设计
图1系统框图
显示的硬件方式采用以AT89S51单片机为核心的电路来实现,主要由AT89S51芯片、时钟电路、复位电路、驱动电路、8×8LED点阵5部分组成,系统框图如图1所示。
3.1.1AT89S51芯片的介绍
(1)I/O端口线输入输出引脚
P0.0—P0.7(39—32):
P0口食一个漏极开路型准双向I/O口。
在访问外部存储器时,它是分时多路转换地址(低8位)和数据总线,在访问期间激活了内部内部的上拉电阻,在E—PROM编程时,它接受指令字节,而在验证程序时,则输出指令字节。
P1.0—P1.7(1—8):
P1口是带内部上拉电阻的8位双向I/O口。
P2.0—P2.7(21—28):
P2口是一个内部带上拉电阻的8位双向I/O口。
在访问外部存储器时,它送出高8位地址。
P3.0—P3.7(10—17):
P3口是一个内部带上拉电阻的8位双向I/O口。
在MCS—51中,这8个引脚还兼有专用功能,P3的8条口线都定义有第二功能,其具体功能如表1所示。
表1P3口的第二功能
引脚
第二功能
信号名称
P3.0
RXD
串行数据接收
P3.1
TXD
串行数据发送
P3.2
外部中断0申请
P3.3
外部中断1申请
P3.4
T0
定时/计数器0的外部输入
P3.5
T1
定时/计数器1的外部输出
P3.6
外部数据存储器写选通
P3.7
内部数据存储器写选通
(2)控制线控制引脚(ALE/PROG、PSEN、RST、VPD、EA/VPP)
ALE(30):
地址锁存控制信号。
在系统扩展时,用于控制P0口输出的低8位地址锁存起来,以实现地位地址和数据的隔离。
此外,由于ALE是以晶振
的固定频率输出正脉冲,因此,可作为外部时钟或外部定时脉冲使用。
PSEN(29):
外部程序存储控制信号。
在外部ROM时,有效(低电平),以实现外部ROM单元的读操作。
EA(31):
访问程序存储控制信号。
当信号为低电平时,对ROM的读操作限定在外部程序存储器;当信号为高电平时,对ROM的读操作时从内部程序存储器开始,并可延至外部程序存储器。
RST(9):
复位信号。
但输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作。
(3)外接晶体线
XTAL1(19)和XTAL2(18)外接晶体引线端。
当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
(4)主电源引脚
VCC(40):
+5V电源。
VSS(20):
地线(GND)。
3.2.2时钟电路的设计
时钟电路有AT89S51的18、19脚的时钟端(XTAL1及XTAL2)以及12MHz晶振Y1、电容C1、C2组成,采用片内振荡方式,如图2所示。
图2时钟电路
3.2.3复位电路的设计
复位电路采用简易的上电复位电路,主要由电阻R1、R2,电容C3,开关K组成,分别接至AT89S51的RST复位输入端,如图3所示。
图3复位电路
3.2.4驱动电路的设计
LED驱动模块是LED显示屏设计的关键部分,驱动电路设计的好坏直接关系到LED显示屏的亮度、稳定度等重要指标。
本次设计中LED的驱动是采用三极管和74LS154实现的。
此系统中驱动电路是由74LS154和三极管组成的,原理图如图4所示。
图4驱动电路
3.2.58×8LED点阵
(1)工作原理
8×8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上。
当对应的某一行置1,某一列置0,则相应的二极管就亮。
如图5所示,如要将第一个点亮,则9脚接高电平,13脚接低电平,则第一个点就亮了;如果要将第一行点亮,则第9脚要接高电平,而(13、3、4、10、6、11、15、16)这些引脚接低电平,那么第一行就会点亮;如果将第一列点亮,则第13脚接低电平,而(9、14、8、12、1、7、2、5)接高电平,那么第一列就会点亮。
图58×8LED点阵
(2)接线方法
LED的行扫描端接到单片机的P0口,列扫描端接置三极管的发射极。
列扫描端用于LED的数据扫描,通过74LS154的译码和三极管的驱动,使LED发光;行扫描通过P0口为LED的显示给出相应的数据。
3.3系统软件设计
3.3.1计数器初值计算
计算公式:
式中,TC为定时初值;T计数是单片机时钟周期TCLK的12倍;M为计数器摸值该值和计数器工作方式有关,在方式0时M为213;在方式1时M的值为216;在方式2和3为28。
3.3.2数字0到9点阵显示代码的形成
假设显示数字“0”,形成的列代码为00H,00H,3EH,41H,41H,3EH,00H,00H;只要把这些代码分别送到相应的列线上面,即可实现“0”的数字显示。
送第一列线代码到P3端口,同时置第一行线为“0”,其它行线为“1”,延时4ms,送第二列线代码到P3端口,同时置第二行线为“0”,其它行线为“1”,延时4ms,如此下去,直到送完最后一列代码,又从头开始送。
图为数字0到9代码建立如图6所示。
图6数字0到9的代码建立图
数字0到9点阵显示代码:
0:
00H,00H,3EH,41H,41H,41H,3EH,00H
1:
00H,00H,00H,00H,21H,7FH,01H,00H
2:
00H,00H,27H,45H,45H,45H,39H,00H
3:
00H,00H,22H,49H,49H,49H,36H,00H
4:
00H,00H,0CH,14H,24H,7FH,04H,00H
5:
00H,00H,72H,51H,51H,51H,4EH,00H
6:
00H,00H,3EH,49H,49H,49H,26H,00H
7:
00H,00H,40H,40H,40H,4FH,70H,00H
8:
00H,00H,36H,49H,49H,49H,36H,00H
9:
00H,00H,32H,49H,49H,49H,3EH,00H
3.3.3程序流程图
主程序流程图如图7所示
图7主程序流程图
3.2.4源程序
TIMEEQU30H
CNTAEQU31H
CNTBEQU32H
ORG0000H
LJMPSTART
ORG000BH
LJMPT0X
ORG30H
START:
MOVTIME,#00H
MOVCNTA,#00H
MOVCNTB,#00H
MOVTMOD,#01H
MOVTH0,#0F0H
MOVTL0,#60H
SETBTR0
SETBET0
SETBEA
SJMP$
T0X:
MOVTH0,#0F0H
MOVTL0,#60H
MOVDPTR,#TAB
MOVA,CNTA
MOVCA,@A+DPTR
MOVP3,A
MOVDPTR,#DIGIT
MOVA,CNTB
MOVB,#8
MULAB
ADDA,CNTA
MOVCA,@A+DPTR
MOVP1,A
INCCNTA
MOVA,CNTA
CJNEA,#8,NEXT
MOVCNTA,#00H
NEXT:
INCTIME
MOVA,TIME
CJNEA,#250,NEX
MOVTIME,#00H
INCCNTB
MOVA,CNTB
CJNEA,#10,NEX
MOVCNTB,#00H
NEX:
RETI
TAB:
DB0FEH,FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
DIGIT:
DB00H,00H,3EH,41H,41H,41H,3EH,00H
DB00H,00H,00H,00H,21H,7FH,01H,00H
DB00H,00H,27H,45H,45H,45H,39H,00H
DB00H,00H,22H,49H,49H,49H,36H,00H
DB00H,00H,0CH,14H,24H,7FH,04H,00H
DB00H,00H,72H,51H,51H,51H,4EH,00H
DB00H,00H,3EH,49H,49H,49H,26H,00H
DB00H,00H,40H,40H,40H,4FH,70H,00H
DB00H,00H,36H,49H,49H,49H,36H,00H
DB00H,00H,32H,49H,49H,49H,3EH,00H
END
4.设计总结
通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解,同时在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。
通过这次实践使我更深刻的体会到了理论联系实际的重要性,我们在今后的学习工作中会更加的注重实际。