第十一届单片机蓝桥杯省赛(第一组)

   日期:2021-03-10     浏览:102    评论:0    
核心提示:这一段时间一直在准备蓝桥杯省赛,已经学小蜜蜂老师的程序一年了,今天做了一套省赛题,想拿出来请大家指教,哈哈,话不多说,整活。//该省赛题的无效按键操作为全部按键,并非指所使用到的按键,把全部按键写出来以后就包括了所使用的4个按键,还有就是这套省赛题的//一个小问题就是在往AT24C02里面存储数据的时候,提上给的是吧数据放大10倍,但是AT24C02最大能存储256个字节,说以我开始定义的就是//放大过10倍的。前面的可以底层驱动可以上B站学习小蜜蜂老师的视频,讲的真的很简洁。#include"r

这一段时间一直在准备蓝桥杯省赛,已经学小蜜蜂老师的程序一年了,今天做了一套省赛题,想拿出来请大家指教,哈哈,话不多说,整活。

//该省赛题的无效按键操作为全部按键,并非指所使用到的按键,把全部按键写出来以后就包括了所使用的4个按键,还有就是这套省赛题的
//一个小问题就是在往AT24C02里面存储数据的时候,提上给的是吧数据放大10倍,但是AT24C02最大能存储256个字节,说以我开始定义的就是
//放大过10倍的。

前面的可以底层驱动可以上B站学习小蜜蜂老师的视频,讲的真的很简洁。

#include"reg52.h"
#include"iic.h"

sbit LSA=P2^5;
sbit LSB=P2^6;
sbit LSC=P2^7;

sfr P4=0xc0;

sbit r1=P3^0;
sbit r2=P3^1;
sbit r3=P3^2;
sbit r4=P3^3;

sbit c4=P3^4;
sbit c3=P3^5;
sbit c2=P4^2;
sbit c1=P4^4;

sbit L1=P0^0;
sbit L2=P0^1;
sbit L3=P0^2;

unsigned int dat2=0;
unsigned int canshu=30;
unsigned int jishu=0;
unsigned int jiemian=0;
unsigned int pan=0;
unsigned int tiaojian=0;
unsigned char temp;
unsigned int zhi=0;
unsigned int num=0;
unsigned int liang=0;
unsigned char i=0;
unsigned int num1=0;
unsigned int wuxiao=0;

unsigned char tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char tab1[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
//====================================
void delay(unsigned int t)
{
while(t–);
}
//=========================================

void hc573(unsigned int n)
{
switch(n)
{
case 4:
LSA=0;
LSB=0;
LSC=1;
break;
case 5:
LSA=1;
LSB=0;
LSC=1;
break;
case 6:
LSA=0;
LSB=1;
LSC=1;
break;
case 7:
LSA=1;
LSB=1;
LSC=1;
break;
}
}

//====================================
void hc138(unsigned int addr,unsigned char dat)
{
hc573(6);
P0=0x01<<addr;
hc573(7);
P0=dat;
delay(1500);
P0=0xff;
}

void reset() //开机上电关闭所有LED和蜂鸣器以及继电器
{
hc573(5);
P0=0x00;
hc573(4);
P0=0xff;
}

//========================

void dingshi() //因为我定时器用的可以,说以没用10毫秒的,
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
}

void dingshifuwu() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
i++;
if(i100)
{
liang=1;
i=100;
}
}
//==============================
void dianyaduqu()
{
IIC_Start();
IIC_SendByte(0x90);
IIC_WaitAck();
IIC_SendByte(0x03);
IIC_WaitAck();
IIC_Stop();

IIC_Start();
IIC_SendByte(0x91);
IIC_WaitAck();
dat2=IIC_RecByte();
IIC_SendAck(0);
IIC_Stop();
dat2=(dat2*395)/100;
if(dat2>=500)
dat2=500;
}

void dianyapanduan()
{
if((dat2>=(canshu10))&&(tiaojian==0))
{
tiaojian=1;
}
else if((canshu
10>dat2)&&(tiaojian1))
{
tiaojian=0;
jishu=jishu+1;
if(num0)
{
jishu=jishu-1;
num=1;
}
}
if(jishu%21)
{
hc573(4);
L2=0;
}
else if(jishu%20)
{
hc573(4);
L2=1;
}
}

void deng()
{
if(dat2<canshu10)
{
TR0=1;
if(liang1)
{
hc573(4);
L1=0;
}
else if(liang0)
{
hc573(4);
L1=1;
}
}
else if(dat2>=canshu
10)
{
i=0;
liang=0;
TR0=0;
hc573(4);
L1=1;
}

}
//============================
void xie(unsigned char addr,unsigned char dat)
{
IIC_Start();
IIC_SendByte(0xa0);
IIC_WaitAck();
IIC_SendByte(addr);
IIC_WaitAck();
IIC_SendByte(dat);
IIC_WaitAck();
IIC_Stop();
}

unsigned char du(unsigned char addr)
{
IIC_Start();
IIC_SendByte(0xa0);
IIC_WaitAck();
IIC_SendByte(addr);
IIC_WaitAck();

IIC_Start();
IIC_SendByte(0xa1);
IIC_WaitAck();
temp=IIC_RecByte();
IIC_Stop();
return(temp);
}

void duxiechuli()
{
zhi=du(0x01);
canshu=zhi;
}
void xiechuli()
{
zhi=canshu;
xie(0x01,zhi);
delay(1000);
}
//============================
void xianshi()
{
hc138(0,0xc1);
delay(500);
hc138(1,0xff);
delay(500);
hc138(2,0xff);
delay(500);
hc138(3,0xff);
delay(500);

hc138(4,0xff);
delay(500);
hc138(5,tab1[dat2/100]);
delay(500);
hc138(6,tab[dat2%100/10]);
delay(500);
hc138(7,tab[dat2%10]);
delay(500);
}

void xianshicanshu()
{
hc138(0,0x8c);
delay(500);
hc138(1,0xff);
delay(500);
hc138(2,0xff);
delay(500);
hc138(3,0xff);
delay(500);

hc138(4,0xff);
delay(500);
hc138(5,tab1[(canshu10)/100]);
delay(500);
hc138(6,tab[(canshu
10)%100/10]);
delay(500);
hc138(7,tab[(canshu*10)%10]);
delay(500);
}

void xianshijishu()
{
hc138(0,0xc8);
delay(500);
hc138(1,0xff);
delay(500);
hc138(2,0xff);
delay(500);
hc138(3,0xff);
delay(500);

hc138(4,0xff);
delay(500);
hc138(5,0xff);
delay(500);
hc138(6,tab[jishu/10]);
delay(500);
hc138(7,tab[jishu%10]);
delay(500);
}

//===============================
void key()
{
r4=0;
r1=r2=r3=1;
c1=c2=c3=c4=1;
if(c30)
{
while(c30)
{
if(jiemian0)
xianshi();
if(jiemian1)
xianshicanshu();
if(jiemian2)
xianshijishu();
}
wuxiao=0;
num1=0;
jiemian++;
if(jiemian3)
jiemian=0;
while(c3==0);
}
}

void key1()
{
if(jiemian1)
{
r3=0;
r1=r2=r4=1;
c1=c2=c3=c4=1;
if(c20)
{
while(c20)
xianshicanshu();
canshu=canshu+5;
if(canshu55)
canshu=0;
xiechuli();
while(c2==0);
}
}
}

void key2()
{
if(jiemian1)
{
r4=0;
r1=r2=r3=1;
c1=c2=c3=c4=1;
if(c20)
{
while(c20)
xianshicanshu();
if((canshu0)&&(pan1))
{
canshu=55;
pan=0;
}
if(pan0)
canshu=canshu-5;
if((canshu0)&&(pan0))
{
pan=1;
canshu=0;
}
xiechuli();
while(c2==0);
}
}
}

void key3()
{
if(jiemian2)
{
r3=0;
r1=r2=r4=1;
c1=c2=c3=c4=1;
if(c30)
{
while(c30)
{
xianshijishu();
}
jishu=0;
while(c30);
}
}
}

void key4()
{
if((jiemian0)||(jiemian1)||(jiemian2))
{
r3=0;
r1=r2=r4=1;
c1=c2=c3=c4=1;
if(c30)
{
while(c30)
{
if(jiemian0)
xianshi();
if(jiemian1)
xianshicanshu();
if(jiemian2)
xianshijishu();
}
num1++;
if(num13)
wuxiao=1;
while(c30);
}

 r4=0;

r1=r2=r3=1;
c1=c2=c3=c4=1;
if(c20)
{
while(c20)
{
if(jiemian0)
xianshi();
if(jiemian1)
xianshicanshu();
if(jiemian2)
xianshijishu();
}
num1++;
if(num13)
{
num1=0;
wuxiao=1;
}
while(c2==0);
}

   r3=0;

r1=r2=r4=1;
c1=c2=c3=c4=1;
if(c20)
{
while(c20)
{
if(jiemian0)
xianshi();
if(jiemian1)
xianshicanshu();
if(jiemian2)
xianshijishu();
}
num1++;
if(num13)
{
num1=0;
wuxiao=1;
}
while(c2==0);
}

}
}

//=================
void wuxiaopanduan()
{
if(wuxiao1)
{
hc573(4);
L3=0;
}
else if(wuxiao0)
{
hc573(4);
L3=1;
}
}
//================================
void main()
{
dingshi();
duxiechuli();
reset();
while(1)
{
key();
key1();
key2();
key3();
key4();
wuxiaopanduan();
deng();
dianyaduqu();
if(jiemian0)
{
dianyapanduan();
xianshi();
}
else if(jiemian1)
{
xianshicanshu();
}
else if(jiemian==2)
{
xianshijishu();
}
}
}

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服