过往历程
历程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();}
}
省赛代码传送门
第三届蓝桥杯单片机省赛
第四届蓝桥杯单片机省赛
第五届蓝桥杯单片机省赛
第六届蓝桥杯单片机省赛
第七届蓝桥杯单片机省赛
第八届蓝桥杯单片机省赛
第九届蓝桥杯单片机省赛
第十届蓝桥杯单片机省赛
第十一届蓝桥杯单片机省赛