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

📄 lcd.c

📁 这是电池检测仪的程序
💻 C
📖 第 1 页 / 共 5 页
字号:

#define LCDLIGHT_ON() 	{DDRG|=0X08;PORTG|=0X08;} 	//开LCD背光
#define LCDLIGHT_OFF()  {DDRG|=0X08;PORTG&=0XF7;}	//关LCD背光

#define LCDBCOLOR	0X03							//定义背景色为蓝色   
#define LCDFTCOLOR	0X20							//定义字体颜色为黑色    
#define LCDFW1COLOR	0XE0							///定义边框颜色及按钮颜色为红色
#define LCDFW2COLOR	0XE3							//定义不可触摸按钮颜色为紫色       
#define LCDFSCOLOR	0XFC							//定义选择颜色为黄色




static unsigned char lcd_bcolor@0x8005;
static unsigned char lcd_fcolor@0x8004;  
static unsigned char lcd_data@0x8006;  
static unsigned char lcd_psw@0x8007;
static unsigned char lcd_xaddrl@0x8000;
static unsigned char lcd_xaddrh@0x8001;
static unsigned char lcd_yaddrl@0x8002;
static unsigned char lcd_yaddrh@0x8003;
                                               
      
eeprom unsigned char erl=1;			//功率时间界面通道选择寄存器    1=R 2=L
eeprom unsigned char en=0;			//功率时间当前编号
eeprom unsigned char epl[20][5];       		//左通道功率值
eeprom unsigned char epr[20][5];                    //右通道功率值
eeprom unsigned int etl[20][7];			//左通道时间值
eeprom unsigned int etr[20][7];                     //右通道时间值  
eeprom unsigned char eyq[20]; 			//左通道氩气时间
eeprom unsigned char elq[20];                      //左通道冷却时间
eeprom unsigned char eks[20][5]; 		//开始时间
eeprom unsigned char ejs[20][5];                    	//结束时间    
eeprom unsigned long int  esc=999;			//试用次数
eeprom unsigned char eqy=120;			//起升电压	
eeprom unsigned long int eyqc=100;			//延期次数			
eeprom unsigned long int esyc=0;			//本机使用次数
eeprom unsigned long int ebbh=11;			//软件版本号   
eeprom unsigned long int eyqmm;  							//延期密码
eeprom unsigned long int esymm;                            //使用密码
eeprom unsigned long int eycmm=123456;                            //原厂密码
eeprom unsigned long int exgmm=123456;
eeprom unsigned char esymm_en=0;


eeprom unsigned char eksset[5]={1,2,4,8,16};
eeprom unsigned char ejsset[5]={1,2,4,8,16}; 
eeprom unsigned char esd=2;				//单双头标志

unsigned char rn;									//数据存储界,提取界面用临时存储序号  
unsigned char rset[5];   			//控制界面用临时SET值     
unsigned char rks[5]; 				//控制界面用临时开始时间
unsigned char rjs[5];              		//控制界面用临时结束时间
unsigned char rks_number;        		//控制界面设置开始时间用序号
unsigned char rjs_number;    			//控制界面设置结束时间用序号
unsigned char picture_number;   		//当前界面编号
unsigned char picture_number_bak; 		//上次界面编号      
unsigned char rt_number;			//p/t曲线界面时间设置计数器		
unsigned char rp_number;			//p/t曲线界面功率设置计数器	 
unsigned char rp[2];				//功率调整界面用临时存储器		
unsigned char rp_count;				//功率调整用计数器	 
unsigned char rp_ad;				//功率增加减少标志寄存器			
unsigned char rt[3];				//时间调整界面用临时存储器
unsigned char rt_count;				//时间调整界面用计数器
unsigned char rkj;				//开始时间结束时间选择寄存器		
unsigned char rdk[6];				//数字软键盘用临时存储器     
unsigned char rdk1[6];				//数字软键盘用临时存储器     
unsigned char rdk_count;			//数字软键盘用计数器
unsigned char rdk_mcount;			//数字软键盘中输入最大个数					
unsigned char rdl_number;			//登录界面用序号
unsigned char login_timer;			//登录用按键超时定时器      

unsigned long int  rsc;			//试用次数
unsigned char rqy;			//起升电压	
unsigned long int ryqc;			//延期次数			
unsigned long int rsyc;			//本机使用次数
unsigned long int rbbh;			//软件版本号
unsigned long int ryqmm;  							//延期密码
unsigned long int rsymm;                            //使用密码
unsigned long int rycmm;                            //原厂密码
unsigned char rsd;     
unsigned long int rxgmm; 
unsigned char rcc_number;  
unsigned char rcc_state;

unsigned char rycmm_en;
unsigned char ryqmm_en;




unsigned char rksset[5],rjsset[5];
unsigned char ksjs;      

/***********************************************************************
					         数字显示程序
***********************************************************************/                        
unsigned char flash * number(unsigned char a){     
unsigned char flash  *p;
 	if(a>=20){
  		switch(a-20){
   			case 0:
    		        	p=n10_2;   	
    		        	break;
   			case 1:
    		        	p=n1_2;
    		        	break;	
   			case 2:
   				p=n2_2;
   				break;	
   			case 3:
  				p=n3_2;
  				break;	
  			case 4:
  				p=n4_2;
  				break;	            
  			case 5:
 				p=n5_2;
 				break;	   			
   			case 6:
    		        	p=n6_2;
       		        	break;	   			
   			case 7:
    		        	p=n7_2;
    		        	break;	   			
   			case 8:
    		        	p=n8_2;
    		        	break;	   						
   			case 9:
    		        	p=n9_2;
    		        	break;
   		}  
	}			   					
   	else{
    	switch(a){
			case 0:
		 		p=n10;
		   		break;
			case 1:
		        	p=n1;
				break;	
			case 2:
		        	p=n2;
		   		break;	
			case 3:
		        	p=n3;
				break;	
			case 4:
		        	p=n4;
				break;	            
			case 5:
		        	p=n5;
		   		break;	   			
			case 6:
		        	p=n6;
				break;	   			
	   		case 7:
		        	p=n7;
		   		break;	   			
	   		case 8:
		        	p=n8;
		   		break;	   						
			case 9:
		        	p=n9;
				break;
	   		case 10:
		        	p=o7;
				break;	   						
	   		case 11:
		        	p=o8;
		   		break; 
		   	case 12:
		        	p=o10;
		   		break; 	
		   	case 13:
		    	        p=o11;
		   		break; 						   						
   		}       
   	}
	return(p);    
	
 }
     
void com1_draw(unsigned int xstart,unsigned int ystart,unsigned int xstop){
unsigned int i;
    lcd_yaddrl=ystart; 
	lcd_yaddrh=ystart>>8; 	 
	lcd_xaddrl=xstart;  
	lcd_xaddrh=xstart>>8;   
 	for(i=0;i<((xstop-xstart)/8);i++){
   	lcd_data=0xff;  
 	} 
 	   
void com2_draw(unsigned int xstart,unsigned int ystart,unsigned int ystop){
unsigned int i;
    lcd_yaddrl=start_y;  
 	lcd_yaddrh=(start_y>>8);
 	lcd_xaddrl=start_x;  
 	lcd_xaddrh=(start_x>>8);               
 	for(i=0;i<(stop_y-start_y);i++){
  	lcd_data=color; 
 	}   	
 	} 
void draw(unsigned int start_x,unsigned int start_y,unsigned int stop_x,
unsigned int stop_y,unsigned char color){
 	unsigned int i,j;      
 	
 	lcd_psw=0x06;
 	lcd_fcolor=color;  
 	lcd_bcolor=0x00; 
    com1(start_x,start_y,stop_x);
    com1(start_x,start_y+1,stop_x);
    com1(start_x,stop_y,stop_x);
    com1(start_x,stop_y-1,stop_x);
   
  	lcd_psw=8;
  	com2(start_x,start_y,stop_y);
  	com2(start_x+1,start_y,stop_y);
  	com2(start_x,start_y,stop_y);
  	com2(stop_x,start_y,stop_y);
  	com2(stop_x-1,start_y,stop_y);
}   

/*********************************************************************************
                                 LCD清屏程序
入口参数:
color:LCD清屏颜色 
*********************************************************************************/
void lcd_cls(unsigned char color){
 	unsigned int x,y;  								//行列计数器     
 	
  	lcd_bcolor=0x00;
 	lcd_psw=0x06;  
	lcd_fcolor=color; 
 	for(x=0;x<480;x++){  
 		lcd_yaddrl=x; 
 		lcd_yaddrh=x>>8; 	 
   		lcd_xaddrl=00;  
	 	lcd_xaddrh=00;   
   		y=0;
  		while(y<100){ 
  			lcd_data=0xff;  
   			y++;
  			}
 		}    
 		    
}

/*************************************************************************************
									LCD汉字写入程序
入口参数:
xaddr:横向首地址
yaddr:纵向首地址
number:字号,只能是8的倍数,如8代表8×8的点阵
bcolor:字体背景颜色   
fcolor:字体前景颜色   
word_data:字模数据首地址
*************************************************************************************/ 
void write_word(unsigned int xaddr, unsigned int yaddr,unsigned int width,unsigned int high,
unsigned char bcolor,unsigned char fcolor,unsigned char flash *word_data){
	unsigned int x=0,y=0;				//行列计数器
	
	lcd_psw=0x06;       					//设置写入方式  
	lcd_bcolor=bcolor;                        	//LCD背景色   	       
 	lcd_fcolor=fcolor;                              //LCD前景色
 	for(y=0;y<high;y++){        			//在相应位置写入数据
 		lcd_yaddrl=y+yaddr; 
 		lcd_yaddrh=(y+yaddr)>>8; 	 
   		lcd_xaddrl=xaddr;  
	 	lcd_xaddrh=(xaddr>>8);   
   		x=0;    
 		while(x<(width/8)){ 
  			lcd_data=*word_data;    		//写入字模数据
  			word_data++;
   			x++;
  			}
 		}    

} 

/************************************************************************************
				画线程序
入口参数:
start_x:横向起始点,起始时间
stop_x:横向结束点,结束时间
start_y:纵向起始点,开始百分比
stop_y:纵向结束点,结束百分比
注意:start_x-stop_x不能大于正负100,start_y-stop_y不能大于正负100  
绘图区域起始坐标:x:152,656 y:36,256
绘图区域:x:500,y:200
************************************************************************************/
void draw_line(unsigned int start_x,unsigned int start_y,unsigned int stop_x,
unsigned int stop_y,unsigned char color){ 
	unsigned int a=0;  								//X坐标差值
	signed int	b=0;								//Y坐标差值   
	unsigned int x=0,x1=0,y=0;                      //临时坐标增量

⌨️ 快捷键说明

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