目录
按键
传感器模块
C语言知识
C语言数据类型
C语言宏定义
C语言typedef
C语言结构体
C语言枚举
按键
常见的输入设备,按下导通,松手断开
按键抖动:由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动,所以要对这一连串的抖动进行处理,最简单的方式就是加延时,把抖动的时间耗过去。
传感器模块
传感器元件(光敏电阻/热敏电阻/红外接收管等)的电阻会随外界模拟量的变化而变化,通过与定值电阻分压即可得到模拟电压输出,再通过电压比较器进行二值化即可得到数字电压输出。
N1为传感器,R1是用来和传感器进行分压的,当N1的阻值增大,N1的下拉作用增强,AO输出电压减小,极端情况下,N1的电阻无穷大,强下拉作用,AO输出电压为0,上拉作用同理,就是N1的电阻小于R1时,体现为上拉作用,极端情况下,当N1的电阻为0时,体现为强上拉,AO输出为VCC。
上拉下拉电阻工作原理模型 :
-
电阻作用类比 :将 AO 输出端类比为屋里水平杆子,R1 上拉电阻比作拴在屋顶的弹簧,下拉电阻比作拴在地面的弹簧,电阻阻值大小对应弹簧拉力强弱,电路中的电压类比为杆子高度。
-
单弹簧作用结果 :只有上拉弹簧时,杆子被拉到屋顶,电路中间点电压为 VCC;只有下拉弹簧时,杆子被拉到地面,电路中间点电压为 GND。
-
双弹簧相互作用 :两个弹簧相互拉扯时,中间输出端向拉力强的一端偏移,偏移程度取决于两弹簧弹力之差;弹力一致,杆子处于居中位置,电路输出二分之 VCC 的电压。
-
阻值变化影响 :上拉电阻阻值小,拉力强,输出电压变高;下拉电阻阻值小,输出电压变低;阻值为 0 时相当于短接,拉力无穷大;上下拉电阻阻值都为 0 则电源短路,应避免。
-
上拉下拉电阻在单频机电路应用 :
-
电阻特性分类 :在单频机电路中有弱上拉、弱下拉、强上拉、强下拉等情况,强和弱指电阻值大小即弹簧弹力大小。
-
连接方向含义 :上拉是接到 VCC,即杆子拉向屋顶;下拉是接到 GND,即杆子拉向地面。
-
输出电压情况 :最终输出电压由弹簧拉扯决定,可用此感知和弹簧模型分析上拉和下拉电阻相关问题以加深理解 。
-
C2为一个滤波电容,是给中间的输出电压进行滤波的,用来滤除一些干扰,保证输出电压的平滑(在电路中一般一端接地,一端接在电路中,遇到之后可以考虑是不是滤波电容)如果滤波电容,说明并不是电路的主要框架,是为了保持电路稳定的,在分析的时候就可以不看它。
-
数字输出:模块支持对AO进行二值化的数字输出,由LM393芯片完成,此芯片有两个独立电压比较器电路 ,工作原理与运算放大器有关。
-
运算放大器作比较器:
-
同向大于反向:当同向输入端电压大于反向输入端电压时,输出瞬间升为最大值即接VCC。
-
同向小于反向:当同向输入端电压小于反向输入端电压时,输出瞬间降为最小值即接GND,以此实现模拟电压二值化。
-
-
数字输出实际应用: -
-
电位器作用:同向输入端接AO模拟电压,负端接电位器,拧动电位器可生成可调阈值电压,与模拟电压比较后输出数字电压DO
-
指示灯与排针:左边为电源指示灯(通电就来亮)和DO输出指示灯(用来指示DO的输出电平,低电平点亮,高电平熄灭),DO输出接引脚输出端(3引脚),P1排针分别为VCC、GND、DO和AO 。
-
R5上拉电阻:是为了保证默认的输出为高电平。
-
-
不同传感器模块:
-
光敏与热敏:对于光敏电阻传感器和热敏电阻传感器,N1分别为光敏电阻和热敏电阻。
-
红外传感器:红外传感器的N1为红外接收管,还有发射管发射红外光,接收光强度以模拟电压表示,部分模块电位器换为两个电阻分压实现固定阈值二值化 ,有的用于检测通断,有的用于寻迹小车。
-
下面传感器分别为光敏电阻,热敏电阻, 红外传感器(左,通常用来检视通断)和 红外传感器(向下发射红外光可用于与循迹小车)
-
-
-
按键的四种接法:
-
下接按键一:按键常用接法,选gpio口如PA0通过按键接GND,按键按下PA0为低电平,松手PA0悬空,要求PA0为上拉输入模式
-
下接按键二:外部接上拉电阻,按键松手时引脚因上拉作用为高电平,按下为低电平,PA0可配置为浮空或上拉输入。 如果配置为上拉输入时,两个上拉电阻共同作用,高电平更稳定,但是当按键按下时,强行拉到低时,损耗也会大一些。
-
上接按键一:PA0通过按键接3.3伏,要求PA0配置为下拉输入模式,按键按下为高电平,松手为低电平。
-
上接按键二:在上述接法基础外接下拉电阻,PA0可配置为下拉输入或浮空输入模式。
-
上面两种接法按键按下为低电平,松手为高电平。
-
下面两种接法按键按下为高电平,松手为低电平。
-
-
传感器模块电路:
-
供电与端口连接:VCC接3.3伏,GND接GND供电,DO数字输出接如PA0端口用来读取数据量,AO模拟输出后续学ADC模数转换器时再处理。
-
C语言知识
C语言数据类型
关键字 | 位数 | 表示范围 | stdint关键字 | ST关键字 |
---|---|---|---|---|
char | 8 | -128 ~ 127 | int8_t | s8 |
unsigned char | 8 | 0 ~ 255 | uint8_t | u8 |
short | 16 | -32768 ~ 32767 | int16_t | s16 |
unsigned short | 16 | 0 ~ 65535 | uint16_t | u16 |
int | 32 | -2147483648 ~ 2147483647 | int32_t | s32 |
unsigned int | 32 | 0 ~ 4294967295 | uint32_t | u32 |
long | 32 | -2147483648 ~ 2147483647 | ||
unsigned long | 32 | 0 ~ 4294967295 | ||
long long | 64 | -(2^64)/2 ~ (2^64)/2-1 | int64_t | |
unsigned long long | 64 | 0 ~ (2^64)-1 | uint64_t | |
float | 32 | -3.4e38 ~ 3.4e38 | ||
double | 64 | -1.7e308 ~ 1.7e308 |
C语言宏定义
C语言typedef
C语言结构体
C语言枚举
枚举只能在他给定的参数类表中赋值。如果week = 100;会报警告。