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

📄 splc501.c

📁 基于MSP430169的凌阳液晶SPL501的驱动
💻 C
字号:
#include <msp430x16x.h> 
#define  P_IO_Data_Data     P1OUT      /*DB0~DB7->P1.0~P1.7*/
#define  P_IO_Control_Data  P2OUT 
#define  SPLC501_RES         0x10     /*RES->P2.4*/
#define  SPLC501_A0          0x20     /*A0->P2.5*/
#define  SPLC501_RW          0x40     /*RW->P2.6*/
#define  SPLC501_EP          0x80     /*EP->P2.7*/

unsigned char  buffer[]={ 
0xFF,0xFD,0x0D,0xED,0xED,0xED,0x01,0xED,0xED,0xED,0x01,0xED,0xED,0xED,0x0D,0xFD,
0xFF,0xFF,0x80,0xDD,0xDD,0xDD,0xDE,0xDF,0xDF,0xDF,0xDE,0xDD,0xDB,0xD7,0x80,0xFF,/*"西",0*/

0xFF,0xFB,0x19,0xDB,0xDB,0x9B,0x5B,0xDB,0xD0,0x4B,0x9B,0xDB,0xDB,0x1B,0xFB,0xFB,
0xFF,0xFF,0xC0,0xBB,0xDA,0xFA,0xFA,0xFA,0x80,0xFA,0xFA,0xFA,0xFB,0x80,0xFF,0xFF,/*"南",1*/

0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x33,0xDD,0xFF,0x6E,0xAE,0x01,0x8D,0x6D,0xED,0xEF,
0xFF,0xFE,0xFE,0x00,0xFD,0xFD,0xFD,0xFB,0xFB,0xFB,0xFF,0x00,0xFF,0xFE,0xFD,0xFB,/*"科",2*/

0xFF,0xF7,0xB7,0x37,0xB7,0x80,0xB7,0xB7,0x37,0xFF,0xD7,0xB7,0x00,0x77,0xF7,0xF7,
0xFF,0xDF,0x9F,0xDE,0xED,0xF3,0xF3,0xEC,0xDF,0xBF,0xBF,0xFF,0x80,0x7F,0xBE,0xFE,/*"技",3*/

0xFF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0x5F,0x80,0x5F,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,
0xFF,0xBF,0x3F,0x9F,0xCF,0xF7,0xF9,0xFE,0xFF,0xFC,0xF3,0xEF,0xDF,0xBF,0x7F,0xFF,/*"大",4*/

0xFF,0xEF,0xCD,0xA8,0xE7,0xAF,0x2B,0xA1,0xAE,0xAF,0xAB,0xA3,0xED,0xEF,0xCF,0xBF,
0xFF,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0x80,0x7D,0xBD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFF,
}; 
unsigned char *q=buffer; 
 void InitGraphic(void); 
 void sendorder_contorl(void); 
 void senddata_contorl(void); 
 void setpage( unsigned char a); 
 void setline( unsigned char addr); 
 void ClearScreen( unsigned char a); 
 void write_word(unsigned char a,unsigned char b,unsigned char n); 
 void senddata(unsigned char n); 
/**********************************************
*   函数名称:液晶初始化函数                  *
*   作者:李宁                                *
*   时间:2008年08月11号                      *
*   修改:李宁                                *
*   时间:2008年08月11号                      *
*   入口参数:无                              *
*   出口参数:无                              *
***********************************************/
void InitGraphic(void) 
{ 
/********************************************************/ 
 P_IO_Data_Data =0x00;                  //端口初始化 
 P_IO_Control_Data =0x8f; 
/********************************************************/ 
 P_IO_Data_Data =0xe2;                  //复位 reset 
 sendorder_contorl();                           //送命令子函数 
 P_IO_Data_Data =0xe3;                  //空操作  
 sendorder_contorl(); 
 P_IO_Data_Data =0xc0;                  //COM口扫描方向63---0 
  sendorder_contorl(); 
 P_IO_Data_Data =0xa0;                  //ADC(segment方向)设定为正常  A1  reverse 
  sendorder_contorl(); 
 P_IO_Data_Data =0xa2;                  // LCD偏压设定 1/9 bias 
  sendorder_contorl(); 
 P_IO_Data_Data =0x24;                  //V5电压内部电阻调整设置  
  sendorder_contorl(); 
 P_IO_Data_Data =0x81;                  //电量设置模式 (双字节) 
  sendorder_contorl();                                 
 P_IO_Data_Data =0x1a;                  //调整显示屏亮度 
  sendorder_contorl(); 
 P_IO_Data_Data =0xd2;                  //驱动模式 
  sendorder_contorl(); 
 P_IO_Data_Data =0x00;                  //模式2 
 sendorder_contorl(); 
 P_IO_Data_Data =0x2c;                  //上电控制设置   REGULATOR on 
 sendorder_contorl(); 
 P_IO_Data_Data =0x2e;                 //上电控制设置   +FOLLOWER oFF  ????(或许是) 
 sendorder_contorl(); 
 P_IO_Data_Data =0x2f;                 //上电控制设置   +FOLLOWER on   ????(或许是) 
 sendorder_contorl();                           
 P_IO_Data_Data =0xaf;                 //开显示 
 sendorder_contorl(); 
 setpage(0);                           //页设置为第0页  
 P_IO_Data_Data =0x40;                  //显示起始行设置为第0行  
 sendorder_contorl();
 setline(0);                           //列设置为第0列 

 P_IO_Data_Data =0xa7;                 //正常显示    
 sendorder_contorl();   
 //P_IO_Data_Data =0xa4;                //全屏变暗           
//sendorder_contorl(); 
ClearScreen(1);                      //清屏全部ROM填零 
}                                


/**********************************************
*   函数名称:发送命令控制字子函数            *
*   作者:李宁                                *
*   时间:2008年08月11号                      *
*   修改:李宁                                *
*   时间:2008年08月11号                      *
*   入口参数:无                              *
*   出口参数:无                              *
***********************************************/
void sendorder_contorl(void)              /* A0  EP WR*/
{                                         /*  0   1  0*/
unsigned char c; 
c=(SPLC501_A0|SPLC501_EP|SPLC501_RW); 
c^=0xff; 
P_IO_Control_Data=c; 
P_IO_Control_Data=c|SPLC501_EP; 
P_IO_Control_Data=c; 
} 
/**********************************************
*   函数名称:发送数据控制字子函数            *
*   作者:李宁                                *
*   时间:2008年08月11号                      *
*   修改:李宁                                *
*   时间:2008年08月11号                      *
*   入口参数:无                              *
*   出口参数:无                              *
***********************************************/
void senddata_contorl(void)             /* A0  EP WR*/
{                                       /* 1   1  0 */
unsigned char c; 
c=(SPLC501_A0|SPLC501_EP|SPLC501_RW); 
c^=0xff; 
P_IO_Control_Data=c; 
P_IO_Control_Data=c|SPLC501_A0|SPLC501_EP; 
P_IO_Control_Data=c; 
} 
/**********************************************
*   函数名称:页设置函数                      *
*   作者:李宁                                *
*   时间:2008年08月11号                      *
*   修改:李宁                                *
*   时间:2008年08月11号                      *
*   入口参数:page->页号                      *
*   出口参数:无                              *
***********************************************/
 void setpage( unsigned char page)  
{ 
page|=0xB0; 
P_IO_Data_Data =page; 
sendorder_contorl(); 
} 
/**********************************************
*   函数名称:列设置函数                      *
*   作者:李宁                                *
*   时间:2008年08月11号                      *
*   修改:李宁                                *
*   时间:2008年08月11号                      *
*   入口参数:line->列号                      *
*   出口参数:无                              *
***********************************************/
void setline( unsigned char line) 
{ 
unsigned char line_hign; 
line_hign=line>>4; 
line_hign&=0x1f; 
line_hign|=0x10; 
line&=0x0f; 
P_IO_Data_Data =line; 
sendorder_contorl(); 
P_IO_Data_Data =line_hign; 
sendorder_contorl(); 
 } 
/**********************************************
*   函数名称:清屏子函数                      *
*   作者:李宁                                *
*   时间:2008年08月11号                      *
*   修改:李宁                                *
*   时间:2008年08月11号                      *
*   入口参数:无                              *
*   出口参数:无                              *
***********************************************/ 
void ClearScreen( unsigned char a) 
{ 
unsigned char z1,z2; 
if(a!=0) a=0xff; 
for(z1=0;z1<8;z1++) 
{ 
setpage(z1); 
setline(0); 
    for(z2=0;z2<128;z2++) 
    { 
    P_IO_Data_Data =a; 
     senddata_contorl(); 
    } 
} 
} 
/**********************************************
*   函数名称:写汉字函数                      *
*   作者:李宁                                *
*   时间:2008年08月11号                      *
*   修改:李宁                                *
*   时间:2008年08月11号                      *
*   入口参数:page->页                        *
*             line->列                        *
*             n-}数组中汉字的序号             *
*   出口参数:无                              *
***********************************************/ 
void write_word(unsigned char page,unsigned char line,unsigned char n)   //汉字 
{
unsigned char i,*p; 
p=q+32*n; 
setpage(page); 
for(i=0;i<16;i++) 
  {
  setline(line+i); 
  senddata(*p); 
  p++;
  } 
setpage(page+1); 
for(i=16;i<32;i++) 
  {
  setline(line+i-16); 
  senddata(*p); 
  p++;
  } 
  } 
/**********************************************
*   函数名称:发送数据函数                    *
*   作者:李宁                                *
*   时间:2008年08月11号                      *
*   修改:李宁                                *
*   时间:2008年08月11号                      *
*   入口参数:data->数据                      *
*   出口参数:无                              *
***********************************************/ 
void senddata(unsigned char data) 
{ 
P_IO_Data_Data =data; 
senddata_contorl(); 
} 

main() 
{ 
WDTCTL=WDTPW+WDTHOLD;
P1DIR=0xFF;  
P2DIR=0xFF; 
P1OUT=0xFF;
P2OUT=0xFF;
InitGraphic(); 
while(1) 
{ 
write_word(0,96,0); 
write_word(0,80,1); 
write_word(0,64,2); 
write_word(0,48,3); 
write_word(0,32,4); 
write_word(0,16,5);
} 

} 

⌨️ 快捷键说明

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