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

📄 lcdsub.c

📁 2407嵌入式系统程序(c语言)
💻 C
📖 第 1 页 / 共 3 页
字号:
#include "f2407_c.h"
#include "Delay.h"
#include  "zimo.h" 
#include "global.h"
#include "lcdsub.h"
#include  "memcpy.h"
void LCD_INITIAL(void)
{	SUBMEAU2FLAG=0x0000;/*the second submeau2 flag*/
	SUBMEAU3FLAG=0x0000;
	SUBMEAU4FLAG=0x0000;
	MAINMEAUFLAG=0x0000;
	LCD_ORDER('A',0xFF3F); 
	LCD_ORDER('B',0xFF3F);
	LCD_ORDER('C',0xFF3F);
}
void LCD_BUSY(char LCD_PART)
{	int	i=1; 
	switch(LCD_PART)
		{	case'A':*PBDATDIR=*PBDATDIR&0x0FF;
					*PADATDIR=0xFF18;
					while(i)
						{	Delay24uS();
							i=*PBDATDIR&0x0080;
						} 
					*PADATDIR=0xFF00;
					Delay12uS();
					break;		
			case'B':
						*PBDATDIR=*PBDATDIR&0x0FF;
							*PADATDIR=0xFF98;
							while(i)
								{	Delay24uS();
									i=*PBDATDIR&0x0080;
								} 
							*PADATDIR=0xFF00;
							Delay12uS();
						 
						break;
					
			case'C':
						*PBDATDIR=*PBDATDIR&0x0FF;
							*PADATDIR=0xFF58;
							while(i)
								{	Delay24uS();
									i=*PBDATDIR&0x0080;
								} 
							*PADATDIR=0xFF00;
							Delay12uS();
						
						break;
					
			default:break;
		}
}											


void LCD_ORDER(char LCD_PART,int command)
{	int	i=command; 
	switch(LCD_PART)
		{	case'A':
						*PADATDIR=0xFF08;
							Delay24uS();
							*PBDATDIR=i;
							Delay24uS(); 
							*PADATDIR=0xFF00;
							Delay24uS();
							LCD_BUSY('A');
						
						break;
					
			case'B':
						*PADATDIR=0xFF88;
							Delay24uS();
							*PBDATDIR=i;
							Delay24uS(); 
							*PADATDIR=0xFF80;
							Delay24uS();
							LCD_BUSY('B');
						
						break;
					 
			case'C':
						*PADATDIR=0xFF48;
							Delay24uS();
							*PBDATDIR=i;
							Delay24uS(); 
							*PADATDIR=0xFF40;
							Delay24uS();
							LCD_BUSY('C');
					
						break;
					
			default:break;
		}
}				

void LCD_WRITE(char LCD_PART,int LCD_WORD)
{	int	i=LCD_WORD; 
	switch(LCD_PART)
		{	case 'A':
						*PADATDIR=0xFF28;
							Delay12uS();
							*PBDATDIR=i;
							Delay24uS();
							Delay24uS(); 
							*PADATDIR=0xFF20;
							Delay24uS();
							Delay24uS();
							LCD_BUSY('A');
							LCD_ORDER('A',0xFF3F);
						
						break;
					
			case 'B':
						*PADATDIR=0xFFA8;
							Delay12uS();
							*PBDATDIR=i;
							Delay24uS();
							Delay24uS(); 
							*PADATDIR=0xFFA0;
							Delay24uS();
							Delay24uS();
							LCD_BUSY('B');
							LCD_ORDER('B',0xFF3F);
						
						break;
					
			case 'C':
						*PADATDIR=0xFF68;
							Delay12uS();
							*PBDATDIR=i;
							Delay24uS();
							Delay24uS(); 
							*PADATDIR=0xFF60;
							Delay24uS();
							Delay24uS();
							LCD_BUSY('C');
							LCD_ORDER('C',0xFF3F);
						
						break;
					
			default:	break;
		}
}
			

void LCD_1616(char LCD_PART,const int *HANZI_START,int LCD_PAGE,int LCD_COLUMN)
{  	
	int hanzi[16];
	pdmemcpy((void *)hanzi, (void *)HANZI_START, 16);
	switch(LCD_PART)
		{	case'A':
					LCD_ORDER('A',LCD_PAGE);
	      				LCD_ORDER('A',LCD_COLUMN);
	 					LCD_HANZI('A',hanzi);
	 					LCD_PAGE=LCD_PAGE-1;
	 					LCD_ORDER('A',LCD_PAGE);
	 					LCD_ORDER('A',LCD_COLUMN);
	 					LCD_HANZI('A',hanzi+8);
	 				break;
	 		case'B':
					LCD_ORDER('B',LCD_PAGE);
	      				LCD_ORDER('B',LCD_COLUMN);
	 					LCD_HANZI('B',hanzi);
	 					LCD_PAGE=LCD_PAGE-1;
	 					LCD_ORDER('B',LCD_PAGE);
	 					LCD_ORDER('B',LCD_COLUMN);
	 					LCD_HANZI('B',hanzi+8);
	 				break;
	 		case'C':
					LCD_ORDER('C',LCD_PAGE);
	      				LCD_ORDER('C',LCD_COLUMN);
	 					LCD_HANZI('C',hanzi);
	 					LCD_PAGE=LCD_PAGE-1;
	 					LCD_ORDER('C',LCD_PAGE);
	 					LCD_ORDER('C',LCD_COLUMN);
	 					LCD_HANZI('C',hanzi+8);
	 				break;	 
	 		default:break;
	 	}
}
void LCD_1616CON(char LCD_PART,const int *HANZI_START,int LCD_PAGE,int LCD_COLUMN)
{  	
	switch(LCD_PART)
		{	case'A':
					LCD_ORDER('A',LCD_PAGE);
	      				LCD_ORDER('A',LCD_COLUMN);
	 					LCD_HANZI('A',HANZI_START);
	 					LCD_PAGE=LCD_PAGE-1;
	 					LCD_ORDER('A',LCD_PAGE);
	 					LCD_ORDER('A',LCD_COLUMN);
	 					LCD_HANZI('A',HANZI_START+8);
	 				break;
	 		case'B':
					LCD_ORDER('B',LCD_PAGE);
	      				LCD_ORDER('B',LCD_COLUMN);
	 					LCD_HANZI('B',HANZI_START);
	 					LCD_PAGE=LCD_PAGE-1;
	 					LCD_ORDER('B',LCD_PAGE);
	 					LCD_ORDER('B',LCD_COLUMN);
	 					LCD_HANZI('B',HANZI_START+8);
	 				break;
	 		case'C':
					LCD_ORDER('C',LCD_PAGE);
	      				LCD_ORDER('C',LCD_COLUMN);
	 					LCD_HANZI('C',HANZI_START);
	 					LCD_PAGE=LCD_PAGE-1;
	 					LCD_ORDER('C',LCD_PAGE);
	 					LCD_ORDER('C',LCD_COLUMN);
	 					LCD_HANZI('C',HANZI_START+8);
	 				break;	 
	 		default:break;
	 	}
}
void LCD_NUM88(char LCD_PART,const int *HANZI_START,int LCD_PAGE,int LCD_COLUMN)
{  	
	int hanzi[8];
	pdmemcpy((void *)hanzi, (void *)HANZI_START, 8);
	switch(LCD_PART)
		{	case'A':
					LCD_ORDER('A',LCD_PAGE);
	      				LCD_ORDER('A',LCD_COLUMN);
	 					LCD_NUMHANZI('A',hanzi);
	 					LCD_PAGE=LCD_PAGE-1;
	 					LCD_ORDER('A',LCD_PAGE);
	 					LCD_ORDER('A',LCD_COLUMN);
	 					LCD_NUMHANZI('A',hanzi+4);
	 				break;
	 		case'B':
					LCD_ORDER('B',LCD_PAGE);
	      				LCD_ORDER('B',LCD_COLUMN);
	 					LCD_NUMHANZI('B',hanzi);
	 					LCD_PAGE=LCD_PAGE-1;
	 					LCD_ORDER('B',LCD_PAGE);
	 					LCD_ORDER('B',LCD_COLUMN);
	 					LCD_NUMHANZI('B',hanzi+4);
	 				break;
	 		case'C':
					LCD_ORDER('C',LCD_PAGE);
	      				LCD_ORDER('C',LCD_COLUMN);
	 					LCD_NUMHANZI('C',hanzi);
	 					LCD_PAGE=LCD_PAGE-1;
	 					LCD_ORDER('C',LCD_PAGE);
	 					LCD_ORDER('C',LCD_COLUMN);
	 					LCD_NUMHANZI('C',hanzi+4);
	 				break;	 
	 		default:break;
	 	}
}
void	HAND_PINNUM(int pin_num)           /******************/
{ 	int one_pin,ten_pin,hundred_pin;
	hundred_pin=pin_num/100;
	ten_pin=(pin_num-100*hundred_pin)/10;
	one_pin=pin_num%10;
	LCD_NUM88('B',HANZI_NUMBER+hundred_pin*8,0xFFBD,0xFF78);
	LCD_NUM88('C',HANZI_NUMBER+ten_pin*8,0xFFBD,0xFF40);
	LCD_NUM88('C',HANZI_NUMBER+one_pin*8,0xFFBD,0xFF48);	
}
void   LCD_GLOVETYPE(argument1,argument2,argument3,argument4,argument5,argument6,argument7,argument8)
{
	int one_pin,ten_pin;
	ten_pin=argument1/10;
	one_pin=argument1%10;
	LCD_NUM88('A',HANZI_NUMBER+ten_pin*8,0xFFBB,0xFF58);
	LCD_NUM88('A',HANZI_NUMBER+one_pin*8,0xFFBB,0xFF60);
	ten_pin=argument2/10;
	one_pin=argument2%10;
	LCD_NUM88('B',HANZI_NUMBER+ten_pin*8,0xFFBB,0xFF58);
	LCD_NUM88('B',HANZI_NUMBER+one_pin*8,0xFFBB,0xFF60);
	ten_pin=argument3/10;
	one_pin=argument3%10;
	LCD_NUM88('C',HANZI_NUMBER+ten_pin*8,0xFFBB,0xFF58);
	LCD_NUM88('C',HANZI_NUMBER+one_pin*8,0xFFBB,0xFF60);
	ten_pin=argument4/10;
	one_pin=argument4%10;
	LCD_NUM88('A',HANZI_NUMBER+ten_pin*8,0xFFBD,0xFF58);
	LCD_NUM88('A',HANZI_NUMBER+one_pin*8,0xFFBD,0xFF60);
	ten_pin=argument5/10;
	one_pin=argument5%10;
	LCD_NUM88('B',HANZI_NUMBER+ten_pin*8,0xFFBD,0xFF58);
	LCD_NUM88('B',HANZI_NUMBER+one_pin*8,0xFFBD,0xFF60);
	ten_pin=argument6/10;
	one_pin=argument6%10;
	LCD_NUM88('C',HANZI_NUMBER+ten_pin*8,0xFFBD,0xFF58);
	LCD_NUM88('C',HANZI_NUMBER+one_pin*8,0xFFBD,0xFF60);
	ten_pin=argument7/10;
	one_pin=argument7%10;
	LCD_NUM88('A',HANZI_NUMBER+ten_pin*8,0xFFBF,0xFF58);
	LCD_NUM88('A',HANZI_NUMBER+one_pin*8,0xFFBF,0xFF60);
	ten_pin=argument8/10;
	one_pin=argument8%10;
	LCD_NUM88('B',HANZI_NUMBER+ten_pin*8,0xFFBF,0xFF58);
	LCD_NUM88('B',HANZI_NUMBER+one_pin*8,0xFFBF,0xFF60);
}           

void LCD_HANZI(char LCD_PART,const int *HANZI_ADD)
{	
	/*int hanzi[32];*/
	int i;
	int k;
	int j;
	/*pdmemcpy((void *)hanzi, (void *)HANZI_ADD, 32);*/
	switch(LCD_PART)
		{	case'A':
				for(i=0;i<8;i++)
				{	j=*(HANZI_ADD+i);
					k=(j>>8)|0xFF00;
					LCD_WRITE('A',k);
					k=j|0xFF00;
					LCD_WRITE('A',k);
				}
				break;
			case'B':
				for(i=0;i<8;i++)
				{	j=*(HANZI_ADD+i);
					k=(j>>8)|0xFF00;
					LCD_WRITE('B',k);
					k=j|0xFF00;
					LCD_WRITE('B',k);
				}
				break;
			case'C':
				for(i=0;i<8;i++)
				{	j=*(HANZI_ADD+i);
					k=(j>>8)|0xFF00;
					LCD_WRITE('C',k);
					k=j|0xFF00;
					LCD_WRITE('C',k);
				}
				break;
			default:break;
		}				
} 
void LCD_NUMHANZI(char LCD_PART,const int *HANZI_ADD)
{	
	int i;
	int k;
	int j;
	switch(LCD_PART)
		{	case'A':
				for(i=0;i<4;i++)
				{	j=*(HANZI_ADD+i);
					k=(j>>8)|0xFF00;
					LCD_WRITE('A',k);
					k=j|0xFF00;
					LCD_WRITE('A',k);
				}
				break;
			case'B':
				for(i=0;i<4;i++)
				{	j=*(HANZI_ADD+i);
					k=(j>>8)|0xFF00;
					LCD_WRITE('B',k);
					k=j|0xFF00;
					LCD_WRITE('B',k);
				}
				break;
			case'C':
				for(i=0;i<4;i++)
				{	j=*(HANZI_ADD+i);
					k=(j>>8)|0xFF00;
					LCD_WRITE('C',k);
					k=j|0xFF00;
					LCD_WRITE('C',k);
				}
				break;
			default:break;
		}
}				
void LCD_HANZIHALF(char LCD_PART,const int *HANZI_ADD)
{	
	int hanzi[32];
	int i;
	int j;
	int k;
	pdmemcpy((void *)hanzi, (void *)HANZI_ADD, 32);
	switch(LCD_PART)
		{	case'A':
				for(i=0;i<4;i++)
				{	j=*(hanzi+i);
					k=(j>>8)|0xFF00;
					LCD_WRITE('A',k);
					k=j|0xFF00;
					LCD_WRITE('A',k);
				}
				break;
			
			case'B':
				for(i=0;i<4;i++)
				{	j=*(hanzi+i);
					k=(j>>8)|0xFF00;
					LCD_WRITE('B',k);
					k=j|0xFF00;
					LCD_WRITE('B',k);
				}
				break;
			
			case'C':
				for(i=0;i<4;i++)
				{	j=*(hanzi+i);
					k=(j>>8)|0xFF00;
					LCD_WRITE('C',k);
					k=j|0xFF00;
					LCD_WRITE('C',k);
				}
				break;
			default:break;
		}
}
void LCD_HANZIHALFCON(char LCD_PART,const int *HANZI_ADD)
{	
	int i;
	int j;
	int k;
	switch(LCD_PART)
		{	case'A':
				for(i=0;i<4;i++)
				{	j=*(HANZI_ADD+i);
					k=(j>>8)|0xFF00;
					LCD_WRITE('A',k);
					k=j|0xFF00;
					LCD_WRITE('A',k);
				}
				break;
			
			case'B':
				for(i=0;i<4;i++)
				{	j=*(HANZI_ADD+i);
					k=(j>>8)|0xFF00;
					LCD_WRITE('B',k);
					k=j|0xFF00;
					LCD_WRITE('B',k);
				}
				break;
			
			case'C':
				for(i=0;i<4;i++)
				{	j=*(HANZI_ADD+i);
					k=(j>>8)|0xFF00;
					LCD_WRITE('C',k);
					k=j|0xFF00;
					LCD_WRITE('C',k);
				}
				break;
			default:break;
		}
}
int *CON_HANZI(int *HANZI_CON,const int *SOURCE_ADD)
{
	int i,j;
	int hanzi_con[16];

⌨️ 快捷键说明

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