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

📄 lcd_driver.c

📁 基于Nios II的汽车智能防盗导航系统核心作为嵌入式系统发展趋势
💻 C
字号:
void sendorder(void)    //?????????
{
 IOWR(LCD_CON_ADDRESS,0,0);

 IOWR(LCD_CON_ADDRESS,0,4);//0000-->0001-->0000

 IOWR(LCD_CON_ADDRESS,0,0);

}
//--------------------?????-------------------------
void senddata(void)     //?????????
{
 IOWR(LCD_CON_ADDRESS,0,0);

 IOWR(LCD_CON_ADDRESS,0,5);//0000-->0101-->0000

 IOWR(LCD_CON_ADDRESS,0,0);

}
//-------------------?????---------------------------
void setpage(  int  a)
{
a|=0x00b0;
IOWR(LCD_DAT_ADDRESS,0,a);

sendorder();
}
//-------------------?????----------------------------
void setaddr( int addr)
{
int high,low;
low=addr&0x0f;
high=addr&0xf0;
high=high>>4;
high=high|0x10;
IOWR(LCD_DAT_ADDRESS,0,high);
sendorder();
IOWR(LCD_DAT_ADDRESS,0,low);
sendorder();
}
//---------------------?????----------------------
void InitGraphic(void)
{                 
int  i,j;
IOWR(LCD_DAT_ADDRESS,0,0x000000e2);    //?? reset
sendorder();                              //??????
IOWR(LCD_DAT_ADDRESS,0,0x000000e3);                  //??? 
sendorder();
IOWR(LCD_DAT_ADDRESS,0,0x0000c0); //COM?????63---0
sendorder();
IOWR(LCD_DAT_ADDRESS,0,0x0000a0); //ADC(segment??)?????  A1  reverse
sendorder();
//????
//---------------------------------------------------------
IOWR(LCD_DAT_ADDRESS,0,0x0000a2);// LCD???? 1/9 bias
sendorder();
IOWR(LCD_DAT_ADDRESS,0,0x000024); //V5?????????? 
sendorder();
IOWR(LCD_DAT_ADDRESS,0,0x000081); //?????? ?????
sendorder();                                
IOWR(LCD_DAT_ADDRESS,0,0x00001a);                 //???????
sendorder();
IOWR(LCD_DAT_ADDRESS,0,0x0000d2);                 //????
sendorder();
IOWR(LCD_DAT_ADDRESS,0,0x000000);                  //??2
sendorder();
IOWR(LCD_DAT_ADDRESS,0,0x00002c);                  //??????   REGULATOR on
sendorder();
IOWR(LCD_DAT_ADDRESS,0,0x00002e);                  //??????   +FOLLOWER oFF  ????
sendorder();
IOWR(LCD_DAT_ADDRESS,0,0x00002f);                  //??????   +FOLLOWER on   ????
sendorder();                              //power set  over
//-----------------------------------------------------------
IOWR(LCD_DAT_ADDRESS,0,0x0000af);                  //???
sendorder();
setpage(0);                                //?????0? 
IOWR(LCD_DAT_ADDRESS,0,0x000040);                  //?????????0? 
sendorder();
setaddr(0);                                //?????0?

IOWR(LCD_DAT_ADDRESS,0,0x0000a5);                  //????
sendorder();  
IOWR(LCD_DAT_ADDRESS,0,0x0000a4);                  //????
sendorder();
ClearScreen(0);  
for(i=0;i<8;i++)
   for(j=0;j<128;j++)
       BUFFER[i][j]=0;                         //????ROM??
}
//---------------------????----------------------------
void ClearScreen( int a)
{
int i,j;
if(a!=0) a=0x0000;
for(i=0;i<8;i++){
      pre_set(i,0);
      for(j=0;j<128;j++)
      print(a);
    }
}

//-------------------??????----------------------------
void Light(int x,int y,int on)  
{int i;
 int page,data;          
 int c; 
 if((x<128)&&(y<64)){                
     page=y/8;
     setpage(page);
     setaddr(x);
     c=y%8;
     data=1;
     if(c==0)data=1;//do noth;
             else 
                 for(i=0;i<c;i++)data*=2;
              
     if(on==0){                     //turn off
                 data=255-data;
                 data=data&BUFFER[page][x];
              }
              else
                 data=data|BUFFER[page][x];
    BUFFER[page][x]=data;
    print(data);
 }
 else;
}

//-------------------------?????--------------------------
void pre_set(int a,int b)  
{
setpage(a);
setaddr(b);
}
//--------------------------?????--------------------------
void print(int a)       
{
IOWR(LCD_DAT_ADDRESS,0,a);
senddata();
}
//---------------------------????--------------------------- 

void Reprint(void)
{
 int ii;
 int i;
 int j;
 int k;
 int page;
 int addr;
 alt_u8 buffer[1024]; 
 alt_u32 cycle=0xff000000;
 int unicode[64]={0x8BF7,0x9009,0x62E9,0x5BFB,0x822A,0x7CFA 
                 ,0x7EDE,0x76EE,0x7684,0x5730,0x897F,0x5B89
                 ,0x7535,0x5B66,0x9662,0x706B,0x8F66,0x7AD7 
                 ,0x5317,0x5927,0x6B22,0x8FCD,0x4F7F,0x7528 
                 ,0x5C0F,0x5BE7,0x949F,0x697C,0x90AD,0x5DF2
                 ,0x8FDA,0x5165,0x9632,0x76D7,0x72B6,0x6001
                 ,0x524D,0x5728,0x9644,0x8FD1,0x95E8,0x88AA
                 ,0x6253,0x5F00,0x5173,0x95ED,0x76D6,0x540E
                 ,0x53D1,0x52A7,0x7184,0x9000,0x51FA,0xffff};
   InitGraphic(); 
   printf("Look at the LCD!\n");
   while(1){
    page=7;
    addr=0;
    i=0;
    for(ii=0;ii<32;ii++)
        for(j=0;j<8;j++)
           for(k=0;k<4;k++){
             buffer[i]=(ALT_CI_UNICODE2CHAR(unicode[ii],j)&(cycle>>k*8))>>((3-k)*8);
             i++;
           }
           

 for(i=0;i<4;i++){
     for(j=0;j<8;j++){
            pre_set(page,addr);
            for(k=0;k<16;k++){
                       print(buffer[(i*8+j)*32+k]);
                       printf("%x",buffer[(i*8+j)*32+k]);
                 } 
           pre_set(page-1,addr);
            for(k=16;k<32;k++){
                        print(buffer[(i*8+j)*32+k]);
                       printf("%x",buffer[(i*8+j)*32+k]);
                  }
                addr+=16;
             }
             page-=2;
             addr=0;
  }
    usleep(4000000);
    i=0; 
    page=7;
    addr=0;
    for(ii=32;ii<64;ii++)
        for(j=0;j<8;j++)
           for(k=0;k<4;k++){
             buffer[i]=(ALT_CI_UNICODE2CHAR(unicode[ii],j)&(cycle>>k*8))>>((3-k)*8);
             i++;
           }
   
  //Reprint();
  for(i=0;i<4;i++){
     for(j=0;j<8;j++){
            pre_set(page,addr);
            for(k=0;k<16;k++){
                       print(buffer[(i*8+j)*32+k]);
                      printf("%x",buffer[(i*8+j)*32+k]);
                 } 
           pre_set(page-1,addr);
            for(k=16;k<32;k++){
                        print(buffer[(i*8+j)*32+k]);
                        printf("%x",buffer[(i*8+j)*32+k]);
                  }
                addr+=16;
             }
             page-=2;
             addr=0;
  }
  usleep(4000000);
}
  
}

⌨️ 快捷键说明

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