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

📄 cmd.c

📁 瑞萨单片机开发软代码.非常实用小巧的平台,很多应用都可以在上面实现.
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "sci.h"
#include "private_cmd.h"
//extern const unsigned short pic[128*128];
//extern const unsigned short pic1[128*128];
//extern const unsigned short pic2[128*128];
//extern const unsigned short pic3[128*128];
//extern const unsigned short pic4[128*128];
//extern const unsigned short pic5[128*128];
//extern const unsigned short pic6[128*128];
//extern const unsigned short pic7[128*128];
//extern const unsigned short pic8[128*128];
//#define DEBUG
extern void WaitTime( unsigned short ms);
void ClearDisp();
void ShowPicture( int fileID, unsigned short LcdWidth, unsigned short LcdHeight );
extern unsigned char g_filecnt, g_FileID,rcvdata;

extern unsigned short* GetImgBuf( int ImgID );
extern int IsExistImgFile( int FileID, unsigned long *FileSize,unsigned short *wWidth, unsigned short *wHeight );
void ShowDemoPicture( unsigned short* buf, int lcd_width, int lcd_height, int img_width, int img_height, int other_color );
void DisplayPic(unsigned char p);
unsigned short Rate=2,contrast=56;
unsigned char EvRcv;
unsigned char target_gray;
unsigned short vr;
unsigned short lg_mode;
extern unsigned char debug;  
extern unsigned short NEXTPIC;
void Receive(void)
{
	unsigned char datacomm[6],datarecv[6];
	unsigned char count=0,datahand;
	datahand=MACHINECOMM_RET;
	datacomm[0]=MACHINECOMM_DATAHEAD;
	datacomm[5]=MACHINECOMM_DATAEND;
	datacomm[1]='w';
	datacomm[2]='o';
	datacomm[3]='r';
	datacomm[4]='k';
	while(1)
	{
		if(EvRcv)//如果接收到主机端发送过来的握手信号
		{
			if(rcvdata==MACHINECOMM_OK)
			{
			}	//指示灯闪烁		
			EvRcv=FALSE;
			datarecv[0]=rcvdata;
			SCI_Char(MACHINECOMM_RET);
            count=1;
			break;//退出等待
		}
		//	SCI_Str( "\nData Send:" );(&datahand,1);//返回一个握手信号
		break;
	}
	for(;;){
	while(1)
	{if(EvRcv){
		datarecv[count]=rcvdata;
		count++;
		EvRcv=FALSE;
	    }
	 if(count==5)break;//如果已经收到六个数据,则认为是收到一个数据包
	}//end WHILE LOOP 接收一个数据包
	//if(datarecv[0]==MACHINECOMM_DATAHEAD&&datarecv[5]==MACHINECOMM_DATAEND)
	//	send(datacomm,6);//如果数据包正确,则返回一个数据包;
	SCI_HexB(datarecv[1]);
	SCI_HexB(datarecv[2]);
	SCI_HexB(datarecv[3]);
	SCI_HexB(datarecv[4]);
	}//END FOR LOOP
}
void lcd_out( unsigned short index, unsigned short db )
{
	BUS_INDEX_16 = (unsigned short)index;
	BUS_DATA_16 = (unsigned short)db;	
}

void data_out(unsigned short set_db)
{
#ifdef DEBUG
	SCI_Str( "\nData Send:" );
	SCI_HexS( set_db );
#endif
	BUS_DATA_16 = (unsigned short)set_db;
}

void index_out(unsigned short index)
{
#ifdef DEBUG
	SCI_Str( "\nIndex Send:" );
	SCI_HexS( index );
#endif
	BUS_INDEX_16 = (unsigned short)index;
}

unsigned short read_index( )
{
	unsigned short data;

	data = BUS_INDEX_16;

#ifdef DEBUG
	SCI_Str( "\nIndex Read:" );
	SCI_HexS( data );
#endif
	return data;
}

unsigned short read_data( )
{
	unsigned short data;

//	unsigned short *	
	data = BUS_DATA_16;
#ifdef DEBUG
	SCI_Str( "\nData Read:" );
	SCI_HexS( data );
#endif
	return data;
}

int init_data[28][2]=
{
{0x00,0x0001}, 
{0x01,0x091B},
{0x02,0x0700},
{0x03,0x7030},
{0x04,0x0000},
{0x05,0x0000},
{0x08,0x0202},
{0x09,0x000F},
{0x40,0x0000},
{0x41,0x0000},
{0x42,0xDB00},
{0x43,0x0000},
{0x44,0xAF00},
{0x45,0xDB00},
{0x07,0x0000},
{0x12,0x0000},
{0x13,0x0000},
{0x11,0x0000}, 
{0x12,0x0000},
{0x13,0x151d},  
{0x10,0x6064},  
{0x0b,0x0400}, 
{0x12,0x0013},
{0x13,0x2d18},  
{0x10,0x0040},  
{0x10,0x6060}, 
{0x07,0x0025},  
{0x07,0x0037}
};

int TFT22init_data[38][2]=
{
{0x00,0x0001}, 
{0x01,0x091B},
{0x02,0x0700},
{0x03,0x7030},
{0x04,0x0000},
{0x05,0x0000},
{0x08,0x0202},
{0x09,0x000F},
{0x40,0x0000},
{0x41,0x0000},
{0x42,0xDB00},
{0x43,0x0000},
{0x44,0xAF00},
{0x45,0xDB00},
{0x07,0x0000},
{0x12,0x0000},
{0x13,0x0000},
{0x11,0x0000}, 
{0x12,0x0000},
{0x13,0x151d},  
{0x10,0x6064},  
{0x0b,0x0400}, 
{0x12,0x0010},
{0x13,0x2d10},  
{0x10,0x0040},  
{0x10,0x6060}, 
{0x30,0x0303},
{0x31,0x0303},
{0x32,0x0303},
{0x33,0x0000},
{0x34,0x0303},
{0x35,0x0303},
{0x36,0x0303},
{0x37,0x0000},
{0x38,0x000F},
{0x39,0x000F},
{0x07,0x0025}, 
{0x07,0x0037}
};

void init_lcd()  //hd66789
{
	unsigned short tmp, i,j;


	for( i = 0; i<38 ; i++ )
	{
	index_out( TFT22init_data[i][0]>>8 );
	index_out( TFT22init_data[i][0] );
	data_out(TFT22init_data[i][1]>>8);
	data_out(TFT22init_data[i][1]);

//    	lcd_out( init_data[i][0],init_data[i][1] );
		WaitTime( 100 );
	}
	index_out( 0x00 );
	index_out( 0x21 );
	data_out(0x00);
	data_out(0x00);
//	lcd_out(0x21,0x00);//gate---source
	index_out( 0x00 );
	index_out( 0x22 );
	while(1){
	ALL_ON(0xf800);
	NEXTPIC=1;
	while(NEXTPIC)WaitTime( 500 );
	ALL_ON(0x07e0);
	NEXTPIC=1;
	while(NEXTPIC)WaitTime( 500 );
	ALL_ON(0x001f);
	NEXTPIC=1;
	while(NEXTPIC)WaitTime( 500 );
	ALL_ON(0xffff);
	NEXTPIC=1;
	while(NEXTPIC)WaitTime( 500 );
	ALL_ON(0x0000);
	NEXTPIC=1;
	while(NEXTPIC)WaitTime( 500 );
	}
}

void init_lcd1()
{
	int i;
	for( i = 0; i<28 ; i++ )
		lcd_out( init_data[i][0],init_data[i][1] );

}

void display_on(void)
{
	index_out( R766_DisplayControl );
	data_out( 0x03 );
	WaitTime( 10 );
}

void display_off(void)
{
	index_out(R766_DisplayControl);
	data_out(0x00);
	WaitTime( 10 );
}


void ALL_ON(unsigned short color)
{
	unsigned char i,j;

//	init_lcd();

//	WaitTime( 10 );
	index_out(0x00);
	index_out(0x22);

#if 1
	for(i=0;i<220;i++)
	{
	  	for(j=0;j<176;j++)
	  	{
			data_out(color>>8);
			data_out(color);

	  	}
	}
#endif
}


void green_bar()
{
 	unsigned char i,j;
	int gray=0;

	init_lcd1();

	lcd_out(R766_DisplayControl,	0x0000);
	WaitTime( 10 );

	lcd_out(R766_RAM_AddressSet, TARGET_START_ADDRESS);
	index_out(0x22);

	for(i=1;i<=52;i++)
	{
		gray=96+i*32;

	   	for(j=0;j<128;j++)
	   	{
			data_out(gray);
			data_out(gray);
			data_out(gray);
	   	}
	}

	display_on();
}

void color_bar( unsigned short color )
{
 	unsigned char i,j;
	int gray=0;

	lcd_out(R766_DisplayControl,	0x0000);
	WaitTime( 10 );

	lcd_out(R766_EntryMode, 0x0000|lg_mode);
	lcd_out(R766_RAM_AddressSet, TARGET_START_ADDRESS );
	lcd_out(R766_RAM_WriteMask, 0x0000);

	index_out(0x22);

	for(i=1;i<160;i++)
	{
	   	for(j=0;j<128;j++)
	   	{
			data_out(color);
			data_out(color);
			data_out(color);
	   	}
	}

	display_on();
}



void send_burst(unsigned char index, unsigned short *data, unsigned short length)
{
	BUS_INDEX_16 = (unsigned short)index;
	while(length != 0){
		BUS_DATA_16 = *data;
		length--;
		data++;
	}
}

void show_picture(unsigned short *p, unsigned short xsize, unsigned short ysize, unsigned short offset)
{
	unsigned short i, x_byte;
		                                                                            
	lcd_out(R766_DisplayControl,	0x0000);
	WaitTime( 10 );

	lcd_out(R766_EntryMode, 0x0000|lg_mode);
	lcd_out(R766_RAM_AddressSet, TARGET_START_ADDRESS + offset);
	lcd_out(R766_RAM_WriteMask, 0x0000);
	
	x_byte = xsize;             /* xsize/2 -> xsize*/
	for(i=0; i<ysize; i++){
		if(x_byte <= TARGET_X_DOT_SIZE)         
			send_burst(R766_RAM_Data, p, x_byte); 
		else
			send_burst(R766_RAM_Data, p, TARGET_X_DOT_SIZE);

		p += x_byte;                            
		if(xsize < TARGET_X_BYTE_SIZE ){
			if(i >= TARGET_Y_LINE_SIZE)
				lcd_out(R766_RAM_AddressSet, TARGET_START_ADDRESS - ((i-TARGET_Y_LINE_SIZE)*TARGET_X_BYTE_WIDTH + offset));
			else
				lcd_out(R766_RAM_AddressSet, TARGET_START_ADDRESS - (i*TARGET_X_BYTE_WIDTH + offset));
		}
	}

	display_on();
}

void send_fill(unsigned char index, unsigned short data, unsigned short length)
{
	BUS_INDEX_16 = (unsigned short)index;
	while(length != 0 ){
		BUS_DATA_16 = data;
		length--;
	}
}

void demo_66766( )
{
//		show_picture(Sky1, 128, 160, 0);
//		WaitTime(2000);
          
//		show_picture(Kirin, 176, 220, 0);
//		ShowDemoPicture( pic1, 176,220, 176, 220, cGREEN );
		WaitTime(2000);
}


void disp_pattern(int pattern)
{
	short i, j, k;
	unsigned short col;

	lcd_out(R766_RAM_WriteMask,	0x0000);

	switch(pattern){
	case 0:				/* all OFF */
		lcd_out(R766_RAM_AddressSet, TARGET_START_ADDRESS);
		send_fill(R766_RAM_Data, 0x0000, TARGET_X_BYTE_SIZE*TARGET_Y_LINE_SIZE);
		break;
	case 1:				/* all ON */
		lcd_out(R766_RAM_AddressSet, TARGET_START_ADDRESS);
		send_fill(R766_RAM_Data, 0xFFFF, TARGET_X_BYTE_SIZE*TARGET_Y_LINE_SIZE);
		break;
	case 2:				/* Monochrom Chacker */
		lcd_out(R766_RAM_AddressSet, TARGET_START_ADDRESS);
		for(i=0; i<TARGET_Y_LINE_SIZE; i++){                                        
		
			if(i==(i/2)*2){
				for(j=0; j<TARGET_X_BYTE_SIZE; j++){
					lcd_out(R766_RAM_Data, cBLACK);
					lcd_out(R766_RAM_Data, cWHITE);
				}
			}
			else{
				for(j=0; j<TARGET_X_BYTE_SIZE; j++){
					lcd_out(R766_RAM_Data, cWHITE);
					lcd_out(R766_RAM_Data, cBLACK);
				}
			}
		}
		break;
	case 3:				/* Color 8 Lines */
		lcd_out(R766_RAM_AddressSet, TARGET_START_ADDRESS);      
		
		send_fill(R766_RAM_Data, cBLACK, TARGET_X_BYTE_SIZE/2*20);
		send_fill(R766_RAM_Data, cRED, TARGET_X_BYTE_SIZE/2*20);
		send_fill(R766_RAM_Data, cGREEN, TARGET_X_BYTE_SIZE/2*20);
		send_fill(R766_RAM_Data, cBLUE, TARGET_X_BYTE_SIZE/2*20);
		send_fill(R766_RAM_Data, cYELLOW, TARGET_X_BYTE_SIZE/2*20);
		send_fill(R766_RAM_Data, cCYAN, TARGET_X_BYTE_SIZE/2*20);
		send_fill(R766_RAM_Data, cMAGENTA, TARGET_X_BYTE_SIZE/2*20);
		send_fill(R766_RAM_Data, cWHITE, TARGET_X_BYTE_SIZE/2*20);                            
		break;
	case 4:				/* Color 8 Lines Checker */
		for(i=0; i<TARGET_Y_DISP_BOTTOM/16; i++){
			if(i==(i/2)*2){
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cRED);
					lcd_out(R766_RAM_Data, cWHITE);
				}
			}
			else{
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cWHITE);
					lcd_out(R766_RAM_Data, cRED);
				}
			}
		}
		 
		for(i=0; i<TARGET_Y_DISP_BOTTOM/16; i++){
				if(i==(i/2)*2){
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cRED);
					lcd_out(R766_RAM_Data, cGREEN);
				}
			}
			else{
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cGREEN);
					lcd_out(R766_RAM_Data, cRED);
				}
			}
		}
		for(i=0; i<TARGET_Y_DISP_BOTTOM/16; i++){
				if(i==(i/2)*2){
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cBLUE);
					lcd_out(R766_RAM_Data, cGREEN);
				}
			}
			else{
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cGREEN);
					lcd_out(R766_RAM_Data, cBLUE);
				}
			}
		}
		for(i=0; i<TARGET_Y_DISP_BOTTOM/16; i++){
				if(i==(i/2)*2){
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cBLUE);
					lcd_out(R766_RAM_Data, cYELLOW);
				}
			}
			else{
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cYELLOW);
					lcd_out(R766_RAM_Data, cBLUE);
				}
			}
		}
		for(i=0; i<TARGET_Y_DISP_BOTTOM/16; i++){
				if(i==(i/2)*2){
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cCYAN);
					lcd_out(R766_RAM_Data, cYELLOW);
				}
			}
			else{
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cYELLOW);
					lcd_out(R766_RAM_Data, cCYAN);
				}
			}
		}
		for(i=0; i<TARGET_Y_DISP_BOTTOM/16; i++){
				if(i==(i/2)*2){
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cCYAN);
					lcd_out(R766_RAM_Data, cMAGENTA);
				}
			}
			else{
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cMAGENTA);
					lcd_out(R766_RAM_Data, cCYAN);
				}
			}
		}
		for(i=0; i<TARGET_Y_DISP_BOTTOM/16; i++){
				if(i==(i/2)*2){
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cWHITE);
					lcd_out(R766_RAM_Data, cMAGENTA);
				}
			}
			else{
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cMAGENTA);
					lcd_out(R766_RAM_Data, cWHITE);
				}
			}
		}
		for(i=0; i<TARGET_Y_DISP_BOTTOM/16; i++){
				if(i==(i/2)*2){
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cWHITE);
					lcd_out(R766_RAM_Data, cBLACK);
				}
			}
			else{
				for(j=0; j<TARGET_X_BYTE_SIZE/2; j++){
					lcd_out(R766_RAM_Data, cBLACK);
					lcd_out(R766_RAM_Data, cWHITE);
				}
			}
		}
		break; 
	case 5:				/* Color Tile Checker */
		lcd_out(R766_RAM_WriteMask, 0x0000);
		col = 0;
		for(k=0; k<16; k++){
			for(j=0; j<16; j++){
				for(i=0; i<10; i++){
					lcd_out(R766_RAM_AddressSet, TARGET_START_ADDRESS - (i*TARGET_X_BYTE_WIDTH + j*8 + k*TARGET_X_BYTE_WIDTH*10));
		                                                                                                                                                           /* J*4 */
		/* Case of 8bit data  
		 			send_fill(R766_RAM_Data, col<<8|col, 4); */      
		 			
		 			send_fill(R766_RAM_Data, col<<3|col, 8);
				}
				col = col+0x0821;
			}
		}
		break;
	}
}

unsigned char CMD = 0;

unsigned char Dispatch( unsigned char CMD )
{
	return 0;
}

void cmdToMainLcd(unsigned char addr)
{
	BUS_INDEX_A2 = 0;
	BUS_DATA_A2 = addr;
	BUS_INDEX_A2 = 1;
}

void mainLcdWindow(unsigned short sax, unsigned short say, unsigned short eax, unsigned short eay)
{
/*            cmdToMainLcd(0x42);     ///X-address Area Set
            cmdToMainLcd(sax);
            cmdToMainLcd(eax);

            cmdToMainLcd(0x43); 	///Y-address Area Set
            cmdToMainLcd(say);
            cmdToMainLcd(eay);*/
            index_out(0x42);     ///X-address Area Set
            index_out(sax);
            index_out(eax);

            index_out(0x43); 	///Y-address Area Set
            index_out(say);
            index_out(eay);

						
}

void mainLcdStart(unsigned short sax, unsigned short say)
{
/*	cmdToMainLcd(0x42);	
	cmdToMainLcd(sax); 
    cmdToMainLcd(0x9f); 	
		
	cmdToMainLcd(0x43);
	cmdToMainLcd(say); 
	cmdToMainLcd(0x7f); */
	index_out(0x42);	
	index_out(sax); 
    index_out(0x9f); 	
		
	index_out(0x43);
	index_out(say); 
	index_out(0x7f);

}

unsigned char init_m3v( )
{
	int i;
	PORT.PADDR.BIT.PA0DDR = 1;
	PORT.PADR.BIT.PA0DR = 0;
	WaitTime( 200 );
	PORT.PADR.BIT.PA0DR = 1;
	WaitTime( 150 );

    cmdToMainLcd(0x50);
    cmdToMainLcd(0xea);
    // initial sequence
    WaitTime(35);
    cmdToMainLcd(0x2C);
    WaitTime(35);

⌨️ 快捷键说明

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