




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目4电子钟的实现——项目任务介绍和硬件设计项目介绍项目:电子钟的实现
任务1:电子秒表的实现
任务2:简易电子钟
任务3:带闹钟、调时功能
的电子钟电子钟项目:综合应用了显示、按键、蜂鸣器、定时器、中断等模块。项目介绍单片机内部定时器/计数器模块的使用数码管的动态显示综合性程序的编写和调试任务1电子秒表的实现任务2简易电子钟任务3带闹钟、调时功能的电子钟项目整体设计单片机模块数码管模块按键模块蜂鸣器模块任务4.1电子秒表的实现电子秒表的实现任务介绍
秒表的走时范围是0-59秒;
在两位数码管上显示走时效果;
P3.2引脚上的按键控制秒表状态:程序运行时,秒表开始走时;按键按下一次,秒表停止走时;按键按下两次,秒表清零。按键按下三次,恢复走时。①②③电子秒表整体设计单片机模块2位数码管模块按键模块任务硬件设计图电子秒表硬件电路图序号名称Proteus中元件名参数数量1单片机STC15W4K32S412LED数码管7seg-com-anode
23排阻RX847024按键button1任务4.1
电子秒表的实现——定时器/计数器模块的使用1任务软件设计任务3-1:DS18B20电路设计任务3-1:DS18B20电路设计任务介绍秒表的走时范围是0-59秒;在两位数码管上显示走时效果;P3.2引脚上的按键控制秒表状态:程序运行时,秒表开始走时;按键按下一次,秒表停止走时;按键按下两次,秒表清零。1s钟精确定时秒的走时数码管的显示按键的识别和处理任务软件设计voidmain()
//主函数{while(1)//无限循环
{ LED=0;
//点亮LED
delay_ms(1000); //软件延时 LED=1;
//熄灭LED
delay_ms(10000); //软件延时
}}实现电子秒表首先要解决的问题:实现1s的精确定时。voiddelay_ms(unsignedintms){unsignedinti; do{ i=MAIN_Fosc/13000; while(--i) ;//14Tperloop}while(--ms);}1.定时过程中不能做其他事情2.定时精确度不高电子钟的定时100%软件定时特点:无需硬件电路,但定时期间CPU被占用,增加了CPU的开销,因此定时时间不宜过长,而且定时期间如果发生中断,定时时间就会出现误差。硬件定时特点:不占CPU资源,但定时时间的调节不够灵活方便且增加了硬件成本。可编程定时器定时特点:不影响CPU的效率,且定时时间精确1秒钟的精确定时单片机应用系统中常见的定时方式123定时器实现1ms定时STC15系列单片机内部有5个16位的可编程定时器/计数器T0、T1、T2、T3和T4示例:设时钟频率fosc=11.0592MHz,用定时器T0方式0实现1ms定时,每1ms时间,P1.0引脚上LED的状态取反一次。使用单片机的定时器/计数器模块实现定时功能定时计数定时器/计数器T0模块及其内部结构
单片机内部的定时器/计数器模块通过设置工作方式寄存器TMOD、控制寄存器TCON和辅助寄存器AUXR来控制定时器的工作。定时器T1TH1(8DH)TL1(8BH)高8位低8位计数器外部输入端T1(P3.5)定时器T0TH0(8CH)TL0(8AH)高8位低8位计数器外部输入端T0(P3.4)CPUGATEC/TM1M0GATEC/TM1M0TMOD(工作方式寄存器)定时器内部时钟定时器内部时钟TF1TR1TF0TR0TCON(控制寄存器)外部中断相关位T0x12T1x12AUXR(辅助寄存器)工作原理K1K2T0加1计数器可选择16或8位溢出信号TF0=1中断请求CPU内部机器周期脉冲(定时)外部引脚输入脉冲(计数)计数脉冲启动控制功能选择计数初值定时器/计数器T0模块工作流程初始值设置设定分频系数定时功能设置工作方式设置启动工作设定分频系数工作方式设置定时器/计数器T0模块设定流程工作原理编程控制启动控制功能选择(TMOD)TR0(TCON)GATE(TMOD)M1M0(TMOD)TF0(TCON)初始值设置设定分频系数定时功能设置工作方式设置启动工作K1K2T0加1计数器可选择13、16或8位溢出信号TF0=1中断请求CPU内部机器周期脉冲(定时)外部引脚输入脉冲(计数)计数脉冲启动控制计数初值THx=初值高8位TLx=初值低8位设定分频系数T0x12(AUXR)定时器/计数器模块相关寄存器的设置T1门控位:GATE=0:使用TR1启动工作GATE=1:由TR1和INT1共同启动工作TMOD(89h)工作方式寄存器GATEC/TM1M0GATEC/TM1M0D0D7D6D5D4D3D2D1T1功能选择位:=0:定时功能=1:计数功能T1工作方式选择位:M1/M0=00:工作方式0M1/M0=01:工作方式1M1/M0=10:工作方式2T0工作方式选择位:M1/M0=00:工作方式0M1/M0=01:工作方式1M1/M0=10:工作方式2M1/M0=11:工作方式3T0功能选择位:=0:定时功能=1:计数功能T0门控位:GATE=0:使用TR0启动工作GATE=0:由TR0和INT0共同启动工作T0T1字节寻址初始值设置设定分频系数定时功能设置工作方式设置启动工作启动工作工作方式设置定时功能设置定时器/计数器模块相关寄存器的设置工作方式寄存器TMOD(89h)GATEC/TM1M0GATEC/TM1M0D0D7D6D5D4D3D2D1T1工作方式选择位:M1/M0=00:工作方式0M1/M0=01:工作方式1M1/M0=10:工作方式2T0工作方式选择位:M1/M0=00:工作方式0M1/M0=01:工作方式1M1/M0=10:工作方式2M1/M0=11:工作方式3M1M0工作方式功能描述00方式0自动重装初始值的16位计数器(推荐)01方式116位计数器10方式2自动重装初值的8位计数器11方式3T0:分成两个8位的计数器,T1:停止计数用定时器T0,定时功能,工作方式0:TMOD=00000000;TMOD=0X00;初始值设置设定分频系数定时功能设置工作方式设置启动工作启动工作工作方式设置定时功能设置辅助寄存器AUXRT0x12T1x12UART_M0x6T2RT2_C/TT2x12EXTRAMS1ST2D0D7D6D5D4D3D2D1T0定时功能下的分频系数设定:T0x12=0:12分频T0x12=1:不分频T1定时功能下分频系数设定T1x12=0:12分频T1x12=1:不分频定时器/计数器模块相关寄存器的设置使用定时器T0定时,不分频:AUXR=AUXR|0X80;字节寻址初始值设置设定分频系数定时功能设置工作方式设置启动工作设定分频系数定时器/计数器模块相关寄存器的设置T1溢出中断请求标志控制寄存TCON(88h)TF1TR1TF0TR0------------D0D7D6D5D4D3D2D1T1启动位,TR1=1/0,启动/停止外部中断控制位与定时/计数器无关T0溢出中断请求标志T0启动位,TR0=1/0,启动/停止启动定时器T0开始工作TR0=1;位寻址初始值设置设定分频系数定时功能设置工作方式设置启动工作启动工作定时器/计数器模块相关寄存器的设置工作原理K1K2TX加1计数器可选择16或8位溢出信号TFx=1中断请求CPU内部机器周期脉冲(定时)外部引脚输入脉冲(计数)计数脉冲启动控制功能选择计数初值设定分频系数初始值设置设定分频系数定时功能设置工作方式设置启动工作初始值设置定时器/计数器模块相关寄存器的设置16位加1计数器THxTLx00000000高8位TH低8位TL1~216
1~6553600000000111111111111111100TFx00000000000000001初始值设置设定分频系数定时功能设置工作方式设置启动工作初始值设置定时器/计数器(T0/T1)模块及其内部结构T初值0M+1计数启动计数计数溢出(TFx=1)完成一次计数定时时间=(65536-计数初始值)×系统时钟周期×定时器初始值不分频时定时1ms时定时器T0的初始值:用定时器T0方式0实现1ms定时。TH0=(65536-MAIN_Fosc/1000)/256;TL0=(65536-MAIN_Fosc/1000)%256;初始值设置设定分频系数定时功能设置工作方式设置启动工作注:MAIN_Fosc是系统时钟频率不分频时,定时范围是1/12us——5461us12分频时,定时范围是1us——65536us#include<stc15.h>#defineMAIN_Fosc11059200//定义系统时钟频率sbitLED=P1^0;voidmain(){ TMOD=0X00;//设置定时器工作方式,定时器T0工作在方式0,定时功能
AUXR=AUXR|0X80;//对震荡信号计数实现定时,不分频
TH0=(65536-MAIN_Fosc/1000)/256;//设置1ms定时初始值 TL0=(65536-MAIN_Fosc/1000)%256;//设置1ms定时初始值 TR0=1;//启动定时器开始工作}软件设计——定时器的初始化设定AUXR寄存器(设置分频系数)设定TH0/1、TL0/1(设定定时/计数初始值)设置TMOD寄存器(设定定时功能、选择工作方式、GATE)设定TCON寄存器(启动定时器开始工作)设置TMOD寄存器(设定定时功能、选择工作方式、GATE)设定AUXR寄存器(设置分频系数)设定TH0/1、TL0/1(设定定时/计数初始值)设定TCON寄存器(启动定时器开始工作)示例:设时钟频率fosc=11.0592MHz,用定时器T0方式0实现1ms定时,每1ms时间,P1.0引脚上LED的状态取反一次。任务4.1
电子秒表的实现——定时器/计数器模块的应用2#include<stc15.h>#defineMAIN_Fosc11059200//定义系统时钟频率sbitLED=P1^0;voidmain(){ TMOD=0X00;//设置定时器工作方式,定时器T0工作在方式0,定时功能
AUXR=AUXR|0X80;//对震荡信号计数实现定时,不分频
TH0=(65536-MAIN_Fosc/1000)/256;//设置1ms定时初始值 TL0=(65536-MAIN_Fosc/1000)%256;//设置1ms定时初始值 TR0=1;//启动定时器开始工作}软件设计——定时器的初始化设定AUXR寄存器(设置分频系数)设定TH0/1、TL0/1(设定定时/计数初始值)设置TMOD寄存器(设定定时功能、选择工作方式、GATE)设定TCON寄存器(启动定时器开始工作)示例:设时钟频率fosc=11.0592MHz,用定时器T0方式0实现1ms定时,每1ms时间,P1.0引脚上LED的状态取反一次。定时器/计数器T0模块工作流程工作原理K1K2TXTH0溢出信号TF0=1中断请求CPU内部机器周期脉冲(定时)外部引脚输入脉冲(计数)计数脉冲启动控制功能选择计数初值设定分频系数TL0RL_TH0RL_TL0方式0可自动重装初始值的16位定时器/计数器查询方式中断方式软件设计——计数溢出处理#include<stc15.h>#defineMAIN_Fosc11059200//定义系统时钟频率sbit LED=P1^0;voidmain(){ TMOD=0X00;//设置定时器工作方式,定时器T0工作在方式0,定时功能
TH0=(65536-MAIN_Fosc/1000)/256;//设置1ms的定时初始值 TL0=(65536-MAIN_Fosc/1000)%256;
AUXR=AUXR|0X80;//设置定时器不分频
TR0=1;//启动定时器开始工作 while(1) { while(!TF0);//
查询1ms时间是否到
TF0=0;//对TF0清零,为下一次定时做准备
LED=~LED;//led灯的状态改变 }}查询方式定时器初始化溢出标志位清零LED状态取反定时时间到?YN示例:设时钟频率fosc=11.0592MHz,用定时器T0方式0实现1ms定时,每1ms时间,P1.0引脚上LED的状态取反一次。软件设计——计数溢出处理#include<stc15.h>#defineMAIN_Fosc11059200//定义系统时钟频率voiddelay_1ms();//对1ms延时子函数进行声明sbit LED=P1^0;voidmain(){ TMOD=0X00;//设置定时器T0工作在方式0,定时功能
AUXR=AUXR|0X80;//设置定时器不分频 while(1) {
delay_1ms();//调用1ms延时子函数
LED=!LED;//led灯的状态改变
}}查询方式定时器初始化溢出标志位清零LED状态取反定时时间到?YN示例:设时钟频率fosc=11.0592MHz,用定时器T0方式0实现1ms定时,每1ms时间,P1.0引脚上LED的状态取反一次。程序优化软件设计——计数溢出处理voiddelay_1ms(){
TH0=(65536-MAIN_Fosc/1000)/256;//设置1ms的定时初始值 TL0=(65536-MAIN_Fosc/1000)%256;
TR0=1;//启动定时器开始工作
while(!TF0);//查询1ms时间是否到
TF0=0;//对TF0清零,为下一次定时做准备}查询方式程序优化软件设计——计数溢出处理中断方式软件设计——计数溢出处理#include<stc15.h>#defineMAIN_Fosc11059200sbit LED=P1^0;voidmain(){ TMOD=0X00; TH0=(65536-MAIN_Fosc/1000)/256; TL0=(65536-MAIN_Fosc/1000)%256; AUXR=AUXR|0X80; ET0=1;//允许定时器T0中断发生 EA=1;//允许总中断发生 TR0=1; while(1);//原地踏步指令}delay_1ms()interrupt1using1//定时器0中断服务函数{ LED=!LED;//led灯的状态改变}中断方式定时器、中断初始化溢出标志位清零LED状态取反定时时间到?YN示例:设时钟频率fosc=11.0592MHz,用定时器T0方式0实现1ms定时,每1ms时间,P1.0引脚上LED的状态取反一次。中断源名称中断号外部中断00定时器/计数器0中断1外部中断12定时器/计数器1中断3表3.3中断标号v
实践中认真学习其中的工作原理,养成认真投入,追求极致、精益求精的工匠精神。坚持自信自爱,坚韧乐观,能积极进行情绪的自我调节,克服自己的畏难情绪,我们可以很好得掌握定时器模块的使用。
电子钟的定时T0、T1的工作方式
单片机芯片STC15W4K32S4,T0有4种工作方式(方式0、方式1、方式2、方式3),T1有3种工作方式(方式0、方式1、方式2)。工作原理K1K2TXTH0溢出信号TF0=1中断请求CPU内部机器周期脉冲(定时)外部引脚输入脉冲(计数)计数脉冲启动控制功能选择计数初值设定分频系数TL0RL_TH0RL_TL0方式0可自动重装初始值的16位定时器/计数器T0、T1的工作方式工作原理K1K2TXTH0溢出信号TFx=1中断请求CPU内部机器周期脉冲(定时)外部引脚输入脉冲(计数)计数脉冲启动控制功能选择计数初值设定分频系数TL0方式1
单片机芯片STC15W4K61S4,T0有4种工作方式(方式0、方式1、方式2、方式3),T1有3种工作方式(方式0、方式1、方式2)不可自动重装初始值的16位定时器/计数器T0、T1的工作方式工作原理K1K2TXTH0溢出信号TFx=1中断请求CPU内部机器周期脉冲(定时)外部引脚输入脉冲(计数)计数脉冲启动控制功能选择计数初值设定分频系数TL0方式2
单片机芯片STC15W4K61S4,T0有4种工作方式(方式0、方式1、方式2、方式3),T1有3种工作方式(方式0、方式1、方式2)可自动重装初始值的8位定时器/计数器T0、T1的工作方式工作原理K1K2TXTH0溢出信号TFx=1中断请求CPU内部机器周期脉冲(定时)外部引脚输入脉冲(计数)计数脉冲启动控制功能选择计数初值设定分频系数TL0RL_TH0RL_TL0不可屏蔽中断的16位自动重装载模式方式3
单片机芯片STC15W4K61S4,T0有4种工作方式(方式0、方式1、方式2、方式3),T1有3种工作方式(方式0、方式1、方式2)定时功能的使用——示例讲解示例:设时钟频率fosc=11.0592MHz,用定时器T0方式0实现1s钟定时,每1s钟P1.0引脚上LED的状态取反一次。查询方式中断方式1ms定时1000次?不分频时,定时范围是1/12us——5461usYN示例:设时钟频率fosc=11.0592MHz,用定时器T0方式0实现1s钟定时,每1s钟P1.0引脚上LED的状态取反一次。#include<stc15.h>voiddelay_1ms(unsignedintn);//对延时子函数进行声明#defineMAIN_Fosc11059200sbit LED=P1^0;voidmain(){ TMOD=0X00; AUXR=AUXR|0X80; while(1) { delay_1ms(1000); LED=!LED;//led灯的状态改变 }}定时功能的使用——示例讲解查询方式示例:设时钟频率fosc=11.0592MHz,用定时器T0方式0实现1s钟定时,每1s钟P1.0引脚上LED的状态取反一次。voiddelay_1ms(unsignedintn)//延时子函数的定义{ unsignedinti; for(i=0;i<n;i++) { TH0=(65536-MAIN_Fosc*/1000)/256; TL0=(65536-MAIN_Fosc*/1000)%256; TR0=1; while(!TF0);// 查询指令 TF0=0;//对TF0清零,为下一次定时做准备 }}定时功能的使用——示例讲解查询方式示例:设时钟频率fosc=11.0592MHz,用定时器T0方式0实现1s钟定时,每1s钟P1.0引脚上LED的状态取反一次。#include<stc15.h>#defineMAIN_Fosc11059200sbit LED=P1^0;voidmain(){ TMOD=0X00; TH0=(65536-MAIN_Fosc/1000)/256; TL0=(65536-MAIN_Fosc/1000)%256; AUXR=AUXR|0X80; ET0=1;//允许定时器中断0发生 EA=1;//允许总中断发生 TR0=1; while(1);//原地踏步指令}中断方式定时功能的使用——示例讲解示例:设时钟频率fosc=11.0592MHz,用定时器T0方式0实现1s钟定时,每1s钟P1.0引脚上LED的状态取反一次。delay_1s()interrupt1using1//定时器0中断服务函数{ unsignedinti;//定义变量i,用于统计进入中断的次数 n++;//每进入一次中断,变量n加1。 if(n==1000) { LED=!LED;//led灯的状态改变 n=0;//变量n清零,为下一次1s定时做准备 }}中断方式定时功能的使用——示例讲解
我们在实现复杂任务的时候可以考虑独立分解任务,遵循从易到难的原则,逐步实现任务功能。不走捷径,一步一个脚印,脚踏实地,我们就一直走在通往成功的路上。
电子钟的定时任务4.1电子秒表的实现——计数功能的应用计数功能的使用示例:使用定时器/计数器T1的计数功能,实现每计三个数,P1.0引脚连接LED灯的状态取反一次。定时器T1TH1(8DH)TL1(8BH)高8位低8位计数器外部输入端T1(P3.5)定时器T0TH0(8CH)TL0(8AH)高8位低8位计数器外部输入端T0(P3.4)CPUGATEC/TM1M0GATEC/TM1M0TMOD(工作方式寄存器)定时器内部时钟定时器内部时钟TF1TR1TF0TR0TCON(控制寄存器)外部中断相关位T0x12T1x12AUXR(辅助寄存器)计数功能的使用示例:使用定时器/计数器T1的计数功能,实现每计三个数,P1.0引脚连接LED灯的状态取反一次。示例硬件设计序号名称Proteus中元件名参数数量1单片机STC15W4K32S412LED发光二极管LED-BIGY13电阻RES1k14按键BUTTON1计数功能的使用示例3:使用定时器/计数器T1的计数功能,实现每计三个数,P1.0引脚连接LED灯的状态取反一次。初始值设置设定分频系数工作方式设置启动工作计数功能设置设定TH1、TL1(设定定时/计数初始值)设置TMOD寄存器(设定定时功能、选择工作方式、GATE)设定TCON寄存器(启动定时器开始工作)计数功能的使用——相关寄存器的设置设定TH0/1、TL0/1(设定定时/计数初始值)设置TMOD寄存器(设定定时功能、选择工作方式、GATE)设定TCON寄存器(启动定时器开始工作)T1门控位:GATE=1:由TR1和INT1共同启动工作GATE=0:使用TR1启动工作TMOD(89h)工作方式寄存器GATEC/TM1M0GATEC/TM1M0D0D7D6D5D4D3D2D1T1功能选择位:=1:计数功能=0:定时功能T1工作方式选择位:M1/M0=00:工作方式0M1/M0=01:工作方式1M1/M0=10:工作方式2M1/M0=11:工作方式3T0工作方式选择位:M1/M0=00:工作方式0M1/M0=01:工作方式1M1/M0=10:工作方式2M1/M0=11:工作方式3T0功能选择位:=1:计数功能=0:定时功能T0门控位:GATE=1:由TR0和INT0共同启动工作GATE=0:使用TR0启动工作T0T1用定时器T1方式0实现计数功能TMOD=01000000;TMOD=0X40;设置TMOD寄存器(设定定时功能、选择工作方式、GATE)计数功能的使用——相关寄存器的设置设定TH0/1、TL0/1(设定定时/计数初始值)设置TMOD寄存器(设定定时功能、选择工作方式、GATE)设定TCON寄存器(启动定时器开始工作)设定TH0/1、TL0/1(设定定时/计数初始值)T初值0M+1计数启动计数计数溢出(TFx=1)完成一次计数方式0计3个数:TH1=(65536-3)/256;
TL1=(65536-3)%256;计数器初始值=65536-需要计的脉冲个数=65536-3计数功能的使用——示例讲解示例:使用定时器/计数器T1的计数功能,实现每计三个数,P1.0引脚连接LED灯的状态取反一次。示例程序编写#include<stc15.h>sbit LED=P1^0;voidmain(){ TMOD=0X40;//使用定时器1,计数方式,方式0 TH1=(65536-3)/256;//设置计3个数的计数初始值 TL1=(65536-3)%256; ET1=1;//允许定时器中断0发生 EA=1;//允许总中断发生 TR1=1; while(1);//原地踏步指令}jishu()interrupt3using1//定时器/计数器T1中断服务函数{ LED=!LED;//led灯的状态改变
}中断源名称中断号外部中断00定时器/计数器0中断1外部中断12定时器/计数器1中断3定时器计数器的综合应用示例4:定时器计数器的综合应用。如图所示,P1口控制8只LED灯轮流点亮,每只LED灯点亮时间为500ms,P3.5引脚上的按键控制LED灯移动的方向,初始状态时LED灯循环左移,按键每按下一次,LED灯移动的方向改变一次。示例硬件设计序号名称Proteus中元件名参数数量1单片机STC15W4K32S412LED发光二极管LED-RED83电阻RES1kΩ84按键BUTTON1定时器计数器的综合应用示例4:定时器计数器的综合应用。如图所示,P1口控制8只LED灯轮流点亮,每只LED灯点亮时间为500ms,P3.5引脚上的按键控制LED灯移动的方向,初始状态时LED灯循环左移,按键每按下一次,LED灯移动的方向改变一次。示例分析500ms定时功能的实现——定时器定时功能;P3.5按键次数统计——定时器计数功能定时器计数器的综合应用示例:定时器计数器的综合应用。如图所示,P1口控制8只LED灯轮流点亮,每只LED灯点亮时间为500ms,P3.5引脚上的按键控制LED灯移动的方向,初始状态时LED灯循环左移,按键每按下一次,LED灯移动的方向改变一次。示例程序编写#include<stc15.h>#defineMAIN_Fosc11059200#include<intrins.h>//添加循环左移右移库函数所在头文件bitdir=0;//定义全局变量dir进行方向控制voidmain(){
P1=0x7f;//设置P1端口初始值,led灯的初始状态 TMOD=0x40;//T0为定时功能,方式0;T1为计数功能,方式0 TH0=(65536-MAIN_Fosc/1000)/256;//定时器T0定时1ms初始值设定 TL0=(65536-MAIN_Fosc/1000)%256; AUXR=AUXR|0X80;//T0不分频 TH1=0xff; //T1的初值为0xff,计1个数 TL1=0xff;定时器计数器的综合应用示例:定时器计数器的综合应用。如图所示,P1口控制8只LED灯轮流点亮,每只LED灯点亮时间为500ms,P3.5引脚上的按键控制LED灯移动的方向,初始状态时LED灯循环左移,按键每按下一次,LED灯移动的方向改变一次。示例程序编写
ET0=1;//允许T0中断 ET1=1;
//允许T1中断 TR0=1;//启动T0定时 TR1=1;
//启动T1计数 EA=1;//CPU开中断 while(1);}voidtime1()interrupt3using2{ dir=~dir; //每次按下按钮产生T1的溢出中断,将dir求反}定时器计数器的综合应用示例:定时器计数器的综合应用。如图所示,P1口控制8只LED灯轮流点亮,每只LED灯点亮时间为500ms,P3.5引脚上的按键控制LED灯移动的方向,初始状态时LED灯循环左移,按键每按下一次,LED灯移动的方向改变一次。示例程序编写voidtime0()interrupt1
using1{
unsignedinti;//统计定时器T0定时1ms次数
i++;//每中断一次,计数器加1
if(i==500)//中断500次实现500ms秒定时
{
i=0;//为下一次500ms定时做准备 if(dir==0)//根据dir变量的值设定led灯的移动方向
P1=_crol_(P1,1); else
P1=_cror_(P1,1); }}定时器计数器的综合应用示例:定时器计数器的综合应用。如图所示,P1口控制8只LED灯轮流点亮,每只LED灯点亮时间为500ms,P3.5引脚上的按键控制LED灯移动的方向,初始状态时LED灯循环左移,按键每按下一次,LED灯移动的方向改变一次。示例程序编写
ET0=1;//允许T0中断 ET1=1;
//允许T1中断 TR0=1;//启动T0定时 TR1=1;
//启动T1计数 EA=1;//CPU开中断 while(1);}voidtime1()interrupt3using2{ dir=~dir; //每次按下按钮产生T1的溢出中断,将dir求反}任务4.1电子钟的实现——软件设计任务
电子秒表软件设计任务3-1:DS18B20电路设计任务3-1:DS18B20电路设计任务介绍秒表的走时范围是0-59秒;在两位数码管上显示走时效果;P3.2引脚上的按键控制秒表状态:程序运行时,秒表开始走时;按键按下一次,秒表停止走时;按键按下两次,秒表清零。任务
电子秒表软件设计任务3-1:DS18B20电路设计任务3-1:DS18B20电路设计任务介绍秒表的走时范围是0-59秒;在两位数码管上显示走时效果;P3.2引脚上的按键控制秒表状态:程序运行时,秒表开始走时;按键按下一次,秒表停止走时;按键按下两次,秒表清零。1s钟定时秒的走时数码管的显示按键的识别和处理任务
电子秒表软件设计任务分析主函数
main():
初始化
数码管显示定时器T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二项式定理专项训练解析版
- 2025年妇幼保健员考试中的重点领域试题及答案
- 二零二五年度房屋翻新项目装修工人雇佣合同
- 二零二五年度房屋买卖合同解除与房地产交易纠纷解决协议
- 二零二五年度特色茶楼入股经营管理合同
- 2025年度旅游大巴车租赁及景区导览服务合同
- 2025年度茶楼转让与茶叶经营服务协议
- 二零二五年度上市公司股权转让与工商变更服务协议
- 二零二五年度吊装作业风险评估与管理协议合同
- 二零二五年度土地使用权出让合同主体变更及土地规划调整协议
- 食品新产品开发 课件 第三章 食品新产品开发配方设计
- 《幼儿园课程》第1章:幼儿园课程概述
- 诊所消防安全培训课件
- 实验室扩项方案
- 砂石加工项目实施方案
- 油橄榄主要病虫害及防治
- 卖油翁说课稿
- 移动网络维护人员技能认证-安全-L1备考试题库大全-上(单选题汇总)
- 福建省地图矢量PPT模板(可编辑)
- 眼镜学智慧树知到课后章节答案2023年下温州医科大学
- 新能源电动汽车操作安全
评论
0/150
提交评论