过往历程
前期准备
1:本文使用的头文件是由stc生成
点击保存文件之后,保存至自己文件目录下方即可
2:本文使用的都是官方提供的底层驱动代码
原理图
总代码
#include<stc15f2k.h>
#include<intrins.h>
sbit s7=P3^0;
sbit s6=P3^1;
sbit s5=P3^2;
sbit s4=P3^3;
char dula[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
char disdula[]={0,0,0,0,0,0,0,0};
int a;
void buzz()
{
P2=((P2&0X1F)|0XA0);
P0=0X00;
P2&=0X1F;
P2=((P2&0X1F)|0X80);
P0=0XFF;
P2&=0X1F;
}
void delay(int x)
{
int i;
while(x--)
for(i=0;i<5*123;i++);
}
void led(int i)
{
P2=((P2&0x1f)|0x80);
P0=i;
P2&=0x1f;
}
void led_mode()
{
int x;
static int i=0,mode=0,xx=0x7e,yy=0xe7;
switch(mode)
{
case 0:
x=~(0x01<<i);
led(x);
delay(400);
if(++i>=8)
{
i=0;
mode=1;
}
break;
case 1:
x=~(0x80>>i);
led(x);
delay(400);
if(++i>=8)
{
i=0;
mode=2;
}
break;
case 2:
x=~((0x01<<i)|(0x80>>i));
led(x);
delay(400);
if(++i>=4)
{
i=0;
mode=3;
}
break;
case 3:
x=~((0x10<<i)|(0x08>>i));
led(x);
delay(400);
if(++i>=4)
{
i=0;
mode=4;
}
break;
case 4:
x=(xx<<i)&0x0f|(xx>>i&0xf0);
led(x);
delay(400);
if(++i>=4)
{
i=0;
mode=5;
}
break;
case 5:
x=(yy&0xf0)<<i|(yy&0x0f)>>i;
led(x);
delay(400);
if(++i>=4)
{
i=0;
mode=0;
}
break;
}
}
void main()
{
buzz();
while(1)
{
led_mode();
}
}
省赛代码传送门
第三届蓝桥杯单片机省赛
第四届蓝桥杯单片机省赛
第五届蓝桥杯单片机省赛
第六届蓝桥杯单片机省赛
第七届蓝桥杯单片机省赛
第八届蓝桥杯单片机省赛
第九届蓝桥杯单片机省赛
第十届蓝桥杯单片机省赛
第十一届蓝桥杯单片机省赛