📄 lcd18b20.c
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^5;
sbit RW=P2^6;
sbit E=P2^7;
sbit DQ=P1^0;
uchar code table[]="temperature:";
uchar num;
//void initlcd();
void write_com(uchar n);
void write_data(uchar n);
//void delay(uint n);
//uchar busy();
uchar temperature,tl,th;
void delay(uint n)
{
uint x,y;
for(x=n;x>0;x--)
for(y=112;y>0;y--)
;
}
void init()
{
uchar x=0;
DQ=1;
delay(5);
DQ=0;
delay(500);
DQ=1;
delay(15);
}
uchar read()
{
uchar i=0;
uchar dat=0;
for(i=8;i>0;i--)
{
DQ=1;
delay(2);
DQ=0;
dat>>=1;
DQ=1;
if(DQ!=0)
dat|=0x80;
delay(4);
}
return(dat);
}
void write(uchar dat)
{
uchar i=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
delay(5);
}
uchar readtemperature()
{
init();
write(0xcc);
write(0x44);
delay(150);
init();
write(0xcc);
write(0xbe);
tl=read();
th=read();
temperature=(th*256+tl)*0.0625;
delay(200);
return (temperature);
}
void initlcd()
{
write_com(0x38);
write_com(0x0f);
write_com(0x06);
write_com(0x80);
}
uchar busy()
{
bit result;
RS=0;
RW=1;
E=0;
E=1;
delay(1);
result=(uchar)(P0 & 0x80);
delay(1);
E=0;
delay(1);
return result;
}
void write_com(uchar n)
{
while(busy());
RW=0;
RS=1;
RS=0;
P1=n;
E=0;
delay(5);
E=1;
delay(5);
E=0;
delay(5);
RS=1;
}
void write_data(uchar n)
{
while(busy());
RW=0;
RS=0;
RS=1;
P1=n;
E=0;
delay(5);
E=1;
delay(5);
E=0;
delay(5);
RS=0;
}
void main()
{
initlcd();
write_com(0x80);
for(num=0;num<12;num++)
{
write_data(table[num]);
delay(20);
}
delay(2000);
write_com(0x80+0x0f);
write_data(readtemperature());
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -