性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點贊
  • 分享
  • 發(fā)新帖

關(guān)于PIC VS 12864LCD 顯示問題

請教各位老師,我由于對12864LCD顯示屏不太了解,最近搞了個12864顯示程序,為什么LCD里面只顯示"中國南京市雨花臺"為什么"區(qū)"自無顯示呢,應(yīng)該在第二行顯示才對.請各位老師指教,謝謝!
原程序如下:
#define  RS   RD2    //DI    
#define  RW   RD3    
#define  E    RD4    
#define  CS1  RD7    
#define  CS2  RD6    
#define  RST  RD5
#define  LED3 RC4
#define  LED4 RC5
#define  LED2 RD0
#define  LED1 RD1  
unsigned   char  PAGEADD;  //存放頁地址寄存器    
unsigned   char  PAGENUM;  //存放總頁數(shù)寄存器    
unsigned   char  CLMSUM;   //存放總列數(shù)寄存器    
unsigned   char  CLMADD;   //存放列地址寄存器    
unsigned   char  WRITE;    //存放顯示數(shù)據(jù)寄存器    
unsigned   char  row;      //存放顯示起始行寄存器    
unsigned   char  i,k;      //通用寄存器    
const  char  table[]=  
{  
/*--  文字:  中  --*/
/*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00,
0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00

/*--  文字:  國  --*/
/*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
0x00,0xFE,0x02,0x0A,0x8A,0x8A,0x8A,0xFA,0x8A,0x8A,0x8A,0x0A,0x02,0xFE,0x00,0x00,
0x00,0xFF,0x40,0x48,0x48,0x48,0x48,0x4F,0x48,0x49,0x4E,0x48,0x40,0xFF,0x00,0x00

/*--  文字:  江  --*/
/*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
0x10,0x60,0x01,0xC6,0x30,0x00,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x00,0x00,
0x04,0x04,0x7E,0x01,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x00

/*--  文字:  蘇  --*/
/*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
0x04,0x04,0x44,0x44,0x44,0x5F,0x44,0xF4,0x44,0x5F,0x44,0xC4,0x04,0x04,0x04,0x00,
0x00,0x40,0x4C,0x27,0x10,0x0C,0x07,0x01,0x20,0x40,0x40,0x3F,0x00,0x02,0x0C,0x00

/*--  文字:  省  --*/
/*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
0x00,0x10,0x90,0x88,0x86,0xC0,0xC0,0xBF,0xA0,0x90,0x90,0x8A,0x84,0x18,0x00,0x00,
0x01,0x01,0x00,0x00,0xFF,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0xFF,0x00,0x00,0x00

/*--  文字:  南  --*/
/*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
0x04,0x04,0xE4,0x24,0x24,0x64,0xB4,0x2F,0x24,0xA4,0x64,0x24,0x24,0xE6,0x04,0x00,
0x00,0x00,0x7F,0x04,0x05,0x05,0x05,0x7F,0x05,0x05,0x05,0x25,0x44,0x3F,0x00,0x00

/*--  文字:  京  --*/
/*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
0x00,0x04,0x04,0xE4,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0xE4,0x06,0x04,0x00,0x00,
0x00,0x20,0x10,0x19,0x0D,0x41,0x81,0x7F,0x01,0x01,0x05,0x0D,0x38,0x10,0x00,0x00

/*--  文字:  市  --*/
/*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
0x04,0x04,0x04,0xE4,0x24,0x24,0x25,0xFE,0x24,0x24,0x24,0x24,0xE4,0x04,0x04,0x00,
0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0xFF,0x00,0x00,0x10,0x20,0x1F,0x00,0x00,0x00

/*--  文字:  雨  --*/
/*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
0x02,0x02,0xF2,0x32,0x52,0x92,0x12,0xFE,0x32,0x52,0x92,0x12,0xF2,0x02,0x02,0x00,
0x00,0x00,0xFF,0x01,0x02,0x04,0x00,0x7F,0x01,0x02,0x44,0x80,0x7F,0x00,0x00,0x00

/*--  文字:  花  --*/
/*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
0x04,0x04,0x04,0x84,0xF4,0x2F,0x04,0x04,0xE4,0x0F,0x04,0xC4,0x84,0x04,0x04,0x00,
0x00,0x02,0x01,0x00,0xFF,0x00,0x08,0x04,0x3F,0x42,0x41,0x40,0x40,0x78,0x20,0x00

/*--  文字:  臺  --*/
/*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
0x00,0x00,0x40,0x60,0x50,0x48,0x44,0x63,0x22,0x20,0x20,0x28,0x70,0x20,0x00,0x00,
0x00,0x00,0x00,0x7F,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x7F,0x00,0x00,0x00,0x00

/*--  文字:  區(qū)  --*/
/*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
0x00,0xFE,0x02,0x02,0x12,0x22,0x22,0x42,0x82,0x62,0x1E,0x0A,0x02,0x02,0x00,0x00,
0x00,0x3F,0x20,0x30,0x28,0x24,0x22,0x21,0x20,0x21,0x26,0x3C,0x28,0x20,0x00,0x00


};  
//****************************************************************    
//延時程序(x*0.5ms)(1ms*93)    
void    delay(unsigned int x)  
{  
    unsigned int j;  
    for(j=x*50;--j;)  
        continue;  
}  
//****************************************************************    
//系統(tǒng)各口的輸入輸出狀態(tài)初始化子程序    
void        INITIAL()  
{  
    //ADCON1=0X87;            //設(shè)置PORTA口和PORTE口為數(shù)字I/O口    
    TRISC=0XCF;    
    TRISD=0X00;
    TRISB=0X00;  
    //TRISE=0X00;      
    PORTD=0X00;    
    PORTC=0X00;             //設(shè)置液晶的4個控制腳為輸出    
    RST=0;        //Reset.    
    NOP();    
    delay(2);    
    RST=1;    
    NOP();
    delay(2);
    LED3=0;
    LED4=0;
    LED1=0;
    LED2=0;  
    delay(2);      
}  
  
//*******************************************************************    
//*******************E1邊的處理部分**********************************    
//*******************************************************************    
//*****************寫命令程序*******************************    
void send_com1(unsigned char command )    
{    
  delay(1);// check_busy1();    
  CS1=1;       //左邊    
  CS2=0;          
  RS=0;    
  RW=0;    
  PORTB=command;    
  E =1;    
  NOP();    
  NOP();    
  E =0;    
}      
//***********對液晶顯示器寫數(shù)據(jù)子程序************************    
void send_data1(unsigned char data )    
{    
    delay(1); // check_busy1();  //查詢液晶是否為空閑    
    CS1=1;              //左邊    
    CS2=0;    
    RS=1;    
    RW=0;                  
    PORTB=data;     //需要寫入的數(shù)據(jù)放入D口    
    E =1;       //E1=0,寫入數(shù)據(jù)    
    NOP();    
    E =0;  
}  
//************E1邊清屏子程序***************************    
void    CLEAR1()  
{  
     PAGEADD=0xB8;    //設(shè)置頁地址代碼0頁    
     for(PAGENUM=0X08;PAGENUM>0;PAGENUM--) //8頁    
     {  
       send_com1(PAGEADD);    
       CLMADD=0x00;            //設(shè)置起始列    
       for(CLMSUM=0X40;CLMSUM>0;CLMSUM--) //64列    
        {  
         send_data1(0x00);      //寫入00H以清屏    
        }  
        PAGEADD++;      //頁號增1    
    }  
}      
  
//************E1邊初始化**********************************    
void    lcd1()  
{  
     send_com1(0XC0);   //起始行0    
     send_com1(0X3F);   //開顯示    
     CLEAR1();      //清屏    
}      
//*******************************************************************    
//*******************E2邊的處理部分**********************************    
//*******************************************************************    
//*****************寫命令程序*******************************    
void send_com2(unsigned char command )    
{    
  delay(1);  //check_busy2();    
  CS1=0;       //右邊    
  CS2=1;          
  RS=0;    
  RW=0;    
  PORTB=command;    
  E =1;    
  NOP();    
  NOP();    
  E =0;    
}      
//***********對液晶顯示器寫數(shù)據(jù)子程序************************    
void send_data2(unsigned char data )    
{    
    delay(1); //check_busy2();      
    CS1=0;         //右邊    
    CS2=1;    
    RS=1;    
    RW=0;                  
    PORTB=data;     //需要寫入的數(shù)據(jù)放入D口    
    E =1;       //E1=0,寫入數(shù)據(jù)    
    NOP();    
    E =0;  
}  
//************E2邊清屏子程序************************    
void    CLEAR2()  
{  
    PAGEADD=0xB8;    //設(shè)置頁地址代碼0頁    
    for(PAGENUM=0X08;PAGENUM>0;PAGENUM--) //8頁    
     {  
       send_com2(PAGEADD);        
       CLMADD=0x40;                      //設(shè)置起始列0    
       for(CLMSUM=0X40;CLMSUM>0;CLMSUM--) //64列    
         {  
          send_data2(0x00);         //寫入00H以清屏    
         }  
       PAGEADD++;           //頁號增1    
     }  
}      
//************E2邊初始化**********************************    
void    lcd2()  
{  
     send_com2(0XC0);   //起始行0    
     send_com2(0X3F);   //開顯示    
     CLEAR2();      //清屏            
}  
//******************************************************************    
//******************************************************************    
//LCD的E1邊顯示函數(shù),調(diào)用一次該函數(shù),則在相應(yīng)的位置顯示相應(yīng)的字    
void    dis1()  
{  
    send_com1(CLMADD);      //設(shè)置起始列    
    send_com1(PAGEADD);  
    i=i*32;                 //i變成數(shù)組指示指針    
    for(k=0;k<=16;k++)      
      {  
        WRITE=table[i+k];   //查得需要顯示的字節(jié)    
        send_data1(WRITE);  //在WRITE1子程序里面,列地址加1    
        CLMADD++;  
      }  
    CLMADD=CLMADD-16;//恢復(fù)列地址    
    send_com1(CLMADD);      //設(shè)置起始列    
    PAGEADD=PAGEADD+1;//頁地址加1    
    send_com1(PAGEADD);  
    for(;k<32;k++)  
      {  
        WRITE=table[i+k];   //查得需要顯示的字節(jié)    
        send_data1(WRITE);  //列地址加1    
      }    
}  
//*******************************************************************    
//LCD的E2邊顯示函數(shù),調(diào)用一次該函數(shù),則在相應(yīng)的位置顯示相應(yīng)的字    
void    dis2()  
{  
     send_com2(CLMADD);      //設(shè)置起始列    
     send_com2(PAGEADD);  
     i=i*32;                 //i變成數(shù)組指示指針    
     for(k=0;k<16;k++)      
      {  
        WRITE=table[i+k];    //查得需要顯示的字節(jié)    
        send_data2(WRITE);   //列地址加1    
        CLMADD++;  
      }  
     CLMADD=CLMADD-16;      //恢復(fù)列地址    
     send_com2(CLMADD);     //設(shè)置起始列    
     PAGEADD=PAGEADD+1;     //頁地址加1    
     send_com2(PAGEADD);  
     for(;k<32;k++)      
       {  
         WRITE=table[i+k];    //查得需要顯示的字節(jié)    
         send_data2(WRITE);   //在WRITE1子程序里面,列地址已經(jīng)加1    
       }        
}  
//*************************************************************************    
//*****************************主程序**************************************    
//*************************************************************************    
main()  
{  
    INITIAL();              //系統(tǒng)初始化    
    lcd1();                 //E1邊初始化    
    lcd2();
    delay(20);
    delay(10);                    //E2邊初始化    
//******以下顯示不同的字符*************************************************      
    PAGEADD=0XB8;       //顯示起始頁為第0頁    
    CLMADD=0X40;        //起始列為第0列    
    i=0;                //中//  
    dis1();             //調(diào)用顯示函數(shù)    
  
    PAGEADD=0XB8;       //顯示起始頁為第0頁    
    CLMADD=0X50;        //起始列為第16列    
    i=1;                //國    
    dis1();             //調(diào)用顯示函數(shù)1  
  
    PAGEADD=0XB8;       //顯示起始頁為第0頁    
    CLMADD=0X60;        //起始列為第32列    
    i=2;                //江    
    dis1();             //調(diào)用顯示函數(shù)1    
  
    PAGEADD=0XB8;       //顯示起始頁為第0頁    
    CLMADD=0X70;        //起始列為第0列    
    i=3;                //蘇    
    dis1();             //調(diào)用顯示函數(shù)2    
      
    PAGEADD=0XB8;       //顯示起始頁為第0頁    
    CLMADD=0X40;        //起始列為第64列    
    i=4;                //省  
    dis2();             //調(diào)用E2邊顯示函數(shù)    
  
    PAGEADD=0XB8;       //顯示起始頁為第0頁    
    CLMADD=0X50;        //起始列為第16列    
    i=5;                //南      
    dis2();             //調(diào)用顯示函數(shù)2    
  
    PAGEADD=0XB8;       //顯示起始頁為第0頁    
    CLMADD=0X60;        //起始列為第32列    
    i=6;                //京      
    dis2();             //調(diào)用顯示函數(shù)2

    PAGEADD=0XB8;       //顯示起始頁為第0頁    
    CLMADD=0X70;        //起始列為第32列    
    i=7;                //市      
    dis2();             //調(diào)用顯示函數(shù)2

    PAGEADD=0XBA;       //顯示起始頁為第0頁    
    CLMADD=0X40;        //起始列為第32列    
    i=8;                //雨    
    dis1();             //調(diào)用顯示函數(shù)2

    PAGEADD=0XBA;       //顯示起始頁為第0頁    
    CLMADD=0X50;        //起始列為第32列    
    i=9;                //花    
    dis1();             //調(diào)用顯示函數(shù)2
  
    PAGEADD=0XBA;       //顯示起始頁為第0頁    
    CLMADD=0X60;        //起始列為第32列    
    i=10;                //臺    
    dis1();             //調(diào)用顯示函數(shù)2
  
    PAGEADD=0XBA;       //顯示起始頁為第0頁    
    CLMADD=0X70;        //起始列為第32列    
    i=11;                //公    
    dis1();             //調(diào)用顯示函數(shù)2

    PAGEADD=0XBA;       //顯示起始頁為第0頁    
    CLMADD=0X40;        //起始列為第32列    
    i=12;                //區(qū)    
    dis2();             //調(diào)用顯示函數(shù)2    
     delay(2);
     while(1)  
         {
          
    
    LED1=1;
    delay(20000);
    delay(20000);
    delay(20000);
    delay(200000000000);
    LED1=0;
            }        
}
全部回復(fù)(1)
正序查看
倒序查看
leasor
LV.3
2
2009-03-21 08:44
你都不換行,又怎么會在第二行顯示呢?
0
回復(fù)
發(fā)