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

📄 wdcgq+lcd.c

📁 传感器+128*64LCD,用C语言编写,呵呵,自己写的,水平可能不是太高,但能正确使用,用KEIL C验证通过,供入门者参考,
💻 C
📖 第 1 页 / 共 2 页
字号:
	for(j=8;j>0;j--)
		{
			DQ=0;
			DQ=i&0x01;
			delay_18b20(5);
			DQ=1;
			i=i/2;
		}
   delay_18b20(5);
}

int read_temprature(void)
{
	union
	{
		uchar c[2];
		int	x;
	}temp;
	rest_18b20();
	write_18b20(0xcc);
	write_18b20(0xbe);
	temp.c[1]=read_18b20();
	temp.c[0]=read_18b20();
	rest_18b20();
	write_18b20(0xcc);
	write_18b20(0x44);
	return temp.x;
}

void  lcd_lra(int x)
{ switch (x)
  {
    case 1:lcd_cs1=1;lcd_cs2=0;break;  
 	case 2:lcd_cs1=0;lcd_cs2=1;break;
	case 3:lcd_cs1=1;lcd_cs2=1;break;
  }  

}
void decode_word1(int word1)
{
	switch (word1)
  {
    case 1:word_number=_1;break;  
 	case 2:word_number=_2;break;
	case 3:word_number=_3;break;
	case 4:word_number=_4;break;
	case 5:word_number=_5;break;
	case 6:word_number=_6;break;
	case 7:word_number=_7;break;
	case 8:word_number=_8;break;
	case 9:word_number=_9;break;
	case 0:word_number=_0;break;
//	default:word_number=GTH;break;
  }  
}
send_i(uint s)
{ lcd_di=lcd_rw=0;
   lcd_e=1;P0=s;_nop_();lcd_e=0;
}

send_d(uint s)
{ lcd_rw=0;lcd_di=1;
  lcd_e=1;P0=s;_nop_();lcd_e=0;
}

lcd_disp_pic( uchar *pic,int lr)
{ uchar z,x,j;
   x=0xb8;
	for(z=1;z<=8;z++)
	{  send_i(x); send_i(0x40);
       lcd_lra(lr);
	  for(j=1;j<=64;j++)
	   { 
	    send_d(*pic);pic++;
	   }
	   x++;
	}
}
lcd_disp_maxpic(uchar *pic)
{
  uchar z,x,j;
   x=0xb8;
	for(z=1;z<=8;z++)
	{  send_i(x); send_i(0x40);
	  for(j=1;j<=128;j++)
	   { if(j>64)lcd_lra(2);
	   		else lcd_lra(1);
   		 send_d(*pic);pic++;
	   }
	  x++;
	  	lcd_lra(3);
	}

}
lcd_disp_word(int n,uchar *word,int x,int y,int lr)
{ uchar m,j;
       lcd_lra(lr);
   for(m=1;m<=2;m++)
	{  send_i(x); send_i(y);
	  for(j=1;j<=n;j++)
	   { 
	    send_d(*word);word++;
	   }
	   x++;
	}
}
lcd_disp_number(int word1,int x,int y,int lr)
{ uchar m,j;
       lcd_lra(lr);
   decode_word1(word1);
   for(m=1;m<=2;m++)
	{  send_i(x); send_i(y);
	  for(j=1;j<=8;j++)
	   { 
	    send_d(*word_number);word_number++;
	   }
	   x++;
	}
}
clrscr(int lr)
{uchar i,j,k;i=0xb8;
      lcd_lra(lr);
	  for(j=1;j<=8;j++)
	  {  send_i(i);send_i(0x40);
     	 for(k=1;k<=64;k++)
  		 { send_d(0x00);
  	     }
	    i++;
      }
}

void dir_temprature(int word1,uchar x,uchar y,uchar lr)///////////显示温度
{
	int a,b,c,d,e;
	uchar	f,ff=0;
	if(word1<0)
	 {
 		word1=~word1+1;

	//	word1 |=0x8000;
		ff=1;
	 }
	 else{ff=0;}
		a=word1/16;	//整数部分
		f=word1%16;	//余数
	    b=a/100;	//百位
		a%=100;
		c=a/10;		//十位
		d=a%10;		//个位
		f=(f*10)/16;
		e=f	;		//小数第一位
	if(ff)
	lcd_disp_word(EN,inv,x,y,lr);
	else
	lcd_disp_word(EN,noop,x,y,lr);
	lcd_disp_number(b,x,y+=8,lr) ;
	lcd_disp_number(c,x,y+=8,lr) ;
	lcd_disp_number(d,x,y+=8,lr) ;
	lcd_disp_word(EN,XSD,x,y+=8,lr);
	lcd_disp_number(e,x,y+=8,lr);
	lcd_disp_word(CH,SSD,x,y+=8,lr);
}
void dir_settemp(int word1,uchar x,uchar y,uchar lr)
{
	int b,c,d;
		b=word1/100;	//百位
		word1%=100;
		c=word1/10;		//十位
		d=word1%10;		//个位
	if(key_select==1)
    	{
			lcd_disp_word(CH,ico_shou,x,y,lr);	
	    }
	else
		{
			lcd_disp_word(EN,noop,x,y,lr);
			lcd_disp_word(EN,noop,x,y+=8,lr);	
		}
	lcd_disp_word(CH,noop,x,y+=8,lr);
	lcd_disp_number(b,x,y+=8,lr) ;
	lcd_disp_number(c,x,y+=8,lr) ;
	lcd_disp_number(d,x,y+=8,lr) ;
	lcd_disp_word(CH,SSD,x,y+=8,lr);
}

void dir_time(uint word1,uchar x,uchar y,uchar lr)///////显示时间
{
	uint b,c,d,e;
		b=word1/1000;	//千位
		word1%=1000;
		c=word1/100;		//百位
		word1%=100;
		d=word1/10;		//十位
		e=word1%10;		//个位
	lcd_disp_word(CH,noop,x,y,lr);
	lcd_disp_word(CH,noop,x,y+=8,lr);
	lcd_disp_number(b,x,y+=8,lr) ;
	lcd_disp_number(c,x,y+=8,lr) ;
	lcd_disp_number(d,x,y+=8,lr) ;
	lcd_disp_number(e,x,y+=8,lr);
	lcd_disp_word(CH,miao3,x,y+=8,lr);
}
void string_DQ05ZKZZ()			//电气05自考制作
{

	    	 lcd_disp_number(0,x_1,y_1,lra_r) ;
	 		 delay();
			 lcd_disp_number(5,x_1,y_2,lra_r) ;
			 delay();
	 		 lcd_disp_word(CH,dian4,x_1,y_3,lra_r);
			 delay();
			 lcd_disp_word(CH,qi4,x_1,y_5,lra_r);
			 delay();
			 lcd_disp_word(CH,zi4,x_1,y_7,lra_r);
			 delay();
			 lcd_disp_word(CH,kao3,x_2,y_1,lra_r);
		     delay();
			 lcd_disp_word(CH,zhi4,x_3,y_1,lra_r);
			 delay();
			 lcd_disp_word(CH,zuo4,x_3,y_3,lra_r);
			 delay();
			 lcd_disp_word(EN,GTH,x_4,y_1,lra_r);
			 delay();
			 lcd_disp_word(EN,GTH,x_4,y_3,lra_r);
			 delay();
			 lcd_disp_word(EN,GTH,x_4,y_5,lra_r);
			 delay();
			 lcd_disp_word(EN,GTH,x_4,y_7,lra_r);
			 delay();
	
}

void string_SJWD(uchar x,lr)//实际温度
{
	lcd_disp_word(CH,shi2,x,y_1,lr);
	lcd_disp_word(CH,ji4,x,y_3,lr);
	lcd_disp_word(CH,wen1,x,y_5,lr);
	lcd_disp_word(CH,du4,x,y_7,lr);
}

void string_YSWD(uchar x,lr)//预设温度
{
	lcd_disp_word(CH,yu4,x,y_1,lr);
	lcd_disp_word(CH,she4,x,y_3,lr);
	lcd_disp_word(CH,wen1,x,y_5,lr);
	lcd_disp_word(CH,du4,x,y_7,lr);
}

void string_SWSJ(uchar x,lr)//升温时间
{
	lcd_disp_word(CH,sheng1,x,y_1,lr);
	lcd_disp_word(CH,wen1,x,y_3,lr);
	lcd_disp_word(CH,shii2,x,y_5,lr);
	lcd_disp_word(CH,jian1,x,y_7,lr);
}
void string_WCSJ(uchar x,lr)	//维持时间
{
	lcd_disp_word(CH,wei2,x,y_1,lr);
	lcd_disp_word(CH,chi2,x,y_3,lr);
	lcd_disp_word(CH,shii2,x,y_5,lr);
	lcd_disp_word(CH,jian1,x,y_7,lr);
}
void lcd_inti(void)
{
    lcd_led = 0;
	send_i(lcd_on_dir);
}

void dir_work(void)	reentrant
{
	 //clrscr(lra_a);
	 EA=0;
	 string_SJWD(x_1,lra_l);//实际温度	
	 dir_temprature(fact_temprature,x_1,y_1,lra_r);//实际温度
	 string_YSWD(x_2,lra_l);//预设温度
	 dir_settemp(set_temprature,x_2,y_1,lra_r);//预设温度
	 string_SWSJ(x_3,lra_l);//升温时间
	 dir_time(up_time,x_3,y_1,lra_r);//升温时间
	 string_WCSJ(x_4,lra_l);//维持时间
	 dir_time(keep_time,x_4,y_1,lra_r);//维持时间
 	 EA=1;
}

void send_comm(void)
{
	uchar i;
		for(i=0;i<3;i++)
			{
				SBUF = comm_out[i];
				while(TI==0);
				TI=0;
			}
}
void int_0() interrupt 0 using 0
{	
	if(~key_set)
		{
			send_comm();
		}
	if(~key_up)
		{	if(set_temprature<125)
		    	set_temprature++;
		}
	if(~key_down)
		{	
			if(set_temprature>0)
			set_temprature--;

		}

}

void COMM() interrupt 4 using 0
{
	if(RI)	
	{
	 up_time = SBUF;
		RI=0;
	}
}

void Intcomm ()							/*初始串行函数*/
{  	TMOD=0x20;							/*定时器方式2*/
	TL1=0xfd;TH1=0xfd;					/*9600波特率*/
	SCON=0x50;//PCON=0x80;				/*方式1,加被波特率*/
	TR1=1;ES=1;EA=1;					/*可以接收,开串口中断,开中断*/
	RI=0;TI=0;							
}
main()
{ 	
	fan = relay = 1;
	set_temprature=up_time=keep_time=0;
	lcd_inti();		
 	Intcomm ();
     clrscr(lra_a);
	 EX0 = 1;
	 IT0 = 1;	
	 EA	= 1;
	 //lcd_disp_pic(bmp_1,lra_l);
	 //string_DQ05ZKZZ();
	 //dir_work();
	 while(1)
	 {
	 fact_temprature=read_temprature();
	 dir_work();
	 }
}





/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*	lcd_inti();
while(1)
    { 
	  	     lcd_disp_pic(Bmp1,lra_l);
			 delay();
			 lcd_disp_number(0,x_1,y_1,lra_r) ;
		   	lcd_disp_word(CH,piao,x_1,y_1,lra_r);
			 delay();
			 lcd_disp_word(CH,liang,x_1,y_3,lra_r);
			 delay();
			 lcd_disp_word(CH,nv,x_1,y_5,lra_r);
			 delay();
			 lcd_disp_word(CH,hai,x_1,y_7,lra_r);
		     delay();
			 lcd_disp_word(CH,kan,x_2,y_1,lra_r);
			 delay();
			 lcd_disp_word(CH,guo,x_2,y_3,lra_r);
			 delay();
			 lcd_disp_word(CH,lai,x_2,y_5,lra_r);
			 delay();
			 lcd_disp_word(CH,Bmpgth,x_2,y_7,lra_r);
			 delay();
			 lcd_disp_word(32,Bmp2,x_3,y_3,lra_r);
	   		 delay();
			 lcd_disp_word(CH,Bmpgth,x_3,y_7,lra_r);
			 delay();delay();
                 clrscr(lra_r);
	}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -