【最新版】单片机点阵毕业课程设计
目录
1 课题名称 (1)
2 设计任务及要求 (1)
3 工作原理 (2)
3.1阵屏原理 (2)
3.2 89SC51的引脚及相关功能 (3)
4 方案选择 (4)
4.1方案一 (4)
4.2 方案二 (5)
4.3方案选择 (6)
5设计与仿真 (6)
5.1软硬件设计 (6)
5.1.1硬件设计 (6)
5.1.2软件设计 (7)
5.2绘制电路图及印刷板图 (11)
5.3计算机仿真 (11)
6课设总结 (14)
7参考文献 (14)
1 课题名称
LED点阵显示器设计
2 设计任务及要求
1、掌握LED显示屏控制系统的显示原理,学习LED点阵显示数字和字符的编程方法。
2、结合微机原理、单片机技术知识,查阅有关资料,设计一个以单片机为核心的LED点阵显示器系统,采用点阵LED作为显示器显示0-9及其它字符(例如显示"X")。
3 工作原理
3.1阵屏原理
8*8点阵为单色共阳模块,单点的正向工作电压为(Vf)=1.8V,正向电流是(If)=8~10mA。静态点亮器件时(64点全部亮)的总电流是640mA,总电压是1.8V,总功率为1152mW。动态时取决与扫描频率(18s或116s),单点瞬间电流可达80~160mA。
点阵内部结构及外形如上,8X8点阵共由64个发光二极管组
成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1电平,某一列置0电平,则相应的二极管就亮;如要将第一个点点亮,则9脚接高电平13脚接低电平,则第一个点就亮了;如果要将第一行点亮,则第9脚要接高电平,而(13、3、4、10、6、11、15、16)这些引脚接低电平,那么第一行就会点亮;如要将第一列点亮,则第13脚接低电平,而(9、14、8、12、1、7、2、5)接高电平,那么第一列就会点亮。
表1 8*8 LED点阵管脚分布
1 控制第五行显示接高9 控制第一行显示接高
2 控制第七行显示接高10 控制第四列显示接低
3 控制第二列显示接低11 控制第六列显示接低
4 控制第三列显示接低12 控制第四行显示接高
5 控制第八行显示接高13 控制第一列显示接低
6 控制第五列显示接低14 控制第二行显示接高
7 控制第六行显示接高15 控制第七列显示接低
8 控制第三行显示接高16 控制第八列显示接低3.2 89SC51的引脚及相关功能
40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和IO引脚。如右图
⒈)电源:
⑴ VCC - 芯片电源,接+5V;
⑵ VSS - 接地端;
注:用万用表测试单片机引脚电流一般为0v或者5v,这是标准的TTL电平,但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这之是万用表反映没这么快而已,在某一个瞬间单片机引脚电流还是保持在0v或者5v的。
⒉)时钟:XTAL1、XTAL2 - 晶体振荡
电路反相输入端和输出端。
⒊)控制线:控制线共有4根,
⑴ ALEPROG:地址锁存允许片内EPROM编程脉冲
① ALE功能:用来锁存P0口送出的低8位地址
② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此
引脚输入编程脉冲。
⑵ PSEN:外ROM读选通信号。
⑶ RSTVPD:复位备用电源。
① RST(Reset)功能:复位信号输入端。
② VPD功能:在Vcc掉电情况下,接备用电源。
⑷ EAVpp:内外ROM选择片内EPROM编程电源。
① EA功能:内外ROM选择端。
② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
⒋) IO线
80S51共有4个8位并行IO端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
4 方案选择
4.1方案一
4.1.1方案原理图:
4.1.2方案分析:
LED一般采用扫描式显示,实际运用分为三种方式:点扫描、行扫描、列扫描
采用列扫描、行施加数据信号的基本驱动方法。任意时间只有一列施加高电平信号,其余各列均为低压信号。行施加对应该列的数据信号,低电平有效。
以8x8 LED点阵列显示器为例说明字符显示原理,8列顺序扫描结束后,将完成一帧字符的显示。一帧扫描结束后,列扫描从第一行重新开始,周而复始。若行数据保持不变,则显示静态字符。反之,行数据发生变化,则显示内容将发生变化,如果保持前后帧内容的连贯性,就可以显示动态字符。
4.2 方案二
4.2.1方案原理图:
4.2.2方案分析:
由24块8*8点阵led构成一块大屏幕,单片机控制进行循环扫描,用多块移位寄存器控制输出内容,并由单片机串行输出显示内容的行编码,显示屏会滚动显示数字、字母。汉字等内容。
4.3方案选择
第一种方案,选用器件较少,控制比较简单,显示内容比较丰富,能满足课程设计的要求。第二种方案,显示内容丰富,显示效果好,但所用器件较多,控制比较复杂,所以我们选择第一种方案
5设计与仿真
5.1软硬件设计
5.1.1硬件设计
方案一中系统电路图可知系统整体由两大部分构成:以单片机AT89S51为核心的模块;由1块8*8的LED点阵显示屏组成的显示模块;
以下是各单元电路的具体设计:
1、主控制单片机
本次设计使用的是AT89S51的最小系统电路,包括:电源、时钟脉冲、复位电路和程序存储器设定电路,只是接受少量的数字和字符,不用外接存储扩展。
时钟脉冲:AT89S51单片机的最高时钟脉冲频率已经达到了24MHz,它内部已经具备了振荡电路,只要在AT89S51的两个引脚(即19、18脚)连接到简单的石英振荡晶体的2个管脚即可,同时晶体的2个管脚也要用30pF的电容耦合到地。
复位电路:89S51的复位引脚(RESET)是第9脚,当此引脚连接高电平超过2个机器周期,即可产生复位的动作。以12MHz 的时钟脉冲为例,每个时钟脉冲为0.5μS,两个机器周期为1μS,因此,在第9脚上连接一个2μS的高电平脉冲,即可产生复位动作。最简单的就是只有一个电阻跟一个电容就可可靠复位的电路,电阻一般选择10K,电容一般选择10μF。
程序存储器设定电路:31脚接VCC,默认采用内部程序存储器。
2、LED显示模块
本次设计中8*8的LED电子显示屏的制作。相对而言是比较简单的。
5.1.2软件设计
(1) 显示代码的设计
假设显示数字“0”
1 2 3 4 5 6 7 8
●●●
●●
●●
●●
●●
●●
●●●
00 00 3E 41 41 41 3E 00
因此,形成的列代码为00h,00h,3eh,41h,41h,41h,3eh,00h;只要把这些代码按扫描顺序分别送到相应的列线上面,即可实现“0”的数字显示。其他列代码用类似方法设计。
送显示代码过程如下所示
送第一列线代码到P3端口,同时置第一行线为“0”,其它行线为“1”,延时2ms左右,送第二列线代码到P3端口,同时置第二行线为“0”,其它行线为“1”,延时2ms左右,如此下去,直
到送完最后一列代码,又从头开始送。由于扫描速度很快,眼睛看到的是完整的数字。则类似可得其他数字及字符的编码。
(2)程序设计
1.流程图
2.程序设计
TIM EQU 30H
CNTA EQU 31H
CNTB EQU 32H
ORG 00H
LJMP START
ORG 0BH 中断入口
LJMP T0X
ORG 30H
START: MOV TIM,#00H 初始化
MOV CNTA,#00H
MOV CNTB,#00H
MOV TMOD,#01H
MOV TH0,#()256中断赋值
MOV TL0,#() MOD 256
SETB TR0 开中断
SETB ET0
SETB EA
SJMP $ 循环等待
T0X: MOV TH0,#()256 中断程序
MOV TL0,#() MOD 256恢复t0的计数初值
MOV DPTR,#TAB 查表,找到行选通信号 MOV A,CNTA
MOVC +DPTR
MOV P3,A 行选通信号给p3口 MOV DPTR,#DIGIT
MOV A,CNTB
MOV B,#8
MUL AB
ADD A,CNTA
MOVC +DPTR
MOV P1,A 将显示信号给p1
INC CNTA
MOV A,CNTA
CJNE A,#8,NEXT
MOV CNTA,#00H
NEXT: INC TIM
MOV A,TIM
CJNE A,#250,NEX 一秒后调整显示值
MOV TIM,#00H
INC CNTB
MOV A,CNTB
CJNE A,#10,NEX
MOV CNTB,#00H
NEX: RETI
TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH 行选通DIGIT: DB 00H,00H,3EH,41H,41H,41H,3EH,00H 0
DB 00H,00H,00H,00H,21H,7FH,01H,00H 1
DB 00H,00H,27H,45H,45H,45H,39H,00H 2
DB 00H,00H,22H,49H,49H,49H,36H,00H 3
DB 00H,00H,0CH,14H,24H,7FH,04H,00H 4
DB 00H,00H,72H,51H,51H,51H,4EH,00H 5
DB 00H,00H,3EH,49H,49H,49H,26H,00H 6
DB 00H,00H,40H,40H,40H,4FH,70H,00H 7
DB 00H,00H,36H,49H,49H,49H,36H,00H 8
DB 00H,00H,32H,49H,49H,49H,3EH,00H 9
END
3.程序调试
调试程序采用Keil uVision3,首先启动keil软件的集成开发环境,点击“Project—>New Project”建立新的工程,选择AT89S51作为目标芯片。建立新的源文件,将程序输入并将源文件添加到工程中。
编译程序并改正程序中的错误,当程序没错误后点击“Debug —> StartStop Debug ”进入程序动态调试状态,验证程序能不能正确的执行,不能则从新修改源程序,如果能则调试工作结束。
5.2绘制电路图及印刷板图
用protell99SE画出电路原理图如下:
5.3计算机仿真
电路图
(1) 打开Keil uVision3,新建Keil项目,选择AT89S51单片机作为CPU,新建C语言源文件,编写程序,并将其导入到“Source Group”中。在“Option for Target”对话窗口中,选中“Output”选项卡中的“Create HEX”选项和“Debug”选项卡中的“Use:Proteus VSM Simulator”选项。编译源程序,改正程序中的错误。
(2) 在Proteus ISIS中,选中AT89S51并单击鼠标左键,打开“Edit Compoment”对话窗口,设置单片机晶振频率为12MHZ,在此窗口中的“Program File”栏中,选择先前用Keil生成的.HEX 文件。在Proteus ISIS的菜单栏中选择“File”->“Save Design”选项,保存设计。在Proteus ISIS的菜单栏中,打开“Debug”下拉菜单,在菜单中选中“Use Remote Debug Monitor”选项,以支持与Keil的联合调试。
(3) 在Keil的菜单栏中选择“Debug”->“StarStop Debug Session”选项,或者直接单击工具栏的“Debug>StarStop Debug Session”图标,进入程序调试环境。按“F5”键,顺序运行程序。调出“Proteus ISIS”界面,可以看到如下图的显示内容。
仿真结果
(1)显示数字
(2)显示字符
6课设总结
单片机是当前流行的控制技术,使用简单、功能强大、成本也很低,对于我们以后的工作有很大用处,这次课设我们用单片机来完成不仅提高了我们对单片机的兴趣,而且使我们所学知识在实际中得到应用,提高了我们的应用能力。
课设使用了点阵,我们上课并没有学习这方面的内容,通过我们查资料,很快领会了点阵的使用方法,课设使用了多种软件帮助设计,让我们对设计方法有了进一步了解,而且我们设计了不同的显示内容,让我们对点阵的显示有了基本的掌握,我们感觉很有成就感。
我在这个学期做了一个单片机的小项目,对单片机已经比较熟悉,这次课设并没用感觉到很难,我们小组分工明确,各负其责,我主要负责软件的设计与调试。经过我们三个的共同努力,很快便将仿真结果做了出来。作出的结果可能不能让老师十分满意,但我们已经为我们的成果欢呼雀跃了。这只是一次简单的课设,在实际中的应用还会更难,这都需要我们不断的学习新的技术,不断提高自己的应用能力。
7参考文献
1、郑初华主编汇编语言、微机原理及接口技术第2版北京:电子工业出版社 2006
2、张友德等单片微型机原理、应用与实验第五版上海:复旦大学出版社 2003
3、网站:电子工程师之家