提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
本文介绍一下蓝桥杯单片机继电器蜂鸣器电机考点,以总结的角度去讲解,对底层代码不做过多介绍,对底层有疑问可以看底层代码讲解文章或b站up柳离风视频。
一、继电器蜂鸣器电机底层代码
void relay(uchar state_relay)
{
uchar temp;
if(state_relay)
temp |= 0x10;
else
temp &= ~0x10;
P0=temp;
hc573(5);
}
void beep(uchar state_beep)
{
uchar temp;
if(state_beep)
temp |= 0x40;
else
temp &= ~0x40;
P0=temp;
hc573(5);
}
void motor(uchar state_motor)
{
uchar temp;
if(state_motor)
temp |= 0x20;
else
temp &= ~0x20;
P0=temp;
hc573(5);
}
二、考点分析(前两者考点均为状态控制,电机为PWM)
1.继电器
继电器最近几年还是常考考点之一,希望一定掌握
第十三届省赛第一场
代码如下(示例):
//采集任务
void collect_task()
{
if(collect_dly<500)return;
collect_dly = 0;
temp = ds18b20_read(0);
ds1302_read();
if(mode == 0)
{
state_relay = (temp > temp_par) ? 1 : 0;
}
else if(mode == 1)
{
state_relay = (Time[1] == 0 && (Time[0] >=0 && Time[0] < 5)) ? 1 : 0;
}
}
void timer1() interrupt 3
{
systick_ms++;
key_dly++;
display_dly++;
collect_dly++;
smg(SMG,dot,pos);
led(LED,pos);
if(++pos == 8) pos = 0;
relay(state_relay); //继电器控制
}
2.蜂鸣器
蜂鸣器已经快十年没考过了,可能是他的报警功能可以用LED替代,,而蜂鸣器在比赛时非常刺耳影响考生心态,所以以后考的概率也很低
第四届省赛
void collect_task()
{
if(collect_dly<500)return;
collect_dly = 0;
hum=PCF8591_Read(0x03)/2.57;
state_beep = (hum > hum_par && mode == 1) ? 1 : 0;
}
void timer1() interrupt 3
{
systick_ms++;
key_dly++;
display_dly++;
collect_dly++;
smg(SMG,dot,pos);
led(LED,pos);
if(++pos == 8) pos = 0;
beep(state_beep); //继电器控制
}
3.电机
电机出考点一般都会用pwm,第十三届国赛是唯一考过电机的题目(这个题目有点问题,因为电机引脚用的P0,必须和led数码管蜂鸣器继电器放一块,否则会互相干扰)
void Timer2Init(void) //100微秒@12.000MHz
{
AUXR |= 0x04; //定时器时钟1T模式
T2L = 0x50; //设置定时初值
T2H = 0xFB; //设置定时初值
AUXR |= 0x10; //定时器2开始计时
IE2 |= 0x04;
}
void timer2() interrupt 12
{
if(count_pwm == 0)
{
motor(1);
}
else if(count_pwm == pwm_duty)
{
motor(0);
}
if(++count_pwm == 10)
pwm_count = 0;
}
更多资料关注B站UP柳离风
学习交流群
总结
以上就是蓝桥杯单片机继电器蜂鸣器电机全部考点,希望大家继电器一定掌握,电机需要有所了解。