蓝桥杯涉及三个通讯外设,时序很难记忆,因此本文重点在于记录如何不背时序,直接看手册
注意:本文参考2024年第15届比赛手册讲解,没有英文基础也没关系
每一个外设会在第一张时序图中详细讲解,后续简写,请先看第一个再往后看
时序图中标明了读取和写入对应的R/W位为1还是0,我发现写入都是0,读取都是1
对于外设的详细操作,可查看本人关于省赛的专栏
1. IIC通讯协议器件
1.1 AT24C02存储器
打开手册,找到对应图表位置,我们进行逐个讲解
设备地址: 外设名字叫24c02,02表示2k,因此我们只看第一行。发现存储器设备地址由固定部分“1010”+可变部分“A2A1A0R/W”组成。直接看单片机原理图,搜索A2A1A0发现全部接地,极为000,因此设备地址为:0xa0或者0xa1
字节写入:用于写入单个字节,按照时序的顺序依次操作为:起始信号、发送写设备地址0xa0、等待应答、发送控制字节、等待应答、写入数据、等待应答、停止信号
我们在看时序图时,直接结合官方给的底层代码来看。时序图中的START即函数void I2CStart(void)、ACK即函数unsigned char I2CWaitAck(void)、WORD ADDRESS即函数void I2CSendByte(unsigned char byt)且发送的数据byt为控制字节。
连续页写入:会从控制字节定义的起始页开始,逐页连续写入。如果是unsigned char类型的数据则依次写入每一页。如果是int数据则要人为设置,将数据拆成高八位和第八位,再连续写入到两页中。
读取当前页:基本不使用,我们直接用常规的伪写操作选中要读取数据的页,然后再读取数据。
随机读取:就是我们常规的方式,先一个伪写操作,选中我们需要读取的某页,然后再进行读取。相关时序只需要按照图片来写即可。
连续读取:用于针对存储int类型数据,需要连续读取两页时,则必须连续读取数据。按照时序依次读取即可。
1.2 PCF8591模数转换器
设备地址:查看原理图,A2A1A0三个又是全部接地,因此设备地址为0x90或0x91
控制字节:
当第6位为0时,用于读取数据,打开原理图,搜索对应通道:0x00外部模拟信号;0x01光敏电阻rd1;0x02差分放大电路信号;0x03滑动变阻器rb2
当第6位为1时,用于输出数据,只有DAC输出会用到,一般DAC输出控制字用0x43
数模转换:用于将0~255的数转为模拟电压输出。直接看时序,顺序依次为:起始信号、写入读设备地址0x90、等待应答、发送控制字节、等待应答、发送数据、等待应答、停止信号
PCF8591的手册里没有把伪写步骤写出来,因此我们要自己记一下
在每个读时序的S信号之前,先伪写一遍
模数转换:用于读取rd1,rb4数据。我们需要自己按照伪写操作进行伪写,然后再按照她的时序进行读取,之后再产生非应答信号、停止信号。
2. SPI通讯的ds1302
该外设可以说是最普通、最简单的外设。同时可以用于秒级的定时
我们会用到的只有这两个部分:
RTC:定义了各个部分的地址,我们需要用数组将READ和WRITE地址存储起来
CLOCK BURST:定义写入保护位,只在初始化设置ds1302初始时间时会用到。该地址对应的WP为写保护位,0时允许写入,1时禁止写入
3. ONEWIRE通讯的ds18b20
由此可以看出,高五位为SIGN位,全为1时表示负温度(一般不存在)
BIT3-BIT0为小数位
该外设没法子只能自己背,手册里没有直接相关的部分:
初始化、写入0xcc、写入0x44、延时800ms、初始化、写入0xcc、写入0xbe、读取数据
数据处理:
4.LM555的工作原理简记
将J3的15(NET_SIG)和16(T0)短接,并通过rb3进行频率数值调节
T0工作在计数模式unsigned char int,T1工作在定时模式50ms