📄 cmd.c
字号:
#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 + -