基于51单片机的加油站显示【数码管,矩阵键盘】(仿真)

 

 

 

 

bit led1=P3^0;//LED
sbit led2=P3^1;
sbit led3=P3^2;
sbit led4=P3^7;
sbit smg1=P2^0;//数码管
sbit smg2=P2^1;
sbit smg3=P2^2;
sbit smg4=P2^3;
sbit smg5=P2^4;
sbit smg6=P2^5;
sbit smg7=P2^6;
sbit smg8=P2^7;
//数码管编码
uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar time=0,mode=0;//系统变量 mode=0复位,=1设置,=2加油,=3结束
uint sum=500;//总价
float money=0;//实时价格
uchar you=0;//油类型
//延时
void delay(uint i)
{
	while(i--);
}

uchar key=0;
uchar key_scan()//按键检测
{
	uchar i;
	i=0;
	P1=0x7f;
 	switch(P1)//检测第1行
 	{
  		case 0x7e:i=4;break;
  		case 0x7d:i=3;break;
  		case 0x7b:i=2;break;
  		case 0x77:i=1;
 	}
	P1=0xBf;
 	switch(P1)//检测第2行
 	{
  		case 0xBe:i=8;break;
  		case 0xBd:i=7;break;
  		case 0xBb:i=6;break;
  		case 0xB7:i=5;
 	}
	P1=0xDf;
 	switch(P1)//检测第3行
 	{
  		case 0xDe:i=12;break;
  		case 0xDd:i=11;break;
  		case 0xDb:i=10;break;
  		case 0xD7:i=9;
 	}
	P1=0xEf;
 	switch(P1)//检测第4行
 	{
  		case 0xEe:i=16;break;
  		case 0xEd:i=15;break;
  		case 0xEb:i=14;break;
  		case 0xE7:i=13;
 	}
	if(key==i)
		return 0;
	else
	{
		key=i;
		return(key);
	}
}

void main()	//主函数
{
	uchar i=0;
	unsigned long k=0;
	TMOD|=0X01;//初始化定时器
	TH0=(65536-50000)/256;//50ms
	TL0=(65536-50000)%256;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
	while(1)
	{
		i=key_scan();//按键检测
		if(mode==1)
		{
		if(i==1)//92
		{
			you=0;
		}
		if(i==2)//95
		{
			you=1;
		}
		if(i==3)//98
		{
			you=2;
		}
		if(i==5)//加100
		{
			if(sum<900)
				sum+=100;
		}
		if(i==6)//加10
		{
			if(sum<990)
				sum+=10;
		}
		if(i==7)//加1
		{
			if(sum<999)
				sum++;
		}
		if(i==9)//减100
		{
			if(sum>100)
				sum-=100;
		}
		if(i==10)//减10
		{
			if(sum>10)
				sum-=10;
		}
		if(i==11)//减1
		{
			if(sum>0)
				sum--;
		} 
		}
		if((i==13)&&(mode==0))//启动
		{
			mode=1;
		}
		if((i==14)&&(mode

资料借鉴于此纷传

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

白茶丫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值