• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于51单片机的闹钟【整点报时,分秒,数码管,独立按键】(仿真)

01/28 08:53
532
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

有需要资料的可了解一下.docx

共1个文件

1、使用单片机定时器制作分表;

2、分、秒;

3、可任意调节设置时间;

4、可设置一个闹钟;

5、整点报时功能。

it L4=P2^7;
sbit k1=P3^2;//按钮
sbit k2=P3^3;
sbit k3=P3^4;
sbit k4=P3^5;
sbit beep=P3^6;//蜂鸣器
uchar code Lduan0[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//无小数点
uchar code Lduan1[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//有小数点
uchar time=0,miao=0,fen=0;//正常计时
uchar moshi=0; //系统模式
uchar fen_nao=0,miao_nao=30;//闹钟时间
uchar buzzr=0;//蜂鸣器报警时间

//延时函数
void delay_us(uint i)
{
uchar j=0;
for(j=0;j<i;j++);
}

//主函数
void main()
{
uchar k=0;
TMOD|=0X01;//设置定时器0
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
	while(1)
	{
	if(!k1 &&(k!=1))//设置
		{
			k=1;
			if(buzzr==0)
			{
				if(moshi<4)
					moshi++;
				else
					moshi=0;
			}
			else
			{
				buzzr=0;
			}
		}
		if(!k4)//OK
		{
			moshi=0;
			buzzr=0;
		}
		if(moshi==1)//设置当前分钟
		{
			if(!k2 &&(k!=2))//加
			{
				k=2;
				if(fen<59)
					fen++;
				else
					fen=0;
			}
			if(!k3 &&(k!=3))//减
			{
				k=3;
				if(fen>0)
					fen--;
				else
					fen=59;
			}
		}
		if(moshi==2)//设置当前秒
		{
			if(!k2 &&(k!=2))//加
			{
				k=2;
				if(miao<59)
					miao++;
				else
					miao=0;
			}
			if(!k3 &&(k!=3))//减
			{
				k=3;
				if(miao>0)
					miao--;
				else
					miao=59;
			}
		}
		if(moshi==3)//设置闹钟分钟
		{
			if(!k2 &&(k!=2))//加
			{
				k=2;
				if(fen_nao<59)
					fen_nao++;
				else
					fen_nao=0;
			}
			if(!k3 &&(k!=3))//减
			{
				k=3;
				if(fen_nao>0)
					fen_nao--;
				else

资料借鉴于此纷传

  • 有需要资料的可了解一下.docx
    下载

相关推荐