資源描述:
《點(diǎn)陣漢字顯示原理》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、點(diǎn)陣漢字顯示原理漢字內(nèi)碼 在電腦中,所有的數(shù)據(jù)都是以0和1保存的,按不同的數(shù)據(jù)操作,可以得到不同的結(jié)果。對(duì)于顯示英文操作,由于英文字母種類(lèi)很少,只需要8位(一字節(jié))即可。而對(duì)于中文,常用卻有6000以上,于是我們的DOS前輩想了一個(gè)辦法,就是將ASCII表的高128個(gè)很少用到的數(shù)值以?xún)蓚€(gè)為一組來(lái)表示漢字,即漢字的內(nèi)碼。而剩下的低128位則留給英文字符使用,即英文的內(nèi)碼。漢字字?! 〉玫搅藵h字的內(nèi)碼后,還僅是一組數(shù)字,那又如何在屏幕上去顯示呢?這就涉及到文字的字模,字模雖然也是一組數(shù)字,但它的意義卻與數(shù)字的意義有了根本的變化,它是用數(shù)字的各位信息來(lái)記載英文或漢字的形狀,如英文的'A'在字模中是
2、這樣記載的:而中文的“你”在字模中卻是這樣記載的: 在硬件系統(tǒng)內(nèi),英文的字模信息一般固化在ROM里,中文的字模信息一般記錄在漢字庫(kù)文件HZK16里。采用漢字字模點(diǎn)陣數(shù)據(jù)批量生成工具(下載)漢字字模工具產(chǎn)生的隨意字模如何在點(diǎn)陣LED或LCD中顯示漢字?假設(shè)你采用16x16點(diǎn)陣漢字,水平掃描。顯示漢字為“?!?,用產(chǎn)生如下字模unsignedcharmo[]={0x00,0x00,0x10,0x90,0x10,0x94,0x13,0xFE,0x7C,0x90,0x11,0xFC,0x19,0x04,0x35,0xFC,?0x35,0x04,0x51,0xFC,0x50,0x40,0x17,0xFE
3、,?0x10,0x90,0x11,0x08,0x16,0x06,0x00,0x00};代碼如下:unsignedcharcmp_w[8]={128,64,32,16,8,4,2,1};voidFontDisplay(intx,inty,unsignedchar*FontModule){????for(introw=0;row<16;row++)???{????????for(intc=0;c<8;c++)???????????if((FontModule[row*2]&cmp_w[c])!=0)???????????????putpixel(c+x,row+y,15);????????for(
4、c=0;c<8;c++)???????????if((FontModule[row*2+1]&cmp_w[c])!=0)???????????????putpixel(c+8+x,row+y,15);?}main(){FontDisplay(5,10,mo);}24x24點(diǎn)陣代碼示例(水平掃描):unsignedcharmo[]={0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0C,0xC0,0x06,0x0C,0xC0,0x06,0x0C,0xDC,0x06,0x7F,0xF0,0x06,0xCC,0xC0,0x1F,0xF0,0x70,?0x06,0x3F,0x
5、F0,0x07,0x30,0x70,0x0F,0xBF,0xF0,0x0E,0xF0,0x70,?0x1E,0xF0,0x70,0x1E,0x3F,0xF0,0x36,0x06,0x18,0x06,0xFF,0xFC,?0x06,0x07,0x00,0x06,0x0F,0x80,0x06,0x0C,0xE0,0x06,0x38,0x7C,?0x06,0xE0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};unsignedcharcmp_w[8]={128,64,32,16,8,4,2,1};voidFontDisplay(intx,int
6、y,unsignedchar*FontModule){????for(introw=0;row<24;row++)???{???????for(intc=0;c<8;c++)???????????if((FontModule[row*3]&cmp_w[c])!=0)???????????????putpixel(c+x,row+y,15);????????for(c=0;c<8;c++)???????????if((FontModule[row*3+1]&cmp_w[c])!=0)???????????????putpixel(c+8+x,row+y,15);????????for(c=0;c
7、<8;c++)???????????if((FontModule[row*3+2]&cmp_w[c])!=0)???????????????putpixel(c+16+x,row+y,15);?????}}main(){FontDisplay(5,10,mo);}putpixel函數(shù):putpixel(intx,inty,intcolor)x,y為坐標(biāo),color為顏色值.該函數(shù)在(x,y)點(diǎn)設(shè)定