找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7631|回复: 1
打印 上一主题 下一主题
收起左侧

MSP430F5529驱动LCD102x64液晶程序及电路图

[复制链接]
跳转到指定楼层
楼主
ID:89763 发表于 2015-9-12 20:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MSP430F5529开发板上的102x64LCD采用的是SPI通信模式,即一种全双工串行通信模式







参考程序:


#include "msp430F5529.h"
void delay(int ms)
{
  int i;
  while(ms--)
    for(i=0;i<999;i++);
}
///////////////////////////////
//        写数据函数         //
///////////////////////////////
void writedata(unsigned char dat)
{
  char i,temp;
  P5OUT |=BIT7;     //结束置位
  P5OUT |=BIT6;    //数据输入模式
  P4OUT &=~BIT3;   //sclk=0
  P7OUT &=~BIT4;    //片选选中
  P3OUT |=0x80;
  for(i=0;i<8;i++)
  {     
     temp =dat<<i;
     if((temp & 0x80)==0x80)
            P4OUT |=BIT1;
     else
            P4OUT &=~BIT1;
    __delay_cycles(3);
    P4OUT |=BIT3;     //sclk=1上升沿
     __delay_cycles(3);
    P4OUT &=~BIT3;    //下降沿
  }
  P7OUT |=BIT4;  //释放片选
}
///////////////////////////////
//        写指令函数         //
///////////////////////////////
void writecomd(unsigned char comd)
{
  char i,temp;
  P5OUT |=BIT7;     //结束置位
  P5OUT &=~BIT6;    //指令输入模式并置位
  P4OUT &=~BIT3;  
  P7OUT &=~BIT4;    //片选选中
  P3OUT |=0x80;
  for(i=0;i<8;i++)
  {     
     temp =comd<<i;
     if((temp & 0x80)==0x80)
            P4OUT |=BIT1;
     else
            P4OUT &=~BIT1;
    __delay_cycles(3);
    P4OUT |=BIT3;
     __delay_cycles(3);
    P4OUT &=~BIT3;  
  }
  P7OUT |=BIT4;  //释放片选
}
/////////////////////////
//       液晶显示      //
/////////////////////////
void LCD_XYSet(unsigned char x,unsigned char y)
{
     LCD_SPISend(0,0xB0|y);           //y的值为0~8
     LCD_SPISend(0,0x10|(x>>4));
     LCD_SPISend(0,0x00|(x&0x0F));
}
//////////////////////////
// 显示   y<8,x<127     //
//////////////////////////
void LCDdisplay(unsigned char x,unsigned char y)
{
   writecomd(0xB0|y);
   writecomd(0x10|(x>>4));
   writecomd(0x0F);

}
/////////////////////////
//    LCD初始化        //
/////////////////////////
void LCDinit(void)
{

   P7DIR |=BIT4+BIT6;             //P7.6为LCD背光灯和LCD_EN使能,1亮 0灭,P7.4为LED_CS片选
   P7OUT |=BIT6;              //点亮背光
   P5DIR |=BIT6+BIT7;         //P5.6为SPI之命令数据切换,P5.7为SPI之LCD_RST液晶复位
   P4DIR |=BIT1+BIT3;        //P4.1为SIMO从设备输入主设备信号端,P4.3为SCK
   UCSCTL3 |=SELREF__REFOCLK;
   P5OUT &=~(BIT6+BIT7);    //LCD reset  指令输入
   writecomd(0xAF);         //开显示
   writecomd(0x8c);         //设置扫描方向。
}
///////////////////////
//  主时钟设置       //
///////////////////////
void MCLKtimer(void)
{

   __bis_SR_register(SCG0);     //disable the FLL control loop
   UCSCTL0=0X0000;//            //Set lowest possible DCOx,MODxSCG0
   UCSCTL1=DCORSEL_7;           //Select DCO range 24MHz opreation
                               //DCORSEL_x,其中x可选3、4、5、6、7
   UCSCTL3=FLLD_0+731;          //Set DCO Multiplier for 24MHz
                                //(N+1)*FLLRef=Fdco
                                //(731+1)*32768=24MHz
                               //Set FLL DIV =fDCOCLK/2
   /*__bis_SR_register(SCG0);                 //Enable the FLL control loopSCG0
   UCSCTL4 |=SELA__DCOCLK+SELS__XT1CLK+SELM__DCOCLK;//MCLK Source select
   UCSCTL5 |=DIVPA_2;                       //ACLK output divide
   UCSCTL6 |=XT1DRIVE_3+XCAP_0;             //XT1 cap */
}
int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  MCLKtimer();
  P1DIR |=BIT3;
  P4DIR |=BIT7;
  P5OUT &=~BIT7;
  LCDinit();
  LCDdisplay(3,100);
  while(1)
  {

     writedata(0x2F);
     writedata(0x07);
     writedata(0x18);
     writedata(0x2F);
  }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:150645 发表于 2016-11-27 22:20 | 只看该作者
......没反映呀
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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