📄 1820.c
字号:
#include <reg51.h>
typedef unsigned char uchar;
sbit RCLK=P3^4;
//sbit SRCLK=P3^1;
//sbit SER=P3^0;
char ledcode[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff,0xfd,0x02,0x9e,0x24,0x03,0x98,0x48,0x40,0x1e,0x00,0x08};
//-----------------
sbit TMDAT=P1^7;
void display(int g);
/***************************/
void dmsec(unsigned int count) //msec delay 11.0592MHz
{ //1ms延时
unsigned int i;
while(count--)
{
for(i=0;i<125;i++)
{}
}
}
void tmreset(void)
{ //Reset tx
unsigned int i;
TMDAT=0;
i=103;while(i>0)i--;//APPROX 900us
TMDAT=1;
i=4;while(i>0)i--;
}
void tmpre(void)
{
unsigned int i;
while(TMDAT);
while(~TMDAT);
i=4;while(i>0)i--;
}
bit tmrbit(void)
{
unsigned int i;
bit dat;
TMDAT=0;i++;
TMDAT=1;i++;i++;
dat=TMDAT;
i=8;while(i>0)i--;
return(dat);
}
unsigned char tmrbyte(void)
{
unsigned char i,j,dat;
dat=0;
for (i=1;i<=8;i++)
{
j=tmrbit();
dat=(j<<7)|(dat>>1);
}
return(dat);
}
void tmwbyte(unsigned char dat)
{ //write one byte
unsigned int i;
unsigned char j;
bit testb;
for (j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb)
{
TMDAT=0; //Wite 1
i++;
i++;
TMDAT=1;
i=8;
while(i>0)
i-- ;
}
else {
TMDAT=0 ; //Wite 0
i=8;while(i>0)i--;
TMDAT=1;
i++;i++;
}
}
}
void tmstart(void){
tmreset();
tmpre();
dmsec(1);
tmwbyte(0xcc);//skip rom
tmwbyte(0x44);//convert
}
unsigned char tmrtemp(void){//read temp
unsigned char c,d,e,f,a,b,y1,y2,y3;
tmreset();
tmpre();
dmsec(1);
tmwbyte(0xcc); //skip rom
tmwbyte(0xbe); //convert
a=tmrbyte(); //lsb
b=tmrbyte(); //msb
f=a/16;
c=a%16;
c=c*10;
c=c/16; //小数
b=b*16;
b=b+f; //整数
d=b/10; //十位
e=b%10;//个位
e=e+12;
//y1=display()
//b=b;
display(10);
display(c);
display(e);
display(d);
//y1=a>>4;
//y2=b<<4;
//y3=y1|y2;
//return(y3);
}
//unsigned char convert(int y4,int y5){
///*******8****
void display(int g)
{
TI=0;
// EA=0;
SBUF=ledcode[g];
while(!TI);
TI=0;
RCLK=0;
RCLK=1;
//EA=1;
return ;
}
/***********************main**********/
void main(void)
{
while(1)
{
unsigned int i;
unsigned char last;
//display(10);
uchar lsb,msb;
dmsec(1);
tmstart(); //ds18b20 start convert
dmsec(1000);
tmrtemp(); //read temperature
//msb=last/0x0a+0x30;
//lsb=last%0x0a+0x30;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -