GPIO, UART, SPI, I2C, ADC, PWM 分别的例子

1. GPIO 例子:智能台灯

  • 场景:一个用单片机控制的智能台灯。

  • 硬件

    • GPIO (输出) → 连接一个继电器模块,继电器控制台灯电源线的通断。

    • GPIO (输入) → 连接一个触摸开关或物理按键。

  • 工作流程

    1. 用户触摸开关(输入引脚被拉高/拉低)。

    2. 单片机检测到输入引脚的电平变化。

    3. 单片机控制输出引脚的电平:

      • 如果当前灯是关的,则输出高电平 → 继电器吸合 → 台灯亮起。

      • 如果当前灯是开的,则输出低电平 → 继电器断开 → 台灯熄灭。

  • 核心:GPIO完成了最基础的“检测”和“控制”任务。


2. ADC 例子:智能花园浇水系统

  • 场景:自动监测花盆土壤湿度,干了就自动浇水。

  • 硬件

    • 土壤湿度传感器 → 输出模拟电压(越干电压越高/越低,取决于传感器)。

    • ADC 引脚 → 读取传感器的模拟电压值。

    • GPIO (输出) → 控制一个小型水泵或电磁阀。

  • 工作流程

    1. ADC引脚读取湿度传感器的电压值(例如,读到一个12位的数值:2500)。

    2. 单片机在程序里判断:if (adc_value > 2000) { ... } // 假设大于2000表示土壤太干了

    3. 如果条件满足,单片机通过GPIO打开水泵浇水5秒钟。

    4. 浇水后再次读取ADC值,直到湿度足够。

  • 核心:ADC将现实的“干湿程度”这个模拟量,转换成了单片机可以理解和判断的数字量。


3. PWM 例子:电脑风扇调速 & 呼吸灯

  • 场景:PC机箱内的CPU风扇,根据温度自动调节转速。

  • 硬件

    • 温度传感器 (可能是ADC读取)

    • PWM 引脚 → 连接到风扇的PWM控制线(通常是4线风扇)。

  • 工作流程

    1. 单片机读取CPU温度。

    2. 根据温度计算出一个目标占空比(例如:40°C时占空比20%,80°C时占空比100%)。

    3. 单片机配置PWM硬件,输出对应占空比的方波信号给风扇。

    4. 风扇内部的IC会根据收到的PWM信号比例来调整自身的功率,从而改变转速。占空比越高,转速越快,散热效果越好,但噪音也越大。

  • 另一个经典例子:呼吸灯

    • 程序循环让占空比从0%逐渐增加到100%,再逐渐减少到0%。

    • LED灯就会实现从暗 -> 亮 -> 暗的平滑过渡效果,像呼吸一样。


4. UART 例子:GPS定位器 & 串口调试

  • 场景:做一个车辆追踪器,获取GPS位置并上传。

  • 硬件

    • GPS模块 (如ATGM336H) → 其TXD引脚连接到单片机的RXD引脚。

    • 4G模块 (如SIM7600) → 其RXD引脚连接到单片机的TXD引脚。

  • 工作流程

    1. GPS模块会不停地通过它的UART(TXD引脚)向外发送遵循NMEA协议的字符串数据,例如:$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A\r\n

    2. 单片机的UART(通过RXD引脚)接收这些字符串,并在程序中解析出经纬度、时间、速度等信息。

    3. 单片机再将处理好的位置信息,通过另一个UART(TXD引脚)发送给4G模块。

    4. 4G模块将数据通过移动网络发送到服务器。

  • 核心:UART实现了两个设备间的“字符串对话”。串口调试助手 也是利用UART和电脑通信来打印调试信息。


5. I2C 例子:环境监测站

  • 场景:用一块单片机同时读取多个环境传感器数据。

  • 硬件

    • 所有设备的 SDA 和 SCL 引脚分别并联在一起,接到单片机的I2C总线上。

    • 温湿度传感器 (如SHT30, 地址0x44)

    • 大气压强传感器 (如BMP280, 地址0x76)

    • 光强度传感器 (如BH1750, 地址0x23)

  • 工作流程

    1. 单片机在SDA和SCL线上发起一个起始信号

    2. 单片机先发送SHT30的地址0x44 + 写位,告诉SHT30:“我要给你下命令了”。

    3. 单片机发送一个命令字节,告诉SHT30:“开始测量”。

    4. 延时后,单片机再次发起起始信号,发送SHT30的地址0x44 + 读位,说:“把数据给我”。

    5. SHT30将温湿度数据通过SDA线发送给单片机。

    6. 单片机收到后,发送停止信号,结束这次通信。

    7. 重复2-6步骤,但这次发送BMP280的地址0x76,来读取气压值。仅用2根线就轮询了所有传感器!


6. SPI 例子:LCD显示屏 & SD卡读写

  • 场景:在屏幕上显示一张存储在SD卡里的图片。

  • 硬件

    • SD卡模块 → 连接单片机的一组SPI引脚(MOSI, MISO, SCK, CS_SD)。

    • LCD显示屏 (如ILI9341) → 连接单片机的另一组SPI引脚(MOSI, MISO, SCK, CS_LCD)。(注意:LCD的DC/RS引脚通常用普通GPIO控制)

  • 工作流程

    1. 单片机想读取SD卡里的图片数据。

    2. 单片机先拉低 SD卡的CS片选引脚,激活SD卡。

    3. 单片机通过SPI总线(MOSI线)发送SD卡的读命令和地址。

    4. SD卡通过MISO线将图片数据流高速地发送给单片机。

    5. 单片机收到数据后,拉高 SD卡的CS引脚,结束通信。

    6. 单片机现在要往LCD写数据了。它拉低 LCD的CS片选引脚,激活LCD。

    7. 单片机用一个GPIO设置LCD为“数据模式”,然后通过SPI总线(MOSI线)将刚刚收到的图片数据高速地发送给LCD控制器。

    8. LCD控制器收到数据后,将其显示在屏幕上。

  • 核心:SPI实现了与需要高速数据传输的外设之间的通信。两个设备共享数据线和时钟线,但通过独立的片选线(CS) 来区分。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值