I2C((Inter-Integrated Circuit(集成电路总线)))
它是一种串行总线,使用多主从架构,由飞利浦公司为了让主板、嵌入式系统或手机用以低速周边设备而发展
硬件结构:I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上
总线运行(数据传输)由主机控制,所谓的主机是指启动数据的传送(发出启动信号)、发出时钟信号以及发送停止信号的设备,通常I2C的主机都是微处理器,被主机寻访的设备称为从设备,为了方便通讯,每个连接在I2C总线的设备都有一个唯一标识地址,便于主机的寻访
数据的传输方向可以是主机<===>从机,也可以是从机<==>主机
在I2C总线上发送信息的设备称为发送器,接收信息的设备称为接收器
I2C总线上允许连接多个微处理器以及各种外围设备,如存储器、LED以及LCD驱动器、A/D以及D/A转换器
为了保证数据可靠的传送,任意时刻总线只能由某一个主机控制总线,各个微处理器应当在总线空闲的时候发送启动数据,为了解决多个微处理器发送启动数据的传送冲突(总线控制权),I2C允许连接不同传输速率的设备
I2C连接的多台设备之间的时钟信号同步过程称为同步化
总线特点:I2C总线是各种总线中使用信号线最少,并具有自动寻址、多主机时钟同步和仲裁等功能的总线。因此,使用I2C总线设计计算机系统十分方便灵活,体积也小,因而在各类实际应用中得到广泛应用
温度传感器:温度传感器(temperature transducer)是指能感受温度并转换成可用输出信号的传感器。温度传感器是温度测量仪表的核心部分,品种繁多。按测量方式可分为接触式和非接触式两大类,按照传感器材料及电子元件特性分为热电阻和热电偶两类
在使用温度传感器数码管显示程序之前,必须使如下跳线短接
I2C总线使用原理图如下
温度传感器的硬件接口示意图
工程文件的相关关系
I2C相关常用函数
程序主函数内容如下
int main (void){//主程序
u8 buffer[3];
u8 c=0x01;
RCC_Configuration(); //系统时钟初始化
I2C_Configuration();//I2C初始化
TM1640_Init(); //TM1640初始化
TM1640_display(0,20); //初始显示内容
TM1640_display(1,20);
TM1640_display(2,20);
TM1640_display(3,20);
TM1640_display(4,20);
TM1640_display(5,20);
TM1640_display(6,20);
TM1640_display(7,20);
while(1){
LM75A_GetTemp(buffer); //读取LM75A的温度数据
TM1640_display(0,buffer[1]/10); //显示数值
TM1640_display(1,buffer[1]%10+10);
TM1640_display(2,buffer[2]/10);
TM1640_display(3,buffer[2]%10);
TM1640_led(c); //与TM1640连接的8个LED全亮
c<<=1; //数据左移 流水灯
if(c==0x00)c=0x01; //8个灯显示完后重新开始
delay_ms(150); //延时
}
}
由程序可知,主函数关闭了数码管编号为2~7的数码管显示,在主循环中使用LM75A_GetTemp( )检测LM75A温度传感器的温度值,并将温度值显示
关于LM75A的相关驱动知识,将在LM75A温度传感器驱动程序笔记中详细解析
来源:https://blog.csdn.net/Wangguang_/article/details/102775327