📄 text1.c
字号:
#include<reg51.h>
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit RST=P1^0;
sbit SCLK=P1^1;
sbit io=P1^2;
sbit DQ=P2^7;
sbit ACC7=ACC^7;
sbit ACC0=ACC^0;
unsigned char dis[]={"temperature is:"};
unsigned char shu[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x20,0x3a,0x2d,0x2e,0x43};
unsigned char zu[]={0x00,0x00,0x0c,0x00,0x00,0x0c,0x00,0x00,0x0c,0x00,0x00,0x0b,0x00,0x00,0x0b,0x00,0x00,0x0a,0x0a,
0x00,0x00,0x00,0x0d,0x00,0x00,0x0d,0x0e};
unsigned char j;
void start1602();
void busy();
void writeo(unsigned char i);
void writeda(unsigned char i);
void delay();
void delay1820(unsigned int t);
read1820();
void write820(unsigned char date);
void reoult1820();
void start1820();
void write1302(unsigned char date);
read1302();
read1302_b(unsigned char add);
void write1302_b(unsigned char add,unsigned char date);
void resoult1302();
void start1302();
void start1602()
{
writeo(0x01);
writeo(0x38);
writeo(0x0e);
writeo(0x06);
}
void busy()
{
E=0;
RS=0;
RW=1;
E=1;
while(P0&0X80);
E=0;
delay();
}
void writeo(unsigned char i)
{
busy();
E=0;
RW=0;
RS=0;
E=1;
P0=i;
E=0;
delay();
}
void writeda(unsigned char i)
{
busy();
E=0;
RW=0;
RS=1;
E=1;
P0=i;
E=0;
delay();
}
void delay()
{
for(j=0;j<200;j++);
}
// ds18b20//
void delay1820(unsigned int t)
{
while(t--);
}
void start1820()
{
DQ=1;
delay1820(15);
DQ=0;
delay1820(80);
DQ=1;
delay1820(10);
while(!DQ);
}
read1820()
{
unsigned char da=0x00,i;
for(i=0;i<8;i++)
{
DQ=1;
delay1820(3);
DQ=0;
da=da>>1;
DQ=1;
if(DQ)
{
da=da|0x80;
}
delay1820(10);
}
return(da);
}
void write1820(unsigned char date)
{
unsigned char i;
for(i=0;i<8;i++)
{
DQ=0;
DQ=date&0x01;
delay1820(5);
DQ=1;
date=date>>1;
}
delay1820(5);
}
void resoult1820()
{
unsigned char TTH,TTL,a;
unsigned int b;
start1820();
write1820(0xcc);
write1820(0x44);
delay1820(50);
start1820();
write1820(0xcc);
write1820(0xbe);
TTL=read1820();
TTH=read1820();
a=(TTH<<4)|(TTL>>4);
zu[19]=a/100;
zu[20]=a%100/10;
zu[21]=a%10;
a=(TTL&0X0F);
b=a*625;
zu[23]=b/1000;
zu[24]=b%1000/100;
delay1820(100);
}
//1302//
void write1302(unsigned char date)
{
unsigned char i;
ACC=date;
for(i=8;i>0;i--)
{
io=ACC0;
SCLK=1;
SCLK=0;
ACC=ACC>>1;
}
}
read1302()
{
unsigned char i;
for(i=8;i>0;i--)
{
ACC=ACC>>1;
ACC7=io;
SCLK=1;
SCLK=0;
}return(ACC);
}
void write1302_b(unsigned char add,unsigned char date)
{
RST=0;
RST=1;
SCLK=0;
write1302(add);
write1302(date);
RST=0;
SCLK=1;
}
read1302_b(unsigned char add)
{
unsigned char date=0x00;
RST=0;
SCLK=0;
RST=1;
write1302(add);
date=read1302();
RST=0;
SCLK=1;
return(date);
}
void resoult1302()
{
unsigned char s,A1;
s=read1302_b(0x8d);
A1=((s&0x70)>>4)*10+(s&0x0f);
zu[0]=A1/10;
zu[1]=A1%10;
s=read1302_b(0x89);
A1=((s&0x70)>>4)*10+(s&0x0f);
zu[3]=A1/10;
zu[4]=A1%10;
s=read1302_b(0x87);
A1=((s&0x70)>>4)*10+(s&0x0f);
zu[6]=A1/10;
zu[7]=A1%10;
s=read1302_b(0x85);
A1=((s&0x70)>>4)*10+(s&0x0f);
zu[9]=A1/10;
zu[10]=A1%10;
s=read1302_b(0x83);
A1=((s&0x70)>>4)*10+(s&0x0f);
zu[12]=A1/10;
zu[13]=A1%10;
s=read1302_b(0x81);
A1=((s&0x70)>>4)*10+(s&0x0f);
zu[15]=A1/10;
zu[16]=A1%10;
}
void start1302()
{
write1302_b(0x8e,0x00);
write1302_b(0x80,0);
write1302_b(0x8e,0x80);
}
void main()
{
unsigned char f;
TMOD=0X21;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TH1=0XFD;
TL1=0XFD;
SCON=0X50;
PCON=0X00;
TR1=1;
IE=0X90;
ET0=1;
TR0=1;
start1602();
start1302();
while(1)
{
resoult1820();
resoult1302();
writeo(0x80);
for(f=0;f<19;f++)
{
writeda(shu[zu[f]]);
}
writeo(0xc0);
f=0;
while(dis[f]!='\0')
{
writeda(dis[f]);
f++;}
for(f=19;f<25;f++)
{
writeda(shu[zu[f]]);
}
}
}
void time() interrupt 1
{
unsigned char ss,j;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
ss++;
if(ss==100)
{
ss=0;
for(j=0;j<27;j++)
{
SBUF=shu[zu[j]];
while(!TI);
TI=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -