首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]有GP32与DS18B20温度传感器的C源程序吗?

[求助]有GP32与DS18B20温度传感器的C源程序吗?

各位大虾:有GP32与DS18B20温度传感器的C源程序吗?要求用四位数码管显示温度值.
  谢谢!
  我的联系方式:tuorongou@126.com[em26]


[此贴子已经被作者于2005-6-1 13:10:58编辑过]

怎么啦?大家都没有用过?
同求。

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);
}
返回列表