- 博客(17)
- 收藏
- 关注
原创 蓝桥杯单片机初学者教学1
首先介绍一下锁存器是用来做什么的,在板子里,我们通过P27、P26、P25这三个引脚来确定要向哪一个外设传递指令,实现这一功能的相关结构就是锁存器;当我对ctrler赋值5的时候,5左移五位,空出的位置被0代替,同时,我将原本的P2值与0x1f相与,最后将两个结果相或,这样子就能实现对P2后三位赋值的同时还不改变前五位的值;在函数内部,涉及位运算的部分,因为我懒得去考虑优先级,又想方便自己调试,所以经常用上小括号,有的时候也可以使得思路更加清晰;其实整个函数到这里就已经实现了全部功能,像最后的。
2024-11-11 16:20:38 178
原创 15蓝桥杯单片机官网模拟2,一些欲哭无泪的操作
本来想要改一改的,结果打造出了有史以来第一座屎山代码……调整心态后完成了模拟2,程序题首次提交满分。2,清楚自己的变量是否经过特殊处理,平日里我总想着优化代码,导致换一套题目就得重新设计一些细节;1,不要带入以往题目的印象去构建大框架,仔细审题;3,写一部分检测一部分,确立自己的构造顺序。第一次写模拟3,26.4分……
2024-04-12 20:21:26 426 1
原创 蓝桥杯单片机:关于任意条件下的遮光检测
所以采集频率也是影响的关键,当然,如果采用更多的变量可以将整个逻辑层次理得更加清晰,但是需要统计的是变化的次数,工作量会增加很多,因此选择调整采集频率,尽量规避问题足以应付省赛的要求;其实这样的代码已经能够应付绝大部分要求了,如果想要追求满分,是没有统一的模板的,一下代码是我在十二届国赛题中放弃的优化,大家可以参考。以十二届国赛为例,满足条件触发超声波检测,这里的判断我没有使用随着环境改变的方法,但是多增加了一个变量,保证单一检测。//本次讲解基于STC15F2K60S2。
2024-04-10 21:05:25 156 1
原创 驯服野生超声波的奋斗史:第十二届蓝桥杯单片机国赛
从完成速度上(除了底层代码完全手敲),十一届总用时两个半小时,这还是在锁存器一个参数写错浪费了半小时的情况下;说到这里,给时间有限想要刷题的小伙伴们提一个建议,十二国赛难度整体应该大于十四省赛,四小时内能够完全无BUG应该能够纵横十四省赛了,有条件的话,最好两套都刷~;因为超声波坏了,我中途换了一个板子,不同比赛板之间可能有些微的差异,比如iic协议返回值的不稳定,建议大家写一部分检查一次。在界面1的子界面2中,我在第四位增加了一个测距次数模10的数值,这是比赛中所没有要求的,主要是方便大家检测。
2024-04-10 20:09:21 561 1
原创 蓝桥杯第十一届国赛完整无BUG版
写了三个小时,中间有点浪费了,个人感觉这套题刷下来还是很爽的,一些小细节处理得当会使得调试过程也大大省力,最后两百行内解决了~~~(三个外设及以上似乎已经成为了标配)其他的.c,.h全部放这了。
2024-04-08 22:09:28 530
原创 第十三届蓝桥杯省赛完整代码——极简写法
外设的那些文件就先不上传了,基本上都一样,在DS18B20处我没有返回float类型而是一个经过处理的Unsigned int,大小为所测温度*10。
2024-04-04 22:41:35 394 1
原创 对于STC15F2K60S2几个定时/计数器的简单整理
无论定时还是计数,都是通过接收硬件连接的某一个或多个脉冲信号来源来进行计数,对于定时器而言,接受内部晶振产生的脉冲信号来记录时间,内部晶振的脉冲信号频率由其物理特性决定,一般来说较为准确,定时器的1T和12T模式决定了其计数的频率。1T模式,每接收一次脉冲,完成一次计数,12T模式则是每接收12次脉冲完成一次计数,以16位寄存器为例,12T模式下,由0-2^16(65526)的计数范围不会变化,但其计数统计的时间长度等于1T模式的12倍。TFx:中断标志位,定时/计数器溢出后,TF由0转1;
2024-03-30 21:24:54 664 1
原创 蓝桥杯单片机超声波测距
发送脉冲,开始计数,接收脉冲,停止计数,计数值count,distance=(count/(10^6)*(3.4*(10^2)))/2,简化为count*1.7/10000,受限于数据类型的问题,我们可以改成count/100*17/100/10。比赛设置的频率为12MHZ,12T模式相当于对1T模式进行计数,即计数器每计数一次,时间过去了1*10^-6S,即1us。首先我们来理一下顺序,first,发送脉冲信号,开始计数;跳线帽短接2,4 1,3,选用定时器1,采用12T模式。
2024-03-29 15:06:08 403 1
原创 蓝桥杯单片机AT24C02
因为ATREAD、ATWRITE中都包含了延时函数,在每1ms进行一次的定时器2中断影响下读写都会失败,所以设立了FLAG_AT标志位,进行读写前先中断,完成读写后再开启。中断函数被关闭时,由于我们一般对全局变量进行操作,所以读写的暂停基本不造成影响。代码中,只再PROCESS里不断完成读取数据的操作,并没有完成写的操作,大家可以根据同样的方法对写进行完善。一个简单的示例程序,统计开机次数。
2024-03-27 18:24:54 288
原创 蓝桥杯模拟题
无长按则从左到右第2位显示所处模式(1或者2),第7位显示光LED灯的强度(0,1,2,3),其余位熄灭。(1)按动按键8,L2-L4中,led灯右移一位点亮,L4后接L2;注:重启后仍保留着关机前所处的模式和状态,完成一次挥手时间0.2s<t<0.8s;(2)按动按键9,每持续1S亮度提升1格,亮度从0-1间分为四格;(1)检测到挥手,每完成一次挥手,led灯右移一位,L8后接L1;(2)检测到停留,每遮挡1S亮度提升1格,亮度从0-1间分为四格;(3)L1保持呼吸灯状态,一次呼吸周期为3s;
2024-03-16 23:40:33 326 1
原创 十五届省赛在即,如何在10分钟内速通NE555
这一部分涉及寄存器的知识,大家可以通过芯片手册详细了解,也可以选择先记下代码,后面再详细了解。EA开启总中断,ET0,ET1分别使能定时器1,计数器0中断,TMOD控制定时/计数器0/1,前4位-1,后四位-0,TMOD=0X16时,计数器1为自动重装载,定时器2则需要手动设置重装载;关于NE555频率测量的主体部分仅有初始化定时器计数器、统计计数周期两部分,其余代码保证了示例代码在板子上的正常运行,大家可以通过旋钮来调节频率,我板子上的范围是0~37311,具体数值依赖于硬件环境,大致都在这个数量级;
2024-03-13 22:09:00 362
原创 关于状态延时检测的示例代码
蓝桥杯单片机专用板,本次的功能是检测实际温度和设定温度的变化,当实际温度大于设定温度之后,持续五秒则进入高温状态,L1亮起,同理,任意状态都需要保持至少五秒的持续时间,任意状态改动都需要保证更换过程中目的状态的持续;当思路不清晰时,通过变量可以帮我们梳理逻辑。以下是main.c文件。
2024-03-12 23:51:54 369
原创 第十二届蓝桥杯省赛完整代码
基本上自己编写的部分和底层代码都已经包含,大家通过复制代码就可以看一下最终运行效果,如有错误欢迎指出。//main.c文件内容。
2024-03-12 23:30:17 1264
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人