點(diǎn)陣式液晶字符反白和圖形顯示研究
①顯示半寬HCGROM字型。將1字節(jié)寫(xiě)入DDRAM中,范圍為02H~7FH的編碼。
②顯示半寬CGRAM字型。將2字節(jié)編碼寫(xiě)入DDRAM中,總共有0000H、0002H、0004H、0006H四種編碼。
③顯示中文CGROM字型。將2字節(jié)編碼寫(xiě)入DDRAM中,范圍為A1AOH~FTFFH(GB碼)或A140H~D75FH(BIG5碼)的編碼。
2.2 繪圖顯示
繪圖顯示GDRAM提供128×8字節(jié)的記憶空間。在更改繪圖RAM時(shí),先連續(xù)寫(xiě)入水平與垂直的坐標(biāo)值,再寫(xiě)入2個(gè)字節(jié)的數(shù)據(jù)到繪圖RAM中,而地址計(jì)數(shù)器(AC)會(huì)自動(dòng)加1。在寫(xiě)入繪圖顯示RAM的期間,繪圖顯示功能必須關(guān)閉。整個(gè)寫(xiě)入繪圖RAM的步驟如下:
①關(guān)閉繪圖顯示功能;
②先將水平的位元組坐標(biāo)(X)寫(xiě)入繪圖RAM地址,再將垂直的坐標(biāo)(Y)寫(xiě)入繪圖RAM地址;
③依次將D15~D8和D7~D0寫(xiě)入RAM中;
④打開(kāi)繪圖顯示功能。
圖形顯示坐標(biāo)如圖2所示。其中,水平方向X以字節(jié)單位,垂直方向Y以位為單位。
3 字符反白
在實(shí)現(xiàn)人機(jī)交互界面菜單時(shí),字符反白可以表示菜單中不同選項(xiàng)被選中的狀態(tài)。液晶顯示模塊YM12864R的使用手冊(cè)中提供了對(duì)應(yīng)行的反白指令,但在原理上ST7920控制器的128×64點(diǎn)陣液晶等同于256×32點(diǎn)陣,第3行對(duì)應(yīng)的文本顯示(DDRAM)地址緊接著第1行,第4行對(duì)應(yīng)的文本顯示(DDRAM)地址緊接第2行。因此,用戶(hù)對(duì)第1行執(zhí)行反白顯示操作時(shí),第3行必然也反白顯示;對(duì)第2行執(zhí)行反白操作時(shí),第4行也必然反白??梢?jiàn),使用手冊(cè)中自帶的反白指令不能實(shí)現(xiàn)任意字符的反白。
為了解決上述問(wèn)題,可以將圖形顯示和字符顯示結(jié)合起來(lái)使用。在ST7920控制器中,文本顯示的DDRAM和圖形顯示的GDRAM是相互獨(dú)立的,而最后顯示到液晶上的結(jié)果則是,文本顯示DDRAM中數(shù)據(jù)和圖形顯示GDRAM中數(shù)據(jù)的異或結(jié)果。
如果要在液晶顯示模塊的某個(gè)點(diǎn)上呈現(xiàn)反白顯示,那么就在該點(diǎn)繪圖并且顯示文本;如果要取消反白,只需用全“0”擦掉該點(diǎn)的繪圖。這樣,就可以實(shí)現(xiàn)YM12864R的任意字符的反白。
字符反白程序流程如圖3所示。其中,base_x表示繪圖起始的行地址;Y_Pos表示繪圖起始的列地址;第1行至第4行的起始地址分別是(0x80,0x80),(0xS0,0xg0),(0x88,0xS0)和(0x88,0x90)。
反白就是在需要反白的區(qū)域進(jìn)行繪圖,即在這個(gè)區(qū)域?qū)戇M(jìn)0xff。清除一個(gè)區(qū)域的反白,就是對(duì)需要清除反白的區(qū)域清除繪圖,即在這個(gè)區(qū)域?qū)戇M(jìn)0x00。
在整個(gè)繪圖的過(guò)程中,橫向地址指針是自動(dòng)進(jìn)行加1運(yùn)算的,所以只需要確定這一行的首地址橫坐標(biāo);而縱坐標(biāo)的地址不進(jìn)行自動(dòng)加1運(yùn)算,需要在程序中修正,每次修正是以像素為基本單位的。
字符反白顯示實(shí)例如圖4所示。
4 任意位置顯示任意大小圖形
在實(shí)現(xiàn)人機(jī)交互界面時(shí),圖文結(jié)合是常見(jiàn)的一種方式。本文嘗試一種任意位置顯示任意大小圖形(橫向尺寸以字節(jié)為基本單位,縱向尺寸以位為基本單位)的方法,為人機(jī)交互界面的圖形結(jié)合設(shè)計(jì)提供了捷徑。
4.1任意位置顯示任意大小圖形程序
任意位置顯示任意大小圖形程序流程如圖5所示。其中,x1和y1表示所畫(huà)圖的起始點(diǎn)相對(duì)于液晶屏幕左上角起始點(diǎn)(0xS0,0x80)的距離(橫向x1以字節(jié)為基本單位,縱向y1以位為基本單位);x表示所畫(huà)圖的起始橫坐標(biāo)地址;y表示所畫(huà)圖的起始縱坐標(biāo)地址;Write_command()函數(shù)用于向液晶中寫(xiě)命令;templ表示圖形的縱向尺寸(以像素為單位)。
評(píng)論