单片机原理及应用课程设计IO并行口直接驱动LED显示河北建院.docx
《单片机原理及应用课程设计IO并行口直接驱动LED显示河北建院.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用课程设计IO并行口直接驱动LED显示河北建院.docx(14页珍藏版)》请在冰豆网上搜索。
![单片机原理及应用课程设计IO并行口直接驱动LED显示河北建院.docx](https://file1.bdocx.com/fileroot1/2023-3/1/7cabba39-3d84-4811-a48b-529639ca7b88/7cabba39-3d84-4811-a48b-529639ca7b881.gif)
单片机原理及应用课程设计IO并行口直接驱动LED显示河北建院
第一节总体设计
一、设计任务及要求
1、利用单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地。
2、在数码管上循环显示0-9数字,时间间隔0.5秒。
二、总体设计思路
1、硬件设计思路及系统框图
2、软件设计思路及程序流程框图
三、总体设计方案说明
设计的“I/O并行口直接驱动LED显示”采用AT89C51单片机作为主控制芯片,用LED作为端口输出器件。
由AT89C51单片机、时钟电路构成一个基本的单片机系统。
再在外部I/O口引脚上连接8位LED数码管用于显示数据,LED数码管采用动态显示方式工作。
系统框图如下所示:
LED数码管
AT89C51
时钟电路
系统总的电路原理图为:
第二节硬件设计
一、硬件介绍
1、AT89C51
AT89C51单片机是美国ATMEL公司生产的8位机产品。
89C51单片机由CPC、内部数据存储器、内部程序存储器、定时/计数器、并行输入/输出(I/O)口、串行口、中断控制系统、时钟电路等部分组成。
89C51单片机芯片有40只引脚,其大致可以分为四类即电源、时钟、控制引脚、I/O口引脚。
其功能如下:
(1)、电源
电源引脚用来接入单片机的工作电源。
:
正常运行时的电源,接+5V。
:
电源地线,接地端
(2)、时钟
两个时钟引脚XTA1、XTA2外接晶体与片内的反相放大器构成了一个振荡器,为单片机提供时钟控制信号,两个时钟引脚也可以外接独立的晶体振荡器。
XTAL1:
此引脚内部是1个片内振荡器的反相放大器的输出端。
如使用外接晶体振荡器时,此引脚应接地。
XTAL2:
此引脚内部接至内部反相放大器的输出和内部时钟发生器的输入。
当使用外部晶体振荡器时,接收外部时钟晶体振荡器的信号。
(3)、控制引脚
/
:
ALE为地址所存允许信号,工作时输出一正脉冲。
为此引脚的第二功能,在对片内EPROM型单片机编程写入时,此引脚为编程脉冲输入端。
:
外部程序存储器的读选通信号,低电平有效。
当CPU执行从外部程序存储器读取指令时,此引脚输出一低电平信号。
:
复位信号的输入端,高电平有效。
在该引脚加上持续时间大于两个机器周期的高电平信号,就可以实现8051的复位操作。
VPD为此引脚的第二功能,即备用电源的输入端。
:
为内外程序存储器选择控制端。
(4)、I/O口引脚
89C51单片机共有四个8位并行I/O,共32个引脚。
P0口(P0.0-P0.7):
8位双向I/O口。
当访问外部存储器时,为地址总线(低8位)及数据总线分时复用口。
P1口(P1.0-P1.7):
8位准双向I/O口。
为通用单一功能的I/O端口。
P2口(P2.0-P2.7):
8位准双向I/O口。
系统扩展时,作为高8位地址线使用;不作系统扩展时,可作为一般I/O口使用。
P3口(P3.0-P3.7):
8位准双向I/O口。
双功能复用口,可做一般I/O使用,同时该口的每一位都具有第二功能,用于特殊信号输入/输出和控制信号(属控制总线)。
图2.1AT89C51单片机模块图
2、LED显示器
LED显示器有静态和动态两种工作方式。
LED显示器工作在静态显示方式下,,B共阴极或共阳极连接在一起,然后接地或+5V,每位的段选线(A,B,…,G,H)与一个8位并行口相连。
这样只要在每一位的段选线上保持段选码电平,该位就能就能保持相应的显示字符。
在多位LED显示时,为了简化电路,降低成本,将所有位的段选线并联在一起,由一个8位的I/O口控制,即控制段选码而共阴极点或共阳极点分别由相应的I/O线控制即控制位选码,这就是动态显示。
图2.2LED显示器
3、时钟电路
CPU的工作是依赖于时钟节拍的,如果没有时钟信号,CPU将停止工作。
8284就是一个为89C51CPU提供时钟信号的时钟发生器。
8284有两种产生时钟信号的方法,选择外部输入信号或接晶体振荡器。
在PC机中8284的F/C脚接地,由XTAL1和XTAL2两个脚外接晶体振荡器来形成89C51的时钟脉冲。
晶体振荡器的工作频率是12MHz。
图2.3时钟电路电路图
4、复位电路
图2.4复位电路电路图
5、输出电路
图2.5输出电路电路图
二、系统原理图
把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;要求:
P0.0/AD0与a相连,P0.1/AD1与b相连,P0.2/AD2与c相连,……,P0.7/AD7与h相连。
七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。
所以分为I/O并行口直接驱动共阴LED显示和共阳LED显示。
图2.6I/O并行口直接驱动共阴LED显示
图2.7I/O并行口直接驱动共阳LED显示
三、元器件清单
元件名称
元件用途
AT89C51
控制核心
电容
时钟电路
晶振
时钟电路
LED显示器
数据输出
电阻
复位电路
电解电容
复位电路
RESPACK
输出电路
74LS04
输出电路
表2.1
第三节软件设计
一、原理分析
(1)、LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码见下表:
76543210=P0.7--P0.0
3FH=00111111在共阳极型中543210为高电平,加个反向器就为为低电平信号,同时对应发光二极管因发亮.(在共阳极型7SEG-COM-AN中输入为低电平信号对应发光二极管因发亮.)
“0”
3FH
00111111
“5”
6DH
01101101
“1“
06H
00000110
“6”
7DH
01111101
“2”
5BH
01011011
“7”
07H
00000111
“3”
4FH
01001111
“8”
7FH
01111111
“4”
66H
01100110
“9”
6FH
01101111
(2)由于显示的数字0-9的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。
这样我们按着数字0-9的顺序,把每个数字的笔段代码按顺序排好!
建立的表格如下所示:
TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
二、程序框图
根据系统控制任务与要求,系统软件流程图如图所示。
图3.1
三、汇编源程序
ORG0000H
LJMPSTART
ORG0030H
START:
MOVR1,#00H;R1清0。
NEXT:
MOVA,R1;R1中的值送入A。
MOVDPTR,#TABLE
MOVCA,@A+DPTR;将ROM中的内容送入A。
MOVP0,A;将A中的内容送入P0口。
LCALLDELAY;转向延时子程序。
INCR1;R1减1.
CJNER1,#10,NEXT;判断是R1是否为10,否则转向NEXT程序
LJMPSTART;转向START程序。
DELAY:
MOVR5,#25;单周期指令为1us时间。
DEL2:
MOVR6,#40;单周期指令为1us时间。
DEL1:
MOVR7,#248;单周期指令为1us时间。
NOP;单周期指令为1us时间。
DEL0:
DJNZR7,DEL0;单周期指令为2us时间。
DJNZR6,DEL1;单周期指令为2us时间。
DJNZR5,DEL2;单周期指令为2us时间。
RET
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
四、程序主程序:
ORG0000H
LJMPSTART
ORG0030H
START:
MOVR1,#00H
五、程序子程序:
1、延时子程序
DELAY:
MOVR5,#25
DEL2:
MOVR6,#40
DEL1:
MOVR7,#248
NOP
DEL0:
DJNZR7,DEL0
DJNZR6,DEL1
DJNZR5,DEL2
RET
2、循环子程序
NEXT:
MOVA,R1
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
INCR1
CJNER1,#10,NEXT
第四节联合调试
操作过程
1、打开ProteusISIS,打开所画原理图
2、双击AT89C51,在弹出的EditComponent对话框ProgramFile一栏中选择在Keil中产生的example.hex文件,单机OK按钮。
按Ctrl+S保存设计。
3、单击Debug菜单栏中选择8051CPU/Registers-U1,8051CPU/SFRMemory-U1和8051CPU/Internal(IDATA)Memory-U1命令弹出三个窗口。
4、按F11但步运行程序观察各寄存器和存储单元的内容变化。
5、按结束按钮结束调试
6、按开始按钮进行仿真运行
图4.1
第五节结束语
经过多天的努力,终于完成了此次设计,设计出了汇集外观精美、方便实用、功能强大的I-O并行口直接驱动共阴LED显示器。
顺利完成了此次设计的任务。
原理图的设计时,我们使用了Protues这个强大的绘图工具,由于一些实际的器件在元件库中无法找到,我们只有自己制作,在这个过程中我们学到了很多的知识和方法。
同时我们明白实践是出真知的唯一途径,只有亲自动手,才能获得最可靠的设计数据。
程序的编写过程也给了我们很大的收获。
在编写程序之前,我们查阅了相关资料,力求做到规范清晰。
在把握整体思路之后,我们先从程序流程图着手,将整个程序分成若干块,分开编写,一边发现问题一边解决问题,并在实验板上检验程序测试情况,根据现象不断修改。
在整个过程中我们体会到编程的技巧,设置子程序的合理性,同时对单片机最小系统的设计有了整体的理解和深刻的体会,使我们的思维的锻炼与能力的培养有了很大的提高和长足的进步。
课程设计是一次很好的实践动手机会,通过实践,我们的知识得到了应用,真正实现了知识的学以致用,理论联系实践,我们会更加注重实践能力的锻炼,注重动手能力的培养。
第六节参考文献
【1】陈宁,王文宁.单片机技术项目教程【M】.南京:
东南大学出版社,2008
【2】蒋辉平、周国雄.基于Proteus的单片机系统设计与仿真实例【M】.北京:
机械工业出版社,2009
【3】薛峰.单片机原理及应用【M】.北京:
北京理工大学出版社,2011