C语言之51单片机定时炸弹

/*******************************************************
定时炸弹
9秒倒计时,至0时蜂鸣器响演示炸弹
Author:Vivien
*******************************************************/
#include <reg51.h>
#define DataPort P0   //数据端口

sbit Beep= P1^0;   //蜂鸣器数据 


unsigned char code Num[] = {0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xf9,0xc0};  
//9-0的共阳极数码管16进制


void delay_1s()
{
	unsigned char i;
	TMOD = 0x01;    //T0工作在定时方式,方式1
	TH0 = 0x3c;     //50ms的初值
	TL0 = 0xb0;
	
	TR0 = 1;    //开T0
	for(i = 0;i < 20;i++)
	{
	  while(!TF0);   //等待时间,原地踏步
	
	  TF0 = 0;    //清除标志位
	  TH0 = 0xff;  //重新赋初值
	  TL0 = 0xce;
	}
}

void Delay_Second(unsigned char i)
{
	while(--i)
	{
		delay_1s();
	}
}

void DelayUs2x(unsigned char n)   //t = 2 * n + 5 us  
{
	while(--n);
}

void DelayMs(unsigned int n)  //t = n ms
{
	while(n--)
	{
		DelayUs2x(245);
		DelayUs2x(245);
	}
}


void main()           //实现计时9-0
{
	unsigned int num = 0;
	
	while(1)
	{
		DataPort = Num[num];		
		num++;
		Delay_Second(15);
		if(num == 9)
		{
			while(1)
		 {	
			DelayMs(1);//发出大约500HZ的方波,频率越大,声音越尖,蜂鸣器响的条件
			Beep = !Beep;
			DataPort = Num[9];		
		 }
	  }
   }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值