GPIO输入
按键介绍
常见输入设备,按下导通,松手断开
按键抖动 :由于案件内部使用的是机械式弹簧片来进行通断,在按下和松手的瞬间会伴有一连串抖动
传感器介绍
传感器元件(光敏电阻/热敏电阻/红外接收管等)的电阻会随外界模拟量的变化而变化,通过与定值电阻串联分压 即可得到模拟电压输出 ,再通过电压比较器 进行二值化即可得到数字电压输出
C2滤波电容 ,给中间的电压输出进行滤波,滤除一些干扰,保证输出电压波形平滑
在电路里遇到一端接在电路中,另一端接地的电容,考虑是否为滤波电容,若是,则不是电路主要框架,在分析电路的时候,可以先将其抹掉,使分析更加简单
去掉滤波电容之后,构成了基本的分压电路
N1阻值变小时,下拉作用增强,中间AO段的电压就会拉低,极端情况下,N1阻值为0,AO输出被完全下拉,输出0V;反之N1阻值变大时,上拉作用增强,中间AO段的电压就会拉高,极端情况下,相当于断路,输出电压R1拉高至VCC(上下拉电阻)
若阻值为0,则拉力无穷大,若上下阻值均为0,电源短路,应避免这个情况
二值化是通过芯片LM393完成
LM393,电压比较器芯片,里面有两个独立的电压比较器电路,相当于运算放大器,当同相输入端大于反向输入端的电压时,输出会瞬间升高为最大值,就是输出接VCC;反之输出瞬间降为最小值,也就是输出接GND
应用:同相输入端IN+接到AO模拟电压端,IN-接电位器,电位器揭发也为分压电阻原理,拧动电位器,IN-就会生成一个可调的阈值电压,两个电压比较,最终输出结果就是DO,数字电压输出,DO接到引脚的输出端

左边为电源指示灯,通电就亮;右边为DO输出指示灯,可以指示DO的输出电平,低电平点亮,高电平熄灭
R5上拉电阻,保证默认输出为高电平

对于光敏传感器来说,N1为光敏电阻
对于热敏传感器来说,N1为热敏电阻
对于红外传感器来说,N1为红外接收管,此外还会多一个点亮红外发射管的电路
发射管发射红外光,接收管接受红外光,模拟电压表示接收光的强度,电位器换成了两个电阻分压,这样数字输出就是固定阈值的二值化,通常用来检测通断,故阈值不需过多调整
最后有个也是红外发射管和接收管,但其是向下发射红外光,然后检测反射光,可用来做寻迹小车
按键和传感器硬件电路

上面两个为下接按键的方式,下面两个为上接按键的方式,一般来说按键都是用下接的方式,原因跟LED接法类似,是电路设计的习惯和规范
图一
为按键最常用接法,当按键按下时,PA0被直接下拉到GND,此时读取PA0口的电压就是低电平,当按键松开时,PA0被悬空,会导致引脚电压不确定,故这种接法下,要求PA0是上拉输入的模式,此时按下为低电平,松开为高电平
图二
相较于图一,外部接了一个上拉电阻,按键松开时,引脚由于上拉作用,保持高电平;按键按下时,引脚接GND,为低电平,此时PA0引脚可配置为浮空输入或上拉输入,若为上拉输入,为内外两个上拉电阻共同作用,高电平会更强一些,更稳定,但,当引脚被强行拉到低时,损耗也会大些·
图三
要求PA0必须配置成下拉输入,按键按下时,引脚为高电平;松开时,引脚回到默认值低电平,一般单片机不一定有下拉输入的模式,故最好使用上面接法
图四
PA0需要配置成下拉输入模式或浮空输入模式
传感器模块电路:
c语言相关知识点复习
数据类型

char本意是字符型数据的意思,但单片机通常用它存放整数而不是字符
宏定义
#define
用途:用一个字符串代替一个数字,便于理解,防止出错;提取程序中经常出现的参数,便于快速修改
定义宏定义如:#define ABC 12345
引用宏定义如:int a = ABC;//等效于int a = 12345
typedef
用途:将一个比较长的变量类型 换个名字,便于使用
定义typedef:
c
typedef unsigned char uint8_t
引用typedef:
c
uint8_t a;//等效于unsigned char a
枚举enum
用途:定义一个取值受限制的整型变量,用于限制变量取值范围;宏定义的结合
定义枚举变量:
c
enum{FALSE = 0, TRUE = 1} EnumName;
因为枚举变量类型较长,所以通常用typedef更改变量类型名
引用枚举成员:
c
EnumName = FALSE;
EnumName = TRUE;
注;本文来源为江协b站课程,为笔记