新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > AMPIRE12864驅(qū)動程序

AMPIRE12864驅(qū)動程序

作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
寫數(shù)據(jù)驅(qū)動函數(shù)代碼如下:
void write_data(uchar Data)
{
check_busy();
RSRW=2; //R/W=0,RS=1,E=0寫控數(shù)據(jù)準備
DB=Data; //送出數(shù)據(jù)
RSRW=6; //R/W=0,RS=1,E=1寫數(shù)據(jù)
_nop_();
_nop_();
RSRW=2;
}
1)設(shè)定顯示字符行列地址
在AMPIRE12864上顯示一個字符是必須先設(shè)定其行列地址,設(shè)定行列地址的操作指令見表2-11。
設(shè)定顯示字符行列地址驅(qū)動函數(shù)代碼如下:
void set_xy(uchar x,uchar y)//x為行,y為列
{
if(y>=64)//列地址大于等于64時右屏顯示
{
CS=1;
y=y-64;
}
else//列地址小于64時左屏顯示
{
CS=2;
}
write_cm(0x40|y);寫列地址
_nop_();
write_cm(0xb8|x);寫行地址
}
2)AMPIRE12864的初始化
在對AMPIRE12864操作前須初始化,對其做一些必要的設(shè)置。這些設(shè)置包括:基本指令操作設(shè)置;開顯示,關(guān)光標,不閃爍;清除顯示;光標的移動方向,DDRAM的地址計數(shù)器加1。設(shè)置的操作指令詳見表2-11。
AMPIRE12864初始化驅(qū)動函數(shù)代碼如下:
void LCD_Init()
{
write_cm (0x30);//30H--基本指令操作delayus(4);write_cm (0x0c);//開顯示,關(guān)光標,不閃爍。delayus(10);write_cm (0x01);//清除顯示delayms(10);
write_cm (0x06);//光標的移動方向左,DDRAM的地址計數(shù)器(AC)加1。
delayus(10);
}
3)AMPIRE12864顯示功能模塊
AMPIRE12864顯示功能通過函數(shù)void disp(ucharindex[4][16])實現(xiàn)。入口參數(shù)uchar index[4][16]為字庫索引數(shù)組,給出在指定位置顯示的字符的圖形點陣在uchar code zk[][16]中的索引地址,本系統(tǒng)中所有字符的圖形點陣都由字模提取軟件提取并存儲在圖形點陣數(shù)組ucharcode zk[][16]中。
在voiddisp(uchar index[4][16])調(diào)用了兩個函數(shù):void Disp_hz(uchar R,ucharL,uchar *p)用來顯示漢字,其程序代碼如下:
void Disp_hz(uchar R,uchar L,uchar *p)
{
uchar i;
for(i=0;i<16;i++)
{
set_xy(2*R,16*L+i);//設(shè)定顯示位置
write_data(p[i]);//寫入DDRAM
set_xy(2*R+1,16*L+i);
write_data(p[i+16]);
}
}
入口參數(shù)uchar R,uchar L分別指明字符或漢字的顯示位置的行號和列號,uchar *p為圖形點陣數(shù)組的首地址指針。
voidDisp_zf(uchar R,uchar L,uchar *p)用來顯示ASCII字符,其程序代碼如下:
voidDisp_zf(uchar R,uchar L,uchar *p)
{
uchari;
for(i=0;i<8;i++)
{
set_xy(2*R,8*L+i);
write_data(p[i]);
set_xy(2*R+1,8*L+i);
write_data(p[i+8]);
}
}
入口參數(shù)uchar R,uchar L分別指明字符或漢字的顯示位置的行號和列號,uchar *p為圖形點陣數(shù)組的首地址指針。
AMPIRE12864顯示功能模塊程序代碼如下:
void disp(uchar index[4][16])
{
uchar i,j;
for(i=0;i<4;i++)
for(j=0;j<16;j++)
if(index[i][j]>14)
{
Disp_hz(i,j/2,&zk[index[i][j]][0]);//顯示漢字
j++;
}
else
Disp_zf(i,j,&zk[index[i][j]][0]);//顯示ASCII字符
}
顯示以一整屏為單位,在顯示之前應(yīng)先給index[4][16]賦值以確定液晶顯示器的顯示內(nèi)容。如給index[4][16]以下賦值:
index[0][2]=131;index[0][4]=133;
index[0][6]=135;index[0][8]=137;
index[0][10]=139;index[0][12]=139;
顯示的內(nèi)容如圖3-6所示。

圖3-6液晶顯示器顯示示例
序各函數(shù)包含于頭文件12864.h中,在主函數(shù)中加入宏定義#include"12864.h"。
上一頁 1 2 3 下一頁

關(guān)鍵詞: AMPIRE12864驅(qū)動程

評論


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

關(guān)閉