用430做过DS18B20的帮忙修改下程序

2019-03-24 12:17发布

用430做过DS18B20的帮忙修改下程序
以下是主函数 和18B20的主要部分
请问还有什么问题?
void main()
{
  WDTCTL = WDTPW + WDTHOLD;
  P1DIR|=BIT2+BIT3+BIT4+BIT5+BIT6;
  BCSCTL1 = CALBC1_1MHZ;
  DCOCTL = CALDCO_1MHZ;
  lcdreset();
  clear_gcrom();
while(1)
{
  uint i;
  display_pos(0,0);
for(i=0;i<10;i++)
write_com(table1,0);
Temper=ReadTemp();
tableTemper(Temper);
display_pos(0,5);
for(uint i=0;i<4;i++)
write_com(table_Temper,0);
}
}

void Skip(void)
{
    Write_18B20(0xcc);
}
//----------------------------------
void Convert (void)
{
    Write_18B20(0x44);
}
//----------------------------------
void ReadDo (void)
{
    Write_18B20(0xbe);
}
//----------------------------------
int ReadTemp (void)
{
    char temp_low,temp_high,k; //温度值
    Init();
    Skip();
    Convert();     
    delayus(60000);delayus(60000);//延时1s以上
    Init();
    Skip();
    ReadDo();
    temp_low=Read_18B20(); //读低位
    temp_high=Read_18B20(); //读高位
    temperature=(temp_high&0x0f);
    temperature<<=8;
    temperature|=temp_low;
   
    k=temp_high&0xf8;
    if(k==0xf8)     //温度为负值
    {
      temperature=~temperature|1;
      Temper=temperature*625;
      
    }
    else
    {
      //  Temper=temperature*0.0625*100;   //温度为正值
     Temper=temperature*625; //0.0625*10000
    }
    return Temper;
}
void tableTemper(uint Temper)
{
table_Temper[0]=(Temper/10000)%10;
table_Temper[1]=(Temper/1000)%10;
table_Temper[2]=(Temper/100)%10;
table_Temper[3]=(Temper/10)%10;
}
采集的数据要通过12864显示出来 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
lcofjp
1楼-- · 2019-03-24 17:34
430读DS18B20的程序在本论坛里有一堆,你搜索一下参考吧。

一周热门 更多>

相关问题

    相关文章