MSP430 12864显示

来源:互联网 发布:德国巧克力价格 知乎 编辑:程序博客网 时间:2024/06/05 16:43
/********************************************************************//DM430开发板控制带字库型12864液晶模块显示测试程序//显示模式为汉字模式,直接将12864插入12864接口即可//注意选择液晶的电源,位于电位器附近,可选5V或3.3V,根据液晶电压进行选择//调试环境:EW430 V5.30//********************************************************************/#include <msp430x16x.h>#define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) #define uchar unsigned char#define uint  unsigned int#define ulong unsigned long/*12864应用指令*/#define CLEAR_SCREEN0x01    //清屏指令:清屏且AC值为00H#define AC_INIT0x02    //将AC设置为00H。且游标移到原点位置#define CURSE_ADD0x06    //设定游标移到方向及图像整体移动方向(默认游标右移,图像整体不动)#define FUN_MODE0x30    //工作模式:8位基本指令集#define DISPLAY_ON0x0c    //显示开,显示游标,且游标位置反白#define DISPLAY_OFF0x08    //显示关#define CURSE_DIR0x14    //游标向右移动:AC=AC+1#define SET_CG_AC0x40    //设置AC,范围为:00H~3FH#define SET_DD_AC0x80#define P10 0#define P11 1#define P12 2#define P13 3#define P14 4#define P15 5#define P16 6#define P17 7#define RS_CLRP3OUT &= ~(1 << P13)        //RS置低#define RS_SETP3OUT |= (1 << P13)         //RS置高#define RW_CLRP3OUT &= ~(1 << P16)        //RW置低#define RW_SETP3OUT |= (1 << P16)         //RW置高#define EN_CLRP3OUT &= ~(1 << P17)        //E置低#define EN_SETP3OUT |= (1 << P17)         //E置高#define PSB_CLRP5OUT &= ~(1 << P11)        //PSB置低,串口方式#define PSB_SETP5OUT |= (1 << P11)         //PSB置高,并口方式#define RST_CLRP5OUT &= ~(1 << P12)        //RST置低#define RST_SETP5OUT |= (1 << P12)         //RST置高#define DataPort      P4OUT                 //P4口为数据口//*************************************************************************//                    系统时钟初始化//*************************************************************************void Clock_Init(){  uchar i;  BCSCTL1&=~XT2OFF;                 //打开XT振荡器  BCSCTL2|=SELM1+SELS;              //MCLK为8MHZ,SMCLK为8MHZ  do{    IFG1&=~OFIFG;                   //清除震荡标志    for(i=0;i<100;i++)       _NOP();                      //延时等待  }  while((IFG1&OFIFG)!=0);           //如果标志为1,则继续循环等待  IFG1&=~OFIFG; }//*************************************************************************//              MSP430内部看门狗初始化//*************************************************************************void WDT_Init(){   WDTCTL = WDTPW + WDTHOLD;       //关闭看门狗}//*************************************************************************//初始化IO口子程序//*************************************************************************void Port_init(){    P4SEL = 0x00;        P4DIR = 0xFF;                P3SEL = 0x00;        P3DIR|= BIT3 + BIT6 + BIT7;P5SEL = 0x00;P5DIR|= BIT1 + BIT2;        PSB_SET;  //液晶并口方式    RST_SET;  //复位脚RST置高}//***********************************************************************//显示屏命令写入函数//***********************************************************************void LCD_write_com(unsigned char com) {RS_CLR;RW_CLR;EN_SET;DataPort = com;delay_ms(5);EN_CLR;}//***********************************************************************//显示屏数据写入函数//***********************************************************************void LCD_write_data(unsigned char data) {RS_SET;RW_CLR;EN_SET;DataPort = data;delay_ms(5);EN_CLR;}//***********************************************************************//显示屏清空显示//***********************************************************************void LCD_clear(void) {LCD_write_com(0x01);delay_ms(5);}//***********************************************************************//函数名称:DisplayCgrom(uchar hz)显示CGROM里的汉字//***********************************************************************void DisplayCgrom(uchar addr,uchar *hz){LCD_write_com(addr);        delay_ms(5);while(*hz != '\0'){LCD_write_data(*hz);hz++;                delay_ms(5);}} //****************************************************************//函数名称:Display()显示测试结果//****************************************************************void Display(void){DisplayCgrom(0x80,"启程电子欢迎你");DisplayCgrom(0x88," QQ: 617889341 ");DisplayCgrom(0x90," TodayStart2016  ");//DisplayCgrom(0x98,"电话18782911298");}//***********************************************************************//显示屏初始化函数//***********************************************************************void LCD_init(void) {LCD_write_com(FUN_MODE);//显示模式设置delay_ms(5);LCD_write_com(FUN_MODE);//显示模式设置delay_ms(5);        LCD_write_com(DISPLAY_ON);//显示开delay_ms(5);        LCD_write_com(CLEAR_SCREEN);//清屏delay_ms(5);}//***********************************************************************//      主程序//***********************************************************************void main(void){        WDT_Init();                                   //看门狗设置        Clock_Init();                                 //系统时钟设置        Port_init();                                  //系统初始化,设置IO口属性delay_ms(100);                                //延时100msLCD_init();                                   //液晶参数初始化设置LCD_clear();                                  //清屏while(1){          LCD_write_com(0x98);          LCD_write_data('2');          LCD_write_data('2');          Display();                                    //显示汉字}}

1 0
原创粉丝点击