91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3.15MB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2023-09-19
  • 語言: 其他
  • 標簽: sht20??I2c模擬??51??

資源簡介

sht20 I2c模擬驅動 51單片機例程 加I2C通訊總線學習。方便新手學習I2C學習。例程中有I2c的讀和寫,傳感器只用了讀。

資源截圖

代碼片段和文件信息

#include?“i2c.h“
#include?
#include?“config.h“

#define?nop()?{?_nop_();_nop_();_nop_();_nop_();_nop_();}
sbit?scl=P0^2;
sbit?sda=P0^3;
void?init()
{
sda=1;
scl=1;
nop();
}
void?i2c_start()
{
sda=1;
nop();
scl=1;
nop();
sda=0;
nop();
}

void?i2c_stop()
{
sda=0;
nop();
scl=1;
nop();
sda=1;
nop();
}?

void?wait_ack()
{
uchar?i;
scl=1;
nop();
// while(sda==1);
while((sda==1)?&&?(i<255))
i++;
scl=0;
nop();
}
void?wait_measurement()
{
// uchar?i;
Delay_nms(80);????????????//等待測量
// scl=1;
// Delay_nms(10);
// while(scl==0);??????????//保持主機模式但是可能出現死等現象
// scl=0;
// while((scl==0)?&&?(i<255))
// i++;
}
void?send_ack(bit?ack) ?//ack==1發送應答ack==0發送非應答
{
if(ack)
sda=0;
else
sda=1;
scl=1;
nop();
scl=0;
nop();
sda=1;
nop();
}

void?write_byte(uchar?dat)
{
uchar?itemp;
temp=dat;
for(i=0;i<8;i++){
scl=0;
nop();
temp<<=1;
sda=CY;
nop();
scl=1;
nop();
}
scl=0;
nop();
sda=1;
nop();
}


static?uchar?read_byte()
{
?uchar?idat;
?scl=0;
?nop();
?sda=1;
?nop();
?for(i=0;i<8;i++){
? scl=1;
nop();
dat<<=1;
dat|=sda;
scl=0;
nop();
?}
// ?sda=1;
// ?nop();
?return?dat;
}

void?write_i2c(uchar?deviceuchar?addruchar?dat)
{
init();
i2c_start();
write_byte(device);
wait_ack();
write_byte(addr);
wait_ack();
write_byte(dat);
wait_ack();
i2c_stop();
}

uchar?read_i2c(uchar?deviceuchar?addr)
{
uchar?dat;
init();
i2c_start();
write_byte(device);
wait_ack();
write_byte(addr);
wait_ack();
i2c_start();
write_byte(device+0x01);
wait_ack();
dat=read_byte();
send_ack(0);
i2c_stop();
return?dat;
}
uint?readT()????//測量溫度
{
uchar?datL=0;
uchar?datH=0;
uint?Tdata=0;
init();
i2c_start();
write_byte(0x80);
wait_ack();
write_byte(0xE3);?????//保持主機模式
wait_ack();
i2c_start();
write_byte(0x81);
wait_ack();
// print_byte(0x35);
wait_measurement();
datH=read_byte();
send_ack(1);
datL=read_byte();
send_ack(0);
i2c_stop();
Tdata=datH<<8|datL;
return?Tdata;
}
uint?readRH()???//測量濕度
{
uchar?datRL=0;
uchar?datRH=0;
uint?Tdata=0;
init();
i2c_start();
write_byte(0x80);
wait_ack();
write_byte(0xE5);
wait_ack();
i2c_start();
write_byte(0x81);
wait_ack();
// print_byte(0x35);
wait_measurement();
datRH=read_byte();
send_ack(1);
datRL=read_byte();
send_ack(0);
i2c_stop();
Tdata=datRH<<8|datRL;
return?Tdata;
}

void?rest()??????//復位傳感器
{
init();
i2c_start();
write_byte(0x80);
wait_ack();
write_byte(0xfe);
wait_ack();
i2c_stop();
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????2720??2017-09-08?17:19??sht20驅動?51模擬i2c\i2c.c

?????文件????????225??2017-09-08?15:58??sht20驅動?51模擬i2c\i2c.h

?????文件????2024116??2017-09-06?14:47??sht20驅動?51模擬i2c\I2C總線協議?-?subkiller的專欄?-?CSDN博客.png

?????文件????1647426??2017-09-08?17:21??sht20驅動?51模擬i2c\SHT21SHT20最新數字溫濕度傳感器芯片_圖文_百度文庫.png

?????目錄??????????0??2017-09-08?17:21??sht20驅動?51模擬i2c

-----------?---------??----------?-----??----

??????????????3674487????????????????????5


評論

共有 條評論