資源簡介
模擬iic讀取TMP75
今天花了一上午,把那幾天沒有弄出來的TMP75,搞出來了……
其實我驅(qū)動程序都是寫對了的,以前沒有正確接收到溫度的原因,在于C語言不扎實,想傳個參數(shù)過去接收I2C的溫度值 ,但是總會出錯,接收到的數(shù)據(jù)總是0XFF,今天用了個最笨的方法,就是定義了兩個全局溫度變量來接收I2C的數(shù)據(jù),結(jié)果一下子就不再是那個0XFF了,現(xiàn)在就把整個TMP75 驅(qū)動完成了 還有測試圖片 精確率選的是12bits 0.625攝氏度,還是很準確de。

代碼片段和文件信息
#include?“i2c.h“
#if?1
//#define??NOP()???_nop_()???/*?定義空指令?*/?
#define??_Nop()??_nop_()???/*定義空指令*/?????
#define??NOPS();{_nop_();_nop_();_nop_();_nop_();_nop_();}
sbit?????SCL=P0^1;?????//I2C??時鐘??
sbit?????SDA=P0^0;?????//I2C??數(shù)據(jù)????bit?ack;?????????????????/*應(yīng)答標志位*/?
UINT8?ack=0;
/*******************************************************************
????????????????????????????????起動總線函數(shù)
函數(shù)原型:?void?Start_I2c();
功能:啟動I2C總線即發(fā)送I2C起始條件.
SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號
********************************************************************/
void?I2C_Start(void)
{
SDA=1;?????????//發(fā)送起始條件的數(shù)據(jù)信號
SCL=1;
NOPS();
SDA=0;
NOPS();
SCL=0;??????????//鉗住I2C總線,準備發(fā)送或接收數(shù)據(jù)
}
/********************************************************
結(jié)束 i2c傳輸
SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號
********************************************************/
void?I2C_Stop(void)
{
SCL=0;
SDA=0;
NOPS();
SCL=1;
NOPS();
SDA=1;
}
INT8?I2C_WaitAck(void)
{
UINT8?errtime=255;
SCL=0;
SDA=1;
NOPS();
SCL=1;
NOPS();
while(SDA)
{
errtime--;
if(errtime==0)
{
SCL=0;
return?1;
}
}
SCL=0;
return?0;
}
UINT8?I2C_SendByte(UINT8?sdata)
{
UINT8?ret;
UINT8?i;
for(i?=?0;i<8;i++)
{
SCL=0;
if((sdata< SDA=1;
else
SDA=0;
NOPS();
SCL=1;
NOPS();
}
if(I2C_WaitAck()==0)
ret=0;
else
ret=1;
return?ret;
}
UINT8?I2C_RcvByte(void)
{
UINT8?ret=0;
UINT8?i;
SDA=1;
for(i=0;i<8;i++)
{
SCL=0;
NOPS();
SCL=1;
NOPS();
ret=ret<<1;
if(SDA==1)
ret|=0x01;
}
SCL=0;
return?ret;
}
void?I2C_SendACk(void)
{
SDA=0;
NOPS();
SCL=1;
NOPS();
SCL=0;
}
/*void?I2C_SendNotAck(void)
{?
SDA?=1?;
NOPS();
SCL?=?1;
NOPS();
SCL?=?0;
}*/
#endif
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2300??2015-07-30?10:33??TMP75.c
?????文件????????584??2015-07-30?10:33??TMP75.h
?????文件???????1937??2015-07-30?10:33??i2c.c
?????文件????????305??2015-07-30?10:33??i2c.h
-----------?---------??----------?-----??----
?????????????????5126????????????????????4
評論
共有 條評論