51单片机基本显示模块设计
- 格式:doc
- 大小:484.50 KB
- 文档页数:14
目 录
1 任务及要求 ................................................................................................. 1
1.1 设计任务 ................................................................................................ 1
1.2 设计要求 ................................................................................................ 1
2 设计思想 ..................................................................................................... 1
2.1 硬件设计思想 ........................................................................................ 1
2.2 软件设计思想 ........................................................................................ 2
3 电路原理与电路图 ..................................................................................... 2
3.1 电路原理 ................................................................................................ 2
3.2电路原理图设计 ..................................................................................... 3
4 流程图与算法描述 ..................................................................................... 3
4.1 流程图 .................................................................................................... 3
4.2 具体代码 ................................................................................................ 7
5 设计总结 ................................................................................................... 13
5.1 设计体会 .............................................................................................. 13
参考文献 ......................................................................................................... 13
1
1 任务及要求
1.1 设计任务
(1)单个LED显示
(2)LED数码管显示
(3)16*16点阵显示
1.2 设计要求
单个LED显示实现多种显示效果,数码管能稳定显示数字,16*16点阵图文LED显示屏能显示图形和文字,图形或文字显示是动态的。以AT89C52单片机为控制核心,实现硬件电路的设计、程序设计,并在PROTEUS平台实现仿真。
2 设计思想
2.1 硬件设计思想
(1)单个LED显示设计:选用8个发光二极管,它们的阳极接+5v电源,阴分别与P1口的八个接口相连接(低电平有效),通过改变P1的值来实现多种显示效果。
(2)LED数码管显示 设计:LED数码管的8个接口通过74HC245驱动芯片与P1相连接,4个片选端口与74HC139芯片连接,通过P3口的低两位和最高位来控制片选。
(3)16*16点阵显示设计:在PROTEUS中选择AT89C52(单片机)、RESPACK-8(上拉电阻)、74HC245(驱动芯片)、74HC154(四-十六译码器)、MATRIX-8×8-BLUE(8×8点阵)等元器件,将点阵拼成16×16点阵块(将行线与行线相连,列线与列线相连),行线由单片机的P0、P2分别连驱动芯片共同控制,列线A1-A16由一块四-十六译码器74HC154控制,74HC154由单片机的P3口控制。连线然后进行电气规则检查。P0口是一个8位漏极开路的双向口I/O端口,当控制信号为低电平时,可做通用的I/O端口使用,当控制信号为高电平时,作为数据、地址总线。值得注意的是,由于P0口作为通用I/O端口使用时,漏极处于开路状态,所以需要接5-10欧的上拉电阻。P1口只能作为通用I/O口使用。P2口是一个多功能的8位口,可以字节访问也可以位访问,其字节访问地址为A0H,2
位访问地址为A0H到A7H。在做I/O口使用时,P2为一个准双向口,功能与P1口相同,作为地址输出时,P2口可以输出程序存储器或片外数据存储器的高8位地址,与P0口输出的地址线一起构成16位地址线,从而可分别寻址64KB的程序存储器或片外数据存储器。
2.2 软件设计思想
采用汇编语言编写程序,将程序在proteus中进行编译,生成.HEX文件,然后在设计环境中单击AT89C52,加载程序,然后单击全速运行按钮,先观察到单个LED跑马灯显示效果,然后是LED数码管的显示,最后是16*16点阵显示的动态的“邵阳学院”字样。
程序设计:
(1)单个LED:建立表格,通过@A+DPTTR指令查找一个值给P1口,延时,继续查找给P1口,直到查找完所有的单个LED表格。
(2)LED数码管:先通过P3口的低两位和最高位,选定要显示的某一块,通过查找指令,查找相应的值送P1口,再延时,送0FFH给P1口,熄灭显示,重复这些步骤,直到数码管显示程序结束。
(3)16*16点阵显示:通过P3口的低四位与74HC145(4-16译码器)连接选中点阵中的一列,查找表格给P0、P2各值,调用延时,如此扫描100次,再左移,这样循环实现流动的字样。
3 电路原理与电路图
3.1 电路原理
一个针振电路、一个复位电路。一个AT89C52单片机做为控制电路,P0口借上拉电阻。
(1)单个LED显示:单片机的P1口与8个发光二极管的阴极相连,发光二极管的阳极接+5的电压源,通过对P1口的调节控制其显示效果。
(2)LED数码管显示:P3的三个接口通过74HC139与数码管的片选端相连,控制显示的块,P1口与74HC245驱动芯片相连,实现对数码管的数值输入。
(3)16*16点阵显示:点阵的列由P3口的低四位与74HC154(4-16译码器)3
相连,通过改变P3口低四位的值来实现对点阵列的控制,P0口接74HC245驱动芯片,控制点阵上半部分点阵的行,P2口接74HC245驱动芯片,控制点阵下半部分的行,共同达到对16*16点阵行显示的控制。
3.2电路原理图设计
电路原理图如图3.2.1所示
图3.2.1
4 流程图与算法描述
4.1 流程图
(1)主流程图,如图4.1.1所示
主要描述整个仿真过程,控制各模块显示的顺序。先实现单个LED的显示,再显示LED数码管,最后是16*16点阵的显示。
4
开始单个LED显示显示结束?数码管显示显示结束?16*16点阵显示结束?所有显示结束?结束YNNYNYYN
图4.1.1
(2)单个LED显示模块,如图4.1.2所示
主要描述跑马灯的显示过程 5
(3)LED数码管显示模块,如图4.1.3所示
通过都各显示块的选择,显示相应的数值
入口R2赋值为96表格中对应的值给P1调用延时程序R2-1=0?出口NY入口R1赋值为50选中要显示的数码块送显示的数据全部显示?R1-1=0?出口NYNY
图4.1.2 图4.1.3
(4)16*16LED显示模块,如图4.1.4所示
描述16*16的显示过程
6
入口R2赋值为16给高位赋值给地位赋值点亮该列调用延时R2-1=0?显示下一列显示下一个字显示完?出口NYYN熄灭该列
图4.1.4 7
4.2 具体代码
ORG 0000H
LJMP START
START:MOV DPTR,#TAB1
MOV R2,#0
MOV P0,#00H
MOV P2,#00H
SETB P3.7
LP0:MOV A,R2
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY4
INC R2
CJNE R2,#96,LP0
ACALL DELAY1
ACALL DELAY1
MOV R1,#50
START2:MOV DPTR,#TAB2
MOV R5,#0
LP1:MOV A,R5
MOVC A,@A+DPTR
MOV P3,R5
MOV P1,A 8
ACALL DELAY2
ACALL DELAY2
MOV P1,#0FFH
INC R5
CJNE R5,#04H,LP1
DJNZ R1,START2
ACALL DELAY1
ACALL DELAY1
ACALL DELAY1
MOV R7,#5
MAIN:MOV R1,#00H;选择数据指针入口标志
MOV R2,#10H;列选线
MOV R5,#00H;寻字节显示
MOV R3,#00H;R3用于记录某一静态状态重复扫描次数,若到了100,则向右移动一位格。
MOV R4,#00H;R4用于记录移动的格数,这里R4暂时只能在0-255之间变化。