过往历程
历程1:秒表
历程2:按键显示时钟
历程3:列矩阵按键显示时钟
历程4:行矩阵按键显示时钟
历程5:新DS1302
历程6:小数点精确后两位ds18b20
历程7:35定时器测量频率
历程8:AT24C02
历程9:AT24C02秒表
历程10:AD
历程11:超声波
文章目录
- 过往历程
- 前期准备
- 原理图
- 总代码
- 省赛代码传送门
前期准备
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();
}
}
省赛代码传送门
第三届蓝桥杯单片机省赛
第四届蓝桥杯单片机省赛
第五届蓝桥杯单片机省赛
第六届蓝桥杯单片机省赛
第七届蓝桥杯单片机省赛
第八届蓝桥杯单片机省赛
第九届蓝桥杯单片机省赛
第十届蓝桥杯单片机省赛
第十一届蓝桥杯单片机省赛