#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源代码》的相关信息,《ds18b20 c51源代码》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《ds18b20 c51源代码》的详细说明。
简介:本文提供ds18b20 c51的源代码。
提醒:《ds18b20 c51源代码》最后刷新时间 2024-03-14 01:07:40,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《ds18b20 c51源代码》该内容的真实性请自行鉴别。