ds18b20 c51源代码

来源:本站
导读:目前正在解读《ds18b20 c51源代码》的相关信息,《ds18b20 c51源代码》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《ds18b20 c51源代码》的详细说明。
简介:本文提供ds18b20 c51的源代码。

#include "reg51.h"#include "INTRINS.H"#include "LCD.h"#define CLR_RI  (RI=0)#define CLR_TI  (TI=0)                                unsigned char code ID[2][8]={ 0x28,0x1D,0x25,0x1D,0x00,0x00,0x00,0x80,                              0x28,0x0e,0x9e,0x1c,0x00,0x00,0x00,0x32};unsigned char currSensorNo=0;sbit  TMDAT   =  P1^7;sbit  RUN_LED =  P1^6;/*------------------------------------------------**------------------------------------------------*/void serial_initial(){     TMOD=0X20;     SCON=0X50;     PCON=0X00;     TL1=TH1=0XE8;     TR1=1;}/*------------------------------------------------**------------------------------------------------*/void  send(unsigned char count,unsigned char SEND_Buf[]){  unsigned char  i; for(i=0;i<count;i++) ;="" while(count="" {="" )="" count="" char="" (unsigned="" delay_count="" void="" *----------------------------------------------------*="" n="" delay="" *="" *----------------------------------------------------="" }="" i++)="" i<125;="" for(i="0;" while(nms--)="" i;="" unsigned="" nms="" int="" delay_ms="" ms="" clr_ti;="" while(!ti);="" sbuf="SEND_Buf[i];">0) Count--;}/*----------------------------------------------------*   start Reset Pulse----------------------------------------------------*/void tmreset(void){    TMDAT=0;    Delay_Count(103);    TMDAT=1;    Delay_Count(4);}/*----------------------------------------------------*        ACK*----------------------------------------------------*/void tmpre(void){    while(TMDAT);    while(~TMDAT);    Delay_Count(4);}/*----------------------------------------------------*   Read a bit from 1820*----------------------------------------------------*/bit tmrbit(void){    int i=0;    bit dat;    TMDAT=0;i++;        TMDAT=1;i++;i++;    dat = TMDAT;        Delay_Count(8);    return dat;}/*----------------------------------------------------*   Read a byte from 1820*----------------------------------------------------*/unsigned char tmrbyte(void){unsigned char i,j,dat=0;    for(i=1;i<=8;i++)    {        j=tmrbit();        dat=(j<<7)|(dat>>1);    }    return dat;}/*----------------------------------------------------*   Read a byte from 1820*----------------------------------------------------*/void tmwbyte(unsigned char dat){    signed char   i=0;    unsigned char j;    bit testb;    for(j=1;j<=8;j++)    {        testb=dat & 0x01;        dat = dat>>1;        if(testb)        {            TMDAT=0;            i++;i++;            TMDAT=1;            Delay_Count(8);        }        else        {            TMDAT=0;            Delay_Count(8);            TMDAT=1;            i++;i++;        }    }}/*----------------------------------------------------*   send convert command to  1820*----------------------------------------------------*/void tmstart(void){unsigned char i;tmreset();    tmpre();    Delay_ms(1);/*  tmwbyte(0xcc);*/    tmwbyte(0x55);    for(i=0;i<8;i++)    tmwbyte(ID[currSensorNo][i]);    tmwbyte(0x44);}/*----------------------------------------------------*   Read tempreature from  1820*----------------------------------------------------*/unsigned int tmrtemp_all(void){unsigned char a,b;unsigned int y3;unsigned char i;tmreset();    tmpre();    Delay_ms(1);    /*tmwbyte(0xcc);*/    tmwbyte(0x55);    for(i=0;i<8;i++)    tmwbyte(ID[currSensorNo][i]);              tmwbyte(0xbe);    a = tmrbyte();    b = tmrbyte();    y3 = ((unsigned int)b) << 8;       return ((y3+a) & 0x7ff) ;}/*----------------------------------------------------*   Start Test tempreature, All**----------------------------------------------------*/void Display_AllTemp(void ){unsigned int last;unsigned char i,Dot;RUN_LED=0;Part=0;LED_DISPLAY();Delay_ms(1);tmstart();Delay_ms(800);last=tmrtemp_all();RUN_LED=1;Dot= (last & 0x0f)*6.25 ;Digit[0]= Dot%10;Digit[1]=Dot/10;last=(last>>4) & 0x7f ;if( (last == 0x7f) )   // erro{    for(i=0;i<5;i++)  Digit[i]=16; }    else{for(i=2;i<5;i++){Digit[i] = last %10;last = last/10;}if(Digit[4]==0)Digit[4]=17;Part=1; }Digit[5]=currSensorNo;         LED_DISPLAY();}/*----------------------------------------------------**----------------------------------------------------*//*  void  Read_Id()  {   unsigned char i,id[8];    tmreset();    tmpre();    Delay_ms(1);    tmwbyte(0x33);   for(i=0;i<8;i++)    id[i]=tmrbyte();      send(8,id);}*//*----------------------------------------------------**    Main*----------------------------------------------------*/void main(void){unsigned char id[8]={1,2,3,4,5,6,7,8};serial_initial();send(8,id);    for(;;)    {RUN_LED=!RUN_LED;/*    Read_Id();*/TX_C =!TX_C ;currSensorNo=(currSensorNo==1)?0:1;Display_AllTemp();      /*Change();*/send(6,Digit);Delay_ms(1000);         _nop_();   }}

提醒:《ds18b20 c51源代码》最后刷新时间 2024-03-14 01:07:40,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《ds18b20 c51源代码》该内容的真实性请自行鉴别。