www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]/********************************************************************//DM430開發(fā)板控制帶字庫型12864液晶模塊顯示測試程序//顯示模式為漢字模式,直接將12864插入12864接口即可//注意選擇液晶的電源,位于電位器

/********************************************************************

//DM430開發(fā)板控制帶字庫型12864液晶模塊顯示測試程序

//顯示模式為漢字模式,直接將12864插入12864接口即可

//注意選擇液晶的電源,位于電位器附近,可選5V或3.3V,根據(jù)液晶電壓進行選擇

//調(diào)試環(huán)境: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應(yīng)用指令*/

#define CLEAR_SCREEN 0x01 //清屏指令:清屏且AC值為00H

#define AC_INIT 0x02 //將AC設(shè)置為00H。且游標(biāo)移到原點位置

#define CURSE_ADD 0x06 //設(shè)定游標(biāo)移到方向及圖像整體移動方向(默認(rèn)游標(biāo)右移,圖像整體不動)

#define FUN_MODE 0x30 //工作模式:8位基本指令集

#define DISPLAY_ON 0x0c //顯示開,顯示游標(biāo),且游標(biāo)位置反白

#define DISPLAY_OFF 0x08 //顯示關(guān)

#define CURSE_DIR 0x14 //游標(biāo)向右移動:AC=AC+1

#define SET_CG_AC 0x40 //設(shè)置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口為數(shù)據(jù)口

//*************************************************************************

// 系統(tǒng)時鐘初始化

//*************************************************************************

void Clock_Init()

{

uchar i;

BCSCTL1&=~XT2OFF; //打開XT振蕩器

BCSCTL2|=SELM1+SELS; //MCLK為8MHZ,SMCLK為8MHZ

do{

IFG1&=~OFIFG; //清除震蕩標(biāo)志

for(i=0;i<100;i++)

_NOP(); //延時等待

}

while((IFG1&OFIFG)!=0); //如果標(biāo)志為1,則繼續(xù)循環(huán)等待

IFG1&=~OFIFG;

}

//*************************************************************************

// MSP430內(nèi)部看門狗初始化

//*************************************************************************

void WDT_Init()

{

WDTCTL = WDTPW + WDTHOLD; //關(guān)閉看門狗

}

//*************************************************************************

// 初始化IO口子程序

//*************************************************************************

void Port_init()

{

P4SEL = 0x00;

P4DIR = 0xFF;

P3SEL = 0x00;

P3DIR|= BIT3 + BIT6 + BIT7;

P5SEL = 0x00;

P5DIR|= BIT1 + BIT2;

PSB_SET; //液晶并口方式

RST_SET; //復(fù)位腳RST置高

}

//***********************************************************************

// 顯示屏命令寫入函數(shù)

//***********************************************************************

void LCD_write_com(unsigned char com)

{

RS_CLR;

RW_CLR;

EN_SET;

DataPort = com;

delay_ms(5);

EN_CLR;

}

//***********************************************************************

// 顯示屏數(shù)據(jù)寫入函數(shù)

//***********************************************************************

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

}

//***********************************************************************

//函數(shù)名稱:DisplayCgrom(uchar hz)顯示CGROM里的漢字

//***********************************************************************

void DisplayCgrom(uchar addr,uchar *hz)

{

LCD_write_com(addr);

delay_ms(5);

while(*hz != '