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