![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
蓝桥杯单片机
文章平均质量分 51
冲冲冲
行不地上
专业:电子信息科学与技术,希望与大家一起进步,加油鸭!
展开
-
蓝桥杯:第十二届—“DS18B20(小数) DA”
目录一、自己写过程中遇见的问题,及解决1、DS18B20小数位显示①显示1位小数②显示2位小数2、输出关系表示?二、自己写的代码一、自己写过程中遇见的问题,及解决1、DS18B20小数位显示①显示1位小数void Read_DS18B20_temp()//读取温度{ unsigned char LSB, MSB; init_ds18b20(); Write_DS18B20(0xcc);//写入0xcc 跳过ROM指令 Write_DS18B20(0原创 2022-04-04 20:02:11 · 2102 阅读 · 2 评论 -
蓝桥杯:第十一届1—“DS18B20 DA”
目录一、自己写过程中遇到的问题及解决:①L4(参数设置错误:max>min)亮,直到下一次设置正确灭:②按键加、减总是不对:注意jia = 0、jian = 0、flat = 0释放状态!!!二、自己写的代码:(所有功能均实现)一、自己写过程中遇到的问题及解决:①L4(参数设置错误:max>min)亮,直到下一次设置正确灭:亮灭状态写在按键里:进入数据显示界面前判断L4状态②按键加、减总是不对:注意jia = 0、jian = 0、flat = 0释放状态!..原创 2022-03-27 17:53:59 · 236 阅读 · 0 评论 -
蓝桥杯:第十届—“NE555 AD DA”
一、自己写过程中遇到的问题1、U范围对应L3亮灭总是不对用Rb2的范围!!!!2、频率测量不正确(范围0-300之间)dat_Hz、count_Hz用int!!!!二、代码(自己写的)功能基本实现#include "reg52.h"#include "iic.h"unsigned char code SMG_duanma[20] = { // 0 1 2 3 4 5 6 7 0xc0,0xf9,0xa4,0xb0,0x99...原创 2022-03-27 14:55:46 · 447 阅读 · 0 评论 -
蓝桥杯:第九届—“彩灯控制器”
一:自己写过程中遇到的问题,及解决1、S6切换选择“运行模式”和“流转间隔”两个显示单元,当前被选择的显示单元以0.8s为间隔亮灭(第八届电子钟有类似功能,但用的DS1302写的(判断秒的奇偶写状态))①以0.8s为间隔亮灭 = 亮0.4s,灭0.4s②在定时器(每1ms产生一次中断)中(count == 400)分别写数码管亮 / 灭(数码管功能没实现)③单个写数码管好像也不太好(功能未实现)思考:只在定时器中写数码管的状态(liang =0 / liang = 1),再在主函数...原创 2022-07-25 21:31:43 · 466 阅读 · 0 评论 -
蓝桥杯:第七届—“模拟风扇控制系统”(PWM)
目录一、自己写代码遇到的问题:1、每个模式下,S5设置到2分钟的时候,按下S6暂停后(工作时间清零0min),再按S5(应 该显示为1min),但是按第一下任然显示0min,按第二下才会显示1min。分析:改错:(time_flat 也要清零!!!)二、参考代码:一、自己写代码遇到的问题:1、每个模式下,S5设置到2分钟的时候,按下S6暂停后(工作时间清零0min),再按S5(应 该显示为1min),但是按第一下任然显示0min,按第二下才会显示1min。时间循环模式:0原创 2022-03-03 11:41:16 · 1058 阅读 · 1 评论 -
蓝桥杯:第六届初赛—“温度记录器”
1、编写过程遇见的问题及解决:①数码管亮度非常小?(延时函数有问题)应该是int!!!!!②原创 2022-02-28 15:42:59 · 982 阅读 · 0 评论 -
蓝桥杯:第五届初赛:“简易温度采集与控制装置”
1、自己写过程中遇到的问题及解决:①上电后:温度显示00(会延迟好几秒才会显示正常的环境温度) 升温过程:温度变化不灵敏(时间比较长,温度跨度变化大)17℃——24℃(中 间隔好几秒才变)②矩阵键盘按键不灵敏:按好几遍可能才会变化解决:DS18B20 温度读取函数中涉及到延时,在前面模块化学习过程中延时700~900ms:将延时减短,问题解决!(同时发现:此时延时可以不用动态扫描数码管),如下:/*================DS18B20...原创 2022-02-16 20:39:47 · 2296 阅读 · 0 评论 -
蓝桥杯:第四届初赛—“模拟智能灌溉系统”
问题总结:1、(DS1302实时时钟)自动状态(L1亮),按下S6进入温度阈值设定界面。(按下可以进入,但松开就返回实时时钟)错误写法:实时时钟显示不能写while循环里面!!!!写在按键里面:(注意条件)unsigned char key_num = 0, key_num2 = 0;(初始状态均为零)key_num:0自动状态 / 1手动状态key_num2:②进入界面 / ③控制蜂鸣器 / ④阈值+1 / ⑤打开灌溉 / ⑥阈值-1 / ⑦关闭灌溉正确写法:..原创 2022-02-14 18:02:29 · 6706 阅读 · 0 评论 -
蓝桥杯:第三届初赛试题“自动售水机”
目录试题:一、自己写的代码:1、问题总结:(自己没调出来)2、解决问题:二、大科代码:试题:一、自己写的代码:1、问题总结:(自己没调出来)①显示总价出问题:0.1-1.0的时候总价没问题,到后面某个时间之后总价是错的?如:10.00显 示总价02.xx?②数码管为什么不滚动显示?2、解决问题:①unsigned char:无符号字节型,char 为1字节 = 8位 范围0-255; unsigned int :无符号常数,int 为2字节 ..原创 2022-02-11 18:42:19 · 1084 阅读 · 0 评论 -
二十、EEPROM存储器(AT24C02)(与AD类似)
EEPROM存储器(AT24C02):掉电数据还保存//************EEPROM存储器***********************************************unsigned char eeprom_read(unsigned char add)//从EEPROM(哪个地址)读数据{ unsigned char temp; IIC_Start(); IIC_SendByte(0xa0);//允许写(读1/写0) 1010 000 0/1 IIC...原创 2022-02-13 10:58:00 · 1824 阅读 · 0 评论 -
十九、PCF8591 ADC/DAC驱动程序设计
一、8位ADC/DAC原理(模数转换/数模转换)A:模拟量D:数字量原创 2022-02-10 20:33:12 · 1602 阅读 · 0 评论 -
十八、555定时器与频率测量
利用NE555产生方波信号并测量其频率,要求如下:①上电开机运行时,关闭蜂鸣器、继电器、8个LED指示灯。②用跳线帽将J3中的NAL与P34短接,NE555发生的信号输入到单片机的P34(定时器0)引脚。③单片机测量信号频率,并显示在数码管中,频率数据显示用5位数码管,单位是Hz,当显示长度不足5位时,未使用到的数码管熄灭,在最左边的1位数码管用“F”作为提示符。用两个定时器:①T0定时器计数:1S计数多少次 => 频率(在单位时间内完成周期性变化的次数叫做频率)②...原创 2022-02-08 16:46:40 · 6676 阅读 · 0 评论 -
十七、DS1302的基本应用
目录①拷贝官方底层代码到自己的文件夹(并ADD DS1302.c文件)②代码(1T、12T不用修改)①拷贝官方底层代码到自己的文件夹(并ADD DS1302.c文件)②代码#include "reg52.h"#include "ds1302.h"unsigned char code Read_DS1302_adrr[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d};//定义读(奇)操作的日历时钟存储器地址...原创 2022-02-07 17:32:31 · 7573 阅读 · 0 评论 -
十五、DS18B20(温度传感器)的基本应用
目录1、onewire.h文件补充:①将onewire.h和onewire.c(注意工程添加.c文件)拷贝到自己所建文件夹②onewrite.h 头文件缺少东西(复位、读、写)(从onewrite.c中拷贝)2、onewire.c修改(提供的驱动函数是12T的,而板子的芯片是1T的,差12倍,onewire.c中把延时相关的参数放大10倍)3、代码编写程序实现单总线数据传输协议,读取数字温度传感器DS18B20的温度值,并显示在数码管模块上,要求保留1位小数(比赛时只.原创 2022-02-05 16:50:54 · 8758 阅读 · 0 评论 -
十六、C语言中的头文件与模块化设计
1、txy_smg_ca.c(注意添加ADD)#include "absacc.h"void SMG_Bit(unsigned pos, unsigned char dat)//数码管位置、数据{ XBYTE[0xe000] = 0xff;//为了效果好先熄灭,一定的消影作用 XBYTE[0xc000] = 0x01 << pos;//MM模式 XBYTE[0xe000] = dat;}void SMG_All(unsigned char dat)//操作所有数码管..原创 2022-02-06 15:05:38 · 576 阅读 · 0 评论 -
十四、基础技能综合实训案例解析
目录自己实现有问题的部分:①跑马管(左到右依次点亮数码管的所有段码(怎么实现数码管全亮?),再依次从左 到右熄灭)②独立按键:按下按键,灯没反应、数码管暂停?(松开正常)③串口(没写)代码(除去串口):设计程序,用于本地和远程控制现场灯光的开关,并能通过串口远程读取工厂的系统运行时间。①设计系统初始化函数,关闭蜂鸣器和继电器等无关设备。②设计设备检测函数,首先检测LED指示灯,从L1~L8依次逐个点亮,再依次逐个熄灭;然后检查数码管,从左到右依次点亮数码管的所有段码,再依.原创 2022-02-04 17:15:17 · 4441 阅读 · 0 评论 -
十三、IO扩展技术与存储器映射扩展
目录1、IO扩展代码:2、存储器扩展代码IO扩展:J13 2、3引脚短接存储器扩展:J13 1、2引脚短接分别用I/O扩展方式与存储器扩展方式对LED灯和数码管进行基本的控制。①首先点亮指示灯低4位,关闭高4位,延时片刻;点亮指示灯的高4位,关闭低4位,延时片刻,关闭所有指示灯。②然后依次逐个点亮数码管的所有段码,每次只点亮一个数码管。③循环执行上述功能。WR:写引脚(Y4C要为1(或非),则Y4、WR都为0。WR要为0,J13的2(WR)、...原创 2022-02-03 16:50:48 · 2592 阅读 · 0 评论 -
十二、串口通信进阶应用案例解析
利用51单片机的串行接口与上位机建立数据传输信道。采用8位的UART模式,即模式1,波特率为9600BPS。数据发送采用查询方式,数据接收采用中断方式。①系统上电初始化之后,关闭蜂鸣器和继电器等无关设备,并向上位机发送字符串“Welcome to XMF system!”,回车换行。②上位机通过串口发送单字节命令可以控制下位机的8个LED灯开关。③上位机通过串口发送单字节命令可以读取下位机运行信息。④通信规约如下表:。。。。略吧,以后补...原创 2022-02-03 15:26:54 · 2094 阅读 · 0 评论 -
十一、串口通信的基本原理与应用
通常用:SMOD = 0,0xfd利用51单片机的串行接口与上位机建立传输信道进行数据的收发。采用8位UART模式,即模式1,波特率为9600BPS。数据发送采用查询方式,数据接收采用中断方式。系统上电初始化之后,单片机向上位机发送两个字节:0x5a和0xa5,然后等待接收上位机的数据,每接收到一个字节后,在该字节的基础上加1然后返回给上位机 。中断号:0 外部中断0:INT01 定时/计数器0:TF02 ...原创 2022-02-02 16:53:21 · 2214 阅读 · 0 评论 -
十、PWM脉宽调制信号的发生与控制
调整占空比,脉宽调制作用:①直流电机的调速②灯光的控制:亮度③声音大小④舵机角度调整利用PWM脉宽信号实现独立按键S7(J5跳帽2、3)对L1指示灯亮度变化的控制。①PWM脉宽信号的频率为100Hz②系统上电后L1指示灯处在熄灭状态③L1指示灯有4种亮度模式,分别是完全熄灭、10%亮度、50%亮度、90%亮度④按下S7按键,循环切换L1指示灯的4种亮度模式分析:①100Hz = 0.01s = 10ms = 10000us (周期为10ms)...原创 2022-02-01 16:20:36 · 1968 阅读 · 0 评论 -
九、定时器的进阶综合案例分析
利用定时器T0、数码管模块和2个独立按键(J5的2-3短接),设计一个秒表,具有清零、暂停、启动功能。①显示格式:分—秒—0.05秒(50ms)(08—26—18:8分26秒900ms)②独立按键S4为:暂停/启动 独立按键S5为:清零 (按键均为按下有效)分析:定时器T0:50ms = 50000us (65535 - 50000) 1s = 20*50ms 1min = 60*1s数码管:动态显示独立按键:S4暂停/启动;S5清零#include "r...原创 2022-01-31 16:10:05 · 463 阅读 · 0 评论 -
八、定时器的基本原理与应用
定时器:计数信号来源(周期性)内部时钟脉冲;计数器:计数信号来源(非周期性)外部输入信号。16位 65535usTH0 = 0xd8;或者TH0 = (65535 - 10000) / 256;TL0 = 0xef;或者TL0 = (65535 - 10000) % 256;不能寻址:只能 一次性写给中断号:0 外部中断0:INT01 定时/计数器0:TF02 外部中断1:INT13 定时/计数器1:TF1...原创 2022-01-30 15:52:07 · 1520 阅读 · 0 评论 -
七、中断系统与外部中断应用(考得少)
将J5跳线帽接到2、3引脚,即S5按键接到P32/INT0,S4按键接到P33/INT1。定义一个Working()函数,使L1指示灯不断闪烁。将P32引脚定义成外部中断功能,按S5按键就会产生外部中断触发信号,在中断响应函数中,点亮L8指示灯,延时一段较长的时间后熄灭,该功能用两种方式实现: ...原创 2022-01-29 17:34:04 · 1134 阅读 · 0 评论 -
六、矩阵键盘的扫描原理与基本应用
目录1、矩阵键盘的基本操作矩阵键盘扫描思想:代码:矩阵键盘:J5跳线帽接1、2引脚1、矩阵键盘的基本操作S4~S19按键组成4X4的矩阵键盘。在扫描按键的过程中,发现有按键触发信号后(不做去抖动),待按键松开后,在数码管的第一位显示相应数字:从左至右,从上到下,依次显示0~F矩阵键盘扫描思想:与独立按键不同的是,按键的两个引脚都分别连接的单片机的I/O端口,一个作为行信号,另外一个作为列信号。在上面的矩阵键盘中,要识别出黄色按键的按下状态,应该怎...原创 2022-01-28 17:51:46 · 8363 阅读 · 2 评论 -
五、独立按键的基本操作与扩展应用
(独立按键:J5跳线帽接到2、3脚)J5跳线帽接到2、3引脚,使按键S4~S7四个按键的另外一段接地从而成为4个独立键盘。在扫描按键的过程中,发现有按键触发信号后,先做消抖处理,当确认按键按下时,才进行相应的功能处理。按下S7、S6、S5、S4分别点亮L1、L2、L3、L4指示灯,松开按键熄灭,消抖处理。...原创 2022-01-27 21:10:33 · 3282 阅读 · 2 评论 -
四、共阳数码管的动态显示
1、什么是 静态显示和动态显示?①静态显示:COM1~4都是由P0控制,例如:P0给8,则COM1~4都是显示8; 如果要显示2018: COM1~4由P0~3控制,P0给2,P1给0,P2给1,P3给8。(浪费 资源)②动态显示:实质是轮流点亮单个数码管实现多位数码管整体显示的效果。 轮流显示过程中,每位数码管点亮时间为1~2ms,由于人的视觉暂留现象及发光二极...原创 2022-01-26 21:52:31 · 3002 阅读 · 0 评论 -
三、共阳数码管的静态显示
目录1、数码管的电路分析2、代码8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。1、数码管的电路分析共阳数码管:(接低=亮) 0 1 2 3 4 5 6 7 8 9 A B C D E F0xc0 0xf9 0xa4...原创 2022-01-25 22:40:09 · 2228 阅读 · 0 评论 -
二、蜂鸣器与继电器的基本控制
首先让8路LED指示灯闪烁3遍后熄灭,接着依次点亮LED指示灯,继电器吸合一会后断开,然后依次熄灭LED指示灯,蜂鸣器鸣叫一会后关闭,程序循环实现上述功能。1、蜂鸣器与继电器电路WR低,Y5低-->Y5C高(或非,锁存器连通)CBA = 101(选Y5)1、ULN2003(约等于放大倍数较大的三极管) 中间是非门!!2、继电器N_RELAY接低(OUT5-->(非门)IN5-->Y5C)--->线圈通电,继电器吸合 ...原创 2022-01-24 22:06:26 · 4523 阅读 · 0 评论 -
一、LED指示灯的基本控制
LED指示灯的基本控制一、LED指示灯的基本控制8路LED指示灯闪烁3遍然后熄灭,接着依次点亮LED指示灯,最后依次熄灭指示灯,程序循环实现上述功能...原创 2022-01-24 15:38:34 · 3469 阅读 · 0 评论