過往歷程
歷程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();}
}
省賽代碼傳送門
第三屆藍橋杯單片機省賽
第四屆藍橋杯單片機省賽
第五屆藍橋杯單片機省賽
第六屆藍橋杯單片機省賽
第七屆藍橋杯單片機省賽
第八屆藍橋杯單片機省賽
第九屆藍橋杯單片機省賽
第十屆藍橋杯單片機省賽
第十一屆藍橋杯單片機省賽