2305|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

MSP430F5529驱动LCD102x64液晶程序及电路图 [复制链接]

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<      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<      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);
  }
}

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表