基于SOPC的通用字符VGA顯示電路設計
3.2 漢字字符顯示函數(shù)show_hz
此函數(shù)用于在VGA輸出畫面的(x,y)坐標處顯示單個漢字字符hz,主要代碼如下:
3.3 字符串顯示函數(shù)show_str
此函數(shù)用于在VGA輸出畫面的(x,y)坐標處顯示長度為len的字符串str,內(nèi)容可以由ASCII碼及漢字混合組成,其主要代碼如下:
4 實例應用
基于以上的軟硬件設計,這里以萬年歷作為其應用的一個實例。以往基于FPGA的萬年歷設計多使用LCD或七段數(shù)碼管作為輸出,顯示基本的數(shù)字和符號尚可,但若要加入問候語、紀念日等中文信息則難于實現(xiàn),基于本電路設計的萬年歷則可以解決這一問題。
從功能上劃分,此萬年歷設計可分為3個模塊:
(1)時間日期生成模塊。此模塊包含年、月、日、星期、時、分、秒共7個變量的輸出,每個變量都有各自的子模塊,每個子模塊都包含預置、計數(shù)、進位和顯示的功能。其中星期的確定方法是計算當前日期與1990年1月1日(星期一)之間間隔的天數(shù),將此天數(shù)對7取模并加1,即得到當前星期的數(shù)字。
系統(tǒng)啟動時,首先將預置的初始時間日期傳遞給顯示函數(shù),由顯示函數(shù)在預定位置分別顯示7個數(shù)據(jù),將數(shù)字加上0x30便得到其對應的ASCII碼值,其中星期是將1~7的數(shù)字按星期一~星期日的漢字顯示。
隨后進入系統(tǒng)的主循環(huán),以1秒鐘為循環(huán)間隔,當前級數(shù)字到達最大值時向下一級數(shù)字進位。其中日進位時需判斷月份類型(大月、小月或2月),當前月為2月時還需判斷年份類型(是否閏年),以確定日的進位數(shù)值。其他數(shù)字的進位值是固定的,其中年的范圍設定為1990~2099。
評論