第十届蓝桥杯
准备2019年3月末的蓝桥杯单片机设计与开发比赛,在这里记录自己的学习历程的经验。
开发板使用的是自己根据原理图用Altium Designer自己画的开发板,管脚和官方要求的开发板一致
小默haa
Never say never!
展开
-
蓝桥杯之单片机设计与开发
目录1、关于开发板2、关于各个模块3、历年省赛真题4、省赛代码资源下载5、历年国赛真题6、国赛代码资源下载7、第十届省赛前最后的总结与程序封装8、第十届省赛再现到现在蓝桥杯也准备好久了,也水了不少博客,现在给整理一下。1、关于开发板STC15F2K60S2设置内部时钟工作频率:https://blog.csdn.net/Xiaomo_haa/articl...原创 2019-03-06 12:28:05 · 8732 阅读 · 3 评论 -
蓝桥杯之单片机设计与开发(35)——2018_第九届_蓝桥杯_国赛——“多功能测量仪表”
既然进了国赛就稍微准备一下吧。趁着每天晚上一个小时闲暇时刻写的程序。总之来说,第九届国赛题不难,长按键我倒是想了几分钟。1、题目2、代码好像代码里面有注释的,应该可以看懂,就不写什么了。main.c#include <stc15.h>#include "sys.h"bit flag_5ms = 0, flag_200ms = 0, fla...原创 2019-05-10 01:00:50 · 2238 阅读 · 2 评论 -
第十届蓝桥杯省赛再现(客观题部分)
原创 2019-03-24 22:09:37 · 5297 阅读 · 1 评论 -
第十届蓝桥杯省赛再现(编程部分)
2019年5月22日更新因为我当时读错了题,没有在程序中写DA的程序,现在把DA的程序放在下面,主程序里面调用就可以了,我就不改了void SetDACOut(unsigned char val){ IIC_Start(); IIC_SendByte(0x90); IIC_WaitAck(); IIC_SendByte(0x40); IIC_WaitAck(); ...原创 2019-03-24 20:24:48 · 3352 阅读 · 15 评论 -
蓝桥杯之单片机设计与开发(34)——第十届省赛前最后总结与程序封装
目录上电全部初始化LED数码管显示蜂鸣器buzzer继电器relay独立按键BTN矩阵键盘KBDE2PROM和ADDS18B20DS1302超声波明天就是省赛了,今天最后一天。赛前预测:今年很有可能考DS18B20关于常用程序封装,一下程序是自己在写这么多的省赛题后总结的经验,仅供参考。自己关于比赛写程序的一些建议,不喜勿喷:1、所有...原创 2019-03-23 10:00:09 · 2203 阅读 · 6 评论 -
蓝桥杯之单片机设计与开发(33)——官方DS18B20驱动的使用
写完这个博客,默默等待周日比赛,然后就可以全心复习考研了。关于DS18B20,请参考https://blog.csdn.net/Xiaomo_haa/article/details/87978956这里只大致写一下官方给出的1-wire驱动怎么使用。下面是官方的驱动/* 程序说明: 单总线驱动程序 软件环境: Keil uVision 4.10 硬件环境: C...原创 2019-03-21 21:20:43 · 1250 阅读 · 0 评论 -
蓝桥杯之单片机设计与开发(32)——官方DS1302驱动的使用
马上就要比赛了,毕竟比赛不像是自己在实验室写,没有自己写好的驱动代码,不过官方会提供驱动代码的。以下就是官方的ds1302驱动的使用。DS1302芯片了解见:https://blog.csdn.net/Xiaomo_haa/article/details/88061555以下是官方提供的ds1302驱动代码全部。/* 程序说明: DS1302驱动程序 软件环境: Keil u...原创 2019-03-18 21:39:35 · 2207 阅读 · 1 评论 -
蓝桥杯之单片机设计与开发(31)——2016_第七届_蓝桥杯_国赛——“电压、频率采集设备”
这一个题写的我是头皮发麻,写了一个上午才给写完。测试发现应该没什么bug,先把博客发了吧。这个题和官方给的模拟题是一个,具体可以点击链接跳转过去看看。http://dasai.lanqiao.cn/pages/dasai/personal_province_apply.html?key=c46ca5d7d324923baf6910e8940fdd851、题目...原创 2019-03-16 14:21:27 · 2715 阅读 · 1 评论 -
蓝桥杯之单片机设计与开发(30)——2011_第二届_国信长天杯_省赛——“温度监控器”
好了,今天一口气写了三年的题,这一周不会再写程序了,该好好复习高数了。下周周日比赛,等下一周再把国赛题写一下,一个就差不多了。还是自己最喜欢的那句话:让结局不留遗憾,让过程更加完美。1、题目2、代码程序可以直接在这里下载:main.c#include <stc15.h>#include "sys.h"bit flag_200ms = 0;b...原创 2019-03-11 21:04:14 · 1680 阅读 · 2 评论 -
蓝桥杯之单片机设计与开发(29)——2012_第三届_蓝桥杯_省赛——“自动售水机”
2019年3月14日更新越是简单的题也是容易出错!审题错误:1、题目要求读取光敏电阻电压值,应该读取PCF8591的AIN1数据,而我写的是读取RB2也就是AIN3的数据2、题目要求出水量100ml/s,我写成了1L/s,更改定时器中断中数据这个题的编程部分,,,是真的简单!!!1、题目这个题真的没什么好说的,就一个AD和最基础的数码管显示,按键控制。2、...原创 2019-03-11 17:57:56 · 1596 阅读 · 6 评论 -
蓝桥杯之单片机设计与开发(28)——2013_第四届_蓝桥杯_省赛——“模拟智能灌溉系统”
昨天还在跟小傻子说不会同时用到DS1302、DS18B20、AD、E2PROM三个及以上模块,今天就被啪啪打脸。=,=1、题目虽然这个题用到了DS1302、AD、E2PROM等三个模块,但是真的很简单。我在调试的过程中,由于记错了蜂鸣器和继电器的控制管脚,导致这俩货一直不能正常工作,后来差了原理图才发现自己记错了。蜂鸣器buzz是P06控制,继电器relay是P04控制。...原创 2019-03-11 16:53:21 · 1756 阅读 · 0 评论 -
蓝桥杯之单片机设计与开发(27)——2014_第五届_蓝桥杯_省赛——“简易温度采集与控制装置”
今天在图书馆待一天,昨天写好的程序,今天才发博客。=,=1、题目2、代码下载链接:https://download.csdn.net/download/xiaomo_haa/11010289main.c#include <stc15.h>#include "sys.h"u8 temper_low = 20, temper_high = 30, ...原创 2019-03-10 19:52:17 · 1353 阅读 · 1 评论 -
蓝桥杯之单片机设计与开发(26)——2015_第六届_蓝桥杯_省赛——“温度记录器”
1、题目这个题目还是很简单的,一般在DS1302和DS18B20的驱动写好情况下,两个小时就可以写好。就用到了DS1302显示实时时间,四个独立按键功能很简单,注意模式切换就可以了,数码管显示也是模式切换就行了。2、代码下载链接:https://download.csdn.net/download/xiaomo_haa/11004437main.c#includ...原创 2019-03-07 12:32:38 · 1815 阅读 · 0 评论 -
蓝桥杯之单片机设计与开发(25)——2016_第七届_蓝桥杯_省赛——“模拟风扇控制系统”
现在的蓝桥杯单片机组已经不考电路设计了,所以这个题的编程部分就比较简单,一般来说在DS18B20驱动写好的情况下,两个多小时就可以写好。1、题目一看题目,这个题需要用到DS18B20测温度,数码管和LED显示,以及独立按键进行设置等等。有难度的一点在PWM输出,要求PWM频率在1Kz,由于我们在DS18B20的程序中有关中断的操作,所以想要完美的输出相应占空比的PWM,需要更改DS18...原创 2019-03-06 12:05:30 · 3093 阅读 · 16 评论 -
蓝桥杯之单片机设计与开发(24)——2017_第八届_蓝桥杯_省赛——“基于单片机的电子钟”
2019年3月5日下午更新。想了想,找到了怎么解决在显示温度的时候数码管闪烁的问题。问题原因:因为我是在定时器中断中显示数码管,然后在读写DS18B0时会关总中断,这个时间是ms级别的,这时数码管就不会显示。解决方法:只在DS18B20时序要求十分严格的地方关总中断,其他地方开总中断。昨天晚上写好的,但是懒得发了,今天给发出来。。还是一样,先贴题目。1、题目根据...原创 2019-03-05 11:25:30 · 3447 阅读 · 1 评论 -
蓝桥杯之单片机设计与开发(23)——2018_第九届_蓝桥杯_省赛——“彩灯控制器”
2019年3月12日更新在连续多次单字节读取E22PROM时,不需要延时。搞完所有模块,开始写真题。1、题目解读看到这个题,大致要知道用到了哪些模块。LED、数码管、AD、E2PROM、独立按键。2、代码在这里我直接把所有代码给贴上来吧,程序可能写的很麻烦,大家参考一下就行了也可以在这下载https://download.csdn.net/d...原创 2019-03-03 21:51:49 · 10413 阅读 · 7 评论 -
蓝桥杯之单片机设计与开发(22)——常用程序封装
目录0、初始化外设1、数码管2、独立按键3、矩阵键盘4、定时器初始化5、iic和E2PROM6、AD采集电压7、DS18B208、DS13029、超声波2019年3月5日更新更改了独立按键的驱动程序 更改了DS18B20的初始化程序可以设置DS18B20精度 更改了DS1302的初始化程序,每次上电都重新设置时间 更改DS18B20的驱动程序,...原创 2019-03-03 09:05:00 · 2596 阅读 · 5 评论 -
蓝桥杯之单片机设计与开发(21)——超声波测距
关于超声波这一部分,在省赛阶段是不会考的,在国赛可能会考。关于超声波这一块,具体原理就是,使用单片机发送8个40KHz的脉冲,然后开启定时器计时,计算从发送到接收的时间,然后当接受管脚接收到回波之后就会被拉低,这时候关闭定时器,就可以算出距离。所以我们在超声波这一块,还涉及定时器。但是定时器的程序很简单。下面是发送脉冲的程序#define sonic_nop {_nop_()...原创 2019-03-02 21:28:28 · 3432 阅读 · 7 评论 -
关于软件延时指定us(1T和12T)
1Tvoid Delayus(unsigned int us){ do{ _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); }while(--us);}12Tvoid Delay10us(unsigned int us){ do{ _nop_...原创 2019-02-27 16:50:25 · 1593 阅读 · 1 评论 -
蓝桥杯之单片机设计与开发(20)——DS1302
DS1302硬件信息DS1302引脚图DS1302典型电路DS1302寄存器介绍DS1302的一条指令一个字节共8位。其中第7位(最高位)固定为1。这一位如果是0的话,那写进去也是无效的。第6位是选择RAM还是CLOCK的。第6位是0就是选择CLOCK功能,第6位是1就是选择RAM。第5到第1位,决定了寄存器的5位地址。第0位是读写位。第0...原创 2019-03-01 22:16:31 · 2472 阅读 · 0 评论 -
共阴、共阳数码管编码表
共阳数码管unsigned char code table[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};共阴数码管unsigned char code table[]={...原创 2019-02-28 21:13:07 · 14602 阅读 · 2 评论 -
蓝桥杯之单片机设计与开发(19)——DS18B20
温度传感器DS18B20DS18B20是美信公司的一款温度传感器,单片机可以通过1-Wire协议与DS18B20进行通信,最终将温度读出。1-Wire总线的硬件接口很简单,只需要把DS18B20的数据引脚和单片机的一个IO 口接上就可以了。DS18B20通过编程可以实现最高12位的温度存储值,在寄存器中,以补码的格式存储。一共 2 个字节,LSB 是低字节,MSB ...原创 2019-02-27 18:06:09 · 4392 阅读 · 0 评论 -
蓝桥杯之单片机设计与开发(18)——模数转换A/D与数模转换D/A
A/D的主要指标1、ADC的位数一个n位的ADC表示这个ADC共有2的n次方个刻度。8位的ADC输出的是从0~255一共256个数字值,也就是个数据刻度。。2、基准源基准源也叫基准电压,是ADC的一个重要指标,要想把输入的ADC的信号测量准确,那么基准源首先要准,基准源的偏差会直接导致转换结果的偏差。3、分辨率分辨率是数字量变化一个最小刻度时,模拟信号的变化量,定义为...原创 2019-02-25 20:04:11 · 5493 阅读 · 2 评论 -
蓝桥杯之单片机设计与开发(17)——E2PROM多字节操作和页操作
在上一篇文章仅仅介绍了单字节的写入和读取https://blog.csdn.net/Xiaomo_haa/article/details/87918394现在介绍一下多字节操作。E2PROM多字节操作我们知道,写数据的时候,E2PROM是先写到缓冲区,然后再“搬运到”到掉电非易失区。所以这个过程需要一定的时间,AT24C02这个过程是不超过5ms!如果在这个时候去让它应答是没有响...原创 2019-02-25 17:59:31 · 1297 阅读 · 0 评论 -
蓝桥杯之单片机设计与开发(16)——E2PROM
关于E2PROM使用E2PROM可以保存数据,特点就是掉电不丢失。在我们CT107D开发板上所使用的的器件是AT24C02,一个容量大小是2Kb/s,也就是256字节的E2PROM。24C02是一个基于I2C通信协议的器件。24C01/02/04/08/16 是低工作电压的1K/2K/4K/8K/16K 位串行电可擦除只读存储器,内部组织为128/256/512/1024/2...原创 2019-02-25 17:07:09 · 5757 阅读 · 5 评论 -
蓝桥杯之单片机设计与开发(15)——I2C总线通信
OK,来到了重难点。有关于I2C总线信号时序总结请参考https://blog.csdn.net/Xiaomo_haa/article/details/87902379I2C寻址模式I2C通信的起始信号之后,首先要发送一个从机地址,这个地址一共有7位,紧跟着第8位是数据方向位(#R/W),“0”表示接下来要发送数据(写),“1”表示接下来是请求数据(读)。我们蓝桥杯单片机开发...原创 2019-02-24 14:48:39 · 1202 阅读 · 2 评论 -
I2C总线信号时序总结
总线空闲状态&nbsp; I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。&nbsp;启动信号&nbsp; 在时钟线SCL保持高电平期间,数据线SDA上的电平被拉低(即负跳变),定义为I2C总线总线的启动信号,它标志着一次数据传输的开始。启动信号是一种电平...转载 2019-02-24 13:31:13 · 2761 阅读 · 0 评论 -
蓝桥杯之单片机设计与开发(14)——串口通信机制(基于帧数据)
对于串口通信部分来说,单片机给计算机发送字符串好说,有多大的数组就发送多少个字节即可,但是单片机接收数据,接收多少个才应该是一帧完整的数据呢?数据接收的起点在哪里,结束在哪里?我们编程的思路就是这样:当需要发送一帧(多个字节)数据时,这些数据都是连续不断的发送的,即发送完一个字节后会紧接着发送下一个字节,期间没有间隔或间隔很短,而当这一帧数据都发送完毕后,就会间隔很长一段时间(相对于连续...原创 2019-02-18 21:07:40 · 2665 阅读 · 6 评论 -
蓝桥杯之单片机设计与开发(13)——UART串口通信
这都半个月没弄了,马上就要开学了,抓紧把模块搞完。 UART串口通信初步认识51单片机内部存在UART模块,要想正确使用还需要配置相应的寄存器。51单片机的UART串口通信的结构由串行口控制寄存器SCON、发送(P30—RXD)和接收(P31—TXD)电路组成。SCON以下是STC15手册里的关于SCON和PCON的资料。波特率关于波特率,波特...原创 2019-02-18 19:07:34 · 2100 阅读 · 0 评论 -
蓝桥杯之单片机设计与开发(12)——呼吸灯改进
main.c/******************************************************************************** 文件名:main.c* 描 述:呼吸灯2s一循环,由暗到亮,再由亮到暗。* 作 者:小默haa* 版本号:v1.0.0* 日 期: 2019年2月2日* 备 注:呼吸灯* ***...原创 2019-02-02 21:24:29 · 1284 阅读 · 3 评论 -
蓝桥杯之单片机设计与开发(11)——单片机C语言小结
今天闲着无聊把书翻看一遍,收获颇丰。目录1、数据类型基本类型数据长度强制类型转换bit强制类型转换2、变量类型局部变量全局变量变量的存储类别1、数据类型C语言的数据基本类型分为:字符型、整型、长整型以及浮点型。字符型、整型和长整型只能表示整数 unsigned型只能表达非负整数 signed型可以表达负整数 浮点型表达小数基本类型数据长...原创 2019-02-01 20:40:26 · 1167 阅读 · 0 评论 -
蓝桥杯之单片机设计与开发(10)——定时器仿真PWM实现呼吸灯
呼吸灯2s一循环,由暗到亮,再由亮到暗。 main.c/******************************************************************************** 文件名:main.c* 描 述:呼吸灯2s一循环,由暗到亮,再由亮到暗。* 作 者:小默haa* 版本号:v1.0.0* 日 期: 2019年1月31日...原创 2019-01-31 21:23:59 · 2579 阅读 · 6 评论 -
蓝桥杯之单片机设计与开发(9)——独立按键实现计时器
功能: 1.按下S6,清零并停止计时 2.按下S5,暂停计时 3.按下S4,开始计时计时时,LED为流水灯状态,计时显示格式为 分-秒-毫秒main.c/******************************************************************************** 文件名:main.c* 描 述:1.按下...原创 2019-01-31 20:19:49 · 2385 阅读 · 1 评论 -
蓝桥杯之单片机设计与开发(8)——第九届省赛客观题
单片机设计与开发项目客观试题(30 分)(1)当MCS-51访问片外的存储器时,其低8位地址由 P0 口提供,高8位地址由 P2 口提供,8位数据由 P0 口提供。【考点剖析】:考查MCS-51单片机的存储器扩展基础知识,较简单。51单片机具有64K的存储器扩展空间,也就是有16位的地址总线,其中P2口提供高8位地址,P0口提供低8位地址,而P0口也作为数据总线使用。(...原创 2019-01-30 21:26:08 · 5733 阅读 · 0 评论 -
蓝桥杯之单片机设计与开发(7)——矩阵键盘输入数字
J5跳线帽接到KBD端,为矩阵按键功能功能: 矩阵键盘分布 1, 2, 3, ↑ 4, 5, 6, ← 7, 8, 9,↓ 0, ESC, ENTER, → 根据键值,在数码管显示所按数字,并支持修改尚未开发完整main.c/******************************...原创 2019-01-29 21:13:17 · 3111 阅读 · 0 评论 -
蓝桥杯之单片机设计与开发(6)——独立按键和流水灯
用独立按键控制LED流水灯main.c/******************************************************************************** 文件名:main.c* 描 述: 1.按下S7,8个LED从中间到两端对称点亮两个,时间间隔1s 2.按下S6,8个LED从两端到中间对称点亮两个,时间间隔1s...原创 2019-01-27 20:54:21 · 3136 阅读 · 2 评论 -
蓝桥杯之单片机设计与开发(5)——有关于存储器映射扩展模式(MM)
今天无聊去了解了一下开发板的两种编程模式,发现挺有乐趣。0、CT107D开发板两种编程方式CT107D 单片机综合训练平台具有 IO 扩展模式和存储器映射(MM)扩展模式,可以通过调节板上跳线J13进行配置。其中 IO扩展模式较为容易理解,存储器映射扩展模式可以直接通过XBYTE 关键字来操作部分资源,能够大大简化外设资源程序设计,下面将举例点亮LED说明两种扩展方式。 MM编程...原创 2019-01-25 18:22:55 · 3305 阅读 · 1 评论 -
蓝桥杯之单片机设计与开发(4)——矩阵按键
矩阵按键在我的印象中,从我学单片机开始,就很少写矩阵按键的程序,但是原理差不多都清楚,不过在这里不仅要考虑程序的执行,而且需考虑程序的完整与完善。一针见血,看原理图将开发板上面的J5跳线帽接到KBD端,也就是J5的1和2相接。这里注意:在开发板上,根据转接板原理图,WR端接到单片机的P42管脚,RD端接到单片机的P44管脚。我们知道,按键按下通常会保持100ms以上,如果在...原创 2019-01-25 17:22:12 · 2048 阅读 · 2 评论 -
蓝桥杯之单片机设计与开发(3)——独立按键
独立按键使用独立按键时,请将开发板上面的J5跳线帽接到BTN端,此时为独立按键模式。独立按键原理很简单,根据原理图此时一旦按键按下,相应的I/O口就是接地状态,为低电平。写单片机时我们都知道按键按下需要消抖,我们之前是使用delay延时程序消抖,但是不建议在程序中使用delay,我们可以使用定时器延时来完成消抖。我们之前写独立按键原理都是检测按键按下—>延时消抖—...原创 2019-01-25 16:58:34 · 2276 阅读 · 2 评论 -
蓝桥杯之单片机设计与开发(2)——流水灯、数码管之单片机设计与开发
目录0、工程建立1、流水灯2、数码管2019.01.22最新更新0、工程建立昨天写了一会程序,感觉之前说的那种建立工程的方法虽然有序,但是很麻烦,每个头文件都需要在设置里设置包含文件夹,经过考虑,现在将其改为整个工程就只使用一个头文件 sys.h ,单独存放在INC文件夹中然后再设置包含头文件所在的文件夹就好了,这样的话,每个C文件都包含同一个H文件。1...原创 2019-01-16 21:18:20 · 2426 阅读 · 10 评论