×
嵌入式 > 技术百科 > 详情

MSP430控制6963c驱动液晶

发布时间:2020-06-18 发布时间:
|

/******************************************************************
读液晶状态字到STA 
功能:用于往液晶写数据或命令之前判断忙闲 
*******************************************************************/ 
void read_sta(void)



   P4DIR = 0x00;          //P4数据输入 
   P3OUT =  P3_2_DATAIO; //4245(x1)数据传送方向选择为:由液晶到430 
   P3OUT =  P3_1_CD;     //命令方式 
   P3OUT &= ~P3_0_RD;     //read 
   STA = P4IN;            //读回状态 
   P3OUT = P3_0_RD;      //CANcel read 
   P4DIR = 0xff;          //P4口置为数据输出方式     
   P3OUT &= ~P3_2_DATAIO; //4245(x1)数据传送方向选择为:由430到液晶 
  

/***************************************************************************** 
判状态位S1,S0 函数(读写指令和读写数据状态) 
******************************************************************************/ 
void ST1( void ) 
    { 
      do 
        { 
        read_sta(); 
        } 
      while( (STA & 0x03) != 0x03 ); 
  
    } 
/********************************************************** 
判状态位S2函数(数据自动读状态) 
**********************************************************/ 
void ST2( void ) 
   { 
     do 
     { 
       read_sta(); 
     } 
    while( (STA & 0x04) != 0x04); 
   } 
/*************************************************************** 
-判状态位S3函数(数据自动写状态)- 
****************************************************************/ 
void ST3( void ) 
   { 
     do 
     { 
       read_sta(); 
     } 
     while( (STA & 0x08) != 0x08 ); 
   } 
/***************************************************************************** 
写入数据字节 
******************************************************************************/ 
void write_data(unsigned char Byte ) 

        ST1(); 
        P4OUT = Byte; 
        P3OUT &= ~P3_1_CD;       //数据方式 
        P2OUT &= ~P2_7_WR ;      // write 
        P2OUT =  P2_7_WR ;     

/***************************************************************************** 
自动写入数据字节 
******************************************************************************/ 
void autowrite_data(unsigned char Byte ) 

        P4OUT = Byte; 
        P3OUT &= ~P3_1_CD;       //数据方式 
        P2OUT &= ~P2_7_WR ;      // write 
        P2OUT =  P2_7_WR ;     

  
/***************************************************************************** 
写入命令字 
******************************************************************************/ 
void write_cmd(unsigned char cmd ) 

        ST1(); 
        P4OUT = cmd ; 
        P3OUT =  P3_1_CD  ;      //命令方式 
        P2OUT &= ~P2_7_WR ;       // write 
        P2OUT =  P2_7_WR ;     

/***************************************************************************** 
写只有一个参数的命令 
******************************************************************************/ 
void write_onepara(unsigned char dat1,unsigned char command ) 

  
        write_data( dat1 ); 
        write_cmd( command ); 
         

/***************************************************************************** 
写含有双参数的命令 
******************************************************************************/ 
void write_doublepara(unsigned char dat1,unsigned char dat2,unsigned char command ) 

  
        write_data( dat1 ); 
        write_data( dat2 ); 
        write_cmd( command ); 
         

/***************************************************************************** 
清显示缓冲的函数 
******************************************************************************/ 
void CLEAR_RAM( void ) 
    { 
    int i; 
    write_doublepara( 0x00,0x00,0x24 );       /* 设置显示RAM 首地址 */ 
   
    write_cmd( 0xb0 );                        /* 设置自动写方式 */ 
    for(i=0;i<8200;i++)                       /* 清8K存储器 */ 
       {          
         ST3();                               /* 判状态位S3 */ 
         write_data(0x00);                    /* 写入数据 */             
        } 
     write_cmd( 0xb2 );                       /* 设置自动写结束指令 */         
        
    } 
/***************************************************************************** 
对液晶屏的一些初始设置函数 
******************************************************************************/ 
void LCDIni( void ) 
    { 
       write_doublepara(0x00,0x00,0x40);       /*设文本显示区域首地址*/ 
       write_doublepara(0x28,0x00,0x41);       /*设文本显示区域宽度*/ 
       write_doublepara(0x03,0x00,0x22);    /* 设置CGRAM偏置地址 */ 
  
       write_doublepara(0x00,0x08,0x42);       /*设图形显示区域首地址*/ 
       write_doublepara(0x1e,0x00,0x43);       /*设图形显示区域宽度*/ 
//      write_cmd(0xa2);                        /*光标形状设置*/    
  //     write_doublepara(0x08,0x08,0x21);       /* 设置光标 位置*/  
       write_cmd(0x80);                        /*显示方式设置逻辑"或"合成, 内部字符发生器有效*/ 
       write_cmd(0x98);                        /*显示开关设置 关文本和开图形显示*/ 
       CLEAR_RAM(); 
    } 



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
FPGA及CPLD应用领域不断拓展