/********************************************************************
//DM430開發板控制帶字庫型12864液晶模塊顯示測試程序
//顯示模式為漢字模式,直接將12864插入12864接口即可
//注意選擇液晶的電源,位于電位器附近,可選5V或3.3V,根據液晶電壓進行選擇
//調試環境:EW430 V5.30
//
********************************************************************/
#include #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_SCREEN 0x01 //清屏指令:清屏且AC值為00H #define AC_INIT 0x02 //將AC設置為00H。且游標移到原點位置 #define CURSE_ADD 0x06 //設定游標移到方向及圖像整體移動方向(默認游標右移,圖像整體不動) #define FUN_MODE 0x30 //工作模式:8位基本指令集 #define DISPLAY_ON 0x0c //顯示開,顯示游標,且游標位置反白 #define DISPLAY_OFF 0x08 //顯示關 #define CURSE_DIR 0x14 //游標向右移動:AC=AC+1 #define SET_CG_AC 0x40 //設置AC,范圍為:00H~3FH #define SET_DD_AC 0x80 #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_CLR P3OUT &= ~(1 << P13) //RS置低 #define RS_SET P3OUT |= (1 << P13) //RS置高 #define RW_CLR P3OUT &= ~(1 << P16) //RW置低 #define RW_SET P3OUT |= (1 << P16) //RW置高 #define EN_CLR P3OUT &= ~(1 << P17) //E置低 #define EN_SET P3OUT |= (1 << P17) //E置高 #define PSB_CLR P5OUT &= ~(1 << P11) //PSB置低,串口方式 #define PSB_SET P5OUT |= (1 << P11) //PSB置高,并口方式 #define RST_CLR P5OUT &= ~(1 << P12) //RST置低 #define RST_SET P5OUT |= (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 != '
主站蜘蛛池模板:
潜江市|
桃园县|
清水县|
九龙坡区|
阿拉善右旗|
青田县|
桂阳县|
阆中市|
房产|
登封市|
德令哈市|
甘肃省|
东丰县|
宿州市|
松江区|
大同市|
翁源县|
朝阳县|
长武县|
湟中县|
江源县|
和龙市|
雅安市|
红桥区|
饶河县|
高安市|
横峰县|
巴林左旗|
兴业县|
河池市|
南部县|
寻甸|
黄骅市|
武城县|
会理县|
个旧市|
塘沽区|
八宿县|
刚察县|
佛山市|
和田县|