勇敢的芯伴你玩轉Altera FPGA連載70:LCD字符顯示驅動 特權同學,版權所有 配套例程和更多資料下載鏈接: http://pan.baidu.com/s/1i5LMUUD ![]() 要顯示字符,首先需要獲得字模數據,我們使用字模軟件PCtoLCD2002。該字模軟件用1bit代表一個像素點,即它只能表示2種顏色的圖像,當然不是僅僅局限于黑和白了,用戶可以根據需要來決定這1bit數據(0或1)代表的色彩。 下面說明我們的設計中需要的字符是如何取模的,啟動取模軟件PCtoLCD2002,點擊菜單欄的“模式”,選擇“字符模式”。再點擊菜單欄的“選項”(或點擊如圖8.84所示的齒輪圖標),在彈出的對話框中設置如圖8.70所示(行后綴為英文的“;”)。此外,在主界面中,我們設置字符寬度為64*64(實際上如果我們是給字符取模,它默認為32*64),在主界面下方的字模輸入框中輸入了大寫字母A,接著點擊它右側的“生成字模”按鈕(圖中沒有示意),則在輸出欄中出現了一大串32bit一行,并且行后綴為“;”的字符,copy他們,后面馬上就會用上。 ![]() 圖8.70 字符取模軟件 32*64點陣的字符“A”取模后的數據如下。實際上這些數據如果我們用二進制的0和1一位位的將他們排列開來,則我們可以看到1可以排列出一個字母“A”出來。正是根據這個原理,我們后面會每行32位的將他們送往液晶屏顯示,一共有64行這樣的顯示。 A(0) 00000000; 00000000; 00000000; 00000000; 00000000; 00000000; 00000000; 00000000; 00000000; 00000000; 0000C000; 0003C000; 0003C000; 0007E000; 0007E000; 0007E000; 0006E000; 000CF000; 000CF000; 000CF000; 000CF000; 00187800; 00187800; 00187800; 00187800; 00303C00; 00303C00; 00303C00; 00303C00; 00701C00; 00601E00; 00601E00; 00601E00; 00E00E00; 00C00F00; 00C00F00; 00FFFF00; 01FFFF00; 01800F80; 01800780; 01800780; 03800780; 030007C0; 030003C0; 030003C0; 070003C0; 060003E0; 060001E0; 060001E0; 0E0001E0; 0E0001F0; 1F0001F8; 7FC00FFE; 7FC00FFE; 00000000; 00000000; 00000000; 00000000; 00000000; 00000000; 00000000; 00000000; 00000000; 00000000;/*"A",0*/ 基于前面取到的字模數據,我們假定從屏幕的(0,0)坐標到(31,63)坐標區域(對應就是32*64的點陣)內顯示字符。那么當坐標計數器刷新到(0,0)坐標點的時候我們就要相應判斷第一行數據的bit31的值,然后決定送哪種色彩(0代表一種色彩,1代表另一種色彩)。當坐標計數器刷新到(1,0)坐標點的時候我們就要相應判斷第一行數據的bit30的值……直到刷新到(31,0)時判斷第一行數據的bit0的值,由此完成了首行字模數據的譯碼。往后的譯碼都和首行類似,64行字模數據尋址完畢后,大寫字母“A”便出現在我們的屏幕上。 當然了,為了顯示得美觀,我們特意將這個32*64的大寫字母“A”放到了320*240的LCD的正中央。那么它的坐標就不是(0,0)到(31,63)的區域了。而是(144,104)到(175,135)這個區域。我們這個實例最終要顯示的效果如圖8.71所示。在(144,104)到(175,135)這個區域內,字符“A”以藍(16’h001f)字紅(16’hf800)底顯示,LCD的其他顯示區域則為黑色(16’h0000)。 ![]() 圖8.71 字符坐標 |