1. 显示器及其接口
单片机系统中常用的显示器有:
发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。LED、LCD显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。
显示器接法: 使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。TX实验板用共阴LED显示器,根据电路连接图显示16进制数的编码已列在下表。
2.单片机的静态显示方法:
LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。
显示屏的电路如下图所示:
3.点亮单片机显示屏的步骤:
点亮单片机的显示屏步骤分为两步:
①.打开位选IO口,选择需要点亮的显示屏,关闭位选IO口.
②.打开断选IO口,输入需要显示的字符,关闭断选IO口.
4.点亮显示屏.
代码如下:
#include<reg52.h>
sbit wela=P2^7;//将位选口命名为wela
sbit dula=P2^6;//将断选口命名为dula
void main()
{
wela = 1;//打开位选口
P0 = 0xc0;//将所有的显示屏点亮,由于只有六个显示屏因此0xc0 = 1100 0000,故显示屏全部点亮.
wela = 0;//关闭位选口
dula = 1;//打开断选口
P0 = 0x3f;//输入显示屏需要显示为0
dula = 0;//关闭断选口
}
将程序烧录进单片机后打开单片机即看到显示屏显示六个0.
5.80C51的中断系统
(一)中断的概念:
CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);
CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);
待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回)
这一过程称为中断 。
引起CPU中断的根源,称为中断源。
中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。
实现上述中断功能的部件称为中断系统(中断机构)。
(二)中断系统的优点:
① 分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率;
②实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;
③可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。
(三)80C51中断系统的结构:
80C51的中断系统有5个中断源(8052有 6个) ,2个优先级,可实现二级中断嵌套 。
6.中断系统原理:
(一)原理图如下:
1、(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。
2、(P3.3)可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。
3、TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。
4、TF1(TCON.7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。
5、RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。
(二)中断请求标志:
1.TCON的中断标志:
2.SCON的中断标志:
(三)80C51中断的控制 :
1.中断允许控制:
2.中断优先级控制:
同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:
(四)80C51单片机的中断优先级有三条原则:
1.CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。
2.正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。
3.正在进行的低优先级中断服务,能被高优先级中断请求所中断。
为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器。其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。
(五)中断响应条件和时间 :
中断源有中断请求;
此中断源的中断允许位为1;
CPU开中断(即EA=1)。
以上三条同时满足时,CPU才有可能响应中断。
(六)流水灯中断实践(蜂鸣器).
代码如下:
#include<reg52.h>
#include<intrins.h>
sbit beep = P2^3;
unsigned int i=1,j,a,b;
void delay()
{
for(a=500;a>0;a--)
for(b=225;b>0;b--);
}//延时程序
void main()
{
EA = 1;//打开总中断
EX0 = 1;//打开外部中断
j = 0xfe;//流水灯程序
while(1)
{
beep = 1;//关闭蜂鸣器,由于进入触发式中断后,蜂鸣器一直处于通电状态不会主动关闭,所以需要在循环内关闭
P1 = _crol_(j,i);
i++;
delay();
}
}
void BEEP() interrupt 0//声明一个名为BEEP的中断
{
beep = 0;
}
如何中断:
利用一根导线将P3^2和GND两个IO口连接即可启动中断.
7.80C51的定时/计数器
(一)实现定时功能,比较方便的办法是利用单片机内部的定时/计数器。也可以采用下面三种方法:
①软件定时:软件定时不占用硬件资源,但占用了CPU时间,降低了CPU的利用率。
②采用时基电路定时:例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。
③采用可编程芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时/计数器不够用时,可以考虑进行扩展。
(二)定时/计数器的结构 :
定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
(三)定时/计数器的工作原理:
加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。
定时器有如下两种模式:
①设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t 。
③设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2 s。
(四)定时/计数器的控制:
80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。
①工作方式寄存器TMOD:
工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下:
GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。
C/T:定时/计数模式选择位。 C/T =0为定时模式; C/T =1为计数模式。