新聞中心

        EEPW首頁 > 光電顯示 > 設計應用 > 計算機EPP控制CPLD顯示點陣漢字的實現

        計算機EPP控制CPLD顯示點陣漢字的實現

        作者: 時間:2009-03-04 來源:網絡 收藏

        其中,lHzkPosition是庫中的首地址,nSection和nPosition分別是的區碼和位碼。Windows 2000/XP操作系統默認的字符集是Unicode,這是一個全球一體化的字符集,無法映射得到漢字的GB2312區位碼。所以,軟件的字符編碼方式必須采用GB2312,在VC++中采用MBCS(Multi-Byte Char System)即可。在此使用一個CString對象存儲需要的文本,CString可以以字節為單位進行操作,一個漢字(或其它全角字符)對應兩個字節。如果保證這個CString里面的字符全部是全角字符,就可以在漢字庫里找到它們的。以字節為單位讀取字符的機內碼。將一個字符的高字節減去0xA0就得到漢字的區碼;將一個字符的低字節減去0xA0就得到漢字的位碼。為避免頻繁磁盤讀寫,同時較大程度的集成,可以把HZK16漢字庫放到程序的資源中。確定此資源在內存中的首地址,再加上由區位碼計算得到的字庫的存儲位置,就可以確定在內存中的位置。

        在程序中加入兩個定時器,分別定時觸發漢字滾動和數據發送事件。漢字滾動用位操作,建立一個32字節的字節數組,用來存儲當前屏上需要的點陣,定時器觸發時,根據當前顯示的字符和已經移位的次數,讀取待顯示的相應位置,并將讀取出來的點陣數據移位相加,即可獲得當前屏幕需要顯示的點陣。調整定時器觸發的時間間隔,即可調整漢字滾動的速度。

        4.2 點陣漢字發送的原理

        以字節為單位讀取待顯示的32字節數組,根據前述協議,通過操作并口寄存器將每次讀到的字節數據發送到,并讀取的返回狀態,不斷地握手、發送、等待應答,直到以用戶給定的幀速將點陣數據發送完畢。幀速的設定是因為發送定時器的觸發時間較長,會產生較嚴重的閃爍現象,因此每次發送定時器觸發時,同一幀數據發送多次,就可以有效的減少閃爍感。用戶可以根據使用環境,隨時調整幀速以達到最好的顯示效果。

        為了避免設備掉電或者其他原因沒有應答造成的程序死鎖,發送程序必須包含超時檢測。在等待應答時,反復讀取并口的狀態寄存器,以一個臨時變量記錄沒有應答的次數,并和一個預先設定好的最大應答延遲次數相比較,如果超過最大延遲次數,則判定CPLD應答超時,停止繼續發送并提示用戶。最大延遲次數的設定和CPLD采用的晶振頻率有關,在實驗中,若采用4Mhz晶振,正常工作狀態下,無需循環,可以實時檢測到CPLD的應答信號;若采用250Khz晶振,則需要多次檢測才可以檢測到應答信號,此時若將最大延遲次數設置過低,將設備判為延遲并重新發送,極易引起顯示屏的閃爍。

        5 結束語

        通過本設計我們可以看到,利用并口的模式結合CPLD設計數字電子系統,可以將大量繁雜工作交給軟件承擔,利用計算機強大的開發環境來完成。本文作者創新點:提出了一種有助于減小系統設計難度、縮短開發時間的設計方式,同時可以得到友好的人機界面和方便的操作。這種設計方法具有一定的通用性,對需要使用CPLD的電子設計,尤其是實驗教學具有一定的參考價值。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 禄丰县| 钦州市| 长子县| 徐闻县| 福清市| 巴楚县| 尉犁县| 垫江县| 北碚区| 洪雅县| 淮滨县| 无棣县| 托克逊县| 青州市| 金坛市| 进贤县| 贵港市| 唐海县| 万源市| 乳源| 弋阳县| 凯里市| 化德县| 汝城县| 开鲁县| 金寨县| 航空| 沂源县| 紫金县| 扎兰屯市| 太仓市| 张北县| 巨野县| 南安市| 秀山| 仙居县| 德安县| 安吉县| 金坛市| 育儿| 化德县|