AMPIRE12864驅(qū)動(dòng)程序
寫數(shù)據(jù)驅(qū)動(dòng)函數(shù)代碼如下:
void write_data(uchar Data)
{
check_busy();
RSRW=2; //R/W=0,RS=1,E=0寫控?cái)?shù)據(jù)準(zhǔn)備
DB=Data; //送出數(shù)據(jù)
RSRW=6; //R/W=0,RS=1,E=1寫數(shù)據(jù)
_nop_();
_nop_();
RSRW=2;
}
1)設(shè)定顯示字符行列地址
在AMPIRE12864上顯示一個(gè)字符是必須先設(shè)定其行列地址,設(shè)定行列地址的操作指令見(jiàn)表2-11。
設(shè)定顯示字符行列地址驅(qū)動(dòng)函數(shù)代碼如下:
void set_xy(uchar x,uchar y)//x為行,y為列
{
if(y>=64)//列地址大于等于64時(shí)右屏顯示
{
CS=1;
y=y-64;
}
else//列地址小于64時(shí)左屏顯示
{
CS=2;
}
write_cm(0x40|y);寫列地址
_nop_();
write_cm(0xb8|x);寫行地址
}
2)AMPIRE12864的初始化
在對(duì)AMPIRE12864操作前須初始化,對(duì)其做一些必要的設(shè)置。這些設(shè)置包括:基本指令操作設(shè)置;開(kāi)顯示,關(guān)光標(biāo),不閃爍;清除顯示;光標(biāo)的移動(dòng)方向,DDRAM的地址計(jì)數(shù)器加1。設(shè)置的操作指令詳見(jiàn)表2-11。
AMPIRE12864初始化驅(qū)動(dòng)函數(shù)代碼如下:
void LCD_Init()
{
write_cm (0x30);//30H--基本指令操作delayus(4);write_cm (0x0c);//開(kāi)顯示,關(guān)光標(biāo),不閃爍。delayus(10);write_cm (0x01);//清除顯示delayms(10);
write_cm (0x06);//光標(biāo)的移動(dòng)方向左,DDRAM的地址計(jì)數(shù)器(AC)加1。
delayus(10);
}
3)AMPIRE12864顯示功能模塊
AMPIRE12864顯示功能通過(guò)函數(shù)void disp(ucharindex[4][16])實(shí)現(xiàn)。入口參數(shù)uchar index[4][16]為字庫(kù)索引數(shù)組,給出在指定位置顯示的字符的圖形點(diǎn)陣在uchar code zk[][16]中的索引地址,本系統(tǒng)中所有字符的圖形點(diǎn)陣都由字模提取軟件提取并存儲(chǔ)在圖形點(diǎn)陣數(shù)組ucharcode zk[][16]中。
在voiddisp(uchar index[4][16])調(diào)用了兩個(gè)函數(shù):void Disp_hz(uchar R,ucharL,uchar *p)用來(lái)顯示漢字,其程序代碼如下:
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分別指明字符或漢字的顯示位置的行號(hào)和列號(hào),uchar *p為圖形點(diǎn)陣數(shù)組的首地址指針。
voidDisp_zf(uchar R,uchar L,uchar *p)用來(lái)顯示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分別指明字符或漢字的顯示位置的行號(hào)和列號(hào),uchar *p為圖形點(diǎn)陣數(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液晶顯示器顯示示例
圖3-6液晶顯示器顯示示例
AMPIRE12864驅(qū)動(dòng)程序各函數(shù)包含于頭文件12864.h中,在主函數(shù)中加入宏定義#include"12864.h"。
關(guān)鍵詞:
AMPIRE12864驅(qū)動(dòng)程
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開(kāi)關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開(kāi)發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論