液晶顯示控制電路KS0713的初始化編程技巧
Send_Command(0x26); //調(diào)節(jié)寄存器選擇
Send_Command(0x81); //設(shè)定參考電壓模式
Send_Command(0x1C); //設(shè)定參考電壓寄存器
Send_Command(0x40); //設(shè)定顯示行(COM1)
Send_Command(0xAF); //等待顯示開始
}
顯示數(shù)據(jù)的起始位置
由于KS0713的地址空間是65×132的,實際在控制LCD時由于只用到64×128的地址空間,就存在著起始地址的問題。 KS0713內(nèi)部規(guī)定了65行構(gòu)成了9頁,其中前8頁由8列構(gòu)成(DB0~DB7),第9頁是單獨的一行(只有DB0),因此數(shù)據(jù)并行傳輸過去之后始終是從DB0(第一行開始顯示)。而列地址則不同,內(nèi)部地址對應(yīng)的方式不同則會導(dǎo)致起始數(shù)據(jù)列地址的不同。如果,LCD的第0列地址和KS0713的第0列地址相對應(yīng),則相應(yīng)的起始列地址為0x00;如果,LCD的第0列地址和KS0713的第1列地址相對應(yīng),則相應(yīng)的起始列地址為0x01;……以此類推。因此在使用以KS0713為控制器的液晶顯示時對此問題要特別注意。
字模點陣數(shù)據(jù)的提取和傳輸
KS0713的逐行和逐列顯示順序可以根據(jù)用戶的不同要求在初始化時加以設(shè)置。KS0713控制芯片向LCD送數(shù)據(jù)的方式與通常習(xí)慣的橫向數(shù)據(jù)傳輸方式不同,而是采用豎向數(shù)據(jù)傳輸方式,與前面初始化的實例相對應(yīng)的顯示順序為:對于64行128列的LCD,先送第1列的第0行到第7行的數(shù)據(jù),第2列的第0行到第7行的數(shù)據(jù),…直到第128列的第0行到第7行的數(shù)據(jù);再送第1列的第8行到第15行的數(shù)據(jù),第2列的第8行到第15行的數(shù)據(jù),……;最終第128列,第56行到第63行的數(shù)據(jù)。ADC選擇指令可以倒轉(zhuǎn)列地址和顯示列地址之間的對應(yīng)關(guān)系,如圖1所示,這時要求送數(shù)據(jù)格式為:先送第1列的第7行到第0行的數(shù)據(jù),第2列的第7行到第0行的數(shù)據(jù)…,直到第128列的第63行到第56行的數(shù)據(jù)。
由此對于字模的提取,KS0713也就有不同的要求:為了能夠在LCD上顯示出圖2a的圖形,必須先將圖2a橫向左右調(diào)換得到圖2b,再將圖2b沿縱向上下調(diào)換得到圖2c。最終傳輸以圖2c所提取的字模數(shù)據(jù),才可以得到圖2a的顯示。
利用字模數(shù)據(jù)提取工具提取圖中的字模數(shù)據(jù),并按上述要求進行上下調(diào)換,其輸出顯示的C代碼如下:
{ unsigned char seg_0[ ]={ 0x00,0x04,0x04,0x06,0x04,0x08,0x88,0x50,
0x20,0x50,0x88,0x04,0x04,0x02,0x02,0x02,}; // “文”字的上半部分
unsigned char seg_1[ ]={ 0x00,0x10,0x10,0x10,0x10,0x1E,0x11,0x10,
0x70,0x90,0x11,0x1E,0x10,0x10,0x10,0x10,}; // “文”字的下半部分
Send_Command(0xB0) ; // 第0行起始
Send_Command(0x04) ; // 第0列起始
for(i=0;i16;i++)
{ Send_Data(seg_0[i]); }
Send_Command(0xB1) ; // 第1行起始
Send_Command(0x04) ; // 第0列起始
for(i=0;i16;i++)
{ Send_Data(seg_1[i]); }
}
系統(tǒng)在執(zhí)行上面的代碼后在液晶屏的左上角顯示如圖所示的字符。在實際開發(fā)過程中,開發(fā)人員可以使用“字模3增強版”字模提取軟件提取相關(guān)的字符數(shù)據(jù)。
評論