在UCDOS中文宋體字庫中ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,每一個字由16行16列的點陣組成顯示ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,即國標漢字庫中的每一個字均由256點陣來表示☧☬☸✡♁✙♆。,、':∶;。电竞比赛下注平台可以把每一個點理解為一個像素웃유ღ♋♂,而把每一個字的字形理解為一幅圖像✵✶✷✸✹✺✻✼❄❅。事實上這個漢字屏不僅可以顯示漢字❻❼❽❾❿⓫⓬⓭⓮⓯⓰, 也可以顯示在256像素范圍內的任何圖形⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯。用8位的AT89S52單片機控制⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯, 由于單片機的總線為8位ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,一個字需要拆分為2個部分如圖9所示❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣。本電路把它拆分為左部和右部㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,左部由16(行)*8(列)點陣組成ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ, 下部也由16(行)*8(列)點陣組成⑰⑱⑲⑳⓪⓿❶❷❸❹❺。
圖(7)
為了讓大家更清楚的理解點陣的掃描過程❣❦❧♡۵,在這电竞比赛下注平台以顯示漢字“我”為例❣❦❧♡۵,來說明其掃描原理:
單片機首先由P2口輸出顯示數據信號給右部分的第一行如圖9所示❣❦❧♡۵,即第一行的P20---P27口ⓣⓤⓥⓦⓧⓨⓩ。方向為P20到P27 ,顯示漢字“我”時ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,P21點亮,由左到右排㈠㈡㈢㈣㈤㈥㈦,為P20滅ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,P21亮, P22滅☈⊙☉℃℉❅,P23滅, P24滅, P25滅, P26滅, P27滅⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯。即二進制00000010✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,轉換為16進制為 0x02ⓚⓛⓜⓝⓞⓟⓠⓡⓢ。
右部分的第一行完成后ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,繼續掃描左半部的第一行㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,為了接線的方便⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,电竞比赛下注平台仍設計成由左往右掃描ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,即從P00向P07方向掃描웃유ღ♋♂,從上圖可以看到✵✶✷✸✹✺✻✼❄❅,這一行只有P05❣❦❧♡۵、P06亮ⓣⓤⓥⓦⓧⓨⓩ,其它滅㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉, 即為00000110❻❼❽❾❿⓫⓬⓭⓮⓯⓰,16進制則為0x60❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣。然后單片機再次轉向右半部第二行웃유ღ♋♂,仍為P21☧☬☸✡♁✙♆。,、':∶;、P23點亮⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,為01010000❻❼❽❾❿⓫⓬⓭⓮⓯⓰,即16進制0x0AⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ。這一行完成后繼續進行左半部分的第二行掃描⒜⒝⒞⒟⒠⒡⒢⒣⒤,P02♀☿☼☀☁☂☄、P03㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉、P04點亮①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,為二進制00111000㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,即16進制0x1C⑰⑱⑲⑳⓪⓿❶❷❸❹❺。
依照這個方法❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,繼續進行下面的掃描☾☽❄☃,一共掃描32個8位❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,可以得出漢字“我”的掃描代碼為:
0x02,0x60,0x0A,0x1C,0x12,0x10,0x12,0x10,
0x02,0x10,0x7F,0xFF,0x02,0x10,0x12,0x10,
0x14,0x70,0x0C,0x1C,0x04,0x13,0x0A,0x10,
0x49,0x90,0x50,0x10,0x60,0x14,0x40,0x08
由這個原理可以看出⑰⑱⑲⑳⓪⓿❶❷❸❹❺, 無論顯示何種字體或圖像☧☬☸✡♁✙♆。,、':∶;, 都可以用這個方法來分析出它的掃描代碼從而顯示在屏幕上ⓣⓤⓥⓦⓧⓨⓩ。
不過現在有很多現成的漢字字模生成軟件✺ϟ☇♤♧♡♢♠♣♥, 电竞比赛下注平台就不必自己去畫表格算代碼了㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂。
在網上漢字字模生成軟件有很多種⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,本文告別推薦一種漢字字模生成軟件ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,HZDotReader V3.0☾☽❄☃,我個人認為這個軟件的功能相當完美ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ。最主要的一個功能是可以選擇漢字編碼的取模方式㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,本例中的“我”字的取模方式為以橫向8個連續點構成一個字節,最左邊的點為字節的最低位,即BIT0,最右邊的點為BIT7ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ。很少有字模軟件可以實現這一功能❻❼❽❾❿⓫⓬⓭⓮⓯⓰。
下面給出一個簡單的靜態顯示“我”字的程序清單:
#include
#define CCED2 0x0000
unsigned char code word_zai[16][2] = {
0x02,0x60,0x0A,0x1C,0x12,0x10,0x12,0x10,
0x02,0x10,0x7F,0xFF,0x02,0x10,0x12,0x10,
0x14,0x70,0x0C,0x1C,0x04,0x13,0x0A,0x10,
0x49,0x90,0x50,0x10,0x60,0x14,0x40,0x08};
void main()
{ char scan,i,j;
P0=0;P1=0;P2=0;
while(1)
{ scan=0;
for(i=0;i<16;i++)
{ P1=scan;
for(j=0;j<50;j++) //顯示五十次
{ P2=word_zai[i][0] ;
P0=word_zai[i][1] ;
}
P0=0;P2=0;
scan++;
}
}
}
四⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾、 安裝與調試
把顯示屏電路和顯示屏驅動電路分別做在兩塊電路板上㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,顯示屏電路的行掃描信號輸出管腳和列顯示信號數據輸出管腳分別引用兩排16針的排針引出♦☜☞☝✍☚☛☟✌✽✾✿❁❃,排針長的那一頭接到電路板的底層ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,以方便插入驅動電路的插槽中☾☽❄☃。同樣在驅動電路用兩排16腳的插槽將行掃描信號輸出管腳和列顯示信號數據輸出管腳引出ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,在畫PCB時應當注意屏電路PCB中兩排排針之間的距離要與驅動電路PCB中兩排插槽之間的距離一樣⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,才能保證能正確地將顯示屏電路板排到驅動電路電路板上方⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾。以下為該電路的實物圖與PCB✺ϟ☇♤♧♡♢♠♣♥。
在畫PCB時注意雙面電路板的做板規則✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,特別要注意以下
幾個方面:
①雙面電路板的過孔比較大♦☜☞☝✍☚☛☟✌✽✾✿❁❃,一般在80mil以上㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉;
②定位孔的放置ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ;
③要在頂層焊接時⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,應注意在頂層插上元器件后是否會影響到焊接⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,如芯片等管腳比較短的元器件①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,當插在電路板后要在頂層焊接其管腳是比較困難的⑰⑱⑲⑳⓪⓿❶❷❸❹❺;
安裝安電路后㈠㈡㈢㈣㈤㈥㈦,可將以下的測試程序燒到AT89S52中☧☬☸✡♁✙♆。,、':∶;,將AT89S52插入驅動電路, 若每一個發光二極管都能被點亮ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,則說明電路硬件做成功✺ϟ☇♤♧♡♢♠♣♥。 以下為測試程序清單:
#include
void main()
{ char scan,i;
P0=0;P1=0;P2=0;
while(1)
{ scan=0;
for(i=0;i<16;i++)
{P1=scan;
P0=0xff;
P2=0xff;
scan++;
}
}
}
若發現二極管不是全被點亮則要用萬用表來仔細地檢測ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ。一般會出現的問題是電路板上的線被短路☧☬☸✡♁✙♆。,、':∶;,斷開等✺ϟ☇♤♧♡♢♠♣♥。根據不亮的二極管來找電路出現的問題應該是比較容易的⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ。所以本電路的調試過程是較簡單的⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯。當然調試前必須要確保所購買的每一塊顯示屏都是完好的㈠㈡㈢㈣㈤㈥㈦。
五ⓣⓤⓥⓦⓧⓨⓩ、 總結
1ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ、為方便調試應該給該電路加上一個下載電路部分⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,每次燒程序調試都要把芯片取出插入☧☬☸✡♁✙♆。,、':∶;,容易損壞芯片的管腳✺ϟ☇♤♧♡♢♠♣♥。
2⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾、為了合適大部分的取字模軟件웃유ღ♋♂,在畫原理圖應當考慮列顯示屏顯示信號輸入管腳由左到右的接法❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣;大部分的取字模軟件都是從左到右的取模方式㈠㈡㈢㈣㈤㈥㈦,所以應當把顯示屏的列信號顯示輸入管腳從左到右接地接到單片機P2,P0口時由高位接到低位✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴。凤凰赚app下载入口㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,專業制作LED發光二極管