单片机测试-数码管可调年月日显示

物联网221 第一次测试代码 ZW

环境:proteus 15.0、keil 5 

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define SEG P1
#define WEI P2
sbit k11=P3^2;
sbit k22=P3^3;
sbit k0=P0^0;
sbit k1=P0^1;
sbit k2=P0^2;
sbit k3=P0^3;
sbit k4=P0^4;
sbit k5=P0^5;
sbit k6=P0^6;
sbit k7=P0^7;

char num1[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
char num2[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
char num3[]={0x02,0x9e,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x09};//0.
uint a,b,i,j;
uint s1,s2,f1,f2,m1,m2,jishu=0,count=0;
int s=22;
int f=59;
int m=55;

void delay(int x);
void init();
void jisuan();
void display();
void judge();
void xianshi();
void fanfu();

main()
{
  init();
	while(1)
	{
		xianshi();
		jishu++;		
		judge();
		jisuan();
		display();
	}
}

void delay(int x)//1ms
{
	for(i=0;i<x;i++)
	for(j=0;j<=120;j++);//12000
}

void fanfu()
{
	m=m+1;
	if(m==60)
	{
		m=0;
		f=f+1;
		if(f==60)
		{
			f=0;
			s=s+1;
		}
		if(s==24)
		{
			s=0;
		}
	}	
}
void xianshi()
{
	if(count==1)
	{
		if(jishu==50)
		{
			jishu=0;
			fanfu();
		}
	}
}

void judge()
{
	if(k0==0)
		{
			delay(20);
			if(k0==1)
			{
				s=s+1;
				if(s==24)
					s=0;
			}
		}
		if(k1==0)
		{
			delay(20);
			if(k1==1)
			{
				s=s-1;
				if(s<0)
					s=23;
			}
		}
		if(k2==0)
		{
			delay(20);
			if(k2==1)
			{
				f=f+1;
				if(f==60)
				f=0;
			}
		}
		if(k3==0)
		{
			delay(20);
			if(k3==1)
			{
				f=f-1;
				if(f<0)
					f=59;
			}
		}
		if(k4==0)
		{
			delay(20);
			if(k4==1)
			{
				m=m+1;
				if(m==60)
					m=0;
			}
		}
		if(k5==0)
		{
			delay(20);
			if(k5==1)
			{
				m=m-1;
				if(m<0)
					m=59;
			}
		}
		if(k6==0)
		{
			delay(20);
			if(k6==1)
			{
				jishu=0;
				if(count==0)
				{
					count=1;
					k7=0;
				}
				else if(count==1)
				{
					count=0;
					k7=1;
				}
			}
		}
}

void jisuan()
{
	s1=s/10;
	s2=s-(s1*10);
	
	f1=f/10;
	f2=f-(f1*10);
	
	m1=m/10;
	m2=m-(m1*10);
}

void display()		
{
	SEG = num1[s1];
	WEI = num2[0];
	delay(2);
	WEI = 0x00;
	delay(1);
	
	SEG = num1[s2];
	WEI = num2[1];
	delay(2);
	WEI = 0x00;
	delay(1);
		
	SEG = 0xfd;
	WEI = num2[2];
	delay(2);
	WEI = 0x00;
	delay(1);
		
	SEG = num1[f1];
	WEI = num2[3];
	delay(2);
	WEI = 0x00;
	delay(1);
		
	SEG = num1[f2];
	WEI = num2[4];
	delay(2);
	WEI = 0x00;
	delay(1);
		
	SEG = 0xfd;
	WEI = num2[5];
	delay(2);
	WEI = 0x00;
	delay(1);
		
	SEG = num1[m1];
	WEI = num2[6];
	delay(2);
	WEI = 0x00;
	delay(1);
		
	SEG = num1[m2];
	WEI = num2[7];
	delay(2);
	WEI = 0x00;
	delay(1);	
}

void init() 
{
  EA = 1;	 
  EX0 = 1;
  IT0 = 1;
  EX1 = 1;
  IT1 = 1;
}
 
void ex0_intr() interrupt 0 
{ 
  if(k11==0)
	{
		fanfu();
	}
}
 
void ex1_intr() interrupt 2 
{ 
  if(k22==0)
	{
		m=m-1;
	}
}

电路图:


该设计代码与电路还未进行优化,只可实现基本功能。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冰祗_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值