蓝桥杯基础
学了一学期的蓝桥杯,写一些基础的东西,让你对蓝桥杯有更深的理解
板子可以直接运用(基本能得个三等奖)
感觉这个就像一个个单独的模版,然后拼凑出来
写的不是很好还请大家斧正
基础模版
#include <STC12C5A60S2.H> //不同芯片是不同的
unsigned char -----; //定义一些变量
/**********中间写一些函数********/
void main ()
{
while(1)
{
}
}
核心
138译码器
是控制LED灯,蜂鸣器,数码管的关键
下面展示一些 内联代码片
。
void SelectHC573(unsigned char channel) //138译码器
{
switch(channel)
{
case 4: //LED灯
P2 = (P2 & 0x1f) | 0x80; //1000 0000
break;
case 5: //蜂鸣器
P2 = (P2 & 0x1f) | 0xa0; //1010 0000
break;
case 6: //位码
P2 = (P2 & 0x1f) | 0xc0; //1100 0000
break;
case 7: //段码
P2 = (P2 & 0x1f) | 0xe0; //1110 0000
break;
}
}
有了这个,就可以使用蓝桥杯板子上的绝大部分的功能,在想要使用时直接把他的头文件放到要用的内容前, 如:
SelectHC573(4);
P0 = 0x00; //让LED灯全亮
SelectHC573(4);
P0 = 0xff; //让LED灯全灭
SelectHC573(5);
P0 = 0x10; //继电器吸附一下
SelectHC573(5);
P0 = 0x40; //蜂鸣器叫一下
SelectHC573(5);
P0 = 0x00; //全部关闭(这代码可以写一个关闭噪音的函数,
不让板子在下载调试文件时太吵)
虽然都是P0,但是打开不同的口,P0 的内容是不同的
(1) 独立按键
要进行消抖操作
void scankey()
{
if(S1 == 0)
{
delay(100);
if(S1 == 0)
{
----写出要执行的操作----
while(!S1);
}
while(!S1);**下三行可要可不要**
delay(100);
while(!S1);
}
}
(2) 数码管的动态显示
只要写出一个函数即可控制数码管
unsigned char code
DU[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
void display_Bit(unsigned char value, unsigned char pos) //提供显示
{
SelectHC573(6);
P0 = 0x01 << pos; //位选移位
SelectHC573(7);
P0 = value;
}
**(下面的头函数要放在main函数的while(1)中)**
void display_SMG() //前一个写要显示的数,后一个是要显示的位置
{
display_Bit(DU[1], 0); //在第一位显示1
delay(500);
display_Bit(DU[1],1);
delay(500);
display_Bit(DU[1], 2);
delay(500);
display_Bit(DU[1], 3);
delay(500);
display_Bit(DU[1], 4);
delay(500);
.....................
}
(3) 定时器
只要把InitTimer0的头文件写入main函数即可
在void timer0(void) interrupt 1中改变变量从而达到控制的目的
unsigned char count = 0;
void InitTimer0()
{
TMOD = 0x01;
TH0 = (65535 - 5000) / 256; //5000ms
TL0 = (65535 - 5000) % 256;
ET0 = 1;
EA = 1;
TR0 = 1;
}
void timer0(void) interrupt 1 **里面可以写多可变量来控制**
{
TH0 = (65535 - 5000) / 256;
TL0 = (65535 - 5000) % 256;
count++;
if(count == 200) //达到200次
{
s++; //加一秒
}
}
更多细节内容可以关注B站小蜜蜂老师的视频讲解