資源簡介
單片機 DS1621溫度傳感器實驗仿真圖和程序

代碼片段和文件信息
/***************???writer:shopping.w???******************/
#include?
#include?
#define?uint?unsigned?int
#define?uchar?unsigned?char
bit?I2C_Busy?NO_AckBus_Faultpoint;
uchar?bdata?a;
sbit?LSB?=?a^0;
sbit?MSB?=?a^7;
sbit?SDA?=?P3^3;
sbit?SCL?=?P3^2;
uchar?Array[]?=?{‘0‘‘1‘‘2‘‘3‘‘4‘‘5‘‘6‘‘7‘‘8‘‘9‘};
uchar?command_data[]=
{
? 0xac0x000xee0xa10x000x000xa20x000x000xaa
};
uchar?Prompt[]=“Waiting?for?a?while...\r“;
uchar?i;
void?DelayMS(uint?ms)
{
? uchar?i;
while(ms--)
{
? for(i=0;i<120;i++);
}
}
void?SendStop()
{
? SDA?=?0;
SCL?=?1;
_nop_();
SDA?=?1;
I2C_Busy?=?0;
}
void?SendByte(uchar?wd)
{
? uchar?i;
a?=?wd;
for(i=0;i<8;i++)
{
? SCL?=?0;
_nop_();
_nop_();
SDA?=?MSB;
a?<<=?1;
_nop_();
_nop_();
SCL?=?1;
_nop_();
_nop_();
SCL?=?0;
}
SDA?=?1;
SCL?=?1;
_nop_();
_nop_();
if(!SDA)
{
? SCL?=?0;
_nop_();
_nop_();
}
else
{
? NO_Ack?=?1;
SCL?=?0;
_nop_();
_nop_();
}
}
void?Master(uchar?slave_addr)
{
? I2C_Busy?=?1;
NO_Ack?=?0;
Bus_Fault?=?0;
if(!SCL?||?!SDA)
Bus_Fault?=?1;
else
{
? SDA?=?0;
_nop_();
_nop_();
SCL?=?0;
_nop_();
_nop_();
SendByte(slave_addr);
}
}
uchar?RecvByte(uchar?cnt)
{
uchar?ircv_data;
for(i=0;i<8;i++)
{
? SDA?=?1;
SCL?=?1;
_nop_();
LSB?=?SDA;
if(i<7)
a?<<=?1;
_nop_();
SCL?=?0;
_nop_();
}?
if(cnt?==?1)
SDA?=?1;
else
SDA?=?0;
SCL?=?1;
_nop_();
SCL?=?0;
SDA?=?1;
_nop_();
rcv_data?=?a;
return?rcv_data;
}
void?SendData(uchar?slave_addressuchar?startuchar?end)
{
? Master(slave_address);
for(i=start;i<=end;i++)
SendByte(command_data[i]);
SendStop();
}
void?InitialiseSerialPort()
{
? TMOD?=?0x20;
TH1??=?0xfd;
SCON?=?0x50;
TR1??=?1;
}
void?SendCharToSerialPort(uchar?ch)
{
? SBUF?=?ch;
while(!TI);
TI?=?0;
}
void?SendTemperatureToSerialPort(uchar?val)
{
? if(val>200)
{
? val?=?255-val;
SendCharToSerialPort(‘-‘);
if(!point)
val+=1;
}
SendCharToSerialPort(Array[(val/10)/10]);
SendCharToSerialPort(Array[(val/10)%10]);
SendCharToSerialPort(Array[val%10]);
SendCharToSerialPort(‘.‘);
if(point)
SendCharToSerialPort(‘5‘);
else
SendCharToSerialPort(‘0‘);
SendCharToSerialPort(‘?‘);
SendCharToSerialPort(‘C‘);
SendCharToSerialPort(‘\r‘);
}
void?SetTemperatureLimit(uchar?HIuchar?LO)
{
command_data[4]?=?HI;
command_data[5] =?0;
command_data[7]?=?LO;
command_data[8]?=?0;
SendData(0x9035);
DelayMS(10);
SendData(0x9068);
}
void?StartConversion()
{
? SendData(0x9022);
DelayMS(750);
}
uchar?ReadTemp()
{
? uchar?d;
SendData(0x9099);
Master(0x91);
d?=?RecvByte(0);
point?=?RecvByte(1)>>7;
SendStop();
return?d;
}
void?WriteConfig(uchar?c)
{
? command_data[1]?=?c;
SendData(0x9001);
}
void?main()
{
? uchar?i;
??? InitialiseSerialPort();
wh
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????11115??2009-08-13?11:21??24?DS1621溫度傳感器實驗\code\24
?????文件???????3222??2009-08-13?11:21??24?DS1621溫度傳感器實驗\code\24.c
?????文件???????2021??2009-08-13?11:21??24?DS1621溫度傳感器實驗\code\24.hex
?????文件?????????36??2009-08-13?11:21??24?DS1621溫度傳感器實驗\code\24.lnp
?????文件???????8760??2009-08-13?11:21??24?DS1621溫度傳感器實驗\code\24.LST
?????文件??????15110??2009-08-13?11:21??24?DS1621溫度傳感器實驗\code\24.M51
?????文件??????12892??2009-08-13?11:21??24?DS1621溫度傳感器實驗\code\24.OBJ
?????文件????????980??2009-08-13?11:22??24?DS1621溫度傳感器實驗\code\24.Opt
?????文件????????213??2009-08-13?13:27??24?DS1621溫度傳感器實驗\code\24.plg
?????文件???????2134??2009-08-13?11:22??24?DS1621溫度傳感器實驗\code\24.Uv2
?????文件??????????0??2009-08-13?10:08??24?DS1621溫度傳感器實驗\code\24_Uv2.Bak
?????文件??????34895??2009-03-11?20:41??24?DS1621溫度傳感器實驗\DS1621溫度傳感器實驗.DSN
?????文件????????819??2009-08-13?11:22??24?DS1621溫度傳感器實驗\DS1621溫度傳感器實驗.PWI
?????文件??????10119??2009-03-11?20:40??24?DS1621溫度傳感器實驗\Keil?C\DS1621溫度傳感器實驗
?????文件???????2027??2009-03-11?20:40??24?DS1621溫度傳感器實驗\Keil?C\DS1621溫度傳感器實驗.hex
?????文件??????34895??2009-02-08?00:52??24?DS1621溫度傳感器實驗\Last?Loaded?DS1621溫度傳感器實驗.DBK
?????目錄??????????0??2011-01-13?02:32??24?DS1621溫度傳感器實驗\code
?????目錄??????????0??2011-01-13?02:32??24?DS1621溫度傳感器實驗\Keil?C
?????目錄??????????0??2011-01-13?02:32??24?DS1621溫度傳感器實驗
-----------?---------??----------?-----??----
???????????????139238????????????????????19
評論
共有 條評論