33、基于STM32的计时器(Proteus仿真+程序)

编号:33

基于STM32的计时器

功能描述:

      使用proteus 软件设计一个基于STM32的家用计时器,该系统包含多个按键、LED运行灯和时间显示(时间显示是LCD1602) 其功能如下:
1、利用按键实现设置计时时间功能,时间格式:AB:CD:E 例如01:59:8(计时时间1.设置为1分59秒8,8为0.8秒),使用长按按键功能实现时间的递增和递减设置(如按下按键不释放,时间会不断+1,直到按键释放为止),要求AB、CD、E能够独立设置计时时间
2、利用按键完成启动计时、终止计时、暂停计时功能
3、当按下某个按键启动后,运行灯LED执行1秒频率的闪烁,同时显示格式为AB:CD:E的剩余计时时间(计时器为倒计时器,从设定计时时间递减,直到00:00:0结束),时间显示0.1秒更新一次
4、计时结束时LED常亮,如设置新的计时时间,LED熄灭;当按下某个按键终止计时可提前终止计时,此时显示00:00:0,LED 熄灭
5、按下某个按键暂停计时后,LED常亮,显示格式为AB:CD:E的剩余计时时间可以通过启动按键接着计时
6、设计串口通信功能,使用PC机通过串口完成启动计时(命令A)、终止计时(命令B)、暂停计时(命令C)

AB:CD:E格式的时间中CD为00~59,E为0~9,AB为00~30

视频演示链接:

33、基于STM32的计时器

仿真图:

程序源码:

/***********************************************

***********************************************/
#include "delay.h" 
#include "led.h"
#include "usart.h"	
#include "LCD1602.h" 
#include "key.h"
#include "TIMER.h"
#include "usart.h"	
#include "led.h"



#include "stdio.h" 	
#include "stdlib.h" 
#include <string.h>


unsigned char Timer_star =0;		//开始启动秒表标志位
unsigned char RRTimer_star =0;		//开始启动秒表倒计时标志位


extern unsigned char RRhour ;		//默认倒计时
extern unsigned char RRmin ;
extern unsigned char RRSec ;

extern unsigned long int RRtime;



int main(void)
{	
	
	unsigned char key_value = 0;					//按键返回值
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);	//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级

	LED_Init();
	USART1_Init(9600);
	LED_Init();
	KEY_Init();										//初始化端口
	KEY_Init();
	TIM2_Int_Init(999,719);							//定时100ms
	Lcd1602_Init();									//液晶1602初始化
	while(1)
	{		
		key_value = KEY_Scan(0);		 			//按键单击
		switch(key_value)
		{
			case 1:
				KEY_Set_DSS();						//设置倒计时
			break;			

		}
		
		Lcd1602_String(0,0,"DTime:");			  		//显示时间
		Lcd1602_Write_Data(RRtime/600/10+0x30);
		Lcd1602_Write_Data(RRtime/600%10+0x30);
		Lcd1602_Write_Data(':');
		Lcd1602_Write_Data(RRtime%600/100+0x30);
		Lcd1602_Write_Data(RRtime%600%100/10+0x30);
		Lcd1602_Write_Data(':');
		Lcd1602_Write_Data(RRtime%10+0x30);

		if(KEY3==0)	   						//开始计时
		{
			while(KEY3==0);
			if(RRTimer_star==0||RRTimer_star==2)//如果没有开始计时 则打开计时
			{
				if(TimeSet>0)
				{
					RRTimer_star = 1;			//开始计时
				}
			}
			else if(RRTimer_star==1)
			{
				RRTimer_star = 2;				//暂停计时
				LED = 0;
			}			
		}
		if(KEY4==0)	   							//复位计时
		{
			while(KEY4==0);
			if(RRTimer_star==2)					//如果暂停计时了 就复位清零
			{
				RRTimer_star = 0;				//停止计时 
				RRhour = RRmin = RRSec = 0;		//清零
				RRtime = 0;
				LED = 1;
			}			
		}	
		
		
	}	
}

软件免费下载地址:

1、Proteus仿真软件
文件内容:Proteus7.8安装包、Proteus8.6安装包、Proteus.8.10安装包、Proteus Professional 8.11 SP0安装包

链接:https://pan.baidu.com/s/11LNUZ9BJXWvXf1C4dPc3_w 
提取码:2756 


3、KEIL5 MDK软件(STM32开发软件)
链接:https://pan.baidu.com/s/1t3eY-3yRdTa7jZMlijq_jg 

提取码:ab58 

文件下载:

https://pan.baidu.com/s/1kEMZvizC5xr7nDa5yCcPAA?pwd=5fxm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机技能设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值