【C 语言实现51单片机计时器】

C语言实现51单片机计时器

代码如下

#include <reg51.h>

sbit Hc38A=P2^2;
sbit Hc38B=P2^3;
sbit Hc38C=P2^4;
unsigned char sec=0,min=0,hou=0;
unsigned char code SMG[]={0X3F,0X06,0X5B,0X4F,0X66,
												0X6D,0X7D,0X07,0X7F,0X6F};

void delay(unsigned char t)
{
	while(t--)
		;
}

void HC38(unsigned char n)
{
	switch (n)
	{
		case 0:Hc38C=0;Hc38B=0;Hc38A=0;break;
		case 1:Hc38C=0;Hc38B=0;Hc38A=1;break;
		case 2:Hc38C=0;Hc38B=1;Hc38A=0;break;
		case 3:Hc38C=0;Hc38B=1;Hc38A=1;break;
		case 4:Hc38C=1;Hc38B=0;Hc38A=0;break;
		case 5:Hc38C=1;Hc38B=0;Hc38A=1;break;
		case 6:Hc38C=1;Hc38B=1;Hc38A=0;break;
		case 7:Hc38C=1;Hc38B=1;Hc38A=1;break;
	}
}

void display()
{
	
	HC38(0);
	P0=SMG[hou/10];
	delay(100);
	HC38(1);
	P0=SMG[hou%10];
	delay(100);
	
	HC38(3);
	P0=SMG[min/10];
	delay(100);
	HC38(4);
	P0=SMG[min%10];
	delay(100);
	
	HC38(6);
	P0=SMG[sec/10];
	delay(100);
	HC38(7);
	P0=SMG[sec%10];
	delay(100);
}

void shuaxin(unsigned char k)
{
	while(k--)
		display();
}

void main()
{
	while(1)
	{
		shuaxin(50);
		sec++;
		if(sec>=59)
		{
			sec=0;
			min++;
			if(min>=59)
			{
				min=0;
				hou++;
				if(hou>23)
					hou=0;
			}
		}
	}		
}

接线如下

LED接口
单片机接口

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值