查看: 260|回复: 0
打印 上一主题 下一主题

【MSP430F149学习】25 驱动12864液晶

[复制链接] qrcode

29

主题

34

帖子

102

积分

注册会员

Rank: 2

积分
102
楼主
跳转到指定楼层
发表于 2015-12-18 04:47 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


【MSP430F149学习】25 驱动12864液晶


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


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


液晶管脚定义


#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 |= BIT12OUT |= BIT1
#define Rom_OUT0    P2DIR |= BIT12OUT &= ~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


液晶硬件连线图






部分程序代码

 //写指令到 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);
  
}


下载运行效果




局部特写




IAR工程



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表