
点击(此处)折叠或打开
-
#include<reg52.h>
-
#include<intrins.h>
-
#include<stdlib.h>
-
#include<string.h>
-
#include<stdio.h>
-
-
#define uchar unsigned char
-
#define uint unsigned int
-
-
sbit DS=P2^2;
-
sbit lcden=P3^4;
-
sbit lcdrs=P3^5;
-
sbit lcdrw=P3^6;
-
sbit lcdpsb=P1^7;
-
sbit wela=P2^6;
-
sbit dula=P2^7;
-
-
uchar dis1[]={"--------"};/*display1*/
-
uchar dis2[]={"当前温度"};
-
uchar dis4[]={"--------"};
-
uint temp;
-
-
void delay_ms(uint);
-
void lcd_init();
-
void write_cmd(uchar);
-
void write_dat(uchar);
-
void lcd_pos(uchar,uchar);
-
-
void dsreset();
-
bit tmpreadbit();
-
uchar tempread();
-
void tmpwritebyte(uchar);
-
void tmpchange();
-
uint tmp();
-
-
void main()
-
{
-
uchar i,buff[4];
-
uint temp;
-
-
wela=0;
-
dula=0;
-
delay_ms(10);
-
lcd_init();
-
-
lcd_pos(0,2);
-
i=0;
-
while(dis1[i]!=0)
-
{
-
write_dat(dis1[i]);
-
i++;
-
}
-
-
lcd_pos(1,2);
-
i=0;
-
while(dis2[i]!=0)
-
{
-
write_dat(dis2[i]);
-
i++;
-
}
-
-
lcd_pos(3,2);
-
i=0;
-
while(dis4[i]!=0)
-
{
-
write_dat(dis4[i]);
-
i++;
-
}
-
-
while(1)
-
{
-
tmpchange();
-
temp=tmp();
-
-
lcd_pos(2,2);
-
-
-
sprintf(buff,"%d",temp);
-
write_dat(buff[0]);
-
write_dat(buff[1]);
-
write_dat('.');
-
write_dat(buff[2]);
-
write_dat('\'');
-
write_dat('C');
-
};
-
}
-
-
/***************ds begin*******************/
-
-
void dsreset(void)
-
{
-
uint i;
-
DS=0;
-
i=103;
-
while(i>0)i--;
-
DS=1;
-
i=4;
-
while(i>0)i--;
-
}
-
-
bit tmpreadbit(void)
-
{
-
uint i;
-
bit dat;
-
DS=0;i++;
-
DS=1;i++;i++;
-
dat=DS;
-
i=8;while(i>0)i--;
-
return (dat);
-
}
-
-
uchar tmpread(void)
-
{
-
uchar i,j,dat;
-
dat=0;
-
for(i=1;i<=8;i++)
-
{
-
j=tmpreadbit();
-
dat=(j<<7)|(dat>>1);
-
}
-
return(dat);
-
}
-
-
void tmpwritebyte(uchar dat)
-
{
-
uint i;
-
uchar j;
-
bit testb;
-
for(j=1;j<=8;j++)
-
{
-
testb=dat&0x01;
-
dat=dat>>1;
-
if(testb)
-
{
-
DS=0;
-
i++;i++;
-
DS=1;
-
i=8;while(i>0)i--;
-
}
-
else
-
{
-
DS=0;
-
i=8;while(i>0)i--;
-
DS=1;
-
i++;i++;
-
}
-
}
-
}
-
-
void tmpchange(void)
-
{
-
dsreset();
-
delay_ms(1);
-
tmpwritebyte(0xcc);
-
tmpwritebyte(0x44);
-
}
-
-
uint tmp()
-
{
-
float tt;
-
uchar a,b;
-
dsreset();
-
delay_ms(1);
-
tmpwritebyte(0xcc);
-
tmpwritebyte(0xbe);
-
a=tmpread();
-
b=tmpread();
-
temp=b;
-
temp<<=8;
-
temp=temp|a;
-
tt=temp*0.0625;
-
temp=tt*10+0.5;
-
return temp;
-
}
-
-
-
/***************ds end*******************/
-
-
/***************12864 begin*******************/
-
-
void lcd_init()
-
{
-
lcdpsb=1;/*并行方式*/
-
write_cmd(0x30);
-
delay_ms(5);
-
write_cmd(0x0c);
-
delay_ms(5);
-
write_cmd(0x01);/*清除*/
-
delay_ms(5);
-
}
-
-
void lcd_pos(uchar x,uchar y)
-
{
-
uchar pos;
-
if(x==0)
-
x=0x80;
-
else if(x==1)
-
x=0x90;
-
else if(x==2)
-
x=0x88;
-
else if(x==3)
-
x=0x98;
-
pos=x+y;
-
write_cmd(pos);
-
}
-
-
void write_cmd(uchar cmd)
-
{
-
lcdrs=0;
-
lcdrw=0;
-
lcden=0;
-
P0=cmd;
-
delay_ms(5);
-
lcden=1;
-
delay_ms(5);
-
lcden=0;
-
}
-
-
void write_dat(uchar dat)
-
{
-
lcdrs=1;
-
lcdrw=0;
-
lcden=0;
-
P0=dat;
-
delay_ms(5);
-
lcden=1;
-
delay_ms(5);
-
lcden=0;
-
}
-
-
/**************12864 end******************************/
-
-
void delay_ms(uint del)
-
{
-
uint i;
-
for(;del>0;del--)
-
for(i=124;i>0;i--);
- }