armday7

main

cpp 复制代码
int main()
{
	//
    led_init();
    i2c_init();
    si7006_init();
    unsigned short hum;
    short tem;
    short temp_flag = 28;
    LED1_CTRL(1);
    LED3_CTRL(0);
    BEEP_CTRL(1);
    while(1)
    {
        //
        hum=si7006_read_hum();
        tem=si7006_read_tem();
        //
        hum=hum*125/65536-6;
        tem=tem*175.72/65536-46.85;
        if(temp_flag < tem) BEEP_CTRL(1);
        else BEEP_CTRL(0);
        printf("hum:%d\n",hum);
        printf("tem:%d\n",tem);
        delay_ms(1000);
    }
	return 0;

}

is7006

cpp 复制代码
#include "si7006.h"
unsigned char ack;
void delay_ms(int ms)
{
	int i,j;
	for(i=0;i<ms;i++)
	{
		for(j=0;j<2000;j++);
	}
}

void si7006_init()
{
    //1.鍙戦€佽捣濮嬩俊鍙?
    i2c_start();
    //2.鍙戦€?bit浠庢満鍦板潃鍜?bit鍐欐爣蹇?
    i2c_write_byte(0x80);
    //3.绛夊緟浠庢満搴旂瓟
    ack = i2c_wait_ack();
    //4.鍙戠敓瀵勫瓨鍣ㄥ湴鍧€ 0xe6
    i2c_write_byte(0xe6);
    //5.绛夊緟浠庢満搴旂瓟
    ack = i2c_wait_ack();
    //6.鍚戜粠鏈哄彂閫佹暟鎹?0x3a
    i2c_write_byte(0x3a);
    //7.绛夊緟浠庢満搴旂瓟
    ack = i2c_wait_ack();
    //8.鍙戦€佺粓姝俊鍙?
    i2c_stop();
}
unsigned short si7006_read_hum()
{
    unsigned char hum_l,hum_h;
    unsigned short hum;
    
    /* 
    1銆佷富鏈哄彂璧疯捣濮嬩俊鍙?
    2銆佷富鏈哄彂閫?bit浠庢満鍦板潃鍜?bit鍐欐爣蹇?
    3銆佺瓑寰呬粠鏈哄湴鍧€.
    4.涓绘満鍙戦€?浣嶅瘎瀛樺櫒鍦板潃.
    5銆佺瓑寰呬粠鏈哄簲绛?
    6銆佷富鏈哄彂鐢熻捣濮嬩俊鍙?
    7銆佷富鏈哄彂閫?浣嶇殑璧峰鍦板潃.
    8銆佺瓑寰呬粠鏈哄簲绛?
    9銆佸欢鏃剁瓑寰呬粠鏈烘祴閲忔暟鎹?
    10銆佽鍙栨箍搴︾殑楂樺叓浣嶆暟鎹?
    11銆佸彂閫佸簲绛斾俊鍙?
    12銆佽鍙栨箍搴︾殑浣庡叓浣嶆暟鎹?
    13銆佸彂鐢熼潪搴旂瓟淇″彿.
    14銆佸彂閫佺粓姝俊鍙?
    15銆佸皢璇诲彇鍒扮殑鏁版嵁鐨勪綆鍏綅鍜岄珮鍏綅鍚堟垚涓€涓畬鏁寸殑鏁版嵁
        hum=hum_h<<8|hum_l
        return hum
    */
    i2c_start();
    i2c_write_byte(0x80);
    ack = i2c_wait_ack();
    i2c_write_byte(0xe5);
    ack = i2c_wait_ack();

    i2c_start();
    i2c_write_byte(0x81);
    ack = i2c_wait_ack();
    delay_ms(1);
    hum_h = i2c_read_byte(ack);
    i2c_ack();
    hum_l = i2c_read_byte(ack);
    i2c_nack();
    i2c_stop();
    hum=hum_h<<8|hum_l;
    return hum;
}

unsigned short si7006_read_tem()
{
    unsigned char tem_l,tem_h;
    unsigned short tem;
    /* 
    1銆佷富鏈哄彂璧疯捣濮嬩俊鍙?
    2銆佷富鏈哄彂閫?bit浠庢満鍦板潃鍜?bit鍐欐爣蹇?
    3銆佺瓑寰呬粠鏈哄湴鍧€
    4.涓绘満鍙戦€?浣嶅瘎瀛樺櫒鍦板潃
    5銆佺瓑寰呬粠鏈哄簲绛?
    6銆佷富鏈哄彂鐢熻捣濮嬩俊鍙?
    7銆佷富鏈哄彂閫?浣嶇殑璧峰鍦板潃
    8銆佺瓑寰呬粠鏈哄簲绛?
    9銆佸欢鏃剁瓑寰呬粠鏈烘祴閲忔暟鎹?
    10銆佽鍙栨箍搴︾殑楂樺叓浣嶆暟鎹?
    11銆佸彂閫佸簲绛斾俊鍙?
    12銆佽鍙栨箍搴︾殑浣庡叓浣嶆暟鎹?
    13銆佸彂鐢熼潪搴旂瓟淇″彿
    14銆佸彂閫佺粓姝俊鍙?
    15銆佸皢璇诲彇鍒扮殑鏁版嵁鐨勪綆鍏綅鍜岄珮鍏綅鍚堟垚涓€涓畬鏁寸殑鏁版嵁
    16銆乼em=tem_h<<8|tem_l
    return tem
    */
   i2c_start();
    i2c_write_byte(0x80);
    ack = i2c_wait_ack();
    i2c_write_byte(0xe3);
    ack = i2c_wait_ack();

    i2c_start();
    i2c_write_byte(0x81);
    ack = i2c_wait_ack();
    delay_ms(1);
    tem_h = i2c_read_byte(ack);
    i2c_ack();
    tem_l = i2c_read_byte(ack);
    i2c_nack();
    i2c_stop();
    tem=tem_h<<8|tem_l;
    return tem;
}

iic通信:

1、空闲状态:总线上没有通信时,SDA和SCL都是高电平。

2、起始:主机发送起始信号,SDA为低,SCL为高。

3、主机发送7bit地址和1bit读位

4、从机应答

5、主机发送8bit数据

6、从机应答

7、重复

8、从机发送停止信号,SCL为高时,SDA由低变高

相关推荐
用户831348593069821 分钟前
Vue3 v-for:常用用法与开发高频坑点
前端·javascript·vue.js
林恒smileZAZ6 小时前
用 Vue 3 + Electron 做桌宠:从启动退出到拖拽、单击与鼠标穿透
vue.js·electron·计算机外设
软件技术NINI7 小时前
基于JavaWeb 汽车租聘
java·vue.js·spring boot·后端·python·毕业设计·毕设
2301_322414280414 小时前
基于SpringBoot+Vue的休闲零食超市管理系统的设计与实现59004-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·vue.js·spring boot·redis·mysql·决策树·推荐算法
酷炫码神20 小时前
Day 8|Vue3 响应式:告别手动操作 DOM,让数据驱动界面
javascript·vue.js·ecmascript
星光不问赶路人1 天前
Vue 3 对象监听与快照:ref 和 reactive 的关键差异
前端·vue.js
稻草人4781 天前
Vue3.0项目创建步骤
vue.js
Bug收容所1 天前
Vue+js Day2
前端·javascript·vue.js
honkun61 天前
vue 下拉树组件 vxe-table-select 实现分页多选
前端·javascript·vue.js
溪语流沙1 天前
【Web全栈进阶】监控与告警:线上系统的“体检报告”
前端·vue.js·python·fastapi