蓝桥杯单片机组第十届省赛心得(很干)

【 第十四届蓝桥杯单片机组省赛真题总结】 本人是菜鸟,发csdn只是记录一下自己学习历程哈。 阅读详情

题目涉及考点总结

一,按键

采用状态扫描来编写,由于J5配置为BTN独立按键模式,所以代码有所更改,变得简单。
以前:

//-----------------------------------------------//状态扫描矩阵按键
#define key_state_0  0  
#define key_state_1  1
#define key_state_2  2 
   
unsigned char read_KBD(void) 
{ 
 static char key_state = 0; 
 unsigned char key_return=0, key_press;
 unsigned char key1,key2;
	P44=1;P42=1;P35=1;P34=1;P33=0;P32=0;P31=0;P30=0;
	if(P44==0)  key1=0x70;
	else if(P42==0)  key1=0xb0;
	else if(P35==0)  key1=0xd0;
	else if(P34==0)  key1=0xe0;
	else key1=0xf0;
	P44=0;P42=0;P35=0;P34=0;P33=1;P32=1;P31=1;P30=1;
	if(P33==0)  key2=0x07;
	else if(P32==0)  key2=0x0b;
	else if(P31==0)  key2=0x0d;
	else if(P30==0)  key2=0x0e;
	else key2=0x0f;
	key_press =key1|key2;

 switch (key_state) 
{ 	
   case key_state_0:    
   if (key_press!=0xff) key_state = key_state_1; 
   break; 
	 
   case key_state_1:     
   if (key_press !=0xff) 
   { 
		  if(key_press==0x77) key_return = 4;   
		  if(key_press==0x7b) key_return = 5;
		  if(key_press==0x7d) key_return = 6;
		  if(key_press==0x7e) key_return = 7;
		 
		  if(key_press==0xb7) key_return = 8;
		 	if(key_press==0xbb) key_return = 9;
		 	if(key_press==0xbd) key_return = 10;
		 	if(key_press==0xbe) key_return = 11;
		 
		 	if(key_press==0xd7) key_return = 12;
		 	if(key_press==0xdb) key_return = 13;
		 	if(key_press==0xdd) key_return = 14;
		 	if(key_press==0xde) key_return = 15;
		 
		 	if(key_press==0xe7) key_return = 16;
		 	if(key_press==0xeb) key_return = 17;
		 	if(key_press==0xed) key_return = 18;
		 	if(key_press==0xee) key_return = 19;
			key_state = key_state_2;  
   } 
   else 
			key_state = key_state_0;  
   break;  
   case key_state_2: 
   if (key_press==0xff) key_state = key_state_0; 
   break; 
} 
return key_return; 
}      

现在:

//-----------------------------------------------//状态扫描矩阵按键
#define key_state_0  0  
#define key_state_1  1 
#define key_state_2  2 
   
unsigned char read_KBD(void) 
{ 
 static char key_state = 0; 
 unsigned char key_return=0, key_press;
	P33=1;P32=1;P31=1;P30=1;
	if(P33==0)  key_press=0x07;
	else if(P32==0)  key_press=0x0b;
	else if(P31==0)  key_press=0x0d;
	else if(P30==0)  key_press=0x0e;
	else key_press=0x0f;

 switch (key_state) 
{ 	
   case key_state_0:    
   if (key_press!=0x0f) key_state = key_state_1; 
   break; 
	 
   case key_state_1:     
   if (key_press !=0x0f) 
   { 
		  if(key_press==0x07) key_return = 4;   
		  if(key_press==0x0b) key_return = 5;
		  if(key_press==0x0d) key_return = 6;
		  if(key_press==0x0e) key_return = 7;
			key_state = key_state_2;  
   } 
   else 
			key_state = key_state_0;  
   break;  
   case key_state_2: 
   if (key_press==0x0f) key_state = key_state_0; 
   break; 
} 
return key_return; 
}    

二,NE555脉冲输入

1)通过调节滑动变阻器Rb3改变脉冲输出频率。
2)其信号输出接到P34引脚,并将定时器0设置成计数模式,对来自P34的外部脉冲进行计数。

三,PCF8591 ADC与DAC

我写的关于PCF8591的ADC和DAC

四,定时器初始化

定时器0用来计数,定时器1用来定时。

void TimerInit(void)		//1ms 晶振频率12Mhz
{
  AUXR |= 0x40;		//定时器1时钟1T模式  不分频
	TMOD =0x04;		//设置定时器模式    定时器0计数,定时器1定时   都是16位自动重装 
	TL1 = 0x20;		//设置定时初值      计数值达到65536时,自动重装载TH0,TL0的值
	TH1 = 0xD1;		//设置定时初值
	TL0=0X00;//计数器清零
	TH0=0X00;
	TF1 = 0;		//清除TF1溢出标志
	TR1 = 1;		//定时器1开始计时
	TF0 = 0;		//清除TF0溢出标志
	TR0 = 1;		//启动计数器0
	ET0=1;//溢出中断允许位
  ET1=1;//溢出中断允许位
  EA=1;	//总开关
}

五,中断服务函数

void tm1_isr() interrupt 3     //中断号3的中断服务函数  中断号1:定时器0中断   中断号3:定时器1中断

1)每500ms统计一次定时器(计数器)0的计数值,因为是16位自动重装载,足够大,不会出现溢出重装。

if (count_t == 500)    
{
	count_t=0;
	TR0=0;   // 关闭定时器0,关闭了才能同时修改当前状态TH0,TL0和重装载TH0,TL0
	DATA_f=(TH0*256+TL0)*2;// 脉冲频率=1s的脉冲次数  所以结果 *2
	TH0=0;TL0=0;  //重置TH0,TL0
	TR0=1;  //打开定时器0
}		

2)每200ms进行一次模拟电压转换

if(count_ad==200)
{
	count_ad=0;
	ad_flag=1;
}
if(ad_flag==1)      //200MS  放在main.c里面
{
	ad_flag=0;
	EA=0;
	ad_data=read_pcf8591();
	voltage=(u16)(ad_data*5/255.0f*100+0.5);//放大100倍的voltage
	EA=1;
}

六,LED

因为涉及到不同的led的亮灭,所以我定义了一个变量来操作。

u8 led=0xff;

比如:

 P0=0XFF;P2=0X80;P0=led;P2=0X00;  //  开启573锁存器之前把P0置为0xff   当不使用的led会隐隐亮,建议加上第一个代码
 led&=0xfe;led|=0x02;  //我们操作led即可  
蓝桥杯嵌入式学习日记(五)——DAC数模转换【STM32】【HAL库】 HAL_ADC_SetValue的前几个参数跟上篇的ADC类似,为DAC编号和对应的通道,而第三个也给出了解释。 为我们所选择的对应数据,这里有三个选项,分别是12位的右对齐和左对齐以及8位的右对齐。上面参考手册有对应说明,这里我们选择12位的右对齐,高位舍弃,取出低12位,作为DAC转换的数值。   这里我们依旧沿袭上篇的工程进行创建。 这里模式我们选择连接到外部引脚,对应参数保持默认即可,想要使用DMA的可 阅读详情

相关推荐

十一届蓝桥杯单片机组省赛内容及例程(附代码)

十一届蓝桥杯单片机组省赛内容及例程(附代码)

qq_25276427的博客 1万+

蓝桥杯单片机组-20 基于PCF8591的DAC模拟电压输出

1.固定输出电压的写法2.DAC的必备代码3.模式3:DAC输出的写法4.数码管显示电压的写法。

Jasmyn888888的博客 3215

蓝桥杯单片机组历届省赛题目解答——第十一届(最新免费 省一代码加注释)

蓝桥杯比赛 单片机组 第十届省赛题目解答(代码加注释)一、题目二、hex文件三、主函数实现四、整个工程文件最后   昨天晚上把第十一届省赛的题目做完了,乘着省赛之前赶紧给大家分享出来,另外这次的题目参考了一个粉丝的代码,他基本已经实现了大部分的功能了,我完善美化了一下, 特此感谢!!! 另外有想和我交流的同学或者有比较有意思的想法也可以和我说哦! 说不定就碰撞出精彩的火花了呢 嘿嘿嘿~   一、题目   之前的包里没有第十一届的题目,先给大家分享十一届的题目,这个就是你在比赛时候会看到的题目的样子~ 链

自由学者亻伊宸的博客 1万+

蓝桥杯单片机_练习题(省三水平)

我们老师说这个题目如果写出来基本就有省三等奖的水平了【狗头】 一、题目要求 上电LED、数码管、蜂鸣器、继电器全关闭,按下S7按键任意四位数码管显示1234,按下S6按键任意四位数码管显示5678且LED5点亮, 按下S5按键任意四位数码管显示CPUF且打开继电器,按下S4按键数码管、LED、继电器关闭,打开蜂鸣器。 二、原理图 数码管: ![在这里插入图片描述](https://

diksan的博客 3106

蓝桥杯单片机组第十届国赛题目解答(国二代码加注释)

蓝桥杯比赛 单片机组 第十届国赛赛题目解答(代码加注释)一、题目二、hex文件三、主函数实现四、整个工程文件最后   一、题目   历届的省赛和国赛的题目我已经在前面的文章(点击查看)里给大家分享了(网盘资源),需要的话,直接去下载,我在这里就不再赘述了。 二、hex文件 读者下载这个文件然后用烧录软件直接烧入单片机就可以用了! 链接:https://pan.baidu.com/s/1TtIvJdKE-ZE3iY2hAad0CA 提取码:mc8g 三、主函数实现   提示:比赛过程中,仅仅主函数修改可

自由学者亻伊宸的博客 8724

蓝桥杯单片机的那些事(省赛)

想要了解蓝桥杯单片机比赛的小伙伴可以来康康啦!

m0_56936436的博客 1万+

免费资源快来看 蓝桥杯单片机组历届省赛国赛题目解答(省一国二)

蓝桥杯比赛 单片机组 历届国赛题目解答        蓝桥杯省赛之后不到一个月就是国赛了,我先给大家分享到这里,小伙伴们可以先关注收藏然后后续有需要可以再来看看哦,点击下面的文字,就可以查看你想要的内容,资源免费获取!(哦,对了也有的小伙伴选择省赛国赛一起准备哦~)(持续更新中…)     1、蓝桥杯比赛 单片机组 第十届国赛题目解答 2、蓝桥杯比赛 单片机组 第九届国赛题目解答   除此之外,有需要的小伙伴可以随时评论或者私信我,讨论学习过程中的问题,我会尽我所能提供一些帮助的   省赛题目解答

自由学者亻伊宸的博客 8566

免费资源 蓝桥杯比赛 历届省赛题目解答——第十届(省一代码加注释)

蓝桥杯比赛 单片机组 第九届省赛题目解答(代码加注释)一、题目二、hex文件三、主函数实现四、整个工程文件最后   一、题目   历届的省赛和国赛的题目我已经在前面的文章(点击查看)里给大家分享了(网盘资源),需要的话,直接去下载,我在这里就不再赘述了。 二、hex文件 读者下载这个文件然后用烧录软件直接烧入单片机就可以用了! 链接:https://pan.baidu.com/s/1OQu0UORfoGjJJwGePCUeXA 提取码:wxas 三、主函数实现   提示:比赛过程中,仅仅主函数修改可能

自由学者亻伊宸的博客 5855

蓝桥杯单片机组--------一个小时省赛二等奖

蓝桥杯单片机组--------一个小时省赛二等奖 各位来看应该都是报了蓝桥杯的,想要获奖的,博主有幸参加过一次,总体来说蓝桥杯单片机比赛对于在大一、大二校生来讲还是一个不错的比赛的,比较基础,对于新手来说比较合适。 当时我参加比赛其实总共也没准备多久,由于疫情的一些原因导致比赛时间比较乱,省赛大概就两个星期左右吧!国赛稍微长点…… 废话不多说下面给大伙分享一些我参加比赛的干货,希望对大家有用 题型分析 这张图片相信大家都看过,比较经典,要考什么一目了然,省赛的话LED、数码管、蜂鸣器、独立按键绝对是必考,定

qq_43667552的博客 9405

最新 2021年 第十二届 蓝桥杯 单片机设计与开发 省赛 客观试题 个人答案

第十二届蓝桥杯单片机设计与开发项目省赛 第一部分客观试题(30分) 不定项选择(3分/题) (1)MCS-51单片机外部中断1的中断请求标志是( B )。 A.ET1 B.IE1 C.TF1 D.IT1 (2)串口通信中用于描述通信速度的波特单位是( B )。 A.字节/秒 B.位/秒 C.帧/秒 D.字/秒 (3)放大电路的开环指的是( A )。A.无负载 B.无信号源 C.无反馈通路 D.未接入电源 (4)与...

davies 1万+

【蓝桥杯单片机第十届国赛真题】

蓝桥杯单片机第十届国赛真题程序部分

boybs的博客 2547

写代码还是要先看代码——免费资源蓝桥杯单片机组历届省赛国赛题目解答(省一国二)

蓝桥杯比赛 单片机组 历届省赛题目解答(代码加注释)        蓝桥杯比赛快要开始了,有小伙伴问我要省赛题目的解答,今天整理一下给大家分享,所有资源绝对免费!     1、蓝桥杯比赛 单片机组 第六届省赛题目解答 2、蓝桥杯比赛 单片机组 第七届省赛题目解答 3、蓝桥杯比赛 单片机组 第八届省赛题目解答 4、蓝桥杯比赛 单片机组 第九届省赛题目解答 5、蓝桥杯比赛 单片机组 第十届省赛题目解答   除此之外,有需要的小伙伴可以随时评论或者私信我,讨论学习过程中的问题,我会尽我所能提

自由学者亻伊宸的博客 1万+

TI AWR2944毫米波雷达开发板开箱:用官方Demo快速上手3D点云与热图生成

本文详细介绍了TI AWR2944毫米波雷达开发板的开箱与实战应用,包括硬件准备、软件开发环境搭建、Demo固件刷写与配置、实时可视化与数据解析等全流程指南。通过官方Demo快速上手3D点云与热图生成,帮助开发者高效掌握毫米波雷达技术在工业检测、智能交通等领域的应用。

weixin_42627853的博客 305

蓝桥杯国赛,省赛经验总结(单片机组)

大一到大二,我依次获得了蓝桥杯大赛的省二,省一,国三。这一路走来我也是不断地在总结经验,力求下次做得更好,可惜“下次”不多了。 接下来我将总结蓝桥杯单片机组的比赛经验,如何得奖,需要注意的点,需要掌握的点。大赛分为省赛和国赛,赛题包括客观题(占30%)和程序题(占70%)。 **客观题考察我们对模电、数电知识的掌握,单片机外设和内部特性**。首先我大一未学习模电,数电,解决客观题靠得是刷题,能理解就理解,到了大二我基础知识掌握了,历届客观题都能理解了,数据手册也会翻阅了,应付客观题并不太难。所以我的做客观

Blue噜噜噜的博客 1万+

winpcap无法安装提示新版本已经安装解决办法

问题显示如下该问题会导致ensp里的云识别不到网卡可能是因为之前安装了npcap,而且安装时勾选了第四个选项导致无法安装,需要完全卸载npcap解决办法:办法一:在控制面板的程序与卸载里面卸载npcap和winPcap,然后再安装winPcap,如果搜不到往下看办法二:在C:\Windows\SysWOW64目录下搜索wpcap.dll和packet.dll并重命名为wpcap.dll.old和packet.dll.old办法三:如果搜不到这两个文件需要安装win10Pcap才能找到这两个文件下载地址:Wi

qq_73202377的博客 3万+

stm32f103c8t6的中文字库

stm32的成熟中文字库,上手即用,操作简单

nbbskk的博客 3647

蓝桥杯单片机学习14——第十三届省赛题

蓝桥杯单片机学习——十三届省赛题分析/代码实现/存在的问题总结

weixin_67907028的博客 6020

视觉开发板—K210自学笔记(三)--点亮LED

K210点亮LED灯

adamsecond 3406

第十一届蓝桥杯单片机组省赛(第二场)源码

第十一届蓝桥杯单片机组省赛(第二场)源码 这个源码是本人在省赛当天复盘时写的,并有幸获得了江苏省一等奖,不过代码比较简单,适合新人作为参考。如果有不足的地方,希望各位在评论区戳我,一起改正,一起学习! #include<stc15f2k60s2.h> #include<onewire.h> #include<iic.h> #define uchar unsigned char #define uint unsigned int void Delay(uint t);

AllErrors的博客 4768

影刀RPA进阶:Excel多条件筛选与数据提取实战

本文详细介绍了如何利用影刀RPA实现Excel多条件筛选与数据提取的自动化。通过拆解文本、数值、日期及颜色筛选等核心指令,并结合实战案例,指导用户构建稳健的销售数据提取机器人,从而高效处理复杂数据报表,提升工作效率。

onion的博客 517

YOLOv改进 | YOLOv11添加WTConv小波卷积,能够更有效地捕捉局部和全局特征

在计算机视觉目标检测领域,YOLO(You Only Look Once)系列算法凭借“单阶段检测”的高效性(一次前向传播同时完成目标定位与分类),已成为工业界与学术界的主流选择。从YOLOv1到YOLOv11,算法持续迭代优化,在速度与精度之间寻求平衡,广泛应用于自动驾驶、智能安防、工业质检等场景。为解决上述问题,本文提出一种基于,将输入特征图分解为不同频率的子带(低频全局信息与高频局部细节),并分别通过卷积操作提取局部与全局特征,最后融合多尺度特征,从而更有效地捕捉目标的局部细节与全局结构。

走向CTO的路上... 1237

蓝桥杯单片机学习17——第十届省赛题

第十届省赛题目讲解及代码实现,

weixin_67907028的博客 2761

Amesim应用篇-电芯等效电路模型标定

为了使计算模型更加准确,在有电芯实验测试数据的情况下,依据现有的实验数据对Amesim中的电池等效电路模型进行标定。标定的目的是为了获得更加符合项目实际情况的电芯等效电路模型,标定完的电芯可以用于搭建PACK模型,也可以用于其他虚拟实验。本文以充电标定为例,进行介绍。放电标定与充电一致。

2201_75375391的博客 1210

蓝桥杯EDA组备赛

蓝桥杯EDA设计思路分享

qq_69847167的博客 4245

cannot import name ‘BUFSIZE‘ from ‘numpy‘ 解决方案

本文主要介绍了cannot import name ‘BUFSIZE’ from ‘numpy’ 解决方案,希望能对使用numpy的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 22万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

第十六届蓝桥杯单片机组省赛(第一套)

第十六届蓝桥杯单片机第一次省赛省一思路讲解

星光始终闪耀的博客 6419

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 蓝桥杯单片机组IIC总线PCF8591
下一篇: 相关系数及相关性分析(数学建模)
Shine锐
博客等级 码龄6年 90粉丝 11原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shine锐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值