矩阵键盘和数码管设计 -定时计数器
【实验目的】
1.学习单片机定时计数器的结构;
2.学习单片机定时计数器的工作方式与模式
3.学习定时计数器程序编写。
【实验内容】
1.在项目二第一次工作的基础上,修改电路,P2.1接LED,P3.4接按键
2.要求在Proteus中设计硬件电路,单片机晶振设置为11.0596MHz
3.编写程序实现如下功能:
当P3.4引脚的电平连续发生5次负跳变,单片机P2.1引脚所接的LED灯亮3s灭1s,循环5次后停止,数码管显示灯亮时间。
4.要求用定时中断和计数中断实现。在Proteus中加载程序代码并运行仿真。
此实验使用了MCS-51单片机定时器/计数器结构。
TMOD主要用于设定T0和T1的工作模式。它主要由两部分组成,高4位用于设置T1的工作模式,低4位用于设置T0的工作模式。
其中M0 M1是对于模式的设置一共四种模式即 0 0,0 1,1 0,1 1,分别为模式一到模式三。需要注意T1没有模式三
C/T作用是控制及T0 T1是计数还是计时功能,其中GATE是决定是否需要INT0 INT1(外部中断申请输入端)介入控制。
实验图如下
实验思路:
(1) 设置TMOD首先要根据功能分析,选择做定时器还是计数器,其次要在4种工作模式中选择合适的模式。
(2) 设置定时器的计数初值:将初值写入TH0和TL0或TH1、TL1。
(3) 设置TCON,启动定时器。也可以使用位操作指令,如TR0=1。
(4) 设置中断允许寄存器IE:
如果需要中断,则要设置中断总开关EA和定时器的分开关ET0或者ET1。可以使用位操作指令,例如:EA=1;ET0=1。
如何选择合适的模式,各模式的特点:
模式0是一个13位的定时器/计数器。其逻辑电路结构如上图所示,
在模式0状态下,16位寄存器(TH0和TL0)只用了其中的13位,
包括TL0的低5位和TH0的8位,TL0的高3位未用。
模式1是一个16位的定时器/计数器。上图所示为模式1的逻辑电路结构图在该模式下,
TH0和TL0对应的16位全部参与计数运算。当TH0和TL0计数满溢出时由硬件自动将
TF0置位并申请中断,同时16位加1计数器继续从0开始计数。
在定时工作方式,定时时间t对应的初值为
初值X = 2^16 – t × fosc/12
在计数工作方式,计数长度最大为
216 = 65 536(个外部脉冲)。
T0的模式2是把TL0配置成一个可以自动重装载初值的8位定时器/计数器。
其逻辑电路结构如图所示。
在模式2中,只有TL0用作8位计数器参与脉冲计数工作,TH0不参与计数,
只用来保存初值。在系统初始化时,由软件将TL0和TH0赋相同的初值,
当TL0计数溢出时,溢出中断标志位TF0置1