- 博客(26)
- 收藏
- 关注
原创 蓝桥杯更新规划
7、锁存器、LED、继电器、蜂鸣器、Motor(已更)8、数码管、按键、定时器补充(已更)(小部分不完整)2025.8.8已修改底层,代码可直接运行不出错。14、关于负温度读取?2、DS18B20温度传感器(已更)6、DS1302实时时钟(已更)11、、国赛试题分析(含代码)10、省赛试题分析(含代码)5、AT24C02(已更)3、DA、AD(已更)12、串口总结提升章节。
2025-08-08 22:03:15
114
原创 蓝桥杯----大模板
在写大模板之前,先讲一个函数System_Init(),用于系统初始化关闭所有LED与外设,关闭所有LED就是传入0xff数据打开锁存器,关闭外设就是传入0x00打开锁存器。 现在所有底层已经提供给大家了,先提供最简单版本的大模板,考前大家一定要把这个代码记熟。书写.h文件后代码可直接运行! 好了,蓝桥杯更新到这里就告一段落了,接下来是省赛题的代码,不会每一个都讲,只会讲一些可能存在的难点。2、Seg底层3、LED底层4、.h文件书写格式5、main函数
2025-08-08 21:59:06
653
原创 蓝桥杯----数码管、按键、定时器与中断
显示数据0(图 三十八),就是a、b、c、d、e、f亮,g、dp位熄灭,拼接成 二进制数据就是1100 0000(0xc0)。同理可以推出1、2、3、4、5、6、7、8、9、A、B(b)、C、d、E、F…,时钟频率选12.000MHZ,选择定时器1/0,我们这选择定时器1,16位自动重载,时钟选12T,定时长度选1ms,生成代码,添加EA = 1打开总中断,ET1 = 1 //打定时器1中断允许位,是定时器0就写,ET0= 1。显示0就是形参duan == 0,显示1就是形参duan == 1…
2025-08-07 23:09:33
796
原创 蓝桥杯----锁存器、LED、蜂鸣器、继电器、Motor
蓝桥杯中数据传入口都是P0,也就是数码管段选、位选数据、LED亮灭的数据、蜂鸣器启动或禁用的数据,外设启动或者关闭都需要通过P0写入数据,那么如何这样共用一个端口会造成冲突嘛,答案是肯定的。最左边P01~P07是数据输入端口,最右边Relay就是对应继电器,Motor就是发动机,Buzz对应蜂鸣器,低电平0就是打开这个设备,但是ULN2003设备在中间会对数据进行取反,所以打开Relay数据为 空一位011 1111,定义一个数组,传入LED亮灭的数据,1为亮表示使能,0为灭表示失能。
2025-08-06 23:12:51
1329
原创 蓝桥杯----DS1302实时时钟
操作RST = 0实际含义就是P1^3 = 0。然后开始写入时分秒数据,可以在主函数中定义unsigned char Time[3]={20,56,45}数组,在Ds1302.c中声明外部可调用数组extern unsigned char Time[3],秒写入地址0x80,分0x82,小时0x84,分别在对应地址下可写入对应数据,将十进制数据转换成BCD码形式。第一步,关闭写保护也就是让WP位置置0,Write_Ds1302_Byte(地址,数据),所以在0x8e位置写0x00就可以解除写保护。
2025-08-05 23:41:37
981
原创 蓝桥杯----AT24C02
AT24C02就是将数据写入E2PROM,保证写入数据掉电不丢失。考频低,一般不考,顶天考几个数据E2PROM,上电立马读取。AT24C02数据读取一定放在主程序最前面,否则会出现一些问题。通信方式也是I2C,因此底层代码跟AD、DA基本一样。存在下面我们来讲一下写入与读取的时序。 写入时序:(如图 二十二)①初始化(通信起始信号)②发送I2C设备地址(高七位是设备地址,最后一位是读写位,写为0,读取为1,A2、A1、A0置0,开始写操作0xa0,如图 二十一)③从机发送反馈应答(从机发送0表明接收成功)④
2025-08-04 23:41:35
925
原创 蓝桥杯----串口
在Uart_Proc中检测Uart_Recieve_Index,为0证明无数据直接跳出函数,有数据时判断Uart_Recieve_Trick计时变量,超过10ms表示接收完成停止计时(Uart_Recieve_Flag = 0),,如printf(“hsj”);下面一个函数简单来讲就是把串口一发送映射到printf上,通过printf来发送,而printf是可以发送字符串的,借助putchar自动一个个发送,制定通信的规则,通信双方按照协议规则进行数据收发,将一个设备的数据传送到另一个设备,扩展硬件系统,
2025-08-02 23:01:49
2006
原创 蓝桥杯----DA、AD
I2C 协议采用双线结构传输数据,包括一个数据线和一个时钟线(即 SDA 和 SCL 线),其中 SDA(Serial Data)线用于双向数据传输,而 SCL(Serial Clock)线则用于同步数据传输的时钟信号。在蓝桥杯中,I2C协议主要用于AT24C02储存与读取、光敏电阻的读取、电压采集、DA等功能,现在我们暂时只介绍光敏电阻。(高七位是设备地址,最后一位是读写位,写为0,读取为1,A2、A1、A0置0,(高七位是设备地址,最后一位是读写位,写为0,读取为1,A2、A1、A0置0,
2025-08-01 23:48:24
1167
原创 蓝桥杯----DS18B20温度传感器
数据处理: High<<8 高八位数据以二进制的形式左移八位就变成了unsigned int 类型数据,后八位数据全为0,此时用 | Low 运算符来获取后八位数据,则((High<<8)|Low)就是获取到了初步的温度数据,float(对象)就是强制转换括号中数据为float数据类型,但温度高五位是符号位(图 八),当这五个全是0时温度为正值,全为1则为负值。由于它们是主从结构,只有主机呼叫从机时,从机才能应答,因此主机访问One-Wire器件都必须严格遵循单总线命令序列,即。1、One-Wire总线。
2025-07-31 17:52:10
623
原创 蓝桥杯----超声波
51单片机本身计时器比较少,定时器0需要用于显示功能扫描,定时器可能用于NE555频率获取,定时器2一般用于串口,当然,超声波也可以用定时器1。计算距离:我们通过计算发送与接收之间的时间间隔,再利用数学公式Distance=v * t/2 (v代表声速340m/s ,v*t代表来回的距离,除2后就是要测量的距离),注意此时我们的单位是cm,而且测量的t单位为us,所以还需Distance还需 *103*10-6,换算成最终公式。如果距离过远的话,定时器会超出计时的范围,数据溢出,成为一个无效的数据。
2025-07-30 17:37:34
635
原创 如何输出一个随机数
此时,他的值变成了0-99,加一个1是不是变成1-100了,同理大家也可以思考一下如何1-1000嘞。,啥时刻在变化呢,当然是时间啦,这里直接用time函数,(不懂转换的宝宝可以看我的往期博文——3、rand生成的值是32767,1、首先介绍rand函数,
2024-12-21 11:30:28
679
原创 分支与循环8——goto语句与练习题2
goto语句,goto接一个对象,就会跳到那个对象那里去,如图,执行goto again后,回到到红色框again:后面,继续执行pritnf,完了之后又执行goto,成为一个死循环。1、请设计一个猜数字的游戏,在1-100之间,先生成一个随机数,当输入想猜的数字,比随机数大时提醒,猜大了;如图,多个for循环嵌套,假设遇到disaster的突发情况,就要跳出去解决,此时我就可以用goto语句一步到位,而break需要两次以上才可以跳出去。用于比较字符串的内容,一样它会返回一个0的整型值,要用。
2024-12-21 11:05:42
935
原创 分支与循环7——练习题+答案
5、编写代码实现,模拟用户登录情景,并目只能登录三次。(只允许输入三次密码,如果密码正确,则提示登陆成功;如果三次均输入错误,则退出程序。4、编写代码,演示多个字符从两端输入,向中间汇聚。+······+10!3、在一个有序数组中找某个具体的数字。
2024-12-19 23:32:49
779
原创 分支与循环5——do……while+上一期答案
要是改成k==0,是判断k是否为0,k是0,条件为真,此时k就是0,所以条件为真,执行一次后,k变为2,条件不成立,总共执行。执行0次,此时把0赋值给k,k是0,为假,不执行下方语句,总执行。一、do.....while循环讲解。
2024-12-18 23:05:17
608
原创 分支与循环4—for循环
如图,打印0-9,先执行初始化变量(表达式一),再判断条件(表达式二),为真则执行下方大括号中的语句,执行完后,进行表达式三,即i++,再判断条件......for循环可以用于嵌套,如图,先i为0,条件满足,进入循环中,进行里面的循环10次后,再执行i++,则总共打印100个hehe。⚠️不要省略变量初始化(表达式一),如图省了之后,i=0进入循环中,在打印完三次后,j=3,此时i变成1,,此时j=3不符合内层循环的条件直接结束了,总共打印三次。,为真执行,为假不执行。⚠️空的表达式for(;
2024-12-17 22:40:49
583
原创 大家好,今天讲一下字符串的输入与输出
如图,上面的为逐个输入,用for循环来实现,需要注意的是要用%c,%c是字符打印或输入时用的,scanf后面要填地址,可以用getchar,一次取一个字符,则要用循环,把取的赋值给a。这个我先写出一个数组,再来一个循环,条件是不为字符串结束标志\0,则继续打印,逐个输出;也可以用putchar,格式如图,记得用%c。整体输入是用%s,相当于字符串的打印与输入的格式,后面直接写a,这是一个地址,表示这一整体,也可以用gets(a)来整体输入。整体输出时要用%s,这里是整体输出,直接可以用a这个地址。
2024-12-16 10:59:46
481
原创 分支与循环3——上一期答案+while
进入case3,下方是switch循环嵌套,注意break与最近的switch搭配,212行n=2进去到case 2,进行m++,n++,m变成4,n变成3,跳出第二个switch,到218行。207行进入程序n=1进去case 1,执行m++和n++,m变成3,n变成2。再执行case 4,m自加,再跳出循环,得最终结果,m=5,n=3。1、两种方法,第一种是switch、第二张是if的语句。一、while循环讲解。
2024-12-15 11:18:59
185
原创 分支与循环专题1——if、swich语句(下一个博文 答案+swich)
⚠️if中条件如果只写一个等号,如图1,此时无论输入什么值,都只执行打印周一、课最多,因为此时,把1赋值给了i,非0,为真,执行下方语句,此时,编译器不给警告,那我们在这里给大家一点建议。如果中括号中只有一句话,可以省去中括号哈,但如果有两句话,不可省,如果省了,如图,我想在输入1时,打印周一、课最多,不加中括号时,当不输入1时,输入4,课最多也会执行。⚠️else与最近的if配对哈,不是与对齐的配对,,该程序无结果,因为a不等于1,不执行下方语句,下方的if else看成一个整体。
2024-12-14 23:44:07
525
原创 重生之我在c语言中拿捏转义操作符2
1⃣️\0是字符串的结束标志,也是strlen在求字符长度时的终点,注意在使用strlen函数是要包括string.h的头文件,图片中的结果是随机值,因为没有遇到\0,abc之后还要多久才可以遇到\0,我们不知道,那我变成arr[3]时结果一样的,那arr[4]时,结果就是3了,因为第四个字符没输入则自动默认为0,相当于看见了结束标志,所以啊第四个就结束了,那我在最后面给大家放一道练习题,答案在评论区哈。5⃣️ \\ 单纯表示\ 转义要用 \ ,\\ 就不表示转义的意思了,就是字符 \ 了。
2024-12-13 09:58:39
601
1
原创 重生之—我在C语言中拿捏运算操作符1
那如果是5/2.0呢 结果是2.5,因为被除数是浮点数,数据类型高(char-->short-->int-->long-->float-->double数据类型升高),最终的结果类型与除数与被除数中类型高的为准。1⃣️除法:例如5/2=2还是2.5呢,答案是2,2.5是浮点数,而5、2都是整型,需要保证类型一致,一句话总结一下:两整数相除结果取商。2⃣️+=,举个例子a+=1意思是a=a+1,同理-=则为a=a-1,同理*= /=,后面的在后面给大家讲哈。由于时间关系,今晚晚一点续更哈🥹🥹。
2024-12-11 17:57:14
624
原创 大家好鸭,再补充一点关于各种进制的转换
十六进制要16个数字来表达,用0~9,a,b,c,d,e,f(小写、大写都可以)(a对应10,b对应11,.....,f对应15)来表示,例如100变十六进制。以十六进制BC为例,从右边开始一次为16零次,16的一次,而B在十六进制中对应11,C在十六进制中对应12,则结果为 16的零次•12+ 16•11=188。1100100 从右边开始依次为2的零次幂,2的一次,2的二次,二的三次,二的四次,二的五次,二的六次,乘对应的数字1或0,再相加。一样要倒过来写,除带最后的余数小于8就可以了。
2024-12-10 23:23:27
361
原创 大家好鸭,今天总结一下常见但可能不认识的关键字(define不是,是预处理指令哈)
1.修饰局部变量,修饰后的变量存储的位置发生了改变,从栈区到了静态区,它的作用域在没有修饰时,在出了对应区域后就自动销毁,但修饰后作用域变长了,只有整个程序结束才会销毁,用一句话来说就是---拥有整个程序生命周期的局部变量。2.修饰全局变量、函数,全局变量(函数)具有外部链接属性,可以被其他源文件引用,要在主函数前声明extern int a;与函数的功能有点类似,但在一些简单的程序中运用宏代码少,易操作,第一张是宏的形式,第二张是函数。一、static修饰局部变量、全局变量、函数。
2024-12-10 16:25:27
708
1
【单片机设计】第七届蓝桥杯省赛单片机设计与开发
2025-08-13
第六届蓝桥杯省赛单片机设计与开发真题
2025-08-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅