新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于F2812的監(jiān)測系統(tǒng)的設(shè)計

基于F2812的監(jiān)測系統(tǒng)的設(shè)計

作者: 時間:2009-03-31 來源:網(wǎng)絡(luò) 收藏

在下面將列出部分初始化程序來說明指令的使用,但對于CSRDIR和CSRW指令,有必要詳細(xì)解釋一下。CSRDIR指令是用來設(shè)置光標(biāo)移動方向的,有上,下,左,右四個移動方向(4EH,4FH,4DH,4CH),CSRW指令則是用來設(shè)置光標(biāo)地址的。要特別注意這里的光標(biāo)是對應(yīng)顯存里面的一個字節(jié)(byte),而不是對應(yīng)字節(jié)里的一個位(bit),當(dāng)設(shè)置光標(biāo)向右移動時,每寫完一個字節(jié)數(shù)據(jù)到顯存,光標(biāo)地址就會加一,此時對應(yīng)顯存的字節(jié)地址加一;同理,設(shè)置光標(biāo)向左移動時,對應(yīng)顯存的字節(jié)地址減一。而當(dāng)設(shè)置光標(biāo)向下移動時,目標(biāo)光標(biāo)地址(字節(jié)地址)=當(dāng)前光標(biāo)地址(字節(jié)地址)+AP(液晶屏一行所對應(yīng)顯存的字節(jié)數(shù)),注:一般AP設(shè)置為完整顯示液晶屏一行所用字節(jié)數(shù)加1,即40+1=41. 如下圖所示,如果當(dāng)前光標(biāo)在字節(jié)地址Add1處,則寫完一個字節(jié)數(shù)據(jù)后光標(biāo)則移到了字節(jié)地址Add42處;同理,設(shè)置光標(biāo)向上移動時,如果當(dāng)前光標(biāo)在Add81處,則寫完一個字節(jié)數(shù)據(jù)后光標(biāo)則移到了Add40處

5. 的軟件

5.1初始化LCD程序:

#define LCD_DAT (*((volatile unsigned int *)0x3800)) //定義數(shù)據(jù)寄存器

#define LCD_COM (*((volatile unsigned int *)0x3801))//定義指令寄存器

void Lcd_init(void)

{

LCD_COM = 0x40;//顯示窗口設(shè)置指令,之后帶8個參數(shù)

LCD_DAT = 0x30;//單屏LCD模式,內(nèi)部字元發(fā)生器有效

LCD_DAT = 0x87;//顯示字符寬度8

LCD_DAT = 0x07;//顯示字符高度8

LCD_DAT = 0x27;//一行顯示40個字節(jié)

LCD_DAT = 0x46;

LCD_DAT = 0xEF;//總共顯示240行

LCD_DAT = 0x28;//AP=40+1

LCD_DAT = 0x00;

…………… //其他初始化指令

}

5.2 顯示一個32x32字符程序:

void Disp16x32Char(void)

{

LCD_COM = 0x4E;//設(shè)置光標(biāo)地址自動移動方向 向上

for(i=0;i4;i++)//從左到右連續(xù)寫入4列數(shù)據(jù),每列32字節(jié),共128字節(jié)

{ // x1取值范圍1--40,y1取值范圍1--240

Set_Graphic_Csr(x1,y1); //根據(jù)光標(biāo)所在位置計算出對應(yīng)的字節(jié)地址

p = CharTab[1]; //指針指向字模數(shù)組

LCD_COM = 0x42; //寫顯示數(shù)據(jù)指令

//自下而上寫入32個字節(jié)

for(j=0;j32;j++)

{

LCD_DAT = p[j+32*i+128*k];//從字模數(shù)組中取出一字節(jié)

}

x1++;//準(zhǔn)備寫右邊一列數(shù)據(jù)

}

}



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉