89C51单片机控制显示系统设计.docx
《89C51单片机控制显示系统设计.docx》由会员分享,可在线阅读,更多相关《89C51单片机控制显示系统设计.docx(27页珍藏版)》请在冰豆网上搜索。
![89C51单片机控制显示系统设计.docx](https://file1.bdocx.com/fileroot1/2023-2/3/2f6b6f58-e90f-4b64-b5ae-7fb5de820d31/2f6b6f58-e90f-4b64-b5ae-7fb5de820d311.gif)
89C51单片机控制显示系统设计
桂林电子科技大学
单片机最小应用系统
设
计
报
告
指导老师:
吴兆华
学生:
易云志
学号:
09210201
桂林电子科技大学机电工程学院
2010-6-23
目录
一设计题目:
显示系统设计1
二设计内容与要求1
三设计目的和意义1
3.1设计目的1
3.2设计意义1
四控制系统的硬件设计2
4.1单片机的相关知识2
4.1.1AT89S51介绍2
4.1.2AT89S51的运行模式3
4.1.3MCS-51系列单片机的并行I/O口4
4.1.4晶振电路5
4.1.5复位电路6
4.2数码管显示电路8
4.2.1数码管简介8
4.2.2数码管驱动方式9
4.2.3数码管字型代码10
4.3按键控制电路10
4.3.1拨动开关简介10
4.3.2键盘开关简介10
五控制系统的软件设计12
5.1程序设计12
5.2程序流程图13
5.3仿真结果14
5.43D图以及实物15
5.5结果分析16
六电路板的制作16
七系统设计总结17
参考文献19
一设计题目:
显示系统设计
二设计内容与要求
用89C51单片机控制八段数码管显示数据,要求循环显示0~9。
数字显示时间可以按键设定(如可设定为1秒或2秒等,各数字显示时间同),显示时间可调。
三设计目的和意义
3.1设计目的
1.进一步熟悉和掌握单片机的结构及工作原理,加深对单片机理论知识的理解;
2.掌握单片机内部功能模块。
如定时器/计数器、中断系统、存储器、I/O口等;
3.掌握单片机的接口及相关外围芯片的特性、使用与控制方法;
4.了解单片微机系统中实现数码管显示的原理及方法;
5.详细了解LED数码管的结构和工作原理;
6.掌握单片机汇编编程技术中的设计和分析方法;
7.学会使用并熟练掌握电路绘制软件Protel99SE(或DXP);
8.掌握电路图绘制及PCB图布线技巧;
9.熟悉掌握proteus软件进行电路仿真;
10.巩固使用keil软件和烧录软件编写程序和监测程序的可行性。
3.2设计意义
1、在掌握单片机相应基础知识的前提下,熟悉单片机最小应用系统的设计方法及系统设计的基本步骤;
2、完成所需单片机最小应用系统原理图设计绘制的基础上完成系统的电路图设计;
3、完成系统所需的硬件设计制作,在提高实际动手能力的基础上进一步巩固所学知识;
4、进行题目要求功能基础上的软件程序编程,会用相应软件进行程序调试和测试工作;
5、通过单片机应用系统的设计将所学的知识融会贯通,锻炼独立设计、制作和调试单片机应用系统的能力;领会单片机应用系统的软、硬件调试方法和系统的研制开发过程,为进一步的科研实践活动打下坚实的基础。
四控制系统的硬件设计
整个系统主要包括单片机的晶振电路,按键复位电路,系统显示的数码管电路,开关控制电路等。
具体的电路原理图如图1所示。
图1整个系统电路原理图
4.1单片机的相关知识
4.1.1AT89S51介绍
AT89S51单片机是美国ATMEL公司生产的低功耗、高性能CMOS8位单片机,片内含4Kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器,既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
AT89S51单片机各引脚如图2所示。
图2AT89S51引脚图
AT89S51具有如下特点:
40个引脚、8kBytesFlash片内程序存储器、128bytes的随机存取数据存储器(RAM)、32个外部双向输入/输出(I/O)口、5个中断优先级2层中断嵌套中断、2个16位可编程定时计数器、2个全双工串行通信口、看门狗(WDT)电路以及片内时钟振荡器。
4.1.2AT89S51的运行模式
(1)空闲模式
在空闲模式下,CPU处于睡眠状态,振荡器和所有片内外围电路仍然有效。
空闲模式可由软件设置进入(设IDL=1)。
在这种模式下,片内RAM和SFR中的内容保持不变。
空闲模式可通过任何一个允许中断或硬件复位退出。
若用硬件复位方式结束空闲模式,则在片内复位控制逻辑发生作用前长达约两个机器周期时间内,器件从断点处开始执行程序。
片内硬件禁止访问内部RAM,但不禁止访问端口。
为避免采用复位方式退出空闲模式时对端口的不应有的访问,在紧随设置进入空闲指令(即设IDL=1)的后面,不能是写端口或外部RAM的指令。
(2)掉电模式
引起掉电模式的指令是执行程序中的最后一条指令(使PD=1的指令)。
在掉电模式下,振荡器停止工作,CPU和片内所有外围部件均停止工作,但片内RAM和SFR中的内容保留不变,直到掉电模式结束。
退出掉电模式可用硬件复位或任何一个有效的外部中断INT0和INT1。
复位可重新设置SFR中的内容,但不改变片内RAM中的内容。
在Vcc电源恢复到正常值并维持足够长的时间之后,允许振荡器恢复并达到稳定,方可进行复位,以退出掉电模式。
4.1.3MCS-51系列单片机的并行I/O口
接口电路是微机必不可少的组成部分,并行输入确出接口是CPU和外部进行信息交换的主要通道。
MSC-51系列单片有4个8位并行双向I/O口P0~P3,共32根I/O线。
每一根线能独立用作输入或输出。
单片机可以外接键盘、显示器等外围设备.还可以进行系统扩展,以解决硬件资源不足问题。
4个并行口都是双向口,既可以输入又可以输出。
P0、P2口经常作外部扩展存储器时的数据、地址线,P3口除作I/O口外,每一根都有第二功能。
这4个I/O口结构基本相同,但仍存在差别。
(1)P1口是最常用的I/O口如图3所示,因为不作数据地址线,其结构中没有数据地址线,也没有多路开关MUX,输出驱动电路接有上拉电阻。
P1口输入输出时与P0作I/O时相似,输出数据时.先写入锁存器,经Q端反相,再经场效应管反相输出到引脚。
输入时,先向锁存器写l,使v管截止.外部引脚信号由下方读缓冲器送入内部总线,完成读引脚操作。
P1口也可以读锁存器。
外部提升电阻将引脚拉升至高电平,但输人的低电平信号能将其拉低,不会影响低电平的输入。
图3P1口一位结构
(2)P3口为双功能口,当P3口作为通用I/O口使用时,它为准双向口,且每位都可定义为输入或输出口,其工作原理同P1口类似。
(3)P3口还具有第二功能,其引脚描述,P3口特殊功能如表1。
表1P3口特殊功能介绍
口线
特殊功能
信号名称
P3.0
RXD
串行输入口
P3.1
TXD
串行输出口
P3.2
INT0
外部中断0输入口
P3.3
INT1
外部中断1输入口
P3.4
T0
定时器0外部输入口
P3.5
T1
定时器1外部输入口
P3.6
WR
写选通输出口
P3.7
RD
读选通输出口
4.1.4晶振电路
电源引脚Vcc和Vss
Vcc:
电源端,接+5V。
Vss:
接地端。
时钟电路引脚XTAL1和XTAL2
XTAL1:
接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,若使用外部TTL时钟时,该引脚必须接地。
XTAL2:
接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出,若使用外部TTL时钟时,该引脚为外部时钟的输入端。
系统扩展时,ALE用于控制地址锁存器锁存P0口输出的低8位地址,从而实现数据与低位地址的复用。
图4系统晶振电路
系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路(如图4所示)。
AT89S单片机内部有一个用于构成振荡器的高增益反相放大器。
引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。
这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。
外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。
对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。
因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为30pf。
在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。
外部程序存储器读选通信号,是读外部程序存储器的选通信号,低电平有效。
程序存储器地址允许输入端/VPP。
当为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFH时,将自动转向执行片外程序存储器指令。
当为低电平时,CPU只执行片外程序存储器指令。
4.1.5复位电路
复位使单片机处于起始状态,并从此状态开始运行MCS5-51单片机RST引脚为复位端,该引脚连续保持2个机器周期(24个时钟振荡周期)以上的高电平。
可使单片机复位。
本论文使用的是外部复位电路,单片机在启动后要从复位状态开始运行,因此上电时要完成复位工作,称上电复位,如图5-a所示。
上电瞬间电容两端的电压不能发生突变,只RST端为高电平+5v,上电后电容通过及RC电路放电RST端电压逐渐下降,直至低电平0V,如图5-c所示。
适当选择R、C的值,使RST端的高I电平维持2个机器周期以上即可完成复位。
单片机L在运行过程中,出于本身或外并干扰的原因会导致出错。
这时可按复位键以重新开始远行,按键复位可分为按键电平复位或按健脉冲复位,如图5-b所示。
按键脉冲复位和上电平复值的原理是一样的,都是利用RC电路的放电原理,如图5-d所示。
让RST端能保持一段时间的高电平,以完成复位,按键电平复位时,按键时间也应保持在两个机器周期以上。
(a)上电复位(b)按键电平复位
(c)RC放电过程(d)电平复位过程
图5单片机常用复位电路
根据设计要求和计算简便的原则,我们选择12M的石英晶振、30pf的电容、+5V电源、按键复位电路,最小系统如图6。
图6单片机最小系统
4.2数码管显示电路
图7数码管管脚及类型
4.2.1数码管简介
如图7所示,数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点dp显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
4.2.2数码管驱动方式
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
①静态显示驱动:
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
②动态显示驱动:
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
4.2.3数码管字型代码
在本实验中,作者采用的是共阴极八段数码管,驱动方式是静态显示。
八段数码管的字型代码表如表2。
表2共阴极数码管字型代码
显示字型
dp
g
f
e
d
c
b
a
段码
0
0
0
1
1
1
1
1
1
3FH
1
0
0
0
0
0
1
1
0
06H
2
0
1
0
1
1
0
1
1
5BH
3
0
1
0
0
1
1
1
1
4FH
4
0
1
1
0
0
1
1
0
66H
5
0
1
1
0
1
1
0
1
6DH
6
0
1
1
1
1
1
0
1
7DH
7
0
0
0
0
0
1
1
1
07H
8
0
1
1
1
1
1
1
1
7FH
9
0
1
1
0
1
1
1
1
6FH
4.3按键控制电路
单片机具有人机对话功能,开关、键盘就是实现人机对话的主要输入设备,通过它能随时发出各种控制指令和数据到单片机。
有拨动开关、按键开关等。
4.3.1拨动开关简介
拨动开关有各种类型,本实验采用1P2T型,如图8所示,一端接高电平,另一端接地。
图8拨动开关
4.3.2键盘开关简介
键盘是由一组按键开关所组成。
按键开关所组成的键盘可为两种形式:
独立式按键键盘和矩阵式按键键盘。
(1)按键特性
通常,按键所用开关为机械弹性开关,当按下键帽时,按键内的复位弹簧被压缩,动片触点和静片触点相连,键盘的两个引脚被接通;松手后,复位弹簧将动片弹开,使动片和静片触点脱离接触,键盘的两个引脚被断开。
在理想状态下,按键引脚电平的变化如图9(a)所示。
但实际上,由于机械触点的弹性作用,一个开关从开始接上到接触稳定要经过数ms的抖动时间,抖动时间的长短与按键的机械特性有关,一般为5~10ms,按键抖动电压波形如图9(b)所示。
图9按键抖动电压波形
(2)键盘输入需要解决的问题
①按键的确认
按键的确认就是判断按键是否闭合,反映在电压上就是和按键相连的引脚呈现高电平还是低电平。
如果是高电平,则表示没有闭合;如果是低电平。
则表示闭合。
所以通过检测电平的高低状态,就能确认是否有键按下。
②按键抖动的消除
为了确保一次按键动作只确认一次按键,必须消除机械开关的抖动影响。
消除按键的抖动,通常有硬件、软件两种消除方法。
一般在按键较多时,常采用软件的方法消除抖动。
即在第一次检测到有按键按下时,执行一段延时5ms的子程序后,再确认按键电平是否仍保持为闭合状态电平,如果保持为闭合状态电平就可确认真正有键按下,从而消除抖动的影响。
本系统采用的按键电路如图10所示。
由51单片机的P1.3口输入信号来控制数字的显示时间。
图10按键控制电路
五控制系统的软件设计
5.1程序设计
本系统的软件系统主要分为主程序、延时子程序、键盘扫描程序三大模块。
程序如下:
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharcodeSMGBIT[]={0x3f,0x06,
0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};`
sbitSel=P1^3;
voiddelay(uintms)
{
uinti,j;
for(j=0;jfor(i=0;i<120;i++);
}
voidSMGDTXS1s()
{
uinti;
for(i=0;i<10;i++)
{
P0=SMGBIT[i];
delay(1000);
}
}
voidSMGDTXS500ms()
{
uinti;
for(i=0;i<10;i++)
{
P0=SMGBIT[i];
delay(500);
}
}
ucharScan_key()
{
uchari;
while
(1)
{
i=Sel;
switch(i)
{
case0:
delay(5);
if(i==0)//消抖
return(0);
case1:
delay(5);
if(i==1)//消抖
return
(1);
default:
break;
}
}
}
voidmain()
{
ucharm;
while
(1)
{
m=Scan_key();
if(m==0)
{
SMGDTXS1s();
}
if(m==1)
{
SMGDTXS500ms();
}
}
}
5.2程序流程图
程序流程图主要包括键盘扫描程序、调用1秒延时程序、调用0.5秒延时程序以及调用数码管显示程序。
为了实现数码管依次循环显示0~9,使用了循环语句;为了对各位数字显示时间的可调,使用不同的延时子程序来实现。
程序流程图如图11所示。
5.3仿真结果
根据protel99se软件所设计的电路图,使用proteus软件设计同样电路,在使用调用程序.hex文件进行仿真,仿真图如图12。
图12仿真运行图
5.43D图以及实物
为了更加清楚地看到元器件分布结构可行性,是用protel99se软件的3D模型模块显示如图13。
图13protel99se中3D模型图
5.5结果分析
通过proteus7进行布置电路以及调用程序进行仿真模拟,有以下几个作用:
一是可以了解硬件接线是否正确;二是可以对程序进行调试。
如12图所示,本实验在仿真过程中,可以观察单片机各个口的动作,从而在数码管显示结果,可以清楚地观察到:
假如P0口的第几口为蓝色小点,则相对应的数码管管脚也为蓝色小点,即该段发光二极管不亮;而当P0口的第几口为红色小点,则相对应的数码管发光二极管亮。
因此,可以利用数码管显示各个数字。
通过3D模型图,基本上可以观察出各个元器件是否布置合理,而且考虑到电路中会产生相互干扰,有些元器件之间应该保持一定的距离,因此在3D图中也可以合理布置元器件。
通过2~3次的实践,自己动手去制作电路板,排除各种小问题后,进行电路修改和布局,再加上自己对电路板制作的不断熟练之后,第三块板子终于成功了,经过通电和程序调试,系统电路板能够满足题目要求,也能够进行正常运行。
六电路板的制作
Protel99功能强大,为我们进行电子电路原理图和印制板图的设计提供了良好的操作环境。
用Protell99进行电路设计分为两大部分:
原理图的设计和电路板的设计。
原理图的设计实在SCH系统中进行的,电路原理图是印刷板电路设计的基础,只有设计好原理图才有可能进行下一步的电路板设计。
用protel99进行电路板设计的第一步是其原理图的设计。
显然,原理图决定整个电路的基本功能,也是接下来生成网表和设计印刷板电路的基础。
具体步骤如下:
(1)图面设置:
Protel99允许用户根据电路的规模设置图面的大小,按照偏好和习惯设置图面的样式。
实际上,设置图面就是设置了一个工作平面,以后的工作就要在这个平面上进行。
所以图面应该设置得足够大,为进一步工作提供一个足够大的工作空间。
(2)放置元件:
所谓放置元件就是从元件库中选取所需得元件,将其布置到图面上合适的位置,有时还要重定义元件的编号、封装。
元件的封装很重要,要根据元件的实际尺寸和实际封装来决定,要是元件没封装好,将会给以后电路板的制作带来很大的麻烦。
这些都是下一步工作的基础。
Protel99为用户提供了一个非完备的元件库,并且允许用户对这个元件库进行编辑或者新建自己的元件库。
电路板的制作过程:
(1)打印:
将生成的PCB图打印到热转印纸上,需注意线不能太窄,墨要加重,否则制板时容易断线,如果在操作过程中断了线,可用电烙铁将锡带过。
(2)熨烫:
将热转印纸覆在铜板上,用电熨斗进行熨烫,关键要注意熨烫的时间,不能太久,也不能时间太短,否则,太久会把铜板烫坏,不够的话墨迹覆不上去。
(3)腐蚀:
把铜板放到三氯化铁溶液中腐蚀,需注意溶液浓度要较高,最好用热水配置,这样腐蚀更快,一般3分钟即可。
如果时间过长,需剩下的铜线也可能被腐蚀。
(4)打孔:
打孔时注意钻头尺寸,本次用的钻头大小是0.712mm的,最需注意的地方是集成块的管脚,如果打孔误差大,管座就很难插上。
(5)放置元件:
放置前应先打磨一下打孔后留下的毛刺,并均匀地涂上松香水(目的是防止铜线氧化,易于焊锡覆着焊盘,但多涂会导致焊接时焊点变黑,影响美观)。
放置元件时注意集成块的管脚,二极管和电解电容的正负,这些都是平时比较容易出错的地方。
(6)焊接:
焊接技术比较难掌握,焊锡、烙铁与焊盘的位置关系,焊锡熔化时间长短,松香水的浓度,烙铁的温度等等,都是影响焊点美观的因素。
(7)检查:
检查是否有虚焊,集成块管脚位置是否正确,电源引线位置是否恰当等。
检查完毕就能进行调试了。
七系统设计总结
1、制作了这个最小系统后,基本上能够使用软件Protel99se和proteus。
(1)主要分两个部分,一个为原理图,一个为PCB图,原理图为你所要实现电路的基本原理结构,只是实现其原理的框图。
一个为PCB,就是你所做的电路的具体实现形式,所做电路的大小,元件大小,导线大小都完全和做出后的电路板一摸一样,做PCB的时候,要考虑到很多的因素,比如导线的宽度,焊盘大小,安全间距,元件摆放位置,元件大小,干涉情况等。
(2)原理图和PCB又是有关联的,它们电气特性是一样的,在一边的修改完全可以反映到另一方面。
这就使的设计思路的唯一性,也让改动变得更加合理以及人性化。
(3)原理图和PCB都有自己元件库里的元件和一些基本的电路线路组成的。
在做原理图和PCB的时候,最好先吧它们的元件进行统一。
似得原理图和PCB能环环相扣,减少设计出错得可能性。
2、在进行这个最小系统的编程设计时,不用以前学习的汇编编程,改用C语言进行编程。
学习了单片机的C语言编程后,发现C语言编单片机程序的时