LED阵列.docx
《LED阵列.docx》由会员分享,可在线阅读,更多相关《LED阵列.docx(33页珍藏版)》请在冰点文库上搜索。
LED阵列
课程设计
课程名称微机原理及应用
课题名称LED阵列
专业电子科学与技术
班级
学号
姓名
指导教师
2011年7月3日
湖南工程学院
课程设计任务书
课程名称微机原理及应用
课题LED阵列显示系统
专业班级
学生姓名
学号
指导老师
审批
任务书下达日期2011年6月27日
任务完成日期2011年7月8日
设计内容与设计要求
设计内容:
设计一个简单LED阵列显示系统。
设计内容包括
(1)显示汉字和数字;
(2)具有左移、右移功能
(3)具有上移、下移及移动功能(选作)
设计要求:
1)确定系统设计方案;
2)进行系统的硬件设计,并用PROTEL软件绘制详细完整的电路图*;
3)完成必要的参数计算与元器件选择;
4)完成应用程序设计;
5)进行软硬件调试;
主要设计条件
1、单片机开发实验台/PROTEUS软件
2、PC机
3、万用表
说明书格式
1.课程设计任务书
2.目录
3.系统总体方案选择与说明
4.系统结构框图与工作原理
5.各单元硬件设计说明及计算方法
6.软件设计与说明(包括流程图)
7.调试结果与必要的调试说明
8.使用说明
9.程序清单
10、总结
11、参考文献
附录
附录A系统原理图
附录B程序清单
进度安排
设计时间为两周
第一周
星期一、上午:
布置课题任务,讲课及课题介绍
下午:
借阅有关资料,总体方案讨论
星期二、确定总体设计方案
星期三、硬件模块方案设计
星期四、软件模块方案设计
星期五、各硬件模块设计
第二周
星期一、各硬件模块设计
星期二、各软件模块设计
星期三、各软件模块设计
星期四、写说明书
星期五、上午:
写说明书,整理资料
下午:
交设计资料,答辩
参考文献
1、《单片机原理及应用》李建忠编西安电子科技大学出版社
2、《单片微型计算机原理与接口技术》高峰编电子工业出版社
3、《单片机应用新技术教程》邹逢兴编高等教育出版社
4、《16位微型计算机原理接口及其应用》朱宇光编电子工业出版社
5、《微型计算机原理与接口技术》吴秀清编中国科学技术出版社
6、《微型计算机接口技术》邓亚平编清华大学出版社
7、《单片机原理及及应用》王迎旭编机械工业出版社
一.系统总体方案…………………………………………7
二.各单元设计说明……………………………………8
2.1LED显示……………………………………………8
2.2AT89C51单片机……………………………………10
2.374HC154芯片……………………………………12
2.4振荡电路……………………………………………13
2.5复位电路……………………………………………14
三.软件设计………………………………………………14
3.1显示驱动程序………………………………………15
3.2系统主程序………………………………………………16
四.系统调试………………………………………………17
五.元件清单………………………………………………17
六.总结与体会……………………………………………18
七.参考文献………………………………………………18
八.附录……………………………………………………19
A(原理图)………………………………………………19
B(程序清单)……………………………………………20
一.系统总体方案
LED点阵总体框图如图1所示,点阵电路大体上可以分成微机本身的硬件、显示驱动电路、控制信号电路三部分。
控制电路部分包括一个51CUP和一些外围电路。
在整个电路当中此控制电路部分相当于一个上位机,它负责控制整个电路以及相应的程序的运行、与PC机的串行通讯、以及给屏体电路部分发送命令。
点阵显示屏体以及它的行和列的各个驱动电路。
由于两部分的电路在制板时可以放在一起,所以可以将其字库放到控制电路部分使用串行通讯方式来与屏体电路部分进行数据和命令的传送。
此显示电路采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。
由行译码器给出的行选通信号,从第一行开始,按顺序依次对各行扫描(把该行与电源的一端接通)。
另一方面,根据各列锁存的数据,确定相应的列驱动器是否将该列与电源的另一端接通。
接通的列就在该行该列点燃相应的LEDl未接通的列所对应的LED熄灭。
可通过扫描输出口的控制实现颜色的转换。
图1点阵的总体框图
二.各单元设计说明
2.1LED显示
LED显示一般有静态和动态显示两种方案,静态方案虽然设计简单,但其使用的管脚太多,如本设计中16x16的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,16x16的点阵需要256/8=32个锁存器。
这个数字很庞大,因为我们仅仅是16x16的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。
因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。
具体就16x16的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(共阳极的接法如图2所示),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。
当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。
采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。
显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。
显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。
从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。
显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。
当列数很多时,并列传输的方案是不可取的。
采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。
但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。
这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。
对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。
解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。
即在显示本行各列数据的同时,传送下一列数据。
为了达到重叠处理的目的,列数据的显示就需要具有所存功能。
经过上述分析,就可以归纳出列驱动器电路应具有的功能。
对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能。
这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。
图2LED共阳极形式
2.2AT89C51单片机
AT89C51是一种带4KB闪烁可编程可擦除只读存储器的低电压、高性能CMOS型8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,能够进行1000次写/擦循环,数据保留时间为10年。
他是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
因此,在智能化电子设计与制作过程中经常用到AT89C52芯片。
引脚如图3所示
图3AT89C51引脚图
引脚功能:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
2.374HC154芯片
74HC154为4线-16线译码器,当选通端(G1、G2)均为低电平时,可将地址端(ABCD)的二进制编码在一个对应的输出端,以低电平译出。
如果将G1和G2中的一个作为数据输入端,由ABCD对输出寻址,74HC154还可作1线-16线数据分配器。
图4是芯片74LHC54管脚。
引脚功能介绍
A、B、C、D译码地址输入端(低电平有效);
G1、G2选通端(低电平有效);
0-15输出端(低电平有效)。
图474HC154引脚
2.4振荡电路
振荡电路由一个晶振和两个小电容组成,用来产生时钟频率。
具体电路如图5所示
图5振荡电路
AT89C52单片机芯片内部有一个反向放大器构成的振荡器,XTAL1和XTAL2分别为振荡器电路的输入端和输出端,时钟可由内部和外部生成,在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就会产生自激振荡。
系统采用的定时元件为石英晶体和电容组成的并联谐振回路。
晶振频率选择12MHz,C1、成的电容值取22PF,电容的大小频率起微调的作用。
2.5复位电路
复位电路由一个电阻、按键和一个电容组成,用来产生复位信号,使单片机上电的时候复位。
具体电路如图6所示
图6复位电路
单片机有多种复位电路,本系统采用电平式开关复位与上电复位方式,当上电时,C1相当于短路,使单片机复位,在正常工作时,按下复位时单片机复位。
在有时碰到干扰时会造成错误复位,但是大多数条件下,不会出现单片机错误复位,而可能会引起内部某些寄存器错误复位,在复位端加一个去耦电容,则会得到更好的效果。
三.软件设计
本软件要求实现如下要求:
汉字要稳定并且文字要以左移、右移、上移、下移来显示。
显示屏软件模块:
初始化程序、主程序、显示程序、扫描程序。
显示程序的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。
软件设计中,显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第二层是上层的系统应用程序。
显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。
显示驱动器程序由定时器T0中断程序实现。
系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。
3.1显示驱动程序
显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下:
刷频率(帧频)=1/16×T0溢=1/16×f/12(65536-t)
其中f为晶振频率,t为定时器T0初值(工作在16位定时器模式)。
然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。
为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。
图7为显示驱动程序(显示屏扫描函数)流程图。
图7显示驱动程序流程图
3.2系统主程序
系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;然后以“左移”效果显示“骆梦盼”这几个汉字,接着下移、右移、上移显示这几个汉字。
由于单片机没有停机指令,所以可以设置系统程序不断的循环执行上述显示效果。
单元显示屏可以接收来自控制器(主控制电路板)或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容。
如果想改变些事内容,先用字模产生字代码,将用这段代码覆盖原来的代码,即可显示你想要的内容,图8是系统主程序流程图。
循
还
显
示
图8系统主程序流程图
四.系统调试
◆调试主要分为硬件调试和软件调试:
硬件调试:
在焊接电路板的时候,应该从最基本的最小系统开始,分模块,逐个进行焊接测试。
在对各个硬件模块进行测试时,要保证软件正确的情况下去测试硬件,要不然发生错误时,不知道到底是哪一方出错了。
当然,在设计的过程中也存在着失误和不足,在调试中进行修改了。
焊接完成后,检验点阵、及线路的好坏:
烧进检验程序,点阵将自第一排向下(上)点亮。
检验无异常,下载主程序。
软件调试:
软件部分是先参考书上的例子,然后自己根据硬件电路写程序,由于以前所学是单片机汇编语言,所以这个系统在编写程序过程中都采用汇编语言编写。
刚刚开始,编写不会一次性通过,经过仔细分析修改最后编译成功。
但是,在实际写如S51中,LED显示屏出现各种各样的乱码,通过再次认真仔细分析多次修改程序后,程序能够正常运行。
五.元件清单
AT89C521个
74HC1541个
8*8LED阵列4个
晶振2个
电容2个
开关1个
排阻1个
六.总结与体会
本文设计的6x16的点阵LED图文显示屏,能够在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示的图形和文字较稳定、清晰。
图形或文字向上滚动显示。
本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。
在此次设计中,我们得到以下体会:
一、在这次点阵设计的过程让我进一步熟悉KEIL及Proteus的使用。
二、本次设计结果仍有缺陷,有一行总是全亮,干扰显示。
三、通过这次点阵设计,重新复习并进一步学习了MCS-52优点,明确了研究目标。
四、本文设计的LED显示屏能够实现在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。
图形或文字以移入移出方式显示。
五、在后的设计中,既要想到电路器件的联合使用,又要灵活变通,举一反三。
在焊接方面,我们了解到焊接某些器件时,要先消去电烙铁上的静电,防止静电对芯片特别是放大器件造成伤害,焊接二极管、三极管等芯片时要快,防止持续高温损坏芯片。
七.参考文献
1、《单片机原理及应用》李建忠编西安电子科技大学出版社
2、《单片微型计算机原理与接口技术》高峰编电子工业出版社
3、《单片机应用新技术教程》邹逢兴编高等教育出版社
4、《16位微型计算机原理接口及其应用》朱宇光编电子工业出版社
5、《微型计算机原理与接口技术》吴秀清编中国科学技术出版社
6、《微型计算机接口技术》邓亚平编清华大学出版社
7、《单片机原理及及应用》王迎旭编机械工业出版社
八.附录
A(原理图)
B(程序清单)
org0000h
jmpbegin
org0030h
begin1:
movsp,#40h
movdptr,#table
movp0,#00
movp2,#00
calldelay
l4:
mov21h,#0bfh
movr0,#0bfh
movr5,#04
l3:
movr3,#20h
l2:
movr4,#16
movr1,#10h
movr2,00h
l1:
mova,r1
movp1,r1
decr1
mova,r2
movca,@a+dptr
movp2,a
decr2
mova,r2
movca,@a+dptr
movp0,a
decr2
calldelay
movp0,#00h
movp2,#00h
djnzr4,l1
djnzr3,l2
dec21h
dec21h
movr0,21h
cjner2,#01,l3
jmpstart
START:
MOVSP,#70H
MOVR6,#00H
MOVR0,#20H
MOVR1,#30H
MOVDPTR,#TABLE1
CALLLOADING
;MOVR0,#20H
;MOVXA,@R0
LOOP:
MOV60H,#06H
MOVDPTR,#TABLE2
AGAIN:
MOVR0,#40H
MOVR1,#50H
CALLLOADING
MOVR4,#16
NEXT:
CALLROTATE
;MOVR0,#20H
;MOVA,@R0
MOVR5,#255
LP2:
MOVR7,#16
MOVR3,#00H
MOVR0,#20H
MOVR1,#30H
LP1:
MOVA,R3
MOVP1,A
MOVA,@R0
MOVP0,A
INCR0
MOVA,@R1
MOVP2,A
INCR1
INCR3
DJNZR7,LP1
DJNZR5,LP2
DJNZR4,NEXT
DJNZ60H,AGAIN
JMPbegin
begin:
movsp,#40h
movdptr,#table3
movp0,#00
movp2,#00
calldelay
x4:
mov21h,#00h
movr0,#00h
movr5,#04
x3:
movr3,#20h
x2:
movr4,#16
movr1,#00h
movr2,00h
x1:
mova,r1
movp1,r1
incr1
mova,r2
movca,@a+dptr
movp0,a
incr2
mova,r2
movca,@a+dptr
movp2,a
incr2
calldelay
movp0,#00h
movp2,#00h
djnzr4,x1
djnzr3,x2
inc21h
inc21h
movr0,21h
cjner2,#0beh,x3
jmpstart1
START1:
MOVSP,#70H
MOVR6,#00H
MOVR0,#20H
MOVR1,#30H
MOVDPTR,#TABLE1
CALLLOADING1
;MOVR0,#20H
;MOVXA,@R0
LOOP1:
MOV60H,#6
MOVDPTR,#TABLE2
AGAIN1:
MOVR0,#40H
MOVR1,#50H
CALLLOADING1
MOVR4,#16
NEXT1:
CALLROTATE10
;MOVR0,#20H
;MOVA,@R0
MOVR5,#255
LP21:
MOVR7,#16
MOVR3,#00H
MOVR0,#20H
MOVR1,#30H
LP11:
MOVA,R3
MOVP1,A
MOVA,@R0
MOVP0,A
INCR0
MOVA,@R1
MOVP2,A
INCR1
INCR3
DJNZR7,LP11
DJNZR5,LP21
DJNZR4,NEXT1
DJNZ60H,AGAIN1
JMPl4
LOADING1:
MOVR2,#16
L_11:
MOVA,#0
MOVCA,@A+DPTR
MOV@R0,A
INCR0
INCDPTR
CLRA
MOVCA,@A+DPTR
MOV@R1,A
INCR1
INCDPTR
DJNZR2,L_11
RET
ROTATE10:
PUSHACC
SETBRS1
MOVR3,#00H
MOVR4,#16
ROTATE11:
CLRCY
MOVA,#40H
ADDA,R3
MOVR0,A
MOVA,@R0
RRCA
MOV@R0,A
MOVA,#50H
PUSHPSW
ADDA,R3
MOVR0,A
MOVA,@R0
POPPSW
RRCA
MOV@R0,A
MOVA,#20H
PUSHPSW
ADDA,R3
MOVR0,A
MOVA,@R0
POPPSW
RRCA
MOV@R0,A
MOVA,#30H
PUSHPSW
A