一.IIC
1.1 IIC介绍
IIC(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。I2C的正确读法为“I平方C”(“I-squared-C”),而“I二C”(“I-two-C”)则是另一种错误但被广泛使用的读法。自2006年10月1日起,使用I2C协议已经不需要支付专利费,但制造商仍然需要付费以获取I2C从属设备地址。
1.2 通信原理
主模式时,I2C接口启动数据传输并产生时钟信号。串行数据传输总是以起始条件开始并以停止 条件结束。起始条件和停止条件都是在主模式下由软件控制产生。 从模式时,I2C接口能识别它自己的地址(7位或10位)和广播呼叫地址。软件能够控制开启或禁止 广播呼叫地址的识别。 数据和地址按8位/字节进进行传输,高位在前。跟在起始条件后的1或2个字节是地址(7位模式为1 个字节,10位模式为2个字节)。地址只在主模式发送。
二.温湿度代码
代码下载:https://github.com/Sunlight-Dazzling/stm32-AHT20/tree/master
引脚设置,SCL连接PB6,SDA连接PB7
三.温湿度显示
导入文件,将OLED显示那个实验的这些文件导入到采集温湿度这个项目里 增加show_info函数,这个函数是将信息显示到OLED屏上的
void show_info(){
GUI_ShowCHinese(10,10,16,"周音同",1);
GUI_ShowString(10,30,"631907060333",16,1);
GUI_ShowString(5,50,"tem:",16,1);
GUI_ShowNum(40,50,T1/100,1,16,1);
GUI_ShowNum(49,50,(T1/10)%10,1,16,1);
GUI_ShowString(56,50,".",16,1);
GUI_ShowNum(58,50,T1%10,1,16,1);
GUI_ShowString(70,50,"wet:",16,1);
GUI_ShowNum(100,50,H1/100,1,16,1);
GUI_ShowNum(109,50,(H1/10)%10,1,16,1);
GUI_ShowString(116,50,".",16,1);
GUI_ShowNum(118,50,H1%10,1,16,1);
}
main.c:
int main(void)
{
delay_init();
uart_init(115200);
IIC_Init();
NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
OLED_Init(); //初始化OLED
OLED_Clear(0); //清屏(全黑)
while(1)
{
printf("温度湿度显示");
read_AHT20_once();//读取温湿度
show_info();//显示
delay_ms(5000);//延时
OLED_Clear(0);//清屏
read_AHT20_once();//读取温湿度
show_info();
delay_ms(5000);
OLED_Clear(0);
}
}
找到gui.c中的oledfont.h,找到子模的版块 使用PCtoLCD2002工具生成子模,选择16*16格式,加入到代码中的子模模块 显示结果: 参考文献:https://blog.csdn.net/junseven164/article/details/121384743?spm=1001.2014.3001.5501 https://blog.csdn.net/junseven164/article/details/121382317?spm=1001.2014.3001.5501
|