蓝桥杯基础

蓝桥杯基础

学了一学期的蓝桥杯,写一些基础的东西,让你对蓝桥杯有更深的理解
板子可以直接运用(基本能得个三等奖)
感觉这个就像一个个单独的模版,然后拼凑出来
写的不是很好还请大家斧正

基础模版

#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站小蜜蜂老师的视频讲解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值