您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 单片机项目实践教程刘燎原-项目四倒计时
微控制器系统设计与应用刘燎原江苏建筑职业技术学院回顾:(一)动态显示1.什么是动态显示2.动态显示步骤1个数码管步骤:(1)送段值(2)送位选(公共端)(3)延时(4)关闭3.加驱动方法三极管锁存器实验总结:实验板数码管动态显示假设要求第一个数码管先显示百位(例如2),则:1.送段值:P0输出段值5BH,P2.6=1(数据进入),P2.6=0(数据锁存),段值送入数码管的段值端;2.送位选:P0输出位选值FEH,P2.7=1(数据进入),P2.7=0(数据锁存),位选值送入数码管的位选端;3.延时其他两个数码管类似这三个步骤。回顾:(二)中断1.中断源5个2.中断优先级2个3.外部中断P3.2,P3.34.外部中断寄存器IE:EA,EX0,ET0,EX1,ET1,ESTCON:IE0,IT0,IE1,IT1IP:PX0,PT0,PX1,PT1,PS中断程序如何编写?Voidmain{中断初始化;一边做平时的工作,一边等待中断来;}Void名字()interrupt0/3{要求CPU做的事情;}项目四倒计时-------单片机定时计数器上节课复习举出生活中中断的例子。中断过程包括哪几个步骤?中断请求、中断响应、中断处理、中断返回单片机内有哪个中断源。外部中断:2内部中断:3定时器/计数器导入:单片机应用系统中定时计数的需求:如用单片机控制的打铃器、空调的定时开关、啤酒自动生产线上对酒瓶的计数装置等。以实现定时控制;以实现对外界事件进行计数。用到定时/计数实现定时/实现方式:1.软件定时;(延时程序)占用CPU2.不可编程硬件定时(555);3.可编程定时(8253,单片机定时/计数器)AT89S51内部有两个定时/计数器定时/计数器到底是什么?一、定时/计数器概述1.核心定时/计数器的核心部件是16位二进制加1计数器(TH0、TL0或TH1、TL1)。特性:(1)每来一个计数脉冲信号,T0或T1会在原来计数值(或初值)的基础上加1.(2)直到计满,再来一脉冲,计数值清0,会发生溢出。向CPU发出中断请求,告诉CPU这次计数结束。再开始下一轮计数。这就像闹钟定时的时间一到,闹钟就会响一样。2.计数和定时有什么不同类比生活中计数,定时(定时1分钟)所以定时也是一种计数16位加1计数器00H20H计数脉冲21HFFHFFH计数脉冲TF1向CPU发出中断请求3.单片机中的定时、计数器两个定时/计数器分别叫T0,T1计数脉冲从哪来?当需要计数时,计数脉冲来自于外部脉冲源(P3.4,P3.5)当需要定时时,计数脉冲来自于系统机器周期(时钟振荡器经12分频以后的脉冲信号)。(1).计数器对外部信号计数,外部计数脉冲从T0(P3.4)和T1(P3.5)输入,开关接在下面,来一个脉冲(下降沿),将加1计数。脉冲信号(2).定时器定时器也是一种计数器。开关接在上面,计数脉冲信号是振荡器经过12分频后信号。这是什么信号?振荡器(晶振)的12分频信号。如果晶振为12MHZ,则计数脉冲信号T=12*1/12M=1uS(机器周期)即定时就是每过一个机器周期(1uS),计数器加1,直至计满溢出,定时结束。定时器的定时时间与晶振频率和计数次数、初值等有关有关。若计数器对此信号计数100次,则定时时间=100×1s=100s。脉冲信号单片机如何定义定时或计数功能?单片机定时或计数的初值怎么设置?编程设定----单片机定时中断相关的寄存器设置单片机处理定时中断的各种情况4.与定时/计数有关的特殊功能寄存器TH0,TL0:定时器T0的高8位,低8位(存放T0计数值)TH1,TL1:定时器T1的高8位,低8位(存放T1计数值)TCON:定时控制寄存器TMOD:定时方式寄存器二、定时/计数器的相关寄存器1.TMOD(工作方式寄存器)定时器方式寄存器TMOD的作用是设置T0、T1的工作方式。TMOD的格式:各位的功能说明:(1)M1、M0位:工作方式选择位(1)M1、M0位:工作方式选择位(2):计数/定时功能选择位。=0,设置为定时器方式,计数器的输入是内部时钟脉冲,其周期等于机器周期。实际上是对机器周期进行计数。从计数值可以求得计数的时间,所以称为定时器模式=1,设置为计数器方式,计数器的输入来自T0(P3.4)或T1(P3.5)端的外部脉冲,对外部输入引脚T0(P3.4)或T1(P3.5)的外部脉冲(负跳变)计数,允许的最高计数频率为晶振频率的1/24。T/CT/CT/CM1M0方式说明00013位定时器(TH的8位和TL的低5位)01116位定时器/计数器102自动重装入初值的8位计数器113T0分成两个独立的8位计数器,T1在方式3时停止工作(3)GATE:门控位。用于控制定时器的启动是否受外部中断源信号的影响。GATE=0:定时的启动与外部中断无关,把TCON寄存器中的TR1(TR0)置1即可启动定时器1(定时器0)。常用。GATE=1:由控制位TR1(TR0)和引脚INT0(INT1)共同控制启动,只有在没有外部中断请求信号的情况下即外部中断引脚INT0(INT1)引脚=1时,把TR1(TR0)置1才能定时器启动。用于检测低电平时间。例如:要设定T0工作在定时方式2.TMOD=0X02;不能位寻址000000102.定时器/计数器控制寄存器TCONTF0、TF1分别是定时器/计数器T0、T1的溢出标志位,加法计数器计满溢出时硬件自动置1,申请中断。对该标志位有两种处理方法:一种是以中断方式工作,即TF1置1并申请中断,响应中断后,执行中断服务程序,并由硬件自动使TF1清0;另一种以查询方式工作,即通过查询该位是否为1来判断是否溢出,TF1置1后必须用软件使TF1清0。TR1、TR0分别是定时器/计数器T1、T0的定时器1启停控制位。GATE=0时,用软件使TR1置1即启动定时器1,若用软件使TR1清0则停止定时器1。GATE=1时,用软件使TR1置1的同时外部中断INT1的引脚输入高电平才能启动定时器1。所以初始化时,只涉及到TR0/1例:启动TR0.TCON属于特殊功能寄存器,地址能被8整除,所以可位操作.这里用位操作方便。TR0=1;TF1TR1TF0TR0IE1IT1IE0IT0寄存器总结:3个特殊功能寄存器IETMODTCON导入:例如要求单片机检测计数200个脉冲信号?定时器/计数器用于定时或计数时,必须按照需要给计数器设置初值。定时器/计数器在计数初值的基础上以加1的方式进行计数,在计数器从全1变为全0时,将自动产生溢出中断请求,表示此次定时、计数结束。计数初值怎么设置?定时、计数器有四种工作方式,实际使用中应用选择哪种?三、定时/计数器的计数容量及初值1.最大计数容量(次数)最大计数容量与计数器的二进制位数有关,关系为2N举例,若为2位计数器,00,01,10,11,最大计数值为2N=42.计数初值计数不一定是从0开始,这要根据需要来设定。这个预先设定的计数起点值称为计数初值。FFFFH最大计数容量初值0000H计数值+初值=最大计数容量举例,一个杯子的总容量为最大计数容量,已经装了少量的水为初值,还能装多少水位计数值四.定时/计数器的工作方式MCS-51单片机的T/C有4种工作方式,分别由TMOD寄存器中的M1、M0两位的二进制编码所决定。1.方式013位计数器在方式0下,T0和T1工作在13位的定时/计数器方式,由TH的高8位和TL的低5位组成。当T1的低五位TL1计满时向它的高八位TH1进位,当T1的13位计数器加到全部为1以后,再加1就产生溢出,这时置TCON的TF1为1,同时把计数器全部变0。然后从0开始继续计数。计数值范围:0~1111111111111(8191)最大计数容量213=8192如计数值为N,则置入的初值X为:X+N=8192例如:若定时/计数器T0的计数值为1000,则初值为7192,把初值转换成二进制数为1110000011000B,则TH0=11100000B,TL0=00011000B。脉冲信号2.方式116位计数器在方式1下,T0和T1工作在16位的定时/计数器方式,由TH的高8位和TL的低8位组成。当T1的低8位TL1计满时向它的高八位TH1进位,当T1的16位计数器加到全部为1以后,再加1就产生溢出,这时置TCON的TF1为1,同时把计数器全部变0。然后从0开始继续计数。最大计数次数216=65536如计数值为N,则置入的初值X为:X+N=65536如定时/计数器T0的计数值为1000,则初值为65536-1000=64536,把初值转换成二进制数为1111110000011000B,则TH0=11111100B,TL0=00011000B。脉冲信号3.方式28位自动重装初值计数器在方式2下,TL0用作8位计数器,TH0用作初值寄存器。当T1的8位计数器加到全部为1以后,再加1就产生溢出,这时置TCON的TF1为1;同时,TH1中的初值装入TL1TL1又从初值开始计数。最大计数次数28=256如计数值为N,则置入的初值X为:X+N=256如定时/计数器T0的计数值为100,则初值为256-100=156,把初值转换成二进制数为10011100B,则TH0=TL0=10011100B。脉冲信号特别适合于产生比较精确的连续脉冲信号。4.方式32个独立的8位计数器方式3只适用于定时器T0,TL0既能作定时器也能作计数器使用,而TH0只能作定时器使用而不能作计数器使用。比较:(方式0,1,2)1.3种方式的最大区别是计数位数不同(13,16,8),所以最大计数值或定时时间也不同。2.工作方式0和工作方式1的特点就是计数溢出后,计数器变为全0,因而循环定时或循环计数应用时就存在反复设置初值。工作方式2具有自动重装载功能,即自动加载计数初值。以方式1为例,16位,最大计数容量65536•如果采用12MHz的晶振,对应的脉冲周期是1微秒,计满65536个脉冲所对应的时间就是65.536ms。•计数,只要用预置数的方法先在计数容器内存入一个初值,如我们要计100次,那就存入65436初值,只要再来100个脉冲,就刚好会溢出,引发中断。•那么,定时初值计算?五.定时/计数初值计算由计数值+计数初值=最大计数容量,得到:(计数值+计数初值)×机器周期=最大计数容量×机器周期计数次数×机器周期+计数初值×机器周期=最大计数容量×机器周期定时时间+计数初值×机器周期=最大计数容量×机器周期即定时时间=(最大计数容量-初值)×机器周期所以,定时初值=最大计数容量-定时时间/机器周期=2N-定时时间/机器周期不同工作方式的定时初值或计数初值的计算方法如下表所示:工作方式计数位数最大计数容量最大定时时间定时初值计算公式计数初值计算公式方式013213=8192213T机X=213-T/T机X=213-计数值方式116216=65536216T机X=216-T/T机X=216-计数值方式2828=25628T机X=28-T/T机X=28-计数值举例:定时1秒,晶振12MHZ,方式1,初值为多少?如何产生1秒定时信号?晶振12MHZ,机器周期1us4种工作方式中,最大计数容量是方式1,65536则65536us=65.536ms所以定1次不够那就定多次,累计在一起,构成1秒那选择T0,工作在方式0,一次定时50ms,循环20次初值多少?TH0=0x3c;TL0=0xb0;所以,在用到定时中断之前,要先用指令来设置相关寄存器的初始值,来设定定时中断的条件------定时中断的初始化。五、定时程序的编写1、程序结构几个程序?回忆中断定义两个程序:主程序、定时中断服务子程序voidmain(){…}void名字()interrupt中断号{…}注意:名字,自己随意取;中断号,0-4定时中断
本文标题:单片机项目实践教程刘燎原-项目四倒计时
链接地址:https://www.777doc.com/doc-768651 .html