即按键所在行。编程时使用P1=0x0f;m=P1;P1=0xf0;n=P1;mn=m|n;即可得到按键的键值,每一个按键都有自己唯一的键值。
按键或键盘都是一个机械开关,键的按下和放开是利用机械触点的闭合和断开来实现的。由于机械触点的弹性作用,一个按键开关在闭合及断开瞬间均有一连串的抖动,抖动的时间长短由按键的机械特性决定,一般为5~10ms。为了确保按键动作只确认一次,必须消除抖动的影响。一般采用延时的方法。
三、实验设备与器件
硬件:微机、单片机仿真器、单片机实验板、连线若干
软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件
四、实验内容
使用proteus仿真软件构建一个行列式键盘,实验板上51单片机的P1口的高4位和低4位分别做行线和列线,构建一个4*4的行列式键盘。应用行列式键盘的反转法识别按键的原理,编写程序控制至少3个按键,使每个按键按下时能在实验板的一个多位数码管中分别显示一个不同的数。
五、评分标准
实验时实验的完成情况 实验报告的书写
14
实验六 中断系统实验
一、实验目的
熟悉keil仿真软件、proteus仿真软件的使用和单片机外部中断的使用。了解并熟悉51单片机中中断的概念,中断处理系统的工作原理。理解51单片机中断管理系统处理五种中断源,特别是对外部中断的设置与控制方法。熟悉中断处理特别是外部中断处理的过程,掌握中断处理子程序的书写格式和使用方法。
二、实验原理
现代的计算机都具有实时处理功能,能对外部发生的事件如人工干预、外部事件及意外故障做出及时的响应或处理,这是依靠计算机的中断系统来实现的。
51单片机内部有一个中断管理系统,它能对内部的定时器事件、串行通信的发送和接收事件及外部事件(如键盘按键动作)等进行自动的检测判断,当有某个事件产生时,中断管理系统会置位相应标志通知CPU,请求CPU迅速去处理。CPU检测到某个标志时,会停止当前正在处理的程序流程,转去处理所发生的事件(针对发生的事件,调用某一特定的函数,称为该事件的中断服务函数),处理完以后,再回到原来被中断的地方,继续执行原来的程序。
查询硬件 允许中断寄存器 源允许 INT0 外部中断 请求0 内部 定时器0 INT1 外部中断 请求1 内部 定时器1 内总允许 中断优先级 寄存器 高优先级 中断请求 中断源 标识符 中断矢量 低优先级 中断请求 部 T T—发送 R—接收 中断源 标识符 中断矢量 15
MCS-51单片机最典型的有5个中断源(外部中断0、1,内部定时器中断0、1,串口中断),具有两个中断优先级。两个外部中断:(P3.2 — INT0、P3.3 — INT1)上输入的外部中断源,低电平或负跳变有效,置位TCON中的IE0和IE1中断请求标志位。通过外部中断源触发方式控制位IT可以使外部中断为电平触发方式(=0)或边沿触发方式(=1)。另外控制中断允许寄存器IE可以开放中断。
使用MCS-51的中断,要为使用到的中断源编写中断服务程序。C51为中断服务程序的编写提供了方便的方法。C51的中断服务程序是一种特殊的函数,它的说明形式为:
void 函数名(void) interrupt n using m { 函数体语句 }
这里,interrupt和using是为编写C51中断服务程序而引入的关键字,interrupt表示该函数是一个中断服务函数,interrupt后的整数n表示该中断服务函数是对应哪一个中断源。
三、实验设备与器件
硬件:微机、单片机仿真器、单片机实验板、连线若干
软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件
四、实验内容
用proteus仿真软件设计一个仿真实验板,将实验板上单片机的INT1和INT0引脚和按键引脚相连,选将按键作为外部中断请求按键,用中断法判断按键,当所选按键被按下时,发出中断请求,引起外部中断。自己设计一个被触发事件来验证中断的发生。编写主程序和中断程序,完成以上要求。
五、评分标准
实验时实验的完成情况 实验报告的书写
16
实验七 51定时器实验
一、实验目的
熟悉keil仿真软件、proteus仿真软件的使用和单片机定时程序的编写。了解51单片机中定时、计数的概念,熟悉51单片机内部定时/计数器的结构与工作原理。掌握中断方式处理定时/计数的工作过程,掌握定时/计数器在C51中的设置与程序的书写格式以及使用方法。
二、实验原理
8051型单片机有两个十六位定时/计数器T0、T1,有四种工作方式,跟定时/计数器相关的特殊功能寄存器有这样几个:
方式控制寄存器TMOD; D7 GATE D6 C/T D5 M1 D4 M0 D3 GATE D2 C/T D1 M1 D0 M0 M1、M0的状态决定定时器的工作方式,定时和外部事件计数方式选择位C/T,GATE与TR0、TR1配合决定定时/计数器的启停。
加法计数寄存器TH0、TH1 (高八位)TL0、TL1(低八位); 定时/计数到标志TF0、TF1(中断控制寄存器TCON); 定时/计数器启停控制位TR0、TR1(TCON);
定时/计数器中断允许位ET0、ET1(中断允许寄存IE); 定时/计数器中断优先级控制位PT0、PT1(中断优IP)。 MCS-51单片机定时计数器的工作原理如下图所示,
振荡器÷12C/T = 0C/T = 1TR1TL1TH1(8位)(8位)控制TF1中断T1端GATEINT1端定时/计数器单片机内部的定时计数模块,在定时时,对工作频率的12分频进行计数,先
17
记入TL后记入TH,直到溢出为止,根据TL、TH内的初值不同可以定出不同的时间;在计数工作方式时,对T0(T1)引脚的输入脉冲进行计数,将计数值记入TL、TH。当定时/计数溢出时,会引起中断。
计数初值与定时时间的关系为:T = 12×(T_all – a)/fosc定时间隔为T,计数初值为a。所以有计数初值a =–T×fosc/12,THx = a / 256,TLx = a % 256。定时器均有一个最大定时时间,对于长时间的定时需要,可以将定时间隔为固定的较小时间,通过另设一全局变量ah1用于计数,累加固定的较小定时时间来进行。
使用MCS-51单片机的定时/计数器的步骤是: 1.设定TMOD,确定:
工作状态(用作定时器/计数器); 工作方式; 控制方式。
2.设置合适的计数初值,以产生期望的定时间隔。由于定时/计数器在方式0、方式1和方式2时的最大计数间隔取决于使用的晶振频率fosc,如下表所示,当需要的定时间隔较大时,要采用适当的方法,即将定时间隔分段处理。
3.确定定时/计数器工作于查询方式还是中断方式,若工作于中断方式,则在初始化时开放定时/计数器的中断及总中断:
ET0 = 1; EA = 1;
还需要编写中断服务函数:
void T0_srv(void) interrupt 1 using 1 {
TL0 = a % 256; TH0 = a / 256; 中断服务程序段 } 4.启动定时器:TR0(TR1)= 1。
三、实验设备与器件
硬件:微机、单片机仿真器、单片机实验板、连线若干
软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件
18
四、实验内容
利用proteus仿真软件设计一个可以显示秒表时间的显示电路。利用实验板上的一位LED数码管做显示,利用中断法编写定时程序,控制单片机定时器进行定时,所定时间为1S。刚开始LED数码管显示0,每过1S数码管的显示值增加1,当显示到9时返回0,依此反复。然后再设计00-59的两位秒表显示程序。
五、评分标准
实验时实验的完成情况 实验报告的书写
19