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