51单片机实现倒计时,按键控制倒计时

这篇具有很好参考价值的文章主要介绍了51单片机实现倒计时,按键控制倒计时。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于AT89C52的答辩倒计时。四个按键分别控制倒计时开始,暂停,时间加和减。剩下30S时蜂鸣器响,倒计时结束蜂鸣器响。

51单片机30秒倒计时器,51单片机,单片机,嵌入式硬件

 文章来源地址https://www.toymoban.com/news/detail-731210.html

#include <REGX52.H>

unsigned char min=1;
unsigned char sec=00;
sbit KEY1=P3^1;
sbit KEY2=P3^0;
sbit KEY3=P3^2;
sbit KEY4=P3^3;
sbit LSA=P2^2;    
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit bee=P2^5;
sbit led=P2^6;
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};

void delay(unsigned int z)
{
	unsigned int x,y;
	for(x=z;x>0;x--)
		for(y=114;y>0;y--);
}

void DSQ_INIT()
{
	TMOD=0x11;//定时器方式为方式一
	EA=1;//开总中断
	ET0=1;//开T0中断
	TR0=0;//定时器0计时
	TF0=0;//清除TF0标志
	TH0=0x3c; //设置初值,定时时间为50ms
	TL0=0xb0;
}

void Timer()interrupt 1
{
	static int i=0;
	TL0 = 0xb0;		
	TH0 = 0x3c;	

	i++;
	if(i>19)
	{
		i=0;
		if(min>0||sec>0)
		{	
			if(sec==0)
			{
				sec=59;
				sec++;
			}
			if(sec>0)
			{
				sec--;
			}
			if(sec==59)
			{
				min--;
			}
		}
	}
}
	
void Show_time()
{
	P0=table[min/10%10];
	LSA=0;LSB=0;LSC=1;delay(1);		//数码管位选
	
	P0=table[min%10];
	LSA=1;LSB=1;LSC=0;delay(1);
	
	P0=table[10];
	LSA=0;LSB=1;LSC=0;delay(1);
	
	P0=table[sec/10%10];
	LSA=1;LSB=0;LSC=0;delay(1);
	
	P0=table[sec%10];
	LSA=0;LSB=0;LSC=0;delay(1);
	
	P0=0x00;
}

void Sec_ADD()
{
	if(KEY4==0)
	{
		delay(20);
		while(!KEY4);
			Show_time();
			sec++;
			if(sec>59)
			{
				min++;
				sec=0;
			}
	}
}


void Sec_SUB()
{
	if(KEY3==0)
	{
		delay(20);
		while(!KEY3);		//判断按键是否松手
			Show_time();
			if(min>0||sec>0)
			{
				sec--;
				if(sec==0)
				{
					min--;
					sec=59;
				}
			}	
	}
}


void Pause()
{
	if(KEY2==0)
	{
		delay(10);
		if(KEY2==0)
		{
			TR0=0;
		}
	}
	if(min==0&&sec==0)
	{
		TR0=0;
		bee=~bee;
		led=0;
	}
}

void Bee()
{
	if(min==0&&sec==30)
	{
		bee=~bee;
	}
}

main()
{
	DSQ_INIT();
	while(1)
	{

		Show_time();
		
		if(KEY1==0)
		{
			if(min>0||sec>0)
			{
				TR0=1;
			}
			delay(5);

			while(KEY1)
			{
				Show_time();
				Pause();
				Bee();
				Sec_ADD(); 
				Sec_SUB();
			}
		}
		Pause();
		Bee();
		Sec_SUB();
		Sec_ADD(); 
    }			
}

到了这里,关于51单片机实现倒计时,按键控制倒计时的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初学51单片机(STC89C52)一个倒计时显示器和大家分享

      想要实现倒计时显示器,首先得确定从哪个时间开始倒计时,这就需要写出一个计数的程序来,通过按键来控制需要的数,从而开始倒计时。我的开发板上用的Key2,Key3,Key4,Key5这四个键,分别对应着加1,减1,乘2,开始计时四个功能。   通过加一,减一,乘2三个操作,

    2024年02月10日
    浏览(59)
  • 51单片机的简易篮球计分器倒计时仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

    51单片机的简易篮球计分器倒计时仿真设计( proteus仿真+程序+原理图+报告+讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0048 本设计旨在设计一个基于51单片机的篮球比赛计分器仿真设计,下面是设计的功能要求 1.可以在比赛期间随时更

    2024年02月09日
    浏览(50)
  • 单片机STC89C52倒计时、数码管和蜂鸣器控制

    鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 单片机选用STC89C52,实现倒计时60秒,控制两个数码管分别显示时间的十位和个位;当计时完毕时,显示\\\"-”,

    2024年02月04日
    浏览(45)
  • 【51单片机】矩阵按键实现数码管显示

    闲的没事看一看玩一玩········· 矩阵按键 数码管是一种导体发光器件,其基本单元是发光二极管。按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管 共阴极数码管是指将所有发光二极管的阴极接到一起形成共阴极的数码管,共阴极的数码管在应用时将公共

    2024年02月02日
    浏览(60)
  • 基于51单片机利用中断实现100以内的按键计数(Proteus仿真)

    https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==mid=2247484090idx=3sn=ed67cb438e25cc13b32ac6c48ccebecbchksm=cf4307e2f8348ef424109aacc5bb64a6f20d53581d57f15377ec67383e01a69e7a0292b500f6token=3445295lang=zh_CN#rd https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==mid=2247484090idx=3sn=ed67cb438e25cc13b32ac6c48ccebecbchksm=cf4307e2f8348ef424109aacc5bb64a6f20d535

    2024年02月04日
    浏览(44)
  • 51单片机入门 - 详解定时器实现按键控制流水灯方向

    操作系统:Windows 10 x84-64 单片机:STC89C52RC 编译器:SDCC 烧录软件:stcgal 1.6 开发板:普中51单片机开发板A2套件(2022) 在 VS Code 中新建项目到烧录的过程: 左侧EIDE图标 - 新建项目 - 空项目 - 8位MCU项目 - 保存文件夹。 更改构建配置: SDCC ;更改烧录配置: stcgal 。 在项目文件

    2024年02月06日
    浏览(48)
  • 51单片机实现按键、键盘的功能,五面拿下阿里飞猪offer

    } /******************************************************************************* 函 数 名 : main 函数功能 : 主函数 输 入 : 无 输 出 : 无 *******************************************************************************/ void main() { led=0; while(1) { keypros(); //按键处理函数 } } 矩阵键盘代码 /************************************

    2024年04月11日
    浏览(49)
  • 单片机C51计时器秒表

    鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 单片机C51(或称8051)计时器秒表的实现原理如下: 原理解释: C51微控制器通常包括多个计时器/计数器,可

    2024年02月03日
    浏览(52)
  • 51单片机 --独立按键

    前言 前几章介绍的都是IO 口输出的使用,这一教程我们通过独立按键实验来介绍IO 口作为输入的使用。开发板上板载8 个独立按键。本教程所要实现的功能是:通过开发板上的独立按键K1 控制D1 指示灯亮灭。大家可以参考前面的实验内容。 一、按键介绍 按键是一种电子开关

    2024年02月06日
    浏览(59)
  • 【51单片机】矩阵按键

    参考:普中 51 单片机开发攻略 main.c 只有第一个数码管量,并且按第几个键,就显示第几(0-F)。

    2024年01月21日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包