arduino+i2c的1602屏显示串口输入数据 笔记

这篇博客介绍了如何使用Arduino通过I2C与1602液晶屏进行通信,包括1602的接线方法、添加对应的Arduino库、扫描I2C地址以及解决可能出现的问题。还提供了串口数据显示的程序示例和参考资料。

1602的接线

首先,把转接板焊接到LCD显示屏上(方向如上图)

PCF8574T   Arduino
GND -> GND
VCC -> 5V
SDA -> A4
SCL -> A5

这个sda scl口是固定的,所以在写程序时候都不用写管脚声明,只需要声明管脚i2c地址即可。

添加arduino的1602液晶显示屏库

我购买的1602 i2c模块是pcf8574,由于这个不是专门的i2c转1602芯片,而是i2c接口的I/O扩展芯片,所以,在arduino库中搜索的时候,有些标注了使用了pcf8574,有些却没有。

实验时,发现红箭头的是最常用的。许多大神都是有这个库,而liquidcrystal_pcf8574也可以用,例程中还有自定义字符,但是使用上相对要复杂点。

STM32ArduinoI2C方面有以下区别: - **功能特性**:STM32I2C外设功能较为丰富,可用作通讯的主机及从机,支持100Kbit/s和400Kbit/s的速率,支持7位、10位设备地址,支持DMA数据传输,并具有数据校验功能,还支持SMBus2.0协议,该协议主要应用于笔记本电脑的电池管理中[^1]。而关于Arduino在引用中未提及I2C的详细功能特性,但从整体特性来看,Arduino以简单易用为特点,其I2C功能可能相对简洁,没有STM32那么多复杂的特性。 - **开发难度**:STM32基于ARM Cortex - M内核,性能强劲、功能丰富,但开发门槛较高,在使用其I2C功能时,开发者可能需要对硬件原理和底层驱动有更深入的了解,编写代码时也相对复杂[^2]。Arduino以简单易用的开发环境和丰富的库文件著称,入门难度低,使用I2C功能时可以借助其丰富的库快速实现相关功能,更适合初学者和快速原型开发[^2]。 ### 代码示例 以下是STM32Arduino使用I2C的简单代码示例: #### STM32(使用HAL库) ```c #include "stm32f4xx_hal.h" I2C_HandleTypeDef hi2c1; void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_I2C1_Init(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_I2C1_Init(); uint8_t data = 0x55; HAL_I2C_Master_Transmit(&hi2c1, 0x50, &data, 1, 100); while (1) { } } void SystemClock_Config(void) { // 时钟配置代码 } static void MX_I2C1_Init(void) { hi2c1.Instance = I2C1; hi2c1.Init.ClockSpeed = 100000; hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c1.Init.OwnAddress1 = 0; hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c1.Init.OwnAddress2 = 0; hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; if (HAL_I2C_Init(&hi2c1) != HAL_OK) { Error_Handler(); } } static void MX_GPIO_Init(void) { // GPIO初始化代码 } ``` #### Arduino ```cpp #include <Wire.h> void setup() { Wire.begin(); // 初始化I2C总线 Serial.begin(9600); // 初始化串口通信 } void loop() { Wire.beginTransmission(0x50); // 开始与设备地址为0x50的设备通信 Wire.write(0x55); // 发送数据 Wire.endTransmission(); // 结束通信 delay(1000); } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值