[求助]有GP32与DS18B20温度传感器的C源程序吗?
- UID
- 113650
- 性别
- 男
|
[求助]有GP32与DS18B20温度传感器的C源程序吗?
各位大虾:有GP32与DS18B20温度传感器的C源程序吗?要求用四位数码管显示温度值.
谢谢!
我的联系方式:tuorongou@126.com[em26]
[此贴子已经被作者于2005-6-1 13:10:58编辑过] |
|
|
|
|
|
- UID
- 113650
- 性别
- 男
|
|
|
|
|
|
- UID
- 138802
- 性别
- 男
|
|
|
|
|
|
- UID
- 115927
- 性别
- 男
|
gt8的读写ds18b20的程序
void Delayiic(void)
{
return;
}
void delay100us(uchar n)
{
uchar i;
uchar j;
for (i=0; i
{
for (j=0; j<20; j++);
__RESET_WATCHDOG();
}
return;
}
void delay_400us(void)
{
T1SC_TSTOP = 1;
T1SC_TRST = 1;
T1MODH = 0xf0;
T1MODL = 0x00;
T1SC_PS2 = 0;
T1SC_PS1 = 1;
T1SC_PS0 = 1; //分频系数为8,计数频率为307200Hz,计数周期3.2552us
T1SC_TSTOP = 0;
while(1)
{
if (T1CNTH != 0 || T1CNTL >= 123)
{
T1SC_TSTOP = 1;
return;
}
__RESET_WATCHDOG();
}
}
void delay_82us(void)
{
T1SC_TSTOP = 1;
T1SC_TRST = 1;
T1MODH = 0xf0;
T1MODL = 0x00;
T1SC_PS2 = 0;
T1SC_PS1 = 1;
T1SC_PS0 = 1; //分频系数为8,计数频率为307200Hz,计数周期3.2552us
T1SC_TSTOP = 0;
while(1)
{
if (T1CNTH != 0 || T1CNTL >= 26)
{
T1SC_TSTOP = 1;
return;
}
__RESET_WATCHDOG();
}
}
void delay_33us(void)
{
T1SC_TSTOP = 1;
T1SC_TRST = 1;
T1MODH = 0xf0;
T1MODL = 0x00;
T1SC_PS2 = 0;
T1SC_PS1 = 1;
T1SC_PS0 = 1; //分频系数为8,计数频率为307200Hz,计数周期3.2552us
T1SC_TSTOP = 0;
while(1)
{
if (T1CNTH != 0 || T1CNTL >= 11)
{
T1SC_TSTOP = 1;
return;
}
__RESET_WATCHDOG();
}
}
void init_18b20_a (void)
{
DisableInterrupts;
wd_a_D = 1;
wd_a = 1;
Delayiic();
wd_a = 0;
delay_400us(); //delay 400 uS
wd_a = 1;
delay_82us(); //delay 82 uS
wd_a_D = 0;
if(wd_a == 0)
flag=1; //detect 1820 success!
else
flag=0; //detect 1820 fail!
delay_82us();
wd_a_D = 1;
wd_a = 1;
wd_a_D = 0;
EnableInterrupts;
}
void write_a (uchar wr)
{
uchar i;
__RESET_WATCHDOG();
DisableInterrupts;
wd_a_D = 1;
for (i=0;i<8;i++)
{
wd_a = 0;
Delayiic();
wd_a=wr&0x01;
delay_33us(); //delay 33 uS
wd_a = 1;
wr>>=1;
}
wd_a_D = 0;
EnableInterrupts;
}
uint read_word_a (void)
{
uchar i;
uint u=0;
DisableInterrupts;
__RESET_WATCHDOG();
for(i=0;i<16;i++)
{
wd_a_D = 1;
wd_a = 0;
u>>=1;
wd_a = 1;
wd_a_D = 0;
if(wd_a==1)
u|=0x8000;
delay_33us();
}
EnableInterrupts;
return(u);
}
|
|
|
|
|
|