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

📄 1602s51.h

📁 这是一个多点温度测量系统
💻 H
字号:
/*--------------------------------------------------------------------------
1602S51.H

Header file for the low voltage Flash Atmel AT89C52 and AT89LV52.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.


--------------------------------------------------------------------------*/

#ifndef __1602S51_H__
#define __1602S51_H__

#define  dataprot  P0
sbit RS=P1^0;
sbit RW=P1^1;
sbit LCDE=P1^2;




wr_com(unsigned char comm);//********写控制字符程序 E=1 RS=0 RW=0**********//
wr_data(unsigned char dat);//*****当前位置写字符子程序:E=1 RS=1 RW=0
void display(unsigned char addr,unsigned char *a,unsigned char c);
unsigned char rd_bf();//*****忙状态检查*******//



//*************delay_ms******************************** 
void delay_10us(unsigned char x)  
{  
  while(x--); 
}  

void delay_ms(unsigned char cnt) 
{ 
    unsigned char i; 
do { 
  i = 4; 
  do { 
   delay_10us(39); 
  } while(--i); 
} while(--cnt); 
} 

//====================================================
//     1602液晶相关


wr_com(unsigned char comm)//********写控制字符程序 E=1 RS=0 RW=0**********//
{                         
		LCDE=0;
		RS=0;             //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。
		RW=0;             //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。
		LCDE=1;
		dataprot=comm;
		RS=0;
		RW=0;
		LCDE=0;
}

wr_data(unsigned char dat)//*****当前位置写字符子程序:E=1 RS=1 RW=0
{
		LCDE=0;
		RS=0;             //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。
		RW=0;             //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。
		RS=1;
		RW=0;
		LCDE=1;
		dataprot=dat;
  		LCDE=0;
		RS=0;
		RW=0;
}


unsigned char rd_bf()//*****忙状态检查*******//
{
		unsigned char i;
		//P0=0xff;
		LCDE=0;
		RS=0;
		RW=0;
		RS=0;
		RW=1;
		LCDE=1;
		i=dataprot;
  		LCDE=0;
	
//		while(i){i=P0_7;}

		return(i);
}
	
void init_LCD()//**********初始化程序,必须按照产品的资料介绍的过程进行********//
{
	wr_com(0x38);   //*****显示模式设置必须三次,不用检测忙信号
	delay_ms(5);
	wr_com(0x38);
	delay_ms(5);
	wr_com(0x38);
	delay_ms(5);

	//rd_bf();
	//delay5ms();
	wr_com(0x01);   ///***清屏****
	delay_ms(5);
	rd_bf();
	delay_ms(5);
	wr_com(0x06);   ///****光标移动设置***
   delay_ms(5);
	rd_bf();
	delay_ms(1);
	wr_com(0x38);   ////***显示模式设置****
	delay_ms(1);
	rd_bf();
    delay_ms(1);
	wr_com(0x0f);   /////***显示开***
    delay_ms(1);
	rd_bf();
	delay_ms(1);
	
	wr_com(0x40);		//set cgram address
	delay_ms(1);
//	rd_bf();
	

}

//---------------------------------------
//名称:显示子程序
//功能:在指定地方显示字符
//入口:a 是指向要显示的数组
//      addr是要显示的地址
//      c 为数组长度
//返回:无
void display(unsigned char addr, unsigned char *a, unsigned char c)  
{
    unsigned char i;
//	if(rd_bf())
	wr_com(addr);
    for(i=0;i<c;i++)
	  {
      	rd_bf();   
	    wr_data(a[i]);
        delay_10us(1);
	  }


	
} 
 
/*
//---------------------------------------------------------------
//功能:数据输出
//输入:str为要显示的数据,X为坐标
void Printf_Number(unsigned char X,unsigned long Temp)
	{
		
	 	unsigned char i = 8;
	    char vec[9];
	    char *ptr=vec; 
	    vec[i]  = 0;         
	    do
		{
	        vec[--i] = Temp%10 + '0';
	        Temp /= 10;
	    }
		while (Temp!=0);

	    ptr=ptr+i;

	    wr_com(X);
		while((*ptr) != '\0')	
		{
		//	wr_lcd (dat, *ptr);

			rd_bf();   
	        wr_data(*ptr);
			ptr ++;
			delay_10us(2);
		}
	}


*/
/*
//---------------------------------------------------------------
//功能:数据输出
//输入:str为要显示的数据,X为坐标
void Printf_Number_float(unsigned char X,float Temp,char unito)
	{
		
	 	unsigned char i = 0;
	//    unsigned int t;
	    char vec[9];
	    char *ptr=vec; 
		Temp*=10;   //有一位小数
		//t=Temp;
	    vec[i]  = 0;         
	vec[0]= t/10000000+'0';
	vec[1]=(t/1000000)%10+'0';
	vec[2]=(t/100000)%10+'0';
	vec[3]=(t/10000)%10+'0';
	vec[4]=(t/1000)%10+'0';
	vec[5]=(t/100)%10+'0';
	vec[6]='.'-'0';
	vec[7]=(t/10)%10+'0';
	vec[8]= unito;

	for(i=0; vec[i]=='0'&&i<=8; i++);	  //清除前导零
	    
		ptr=ptr+i;

	    wr_com(X);
		while((*ptr) != '\0')	
		{
		//	wr_lcd (dat, *ptr);

			rd_bf();   
	        wr_data(*ptr);
			ptr ++;
			delay_10us(2);
		}
	}


*/

#endif


⌨️ 快捷键说明

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