![](https://img-blog.csdnimg.cn/01619f44838d4551b5f8529a32a05896.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
蓝桥杯
蓝桥杯单片机学习
Wu小燕呀
路的前方一定是无比的光明
展开
-
第14届蓝桥杯单片机模拟题(我也不知道第几套)(4T)
第14届蓝桥杯单片机模拟题(我也不知道第几套)(4T)原创 2023-04-05 19:55:39 · 635 阅读 · 1 评论 -
第14届蓝桥杯单片机模拟题第2套(4T)
做完感觉还行,就是蜂鸣器和继电器卡了一下。原创 2023-04-05 13:32:09 · 313 阅读 · 0 评论 -
第14届蓝桥杯单片机模拟题第1套(4T)
也是今天才注意到4T上面有三套模拟题,赶紧做了一套,嗯~,逻辑不复杂,提供的代码一个没用到,就是超声波和串口,这个时候就是定时器的分配了。原创 2023-04-03 19:37:59 · 927 阅读 · 0 评论 -
13届蓝桥杯单片机
可能感觉这一届还挺简单,12点多子就交卷了,等下老师还要问比赛情况,然后现在有点慌。。main.c#include "sys.h"#include "onewire.h"#include "ds1302.h"bit FLAG_TEMP = 1; //温度刷新开关uchar FLAG = 0; //L1,继电器开关bit k3 = 0; //L3开关控制bit l3 = 0; //L3亮灭控制uchar KEY_FLAG...原创 2022-04-09 14:31:18 · 5075 阅读 · 23 评论 -
小蜜蜂老师的PCF8591电压信号探测器
main.c#include "sys.h"#include "iic.h"uint volt;uchar k = 0;uchar led1 = 0,led2 = 0,led3 = 0;bit flag = 0;bit l8;void Function();void main(){ InitSystem(); Timer0Init(); while(1) { KeyScans(); ReadAIN3(); volt = rb2*1.96+0.2; Disp..原创 2022-04-07 19:37:55 · 232 阅读 · 0 评论 -
串口通信复习
虽然好像是说省赛不考,但也得复习一下呀,万一考了呢。。首先是串口初始化void UartInit(void) //9600bps@11.0592MHz{ PCON &= 0x7F; //波特率不倍速 SCON = 0x50; //8位数据,可变波特率 AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T AUXR &= 0xFE; //串口1选择定时器1为波特率发生器 TMOD &= 0x0F; //清除定时器1模式位 T原创 2022-04-06 16:28:37 · 676 阅读 · 0 评论 -
比赛之前的最后一点点总结
数码管和按键肯定是必不可少的模块了。数码管的话,主要是消隐和小数点。#include "sys.h"uchar code nixie[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};void DisplayBit(uchar pos,value,bit k){ P0 = 0X00; Select_74HC138(6); Select_74HC138(0); if(k)原创 2022-04-05 16:52:01 · 692 阅读 · 1 评论 -
2届蓝桥杯单片机智能传送装置
main.c#include "sys.h"#include "iic.h"uint weight;uchar dat[] = {0};void Function();void main(){ InitSystem(); Timer0Init(); while(1) { Function(); KeyScans(); ReadAIN3(); weight = (rb2*1.96+0.2)*2; DisplaySMG(); LedRunning...原创 2022-04-04 22:30:01 · 775 阅读 · 0 评论 -
3届蓝桥杯单片机自动售水机
main.c#include "sys.h"#include "iic.h"uint volt;void main(){ InitSystem(); Timer0Init(); while(1) { KeyScans(); ReadAIN1(); volt = rd1*1.96+0.2; if(volt < 125) OperateLed(1,0); else OperateLed(1,1); DisplaySMG(); ...原创 2022-04-03 13:57:38 · 398 阅读 · 0 评论 -
4届蓝桥杯单片机省赛智能灌溉系统
main.c#include "sys.h"#include "iic.h"#include "ds1302.h" uint volt;uchar H = 0; //湿度void WorkMode();void main(){ InitSystem(); Set_DS1302(); damp = Read_AT24C02(0x00); while(1) { ReadAIN3(); volt = rb2*1.96+0.2; H = volt*0.19...原创 2022-04-02 16:33:08 · 528 阅读 · 0 评论 -
5届蓝桥杯单片机简易温度采集与控制
main.c#include "sys.h"#include "onewire.h"uint temp;uchar section = 0;void Function();void main(){ InitSystem(); Timer0Init(); while(1) { temp = rd_temperature(); KeyScans(); Operate_key_val(); OperatePara(); Function();...原创 2022-04-01 16:34:30 · 298 阅读 · 0 评论 -
蓝桥杯单片机学习记录(5)(PCF8591芯片)
PCF8591芯片首先要先了解下AD/DA数模转换:模拟量:自然界连续变化的物理量。(温度,压力)数字量:计算机中处理的不是连续变化的量,离散性的数字量。A/D转换器:完成模拟量至数字量的转换。D/A转换器:完成数字量至模拟量的转换。A/D转换器主要技术指标1.分辨率ADC的分辨率指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如:12位的ADC的分辨率就是12位,或者说分辨率为满刻度FS的1/2^12.2.量化误差ADC把模拟量变为数原创 2022-01-19 18:13:21 · 1652 阅读 · 0 评论 -
蓝桥杯单片机学习记录(1)(基本初始化)
74H138译码器通道选择LED Y4通道蜂鸣器/继电器 Y5通道数码管(位选) Y6通道数码管(段选) Y7通道void Select74H138(uchar channel){ switch(channel) { case 0: P2 = P2 & 0X1F; break;//关闭所有使能 ...原创 2022-01-17 16:17:59 · 3633 阅读 · 0 评论 -
蓝桥杯单片机学习记录(3)(定时器中断/串口)
中断系统一.外部中断外部中断源(2个)INT0:由P3^2端口引入,低电平或下降沿引起INT1:由P3^3端口引入,低电平或下降沿引起这两个外部中断源标志和它们的触发方式控制位由特殊功能寄存器TCON的低4位控制内部中断源(3个)T0:定时器/计数器0中断,由T0回零溢出引起T1:定时器/计数器1中断,由T1回零溢出引起TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起这三个内部中断源的控制位分别锁存在特殊功能寄存器TCON和SCON中.原创 2022-01-17 20:45:01 · 737 阅读 · 0 评论 -
蓝桥杯单片机学习记录(6)(DS18B20温度传感器)
DS18B20温度传感器特点:通信采用1-onewire接口 每个DS18b20都有唯一的64位序列码储存在ROM中 无需外部原件 可从数据线供电,电源范围3.0v~5.5v 可测量温度范围在-55℃~+125℃ 在-10℃~+85℃范围内精度为±0.5℃ 温度计分辨率可设置为9~12位,12位时分辨率对应为0.0625℃DS18B20在实际应用中的典型接法工作在寄生电源下外部供电下单总线时序DS18B20采用1-wire BUS所有数据都在一条线上传原创 2022-01-19 19:48:04 · 843 阅读 · 0 评论 -
蓝桥杯单片机学习记录(2)(基本模块)
LED模块void Led(uchar dat){ Select_74H138(4);//打开Y4C P0 = dat;//点亮LED灯}数码管模块uchar code Nixie_Dat[]={0XC0, 0XF9, 0XA4, 0XB0, 0X99, 0X92, 0X82, 0XF8, 0X80, 0X90};//0-9uchar code Nixie_Dot[]={0X40, 0X79, 0X24, 0X30, 0X19, 0X12, 0X02, 0X78, 0X00,原创 2022-01-17 18:19:46 · 116 阅读 · 0 评论 -
蓝桥杯单片机学习记录(4)(IIC总线)
IIC总线EEPROMIIC总线是PHL IPS公司推出的一种串行总线,只有两根双向信号线:数据线SDA(serial data I/O)和时钟线SCL(serial clock)IIC总线上可以挂多个器件,每个器件都有唯一的地址,这样可以识别通信目标。数据的通信的方式采用主从方式,主机负责主动联系从机,从机被动回应数据。在多主机系统,可以同时有几个主机企图启动总线发送数据,为了避免混乱,IIC总线需要通过仲裁,以决定哪台主机控制总线。IIC总线通过上拉电阻接正电源,总线空闲时,原创 2022-01-19 13:16:00 · 651 阅读 · 0 评论 -
蓝桥杯单片机学习记录(7)(DS1302实时时钟)
DS1302实时时钟原理图DS1302封装图DS1302主要性能SD1302实时时钟能够计算2100年之前的秒、分、时、日、日期、星期、月、年(闰年可自动调整),还可以通过配置AM/PM来决定采用24小时格式还是12小时格式。 内部含有31个字节静态数据存储RAM,可供用户访问。 采用串行I/O通信方式,使得管脚数量最少,简单SPI3线接口。 工作电压范围宽:2.0~5.5V. 工作电流小,功耗低:工作电压为2.0V时,小于300NA. 时钟或RAM数据的读/写有两种传送原创 2022-01-20 13:50:21 · 1720 阅读 · 0 评论 -
蓝桥杯单片机学习记录(9)(NE555频率测量)
NE555模块NE555是一种时钟芯片,输出一定频率的脉冲信号,该模块根据Rb3电位器的电阻,在SIG脚输出相应的频率的脉冲信号。其实也就是对定时器/计数器的操作,首先,开两个定时器,一个用于计数,一个用于计时,定时器0用作计数,用于接收NE555产生的脉冲,将定时器0计数初值设为0,然后利用另外一个定时器来限定时间在1s或者几秒内,在规定时间完后,停止计数,将定时器0的值取出来。ne555.c#include <sys.h>uint count_freq,t;vo原创 2022-01-27 12:51:59 · 5838 阅读 · 1 评论 -
蓝桥杯单片机学习记录(10)(sonic超声波模块)
超声波模块在蓝桥杯单片机中,超声波模块的TX引脚接到单片机的P1^0端口,RX引脚接到单片机的P1^1端口,设计程序,进行超声波测距,最大测量范围约140cm,用cm作为显示单位,显示在数码管的最左边三位,如果测量距离超出范围,则以“F”作为标记,显示在数码管的最右边一位。计算距离公式距离 = 声速 * 发出超声波到接收返回的时间 / 2;sonic.c#include <sys.h>void SendSonic(){ uchar i = 8; while(i--原创 2022-01-27 13:13:43 · 1118 阅读 · 0 评论 -
7届蓝桥杯单片机省赛(模拟风扇控制系统)
main.c#include "sys.h"uchar pwm_duty;void Function();void main(){ InitSystem(); Timer0Init(); Timer1Init(); while(1) { KeyScans(); DisplaySMG(); Function(); }}void Function(){ if(remaintime[mode-1] > 0) { TR1 = 1;...原创 2022-03-31 21:02:44 · 490 阅读 · 0 评论 -
蓝桥杯单片机11届省赛程序题
历时半个多月,在家苦练这么久,终于把11届省赛程序题做出来了,不枉我这十几天寒假过的那么枯燥无味。sys.c#ifndef _SYS_H_#define _SYS_H_#include <STC15F2K60S2.H>#include <intrins.h>sbit s4 = P3^3;sbit s5 = P3^2;sbit s6 = P3^1;sbit s7 = P3^0;#define uchar unsigned char#define uin原创 2022-01-22 18:37:59 · 446 阅读 · 0 评论 -
8届蓝桥杯单片机省赛
main.c#include "sys.h"#include "ds1302.h"void main(){ InitSystem(); Timer0Init(); Set_DS1302(); while(1) { KeyScans(); Get_DS1302(); DisplaySMG(); if(led_k) { if(led) OperateLed(1,0); else OperateLed(1,1); } ...原创 2022-03-30 16:27:35 · 603 阅读 · 0 评论 -
蓝桥杯单片机第9届彩灯控制
main.c#include "sys.h"#include "iic.h"void Save_Config();void main(){ InitSystem(); Timer0Init(); Timer1Init(); interval[0] = Read_AT24C02(0x01)*10; interval[1] = Read_AT24C02(0x02)*10; interval[2] = Read_AT24C02(0x03)*10; interv...原创 2022-03-12 20:01:15 · 6717 阅读 · 0 评论 -
12届蓝桥杯单片机省赛模拟
main.c#include "sys.h"#include "iic.h"uint volt;uchar flag = 0;uchar led = 0;void Function();void main(){ InitSystem(); Timer0Init(); Vp = Read_AT24C02(0x00) * 10; while(1) { KeyScans(); if(t300ms) { t300ms = 0; Opera...原创 2022-03-29 15:51:19 · 5178 阅读 · 1 评论 -
关于蓝桥杯单片机比赛提供的底层代码需要改动的地方
提供的iic底层代码只需改个延时就好了提供的onewire底层代码DS18B20初始化期间,总线控制器要拉低并保持480us以上,挂在总线上的器件将被复位,然后释放总线,等待15~60us,此时DS18B20将返回一个60~240us之间的低电平存在信号。产生一个写时序,必须将总线拉低最少1us,产生写0时序总线必须保持低电平60~120us之间然后释放总线产生写1时序在总线产生写时序后的15us内允许把总线拉高2次写周期之间至少间隔1us总线控制..原创 2022-03-21 19:50:59 · 2200 阅读 · 1 评论 -
总结蓝桥杯单片机比赛通用模块
从新记录一下自己经常要用到的模块,也是必写的模块。mian.c#include <sys.h>void main(){ InitSystem(); while(1) { KeyScans(); Operate_key_val(); DisplayBit(0,1); Led(1,0); BMR(0x50,1); }}sys.c#include <sys.h>void Select_74HC138(uchar cha原创 2022-03-05 10:02:33 · 285 阅读 · 0 评论 -
12届蓝桥杯单片机省赛
main.c#include "sys.h"#include "onewire.h"void main(){ InitSystem(); Timer0Init(); while(1) { if(t1s) { t1s = 0; Temper_Get(); } KeyScans(); if(t200ms) { t200ms = 0; Operate_key_val(); } SwitchMode(); ...原创 2022-03-25 20:34:25 · 731 阅读 · 0 评论 -
蓝桥杯单片机第九届国赛
这题做了好久,主要卡在EEPOM那里了。。。main.c#include "sys.h"#include "iic.h"#include "onewire.h"uint p = 0;uchar volt = 0;uchar k = 0;uchar dat[10] = {0};void main(){ InitSystem(); Timer0Init(); Timer1Init(); while(1) {// Temper_Get(); Rea...原创 2022-03-17 19:51:57 · 433 阅读 · 0 评论 -
10届蓝桥杯单片机省赛
main.c#include "sys.h"#include "iic.h"uint volt;bit mode = 0;void OperateDAC();void Led();void main(){ InitSystem(); Timer0Init(); Timer1Init(); while(1) { OperateDAC(); KeyScans(); if(t500ms) { t500ms = 0; Re...原创 2022-03-27 15:58:54 · 975 阅读 · 0 评论 -
蓝桥杯单片机学习记录(8)(PWM脉宽调制)
PWM脉宽调制PWM(Pluse Width Modulation)简称脉宽调制,是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。广泛应用在从测量、通信到功率控制与变换的许多领域中。PWM频率:指在1s钟内,信号从高电平到低电平再回到高电平的次数,单位HzPWM周期:T = 1/f原创 2022-01-24 11:38:58 · 301 阅读 · 0 评论 -
蓝桥杯单片机第6届编程题
nixie.c#include <sys.h>#include <onewire.h>uchar nixie[] = {0XC0, 0XF9, 0XA4, 0XB0, 0X99, 0X92, 0X82, 0XF8, 0X80, 0X90, 0XBF, 0XFF};//0~9 - 熄灭uchar interval = 1;//采集时间间隔uchar interface = 0;//显示界面uchar index = 0;//0-9uint temp[1...原创 2022-02-05 20:07:21 · 4053 阅读 · 0 评论 -
单片机中各种周期的关系
时钟周期:时钟周期也叫振荡周期或晶振周期,即晶振的单位时间发出的脉冲数,一般由外部的晶振产生,比如,12MHZ = 12*10^6,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期(时钟脉冲的倒数),也就是1/12微秒,通常也叫做系统时钟周期,是计算机中最基本,最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作,对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1微秒,若采用4MHZ的时钟频率,则周期为250毫秒,由于时钟脉冲是计算机的基本工作脉冲,它控制着计算原创 2022-01-29 15:50:42 · 6424 阅读 · 1 评论 -
11届蓝桥杯单片机设计与开发决赛
第一次尝试做国赛题目(还行)main.c#include <sys.h>#include "ds1302.h"#include "onewire.h"#include "iic.h"void OperateLed();void main(){ InitSystem(); Set_DS1302(); Timer0Init(); while(1) { if(temper_flag) { temper...原创 2022-03-04 12:46:44 · 269 阅读 · 0 评论 -
蓝桥杯单片机12届第二场
这是第三次写了,都挺顺畅的,就是长按键那里卡了一下,就是发现还可以把按键写在定时器里,这样就方便多了,我之前写的长按键确实麻烦了些。main.c#include "sys.h"#include "iic.h"uint volt1,volt3;//void Led();void main(){ InitSystem(); InitTimer0(); Timer1Init(); while(1) { KeyScans(); i...原创 2022-03-26 20:12:05 · 5949 阅读 · 1 评论