⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcdguo.c

📁 ds18b20和1602液晶显示
💻 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 + -