找回密码
 立即注册
首页 业界区 安全 定时器与数码管基础

定时器与数码管基础

扈梅风 昨天 20:18
逻辑电路与逻辑运算

非0为真
逻辑与

&&
F = A && B
A和B都为真时,F才为真
A和B只要有一个为假时,F就为假
一假必假
逻辑或

||
F = A || B
A和B只要有一个为真时,F就为真
A和B均为假时,F才为假
一真必真
逻辑非

!
F = !A
A为真时,F为假;
A为假时,F为真;
真假相反
按位与

&
F = A& B
将A和B两个字节的每一位都进行与运算,再将得到的每一位结果组合为总结果F
例如A = 0b11001100、B = 0b11110000,则 F = 0b11000000
按位或

|
F = A | B
将A和B两个字节的每一位都进行与运算,再将得到的每一位结果组合为总结果F
例如A = 0b11001100、B = 0b11110000,则 F = 0b11111100
按位取反

~
F = ~A
将A字节内的每一位进行非运算(就是取反),再将得到的每一位结果组合为总结果F
例如A = 0b11001100,则 F = 0b00110011
按位异或

^
异或的意思:如果运算双方的值不同(即相异)则结果为真,双方值相同,则结果为假
F = A ^ B
例如A = 0b11001100、B = 0b11110000,则 F = 0b00111100
1.png

定时器的学习

定时器是单片机系统的一个重点
定时器的初步认识

时钟周期

时钟周期T是时序中最小的时间单位,具体计算方法是:
时钟周期 = 1 / 时钟源频率
KST-51 单片机开发板上用的晶振是11.0592MHz,那么对于这个单片机系统来说,时钟周期 = 1 / 11059200秒
机器周期

单片机完成一个操作的最短时间。
机器周期主要针对汇编语言而言,在汇编语言下程序的每一条语句执行所用的时间都是机器周期的整数倍,而且语句占用的时间是可以计算出来的,而C语言一条语句的时间是不确定的,受诸多因素的影响。
51单片机系列,在其标准架构下一个机器周期是12个时钟周期,也就是12/11059200秒。
现在有不少增强型的51单片机,其速度都比较快,有的1个机器周期等于4个时钟周期,有的1个机器周期等于1个时间周期,也就是说大体上其速度可以达到标准51架构的3倍或者12倍。
定时器和计数器是单片机内部的同一模块,通过配置SFR(特殊功能寄存器)可以实现两种不同的功能。
定时器就是用来定时的。定时器内部有一个寄存器,让它开始计数后,这个寄存器每经过一个机器周期就会自动加1,因此,可以把机器周期理解为定时器的计数周期。
就像钟表,每经过一秒,数字自动加1,而这个定时器就是每经过一个机器周期的时间,也就是12/11059200秒,数字自动加1。
还有一个特别注意的地方,就是钟表是加到60后,秒就自动变成0了,这种情况在单片机或计算机中称为溢出。
从某一个初值开始,经过确定的时间后溢出,这个过程就是定时的含义。
定时器的寄存器

标准的51单片机内部有T0和T1这两个定时器,T就是Timer的缩写,现在很多51系列单片机还会增加额外的定时器。
对于单片机的某一个功能模块,都是由于它的SFR,也就是特殊功能寄存器来控制。
2.png

上表中的四个寄存器都是用于存储定时器的计数值的
TH0/TL0用于T0,TH1/TL1用于T1
3.png

上表是定时器控制寄存器TCON的位分配,下表则是对每一位的具体含义的描述
4.png

硬件置1或者清0的,就是指一旦符合条件,单片机将自动完成动作
软件置1或者清0的,就是指必须用程序去完成这个动作
对于TCON这个SFR,其中有TF1、TR1对应于T1;TF0、TR0对应于T0
以T1为例:
先看TR1,当程序中写TR1 = 1以后,定时器值就会每经过一个机器周期自动加1,当程序中写 TR1 = 0以后,定时器就会停止加1,其值会保持不变化。
TF1是一个标志位,它的作用是告诉我们定时器溢出了。
例如,将定时器设置成16位的模式,那么每经过一个机器周期,TL1加1一次,当TL1加到255后,再加1,TL1变成0,TH1会加1一次,如此一直到TH1和TL1都是255(即TH1和TL1组成的16位整形数为65535)以后,再加1一次,就会溢出了,TH1和TL1同时都变成0,只要一溢出,TF1马上自动变成1,告诉我们定时器溢出了,仅仅是给我们一个信号,让我们知道定时器溢出了,并不会对定时器是否继续运行产生任何影响
定时器有多种工作模式,工作模式的选择就由TMOD控制
5.png

上表为TMOD的位分配
TCON标注了“可位寻址",TMOD标注了”不可位寻址“
TCON有一个位叫TR1,可以在程序中,直接进行TR1 = 1的操作,也就是可以对某一位进行操作。
TMOD里的位,比如(T1)M1 = 1这样子的操作是错误的,要操作就必须一次性操作这一整个字节,也就是必须一次性对TMOD所有的位操作。
下表则是对TMOD的每一位的具体含义的描述
6.png

TMOD的位功能如下表
7.png

上表中列出的就是定时器的4种工作模式
其中模式0是为了兼容老的8048系列单片机而设计的,选择的51几乎不会用到这种模式
而模式3的功能用模式2完全可以取代,所以也基本上是不用的
模式1,是THn和TLn组成了一个16位定时器,计数范围是0~65535,溢出后,只要部队THn和TLn重新赋值,则从0开始计数。
模式2,是8位自动重装载模式,只有TLn做加1计数,计数范围是0~255,THn的值不会变化,而会保持原来的值;TLn溢出后,TFn就直接置1了,并且THn原先的值直接赋给TLn,然后TLn从新赋值的这个数字开始计数。
模式2的功能可以用来产生串口的通信波特率
8.png

OSC表示时钟频率,因为1个机器周期等于12个时钟周期,所以d是12
下边GATE右边是一个非门,再右边是一个或门,再右边是一个与门
该电路是下边部分控制上边部分
TRn和下边的或门电路的结果要进行与运算,如果TRn是0的话,与运算完了看到是0,所以要让定时器工作,TRn就必须置1
这里的与门结果要想得到1,那么前面的或门出来的结果就必须是1才行:

  • 在GATE位是1的情况下,经过一个非门变为0,此时,若想或门结果为1,则INTn脚必须是1,定时器才会工作,INTn脚是0的情况下,定时器不工作
  • 在GATE位是0的情况下,经过一个非门变成1,此时,不论INTn引脚是什么电平,经过或门后都肯定是1,定时器就会工作
从图上看有两种方式:

  • 第一种是开关打在上边,即C/T = 0的时候,一个机器周期TL就会加1一次,此时是定时器模式
  • 第二种是开关打在下边,即C/T = 1的时候,Tn脚来一个脉冲TL就会加1一次,此时是计数器模式
定时器的应用

在使用定时器的时候,需要有以下步骤:

  • 设置特殊功能寄存器TMOD,配置好工作模式
  • 设置计数寄存器THn和TLn的初值
  • 设置TCON,通过TRn置1来让定时器开始计数
  • 判断TCON寄存器的TFn位,监测定时器溢出的情况
晶振是11.0592MHz,时钟周期:1/11059200,机器周期:12/11059200
9.jpeg

数码管的学习

LED小灯是一种简单的LED,只能通过亮和灭来表达简单的信息。LED数码管比LED小灯更能表达复杂信息。
数码管的基本介绍

10.png

数码管共有a,b,c,d,e,f,g,dp这么8段,实际上,这8段每一段都是一个LED小灯,所以一个数码管就是由8个LED小灯组成的。
数码管上边有两个com,这就是数码管的公共端,之所以有2个,一方面是起到对称的效果,刚好是10个引脚,另外一个方面,公共端通过的电流较大,并联电路电流之和等于总电流,用2个com可以把公共电流平均到2个引脚上,降低单条线路承受的电流。
11.png

数码管分为共阳和共阴两种,共阴数码管就是8只LED小灯的阴极是连接在一起的,阴极是公共端,由阳极来控制单个小灯的亮灭。同理,共阳数码管就是阳极连接在一起。
12.png

开发板上所用的数码管是共阳极数码管,一共有6个
要想数码管亮,首先需要三极管导通,[[小灯部分总分析#Q16-1|同Q16导通]],三极管导通之后,[[小灯部分总分析#DBX-0|还需要DBX为低电平]],此时,数码管才可以亮
开发板上有6个数码管,习惯上称之为6位,那么控制位就是74HC138了。而数码管内部的8个LED小灯称之为数码管的段,那么数码管的段选择(即该段的亮灭)是通过P0口控制,经过74HC245驱动。
数码管的真值表

13.png

[[数码管代码部分#^LedDisplay-1|数码管显示1]]
数码管的静态显示

74HC138在同一时刻只能让一个输出口为低电平,也就是说一个时刻内,只能使能一个数码管,并根据给出的P0的值来改变这个数码管显示的字符,可以将此理解为数码管的静态显示。
数码管静态显示是对应动态显示而言的,静态显示对于一两个数码管还行,对于多个数码管,静态显示实现的意义就没有了。
像用unsigned char或者unsigned int这两个关键字,这样定义的变量都是放在单片机的RAM中,在程序中可以随意去改变这些变量的值。
但是还有一种数据,在程序中要使用,却不会改变它的值,定义这种数据时,可以加上一个code关键字修饰一下,这个数据就会存储到程序空间 Flash 中,这样可以大大节省单片机的RAM使用量,毕竟单片机RAM空间比较小,而程序空间则大得多。
[[数码管代码部分#^LedDisplayCountdown|单个数码管倒计时]]

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册