【MSP430F149学习】25 驱动12864液晶

  • 听雨落凡尘
  • LV3工程师
  • |      2015-12-18 16:47:08
  • 浏览量 1921
  • 回复:0


【MSP430F149学习】25 驱动12864液晶


准备工具:电脑;TS8900--MSP430F149开发板;LCD12864屏;USB线一根;杜邦线若干


开发环境:IAR EW for MSP430 V5.30


液晶管脚定义

【MSP430F149学习】25 驱动12864液晶


#define lcd_sclk1   P1OUT |= BIT0 
#define lcd_sclk0   P1OUT &= ~BIT0 
#define lcd_sid1    P1OUT |= BIT1
#define lcd_sid0    P1OUT &= ~BIT1
#define lcd_cs1     P1OUT |= BIT2
#define lcd_cs0     P1OUT &= ~BIT2 
#define reset1      P1OUT |= BIT3
#define reset0      P1OUT &= ~BIT3  
#define lcd_rs1     P1OUT |= BIT4
#define lcd_rs0     P1OUT &= ~BIT4  

#define Rom_OUT_IN  P2DIR &= ~BIT1
#define Rom_IN1     P2OUT |= BIT0 
#define Rom_IN0     P2OUT &= ~BIT0 
#define Rom_OUT1    P2DIR |= BIT1;P2OUT |= BIT1
#define Rom_OUT0    P2DIR |= BIT1;P2OUT &= ~BIT1
#define Rom_SCK1    P2OUT |= BIT2
#define Rom_SCK0    P2OUT &= ~BIT2 
#define Rom_CS1     P2OUT |= BIT3
#define Rom_CS0     P2OUT &= ~BIT3 
#define Rom_DATA    P2IN & BIT1

【MSP430F149学习】25 驱动12864液晶


液晶硬件连线图


【MSP430F149学习】25 驱动12864液晶




部分程序代码

 //写指令到 LCD 模块 

void transfer_command_lcd(int data1) 

{ 

  char i; 

  lcd_cs0;

  lcd_rs0; 

 for(i=0;i<8;i++) 

{ 

  lcd_sclk0; 

  if(data1&0x80) 

  {lcd_sid1;}

  else 	

  {lcd_sid0 ;}

  lcd_sclk1;

  data1<<=1; 

} 

 lcd_cs1 ; 

}

//写数据到 LCD 模块 

void transfer_data_lcd(int data1) 

{ 

 char i; 

  lcd_cs0;

  lcd_rs1; 

 for(i=0;i<8;i++) 

{ 

  lcd_sclk0; 

  if(data1&0x80) 

  {lcd_sid1;}

  else 	

  {lcd_sid0 ;}

  lcd_sclk1;

  data1<<=1; 

} 

 lcd_cs1 ; 

}



/*清屏*/ 

void clear_screen(void) 

{ 

int i,j;  

lcd_address(0,0,256,17); 

for(i=0;i<17;i++) 

{ 

 for(j=0;j<256;j++) 

 { 

  transfer_data_lcd(0x00);

 } 

} 

} 



/*显示 192*5 点阵的图像*/ 

void disp_192x5(int x,int y,uchar *dp) 

{ 

int i,j; 

lcd_address(x,y,192,5); 

for(i=0;i<5;i++)  

{ 

 for(j=0;j<192;j++) 

 { 

  transfer_data_lcd(*dp); 

  dp++; 

 } 

} 

} 



/****送指令到字库 IC***/ 

void send_command_to_ROM( uchar datu ) 

{ 

uchar i; 

for(i=0;i<8;i++ ) 

{ 

 if(datu&0x80) 

  Rom_IN1; 

  else 

  Rom_IN0; 

  datu = datu<<1; 

  Rom_SCK0; 

  Rom_SCK1; 

  Delay_nus(1); 

} 

}

/****从字库 IC 中取汉字或字符数据(1 个字节)***/ 

static uchar get_data_from_ROM( ) 

{ 

uchar i; 

uchar ret_data=0; 

Rom_SCK1; 

for(i=0;i<8;i++) 

{ 

 Rom_OUT1; 

 Rom_SCK0;

 Rom_OUT_IN; 

 ret_data>>=1; 

 if( Rom_DATA ) 

  ret_data+=0x80; 

 else 

  ret_data=ret_data+0; 

 Rom_SCK1; 

 Delay_nus(1); 

} 

return(ret_data); 

}



/******向液晶指定位置写子函数******/

void display_GB2312_string(uchar column,uchar page,uchar *text);



uchar str = "听雨落凡尘";



void main(void)

{

  

  WDTCTL = WDTPW + WDTHOLD;                 // 关闭看门狗

  

  P1DIR |= 0x1F;    //设置对应管脚为输出模式

  P2DIR |= 0x0F;

  

  initial_lcd();      //液晶初始化

  

  clear_screen();         //清屏

  

  disp_192x5(1,1,gImage_a);   //显示图片

  display_GB2312_string(50,9,str);

  while(1);

  

}


下载运行效果


【MSP430F149学习】25 驱动12864液晶


局部特写


【MSP430F149学习】25 驱动12864液晶


IAR工程



【MSP430F149学习】25 驱动12864液晶



【MSP430F149学习】汇总贴




  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子