📄 18b20.c
字号:
#include<reg52.h>
#include<intrins.h>
#define unchar unsigned char
#define unint unsigned int;
unchar code table[]={0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xa3};
unchar buf[]={0,0,10,0};
sbit DQ=P3^2;
sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;
sbit psb=P2^3;
sbit ret=P2^5;
unchar data0,com0,command;
void lcd_int();
void lcd_gnset();
void clear_lcd();
void write_command(unchar com0);
void write_date(unchar date0);
void display();
void yingda();
void int18b20();
void wrone(unchar da);
readbyte();
chuli18b20();
void delay(unchar ms);
void main()
{
lcd_int();
lcd_gnset();
clear_lcd();
while(1)
{
chuli18b20();
display();
}
}
//lcd初始化
void lcd_int()
{
ret=0;
delay(10);
ret=1;
_nop_();
psb=1;//通信方式为串行
_nop_();
clear_lcd();
}
//lcd功能设置
void lcd_gnset()
{
command=0x34;//扩展指令集
write_command(command);
command=0x30;//基本指令集
write_command(command);
command=0x01;//清屏
write_command(command);
command=0x06;//地址计数器(AC)+1
write_command(command);
command=0x0c;//显示打开
write_command(command);
}
//清屏程序
void clear_lcd()
{
command=0x01;
write_command(command);
command=0x34;
write_command(command);
command=0x30;
write_command(command);
}
//写命令
void write_command(unchar com0)
{
delay(100);
rs=0;
rw=0;
P0=com0;
en=1;
_nop_();
_nop_();
en=0;
}
//写数据
void write_date(unchar data0)
{
delay(100);
rs=1;
rw=0;
P0=data0;
en=1;
_nop_();
_nop_();
en=0;
}
/*void display()
{
command=com0; // 注意命令没写进去,要在后面用写命令指令!!!
write_command(com0);
date2=lcdbufl;
date1=lcdbufh;
write_date(date1);
date1=date2;
write_date(date2);
} */
void display()
{
write_command(0x82);
write_date(0xbd);
write_date(0xf1);
write_date(0xcc);
write_date(0xec);
write_date(0xce);
write_date(0xc2);
write_date(0xb6);
write_date(0xc8);
write_date(0x89);
write_date(0xca);
write_date(0xc7);
write_command(0x92);
write_date(0xa3);
write_date(table[buf[0]]);
write_date(table[buf[1]]);
write_date(table[buf[2]]);
write_date(table[buf[3]]);
}
void int18b20()
{
DQ=0;
delay(600);
DQ=1;
delay(2);
}
void yingda()
{
while(DQ);
while(~DQ);
}
void wrone(unchar da)
{
unchar i;
for(i=0;i<8;i++)
{
DQ=0;
DQ=da&0x01;
delay(70);
DQ=1;
da=da<<1;
}
}
readbyte()
{
unchar i,j,m,f;
for(i=0;i<8;i++)
{
DQ=0;
m++;
DQ=1;
j=DQ;
delay(70);
f=j<<7&f>>1;
}
return(f);
}
chuli18b20()
{
unchar i,j;
float x;
int n,h;
int18b20();
yingda();
wrone(0xcc);
wrone(0x44);
delay(10);
int18b20();
yingda();
wrone(0xcc);
wrone(0xbe);
i=readbyte();
j=readbyte();
j<<8;
j=j|i;
x=j*0.0625;
n=x;
h=x*100;
buf[0]=n/10;
buf[1]=n%10;
buf[2]=11;
buf[3]=(h-j*100)/10;
}
void delay(unchar ms)
{
while(--ms);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -