蓝桥杯第七届省赛(单片机)_模拟风扇控制系统

蓝桥杯第七届省赛(单片机)_模拟风扇控制系统

题目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
大家好各位,我又回来了。最近由于忙于过年和开学所以没有时间来写博客,不过这段时间到有空闲的时间,我会陆续的把蓝桥杯单片机的博客给补上,废话不多说,那我们开始主题吧!

这是第七届蓝桥杯单片机组的省赛题,我感觉整体的难度不大,可能有点挑战性的就是pwm按键更换模式,其他大部分考察的也就是数码管显示ds18b20按键led显示。这些都是蓝桥杯的必考模块,大部门都很简单,只要根据平时我们所写的模块嵌套上去就行。

题目分析

1 数码管显示单元

根据题目分析,本次赛题要求我们有两种数码管的显示状况,工作模式和室温模式两种。其实对于两种的数码管状态的显示我们可以根据变量来进行控制与表达。例如我们设一个变量flag_smg,当flag_smg等于1时,数码管显示工作状态,当flag_smg等于2时,数码管显示室温状态。这里可能讲的比较简洁,等下我会把代码发布,到时候看代码就比较好理解了。

2 温度测量单元

这题比较简单,只需要改写底层驱动代码(onewhile)就可以测量了。

3 按键控制单元

这里主要考察的是独立按键,独立按键比较简单,只需要写好相应的按键代码格式就行,然后通过不同按键来控制不同的变量来控制温度值的变量。
(这里的按键代码格式我会在下面的代码显示部分表达出来,每个人有不同的独立按键的模块格式,其实原理都是一样的)

4 LED灯显示与pwm

led灯显示是单片机的基础部分比较简单,打开锁存器就行,而pwm与电机有关,我想等等有代码来表示这pwm的意思。

代码部分

time.c

# include "time.h"

void Timer0Init(void)		//1毫秒@12.000MHz
{
   
	AUXR &= 0x7F;		//定时器时钟12T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	EA=ET0=1;
}
void Timer1Init(void)		//1毫秒@12.000MHz
{
   
	AUXR &= 0xBF;		//定时器时钟12T模式
	TMOD &= 0x0F;		//设置定时器模式
	TL1 = 0x18;		//设置定时初值
	TH1 = 0xFC;		//设置定时初值
	TF1 = 0;		//清除TF1标志
	TR1 = 1;		//定时器1开始计时
}

//**这里有两个定时器,一个是Pwm的定时器,另一个是主要函数的安放的**

time.h

# ifndef _TIME_H
# define _TIME_H

# include <STC15F2K60S2.h>

void Timer0Init(void);
void Timer1Init(void);

# endif

smg.c

# include "smg.h"

unsigned char tab[13]={
   0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF,0XC6};
unsigned char dspbuf[8]={
   10,10,10,10,10,10,10,10};

void smg_display(void)
{
   
	static unsigned char i;
	
  P0=0XFF;
	P2&=0X1F;
	P2=0XE0;
	P2&=0X1F;
	
	P0=(0X01<<i);
	P2&=0X1F;
	P2=0XC0;
	P2&=0X1F;
	
	P0=tab[dspbuf[i]];
	P2&=0X1F;
	P2=0XE0;
	P2&=0X1F;
	
	if(++i==8)
		i=0;
}

smg.h

# ifndef _SMG_H
# define _SMG_H

# include <STC15F2K60S2.H>

void smg_display(void
  • 40
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值