📄 lcdguo.c
字号:
#include<reg52.h>
#include<intrins.h>// _nop_();
#define uchar unsigned char
#define uint unsigned int
sbit DQ = P1^3;//数据接口为单片机的P1.3口
/*uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f};
uchar table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
0x87,0xff,0xef};*/
int temper,numb;
//uchar table2[]="ffff";
uchar table1[]=" . ";
uchar table[]="WD:";
sbit lcden=P2^7;
sbit lcdrs=P2^5;
sbit lcddd=P2^6;
void lcd();
void delay(uint x);
void delayus(uint,uchar);
void write_byte(uchar date);
uchar read_byte();
void get_tem();
void main()
{
// init();
while(1)
{
/* delayus(0,0);//20
delayus(1,1);//30
delayus(2,2);//45
delayus(4,4);//70
delayus(70,30);//750
delayus(50,10);//500*/
// uchar num;
get_tem();
lcd();
// for(num=20;num>0;num--)
// disp(a1,a2,a3,a4);
}
}
void reset()
{
uchar st=1;
DQ=1;
_nop_();_nop_();
while(st)
{
DQ=0;
delayus(70,30);
DQ=1;
delayus(4,4);
if(DQ==1)
st=1;
else
st=0;
delayus(50,10);
}
}
void write_byte(uchar date)
{
uchar i,temp;
DQ=1;
_nop_();_nop_();
for(i=8;i>0;i--)
{
temp=date&0x01;//01010101
DQ=0;
delayus(0,0);
if(temp==1)
DQ=1;
delayus(2,2);
DQ=1;
date=date>>1;//00101010
}
}
uchar read_byte()
{
uchar i,date;
static bit j;
for(i=8;i>0;i--)
{
date=date>>1;
DQ=1;
_nop_();_nop_();
DQ=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
DQ=1;
_nop_();_nop_();_nop_();_nop_();
j=DQ;
if(j==1)
date=date|0x80;//1000 0000
delayus(1,1);
}
return (date);
}
void get_tem()
{
uchar tem1,tem2;
float aaa;
reset(); //复位
write_byte(0xCC);//跳过ROM
write_byte(0x44);//温度转换
delay(1000);
reset();
write_byte(0xCC);
write_byte(0xBE);
tem1=read_byte();
tem2=read_byte();
aaa=(tem2*256+tem1)*6.25;
temper=(int)aaa;
table1[0]=temper/1000+0x30;
table1[1]=temper%1000/100+0x30;
table1[3]=temper%100/10+0x30;
table1[4]=temper%10+0x30;
}
void delayus(uint x,uchar y)
{
uint i;
uchar j;
for(i=x;i>0;i--);
for(j=y;j>0;j--);
}
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void start()
{
// dula=0;
// wela=0;
lcden=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
write_com(0x80+0x10);
}
void lcd()
{
start();
lcddd=0;
write_com(0x80);
for(numb=0;numb<3;numb++)
{
write_data(table[numb]);
delay(20);
}
write_com(0x80+0x40);
for(numb=0;numb<5;numb++)
{
write_data(table1[numb]);
delay(20);
}
// while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -