|
#include<msp430x14x.h> #include"BoardConfig.h" #define Lcd_Out P4DIR=0xff #define Lcd_0 P4DIR=0x00 #define Lcdenable_Out P3DIR |=BIT0+BIT1+BIT2; #define Lcdenable_0 P3DIR &=~(BIT0+BIT1+BIT2) #define Lcd_R P3OUT|=BIT0 #define Lcd_S P3OUT&=~BIT0 #define Lcd_Re P3OUT|=BIT1 #define Lcd_Wr P3OUT&=~BIT1 #define Lcd_E P3OUT|=BIT2 #define Lcd_Ne P3OUT&=~BIT2
#define delayNOP(); {_NOP();_NOP();_NOP();_NOP();}; void delayms(int ms); uchar addr_tab[]={ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,//第一行汉字位置 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,//第二行汉字位置 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,//第三行汉字位置 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,//第四行汉字位置 };
/*******************************************************************/ /* */ /*写指令数据到LCD */ /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */ /* */ /*******************************************************************/ void lcd_wcmd(uchar cmd) { Lcdenable_Out; Lcd_S; Lcd_Wr; _NOP(); _NOP(); Lcd_Ne; Lcd_Out; P4OUT = cmd; delayNOP(); Lcd_E; delayNOP(); Lcd_Ne; }
/*******************************************************************/ /* */ /*写显示数据到LCD */ /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */ /* */ /*******************************************************************/ void lcd_wdat(uchar dat) { Lcdenable_Out; Lcd_R; Lcd_Wr; Lcd_Ne; Lcd_Out; P4OUT=dat; delayNOP(); // delayms(100); Lcd_E; delayNOP(); //delayms(100); Lcd_Ne; }
//LCD的初始化 void lcd_init() { BoardConfig(0x00); BoardConfig(0x8a);//0100 1010
} //延时程序 void delayms(int ms) { while(ms--) { uchar i; for(i=0;i<5;i++) { _NOP(); _NOP(); _NOP(); } } }
/*********************************************************/ /* */ /* 设定显示位置 */ /* ********************************************************/
void lcd_pos(uchar x,uchar y) { lcd_wcmd(addr_tab[8*x+y]); }
void main( void ) { WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 uchar code_dis1[] = {"A"}; uchar code_dis2[] = {"B"}; uchar code_dis3[] = {"C"}; uchar code_dis4[] = {"D"};
uchar i; delayms(10); //延时 lcd_init(); //初始化LCD lcd_pos(0,0); //设置显示位置为第一行的第1个字符 i = 0; while(1) {while(code_dis1 != '\0') { //显示字符 lcd_wdat(code_dis1); i++; } lcd_pos(1,0); //设置显示位置为第二行的第1个字符 i = 0; while(code_dis2 != '\0') { lcd_wdat(code_dis2); //显示字符 i++; } lcd_pos(2,0); //设置显示位置为第三行的第1个字符 i = 0; while(code_dis3 != '\0') { lcd_wdat(code_dis3); //显示字符 i++; } lcd_pos(3,0); //设置显示位置为第四行的第1个字符 i = 0; while(code_dis4 != '\0') { lcd_wdat(code_dis4); //显示字符 i++; } }
}
Boardconfig()是开发板上的资源配置,在线等啊,刚学求助。。。。。。
|
|