第十四届蓝桥杯单片机组(赛题+程序)

第十四届蓝桥杯单片机组(赛题+程序)

该赛题考于2023.4.8 ,于2023.4.28 复盘。

今年的题目是比较难的了,模块多,而且逻辑也更加复杂,考了NE555、I2C、DS1302、DS18B20,同时客观题也不好做。
笔者客观题只对3个,程序题大概完成80%,勉强进入省一。

2553fd13ceac47019cb68182d8b1c153.png

一、赛题 

1.客观题

ae926214e0624c5b869a10d63d9377f6.jpeg

 答案: 1.D    2.B   3.ABC   4.D   5.A    6.AC   7.A   8.B   9.D   10.ABD

 2.程序题

2e5e9dd7172546fb9bce2eb174d217e7.jpeg

 二、程序

1.main.c

/* ***************************
 
	第十四届蓝桥杯单片机组程序
	                           by wull
	                           2023.4.28
**************************** */

#include "STC15.h"
#include "iic.h"
#include "onewire.h"
#include "ds1302.h"
#include "intrins.h"

#define uchar unsigned char
#define uint unsigned int
	
code unsigned char Seg_Table[] =   
{
0xc0, //0
0xf9, //1
0xa4, //2
0xb0, //3
0x99, //4
0x92, //5
0x82, //6
0xf8, //7
0x80, //8
0x90, //9
0x88, //A
0x83, //b
0xc6, //C
0xa1, //d
0x86, //E
0x8e, //F   15
0xff, //灭  16
0xbf, //-   17               10111111
0x89, //H   18               10001001
0x8c  //P   19               10001100
}; 
//********************温湿度采集数据记录变量************** 

uchar xdata temper_caiji[100]={0};         // 温度存放
uchar temper_max;                          // 温度最大值
long int temper_sum=0;                     // 温度总和
float temper_ave;                          // 温度平均值(浮点数)
uint temper_aver;                          // 温度平均值(整数)
uchar xdata shidu_caiji[100]={0};         // 湿度存放
uchar shidu_max;                          // 湿度最大值
long int shidu_sum=0;                     // 湿度总和
float shidu_ave;                          // 湿度平均值(浮点数)
uint shidu_aver;                          // 湿度平均值(整数)

//******************************************************

uchar dspcom=0;                             // 数码管位选标志位
uchar dspbuff[8]={16,16,16,16,16,16,16,16}; // 8个数码管
uchar now[7]={0};                           // 时间的 时分秒存放
uchar ad_value;                             // 光敏电阻电压
uint v_value;                               // 光敏电阻电压*10
uchar temper,Shidu,Canshu=30,Chufa=0;       // 温度,湿度,参数,触发值
uchar Jiemian=1,Huixian=1;                  // 界面切换值,回显界面切换值
uint count_t=0,intr=0,intr1=0,intr2=0;      // 计数变量
uint count_f;                               // 频率计数 
uint dat_f;                                 // 频率值
bit F_key = 0,Lightstate;    						    // 按键按下标志
uint keycount= 0;				                    // 按键计数变量

bit flag,flag1,flag2;                       // 标志位


//***********************初始化**************************

void InitAll()      // 初始化 关闭LED 蜂鸣器等
{
	P2=(P2&0x1f)|0xa0;
	P0=0x00;
	P2=(P2&0x1f)|0x80;
	P0=0xff;
	P2=(P2&0x1f);
}

void Timer0_Init(void)		 // 定时器1 计数
{

	TMOD = 0x1F;			//设置定时器模式
	TL0 = 0xff;				//设置定时初始值
	TH0 = 0xff;				//设置定时初始值
	TR0 = 1;				//定时器1开始计时
	
	ET0=1;
	EA=1;
}

void Timer1_Init(void)		//2毫秒@12.000MHz     // 定时器2 定时2ms
{
	AUXR &= 0xBF;			//定时器时钟12T模式
	TMOD &= 0x0F;			//设置定时器模式
	TL1 = 0x30;				//设置定时初始值
	TH1 = 0xF8;				//设置定时初始值
	TF1 = 0;				//清
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值