蓝桥杯单片机备考必看内容,学习一周,保底省三!

2023-11-11

这里我先把我弄到的历年考试类型给大家,但是这图只能参考,经历这届蓝桥杯我深有体会,考试当天早上我还在想要不要看看矩阵键盘,但是想着这个考点概率就没去看隔着摆烂,结果真考了按键12,13,16,17的运用。。。。但是有一点要说的是,这届选择题很多历届题,大家务必要去看往届题。值得一提的是这届选择题15分,编程题85分。废话不说了,下面给大家我考前看的考点板块。

请添加图片描述

温度读取 (这届考了)

#include <STC15F2K60S2.H>
#include "OneWire.h"
#include "absacc.h"
void Displaytemp();
void Delays(unsigned int t);
void Readtemp();
unsigned int temp;
unsigned char SMGNoDot_CA[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char SMGDot_CA[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};

void Delay(unsigned int t)
{
	while(t--);
}

void CLOSEled()
{
	P2=(P2&0X1F)|0X80;
	P0=0XFF;
}


void closebz()
{
	P2=(P2&0X1F)|0Xa0;
	P0=0X00;
}
void DidplaySMG(unsigned char pos,unsigned char dat)
{
	P2=(P2&0X1F)|0XC0;
	P0=0X01<<pos;
	P2=(P2&0X1F)|0XE0;
	P0=dat;
//	XBYTE[0XE000]=0xff;	
//	XBYTE[0XC000]=0X01<<pos;
//	XBYTE[0XE000]=dat;
//	
}



	
//	if((temp&0xf800)==0x0000)
//	{
//		temp>>=4;
//		temp=temp*10;
//		temp=temp+(LT&0xf0)*0.625;
//		
//	}

//void Display_all(unsigned char dat)
//{
//	XBYTE[0XC000]=0Xff;
//	XBYTE[0XE000]=dat;
//}

void Displaytemp()
{

	
	DidplaySMG(7,SMGNoDot_CA[temp%10]);
	Delay(100);
	DidplaySMG(6,SMGDot_CA[(temp%100)/10]);
		Delay(100);
	DidplaySMG(5,SMGNoDot_CA[temp/100]);
		Delay(100);
	DidplaySMG(4,0xff);
		Delay(100);
	DidplaySMG(3,0xff);
		Delay(100);
	DidplaySMG(2,0xff);
		Delay(100);
	DidplaySMG(1,0xff);
		Delay(100);
	DidplaySMG(0,0xff);
		Delay(100);

}



void Readtemp()
{
	unsigned char LT,HT;
	init_ds18b20();
	Write_DS18B20(0xcc);
	Write_DS18B20(0x44);
	Delay(1000);
	init_ds18b20();
	Write_DS18B20(0xcc);
	Write_DS18B20(0xbe);
	LT=Read_DS18B20();
	HT=Read_DS18B20();
	
	temp = HT ;
	temp = temp << 8 ;		//左移8位,使MSB中的数据变为temp的高八位,低八位补零
	temp = temp | LT;	
	if((temp & 0xf800) == 0x0000)    //正温度的处理办法
	{
		temp >>= 4;         //取出温度结果的整数部分
		temp = temp*10;    //放大10倍
		temp = temp + (LT&0x0f)*0.625;	//加上小数部分
	}	


}

void main()
{
	closebz();
	CLOSEled();
//	XBYTE[0x8000] = 0XFF;
	while(1)
	{
		Readtemp();
		Displaytemp();
		
	}
}

PWM的运用(呼吸灯)


#include <STC15F2K60S2.H>

unsigned char zhankongbi=0;
	unsigned int i=0;
	unsigned int count=0;
void closeled()
{
	P2=(P2&0X1F)|0X80;
	P0=0xff;
}

void closeBUZ()
{
	P2=(P2&0X1F)|0Xa0;
	P0=0x00;
}
void InitT0()
{
		//璁剧疆瀹氭椂鍣ㄦā寮?
	TMOD |= 0x01;		//璁剧疆瀹氭椂鍣ㄦā寮?
	TH0=(65535-100)/256;
	TL0=(65535-100)%256;
	EA=1;
	ET0=1;

	
}

void Delay(unsigned int t)
{
	while(t--);
}

void Keycont()
{

	if(P30==0)
	{
		Delay(100);
		if(P30==0)
		{
			switch(i)
			{
			case 0:
				P00=0;
				zhankongbi=10;
				TR0=1;
				i=1;
				count = 0;
			break;
			
			case 1:
				zhankongbi=50;
				i=2;
				count = 0;
			break;
			
			case 2:
				zhankongbi=90;
				i=3;
				count = 0;
			break;
			
			case 3:
				P00=1;
				
				TR0=0;
				i=0;
				count = 0;
			break;
			}
			while(P30== 0);
		}
	
	}

}


void ServeT0() interrupt 1
{
	TH0=(65535-100)/256;
	TL0=(65535-100)%256;
	count++;
	if(count==zhankongbi)
	{
		
		P00=1;
	}
	else if(count>100)
	{
		
		P00=0;
		count=0;
	}

	
}


void main()
{
	closeBUZ();
	closeled();  //led放后面 p2锁定在Y4

	InitT0();

	while(1)
	{
	Keycont();
	}
}

时钟(这届考了)

#include <STC15F2K60S2.H>
#include "DS1302.h"

unsigned char writeadrr[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};
unsigned char readadrr[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};

unsigned char time[7]={0x50,0x59,0x10,0x05,0x04,0x02,0x22};

unsigned char SMGNoDot_CA[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void set1302()
{
	unsigned int n;
	DS1302_Init();
	DS1302_WriteByte(0x8e,0x00);
	for(n=0;n<7;n++)
	{
		DS1302_WriteByte(writeadrr[n],time[n]);
	}
	DS1302_WriteByte(0x8e,0x80);

}

void read1302()
{
	unsigned char n;
	for(n=0;n<7;n++)
	{
		time[n] = DS1302_ReadByte(readadrr[n]);
	}
}
void Delay(unsigned char t)
{
	while(t--);
}
void smgplay(unsigned char pos,unsigned dat)
{
	P2=(P2&0X1F)|0XC0;
	P0=0X01<<pos;
	P2=(P2&0x1f)|0xE0;
	P0=dat;
}
void smgplaytime()
{
	smgplay(0,SMGNoDot_CA[time[2]/16]);
	Delay(100);
		smgplay(1,SMGNoDot_CA[time[2]%16]);
	Delay(100);
		smgplay(2,0xbf);
	Delay(100);
		smgplay(3,SMGNoDot_CA[time[1]/16]);
	Delay(100);
		smgplay(4,SMGNoDot_CA[time[1]%16]);
	Delay(100);
		smgplay(5,0xbf);
	Delay(100);
		smgplay(6,SMGNoDot_CA[time[0]/16]);
	Delay(100);
		smgplay(7,SMGNoDot_CA[time[0]%16]);
	Delay(100);
}
void closeledbizz()
{
	P2=(P2&0X1F)|0X80;
	P0=0XFF;
	P2=(P2&0x1f)|0xa0;
	P0=0X00;
}


void main()
{
	closeledbizz();
	set1302();
	while(1)
	{
		read1302();
		smgplaytime();
	}

}

AD采集 电压读取

#include <STC15F2K60S2.H>

#include "iic.h"
void Displaytemp();
void Delays(unsigned int t);
void Readtemp();
unsigned int temp;
unsigned int dat;
unsigned char SMGNoDot_CA[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char SMGDot_CA[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};

void Delay(unsigned int t)
{
	while(t--);
}



void closebz()
{
	P2=(P2&0X1F)|0Xa0;
	P0=0X00;
		P2=(P2&0X1F)|0X80;
	P0=0XFF;
}
void DidplaySMG(unsigned char pos,unsigned char dat)
{
	P2=(P2&0X1F)|0XC0;
	P0=0X01<<pos;
	P2=(P2&0X1F)|0XE0;
	P0=dat;
//	XBYTE[0XE000]=0xff;	



}

void initv()
{


 IIC_Start();		 //总线起始信号
 IIC_SendByte(0x90); //字节写地址
 IIC_WaitAck();		 //等待应答
 IIC_SendByte(0x03); //发送控制字
 IIC_WaitAck();
 
 IIC_Start(); 
 IIC_SendByte(0x91); //字节读地址
 IIC_WaitAck();
 dat=IIC_RecByte();
 IIC_WaitAck();	              //不要乱去省略等待指令,单片机要扯拐
 IIC_Ack(0); 
 IIC_Stop(); 

}

void readv()
{

	dat=dat*10/51;

	DidplaySMG(0,SMGDot_CA[dat/10]);
Delay(100);
		DidplaySMG(1,SMGNoDot_CA[dat%10]);
	Delay(100);
			DidplaySMG(2,SMGNoDot_CA[dat%10]);
	Delay(100);
}

//******D/A转换 写进去的数字 函数 iic通讯******


void main()
{
	closebz();


//	XBYTE[0x8000] = 0XFF;
	while(1)
	{
		initv();
		
		readv();
//		Readtemp();
//		Displaytemp();
		
	}
}

555频率调整

#include <STC15F2K60S2.H>

unsigned int count_t0,count_t1;
unsigned int num;
unsigned char  smg_nodot[10]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};
void Delay(unsigned char t)
{
	while(t--);
}

void clsledbz()
{
	P2=(P2&0X1F)|0XA0;
	P0=0X00;
	P2=(P2&0X1F)|0X80;
	P0=0XFF;	
}

void smgplay(unsigned char pos,unsigned char dat)
{
	   P2=0xE0;P0=0xff;
	P2=(P2&0X1F)|0Xc0;
	P0=0X01<<pos;
	P2=(P2&0X1F)|0Xe0;
	P0=dat;
}

void InitT01()
{
	TMOD=0X16;
	TH0=0xff;
	TL0=0xff;
	TH1=(65535-50000)/256;
	TL1=(65535-50000)%256;
	EA=1;
	ET0=1;
	ET1=1;
	TR0=1;
	TR1=1;
}

void servieT0() interrupt 1
{
	count_t0++;

}

void servieT1() interrupt 3
{
	count_t1++;

	if(count_t1==20)
	{
		num=count_t0;
		count_t0=0;
		count_t1=0;
	}
}


void smgplayhz()
{

	if(num>9999)
	{
		smgplay(3,smg_nodot[num/10000]);
	Delay(100);
	}
	if(num>999)
	{
		smgplay(4,smg_nodot[(num/1000)%10]);
	Delay(100);	
	}
	if(num>99)
	{
		smgplay(5,smg_nodot[(num/100)%10]);
	Delay(100);	
	}

	if(num>9)
	{	smgplay(6,smg_nodot[(num/10)%10]);
	Delay(100);	
	
	}
	smgplay(7,smg_nodot[num%10]);
	Delay(100);
	P2=0xC0;P0=0xff;//消隐
   P2=0xE0;P0=0xff;
}


void main()
{
	clsledbz();
	InitT01();
	while(1)
	{
	smgplayhz();
		
	}
}

当然除了这些之外,LED灯,数码管,继电器和蜂鸣器也要会运用,毕竟这届我们考了继电器和LED灯。可惜最后继电器会干扰蜂鸣器,使蜂鸣器不正常工作。搞的头晕(下次努力!!!)。有什么问题可以评论说,我把经验分享给大家。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥杯单片机备考必看内容,学习一周,保底省三! 的相关文章

  • C#使用checked检查溢出

    在进行数值类型之间的强制转换时 可能会丢失信息 比如将 int 类型转换为 short 类型时 如果 int 类型会的值大于 short 类型所能存储的最大值 那么就会发生溢出 1 使用checked检查溢出 通常情况下 发生溢出时并不会自
  • this指向

    1 在全局环境中的this window 无论是否在严格模式下 在全局执行环境中 在任何函数体外部 this 都指向全局对象 use strict console log this window console log this windo
  • 联邦学习 深度学习对抗攻击

    联邦学习本身 联邦学习 实际上是一种加密的分布式机器学习技术 参与各方可以在不披露底层数据和底层数据的加密 混淆 形态的前提下共建模型 如果机构之间的数据无法互通 一家企业一家机构数据量有限 或者是少数巨头公司垄断大量数据 而小公司很难获得
  • 移动端Touch (触摸)事件

    一 常见的触摸事件 touchstart touchmove和touchend touchstart事件 当手指触摸屏幕时候触发 即使已经有一个手指放在屏幕上也会触发 touchmove事件 当手指在屏幕上滑动的时候连续地触发 在这个事件发
  • 怎么选择boost升压电路的电感?只要三个公式

    原文来自公众号 工程师看海 添加微信 chunhou0820 获取仿真文件 BOOST电源架构是一种非常经典的升压电源方案 它是利用开关管开通和关断的时间比率 维持稳定输出的一种开关电源 它以小型 轻量和高效率的特点被广泛应用在各行业电子设
  • 1-1、Qt基本概念以及界面绑定信号与槽的实例

    1 各种程序格式的选择方式 2 例子 新建mainwindow的项目 在ui拖动一个pushbuttton 点击界面下的信号与槽的部分 点击 然后选择发送者 信号 接收者 槽 一下为源码 sampl 1 pro Project create
  • yum提示 “Cannot retrieve metalink for repository: epel/x86_64” 的解决方法

    今天在centos7服务器上用yum的时候发现 yum命令不能用了 不管用yum什么命令都会出现如下提示 完整的错误提示如下 One of the configured repositories failed Unknown and yum
  • 深入理解[观察者模式]原理与技术

    观察者模式 Observer Pattern 也叫做发布 订阅 Publish Subscribe 模式 模型 视图 Model View 模式 这个模式的一个最重要的作用就是解耦 也就是将被观察者和观察者进行解耦 使得他们之间的依赖性更小
  • 【华为OD机试真题 C++】计算最大乘积 【2022 Q4

    前言 华为OD机试真题 C 本专栏包含华为OD机试真题C 解答 会实时更新收纳网友反馈 为大家更新最新的华为德科OD机试试题 为大家提供学习和练手的题库 订阅本专栏后可私信进交流群哦 答案仅供参考 不可照抄哦 题目描述 计算最大乘积 给定一

随机推荐

  • 【Unity3D】粒子光环

    作业要求 参考http i remember fr en 这类网站 使用粒子流编程控制制作一些效果 如 粒子光环 这个网站打不开 参考了一下师兄们的博客的图片 我看了一下 我感觉和上课做的粒子海洋有一些相似 就是需要变成一个环形 制作流程
  • JavaScript 数字去掉小数点后的0

    JavaScript 数字去掉小数点后的0 方法很简单 JavaScript提供了现成的方法 parseFloat function parseNum value value parseFloat value
  • 从头再来系列-Markdown基本语法

    以下内容摘抄于网络 Markdown 简介 Markdown 是一种轻量级标记语言 它允许人们使用易读易写的纯文本格式编写文档 Markdown 语言在 2004 由约翰 格鲁伯 英语 John Gruber 创建 Markdown 编写的
  • oracle基础知识

    1 oracle特点 2 oracle体系 实例 一组oracle后台进程以及在服务器中分配的共享内存区域 数据库 基于磁盘的数据文件 控制文件 日志文件 参数文件和归档文件等组成的物理文件集合 数据库服务器 三者之间的关系 实例用于控制和
  • 【DBeaver日常】查询出结果后,无法回到SQL编辑页面

    正常的查询页面 正常页面可以通过以下图示中的符号进行上下调整 上三角点击完以后的展示页面 如下图 下三角点击完以后的展示页面 如下图 误触以后的页面 误触以后可以通过下图中标示的部分进行恢复 结果面板恢复 最大化区域图示 选择上图中红色框线
  • QT学习之个人编程规范

    每个人对语言的编程习惯都不一样 这里简单介绍一下自己在学习使用Qt时养成的编程习惯 仅供参考 1 命名规则 1 1 常规命名规则 1 1 1 类命名规则 适用对象 1 窗口控件实现类 所有之间或间接继承于QWidget类的实现类 规则 命名
  • OpenMP设置线程数及开启方法

    1 OpenMP线程数设置 通常我们希望并行线程数可以随着机器改变自适应的调整 网上介绍OpenMP的文章很多 但是很少提到该怎么分配线程数 一般来说线程数最大可以开到2 核心数 但是这样电脑计算资源就会被占用的过多 其他程序基本上会卡的不
  • ASP.NET Core WebAPI学习-6

    ASP NET Core WebAPI学习 1 ASP NET Core WebAPI学习 2 ASP NET Core WebAPI学习 3 ASP NET Core WebAPI学习 4 ASP NET Core WebAPI学习 5
  • 数据结构——图的广度优先遍历(BFS)

    本文内图的存储方式是邻接矩阵 不过BFS的具体实现代码与图的存储结构无关 BFS的遍历方法 与树的层次遍历几乎一样 在实现树的层次遍历时 需要找到结点的所有子结点 在实现BFS时 需要找到该结点的所有邻接点 所以在实现BFS之前 需要先学习
  • VS2010 的卸载方法

    如何完全卸载VS2010 亲自体验过 1 首先用360卸载 当卸载完成后 提示有残余的话 就强力清除 PS 笔者使用专用卸载工具 IobitUninstaller 工具 此工具是单文件 免安装 它的特点是拥有360安全卫士 金山安全卫士 Q
  • 复制虚拟机后无法上网的问题

    1 背景 虚拟机用的是VMWare为了得到新的环境 而又不想每次都重装虚拟机 于是某天我复制了一台待机的虚拟机 然鹅它起来后却上不了网 无论我设了静态ip还是动态ip都不行 2 解决方法 问了下chatgpt 说是因为虚拟机的MAC地址冲突
  • 第十五章 AlibabaCloud微服务下的分布式配置中⼼

    1 微服务下的分布式配置中 现在微服务存在的问题 配置 件增多 不好维护 修改配置 件需要重新发布 什么是配置中 句话 统 管理配置 快速切换各个环境的配置 相关产品 百度的disconf 地址 https github com knigh
  • DolphinScheduler跨版本升级1.3.8至3.0.1

    DolphinScheduler跨版本升级1 3 8至3 0 1 Refer 背景 基础环境 依赖版本升级 修改pom xml 问题解决 MYSQL升级 1 文件替换 2 修改表结构 t ds process definition t ds
  • 三菱PLC 红绿灯 步进指令 STL

    自己写的红绿灯 有启动 停止两个按钮 南北通行4S 东西通行5S 链接 https caiyun 139 com m i 0E5CJEoVGt4D0 提取码 kVOA SET 启动 启动标志 RST 启动 停止标志 SET 停止 停止标志
  • 实例讲解MOS管电源开关电路的软启动

    看到一篇文章 作者在做一款大电压 大电流供电的产品 测试发现启动时的冲击电流很大 最大达到了14 2A 见下图示波器通道2的蓝色波形 通道4的绿色波形是采样电阻的电压 当时作者没有经验 不知道如何去解决 后来同事指点说 解决这个问题需要增加
  • C++总结笔记(十)——堆区内存开辟数组和二级指针

    文章目录 一 堆区开辟数组 1 数组指针与指针数组的区别 2 1维数组 3 2维数组 二 二级指针 一 堆区开辟数组 1 数组指针与指针数组的区别 数组指针是指指向数组的指针 它的本体是一个指针 声明指针变量的时候一般用括号 因为括号的优先
  • 解决 invalid user: VMessAEAD is enforced and a non VMessAEAD connection is received.

    2023 01 31 10 27 56 111 181 19 37 45288 rejected common drain common drain unable to drain connection gt EOF gt proxy vm
  • java-实现网页代码的爬取

    爬取一个网页的内容 当然相对路径以及样式都复制不过来 只能复制这个文件的内容 先将所有异常使用Throws抛出的话 import java io BufferedInputStream import java io BufferedOutp
  • ubuntu 安装 nginx

    apt get安装nginx 1 切换到root用户安装 安装最好用root用户安装 不然很多文件权限的报错会让人崩溃 sudo su root apt get install nginx 安装 nginx v 查看安装版本 service
  • 蓝桥杯单片机备考必看内容,学习一周,保底省三!

    这里我先把我弄到的历年考试类型给大家 但是这图只能参考 经历这届蓝桥杯我深有体会 考试当天早上我还在想要不要看看矩阵键盘 但是想着这个考点概率就没去看隔着摆烂 结果真考了按键12 13 16 17的运用 但是有一点要说的是 这届选择题很多历