一種嵌入式顯示系統(tǒng)的軟件設(shè)計(jì)及應(yīng)用
3.1 字符顯示原理
UCDOS軟件中的文件HZK16與文件ASC16分別為1 6×1 6的國標(biāo)漢字點(diǎn)陣文件和8×1 6的ASCII碼點(diǎn)陣文件,以二進(jìn)制格式存儲。在文件HZK 16中,按漢字區(qū)位碼從小到大依次存有國標(biāo)區(qū)位碼表中的所有漢字,每個漢字占用32個字節(jié)(16×16的漢字點(diǎn)陣),每個區(qū)為94個漢字。在文件ASC16中按ASCII碼從小到大依次存有8×1 6的ASCII碼點(diǎn)陣,每個ASCII碼占用1 6個字節(jié)。
在PC機(jī)的文本文件中,漢字是以機(jī)內(nèi)碼的形式存儲的,每個漢字占用兩個字節(jié)。第一個字節(jié)為區(qū)碼,為了與ASCII碼區(qū)別,范圍從十六進(jìn)制的0A1H開始(小于80H的為ASCII碼字符),對應(yīng)區(qū)位碼中區(qū)碼的第一區(qū);第二個字節(jié)為位碼,范圍也是從0A1H開始,對應(yīng)某區(qū)中的第一個位碼。這樣,將漢字機(jī)內(nèi)碼減去0A0A0H就得該漢字的區(qū)位碼。例如漢字“我”的機(jī)內(nèi)碼為十六進(jìn)制的“CED2”,其中“CE”表示區(qū)碼,“D2”表示位碼。所以“我”的區(qū)位碼為0CED2H-0A0A0H=2E32H。將區(qū)碼和位碼分別轉(zhuǎn)換為十進(jìn)制得漢字“我”的區(qū)位碼為“4650”,即“房”的點(diǎn)陣位于第46區(qū)的第50個字的位置,相當(dāng)于在文件HZK16中的位置為第32×[(46-1)×94+(50-1)]=67136 B以后的32個字節(jié)為“我”的顯示點(diǎn)陣。
依次讀出每個字節(jié),每讀出一個字節(jié),并提取該字節(jié)中的每一位,如果某位是“1”,則給該位數(shù)據(jù)對應(yīng)的像素點(diǎn)送入兩個字節(jié)的字體顏色數(shù)據(jù),如(0x0000,黑色);如果某位是“0”,則給該位數(shù)據(jù)對應(yīng)的像素點(diǎn)送入兩個字節(jié)的底色數(shù)據(jù),如(0xffff,白色)。當(dāng)發(fā)送完32個字節(jié)的點(diǎn)陣數(shù)據(jù)后(總共發(fā)送的顏色數(shù)據(jù)為32B×8dot×2B=512 B)液晶屏上便會顯示底色為白色,字體顏色為黑色的漢字。漢字“我”的顯示結(jié)果如圖3所示。
液晶顯示器的色彩深度為16位,每個像素可顯示65 536色。SRAM工作在字(word)操作模式下,將SRAM中的每個字與液晶顯示器的每個像素對應(yīng)。比如將液晶顯示器第一行第一列的點(diǎn)與SRAM的0x0000地址對應(yīng),第一行第二列的點(diǎn)與0x0001地址對應(yīng),依次類推。
3.2 通過PC機(jī)鍵盤進(jìn)行界面操作
通過PC機(jī)鍵盤進(jìn)行界面操作時,使用電腦軟件將鍵盤的操作鍵值通過PC機(jī)串口發(fā)送給單片機(jī)串口0,單片機(jī)串口0每中斷一次接收到一個字節(jié)的數(shù)據(jù),接收到的數(shù)據(jù)可分為3種情況:數(shù)值大于0xA0時,說明該字節(jié)是某漢字兩字節(jié)數(shù)據(jù)中的一個字節(jié);數(shù)值為0x20~0x7f時,表示該字節(jié)是可打印的ASCII碼字符;數(shù)值小于0x20時,表示該字節(jié)是不可打印的數(shù)值,可用這36個數(shù)值作為界面操作的控制命令字節(jié)。連續(xù)接收完兩個數(shù)值大于0xA0數(shù)據(jù)時,就可以轉(zhuǎn)換成某個漢字;每接收到一個數(shù)值為0x20~0x7f的數(shù)據(jù)時,就可以轉(zhuǎn)換成某個ASCII碼字符;每接收到一個數(shù)值小于0x20的數(shù)據(jù)時,就可以翻譯成某個操作命令,進(jìn)行相應(yīng)的控制操作。圖4為鍵盤接口操作中斷流程。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)led顯示器相關(guān)文章:led顯示器原理
評論