單片機(jī)利用條件格式從Excel軟件提取字模的方法
LED點(diǎn)陣作為一種重要的顯示手段,得到了廣泛的應(yīng)用,在單片機(jī)控制的點(diǎn)陣顯示系統(tǒng)程序中需要解決的一個(gè)重要問(wèn)題就是字符點(diǎn)陣數(shù)據(jù)的獲取,也就是常說(shuō)的取字模。筆者在工作過(guò)程中也遇到這個(gè)問(wèn)題,經(jīng)學(xué)習(xí)和研究發(fā)現(xiàn)常用的取字模的方法是用專門的取字模軟件來(lái)完成的,但也遇到點(diǎn)陣大小固定、不能隨意選擇的問(wèn)題。比如,在控制5×7的LED點(diǎn)陣程序中,無(wú)法找到合適的軟件取得字模。經(jīng)研究試驗(yàn)發(fā)現(xiàn),使用Excel軟件可以實(shí)現(xiàn)任意點(diǎn)陣大小取字模。
此方法的核心思想是應(yīng)用Excel的“條件格式”功能。選中Excel表格中的任意單元格,使用“格式”菜單中“條件格式”,設(shè)置為單元格數(shù)值等于1時(shí)單元格格式為黑色底紋,如圖1所示。設(shè)置成功后會(huì)發(fā)現(xiàn)當(dāng)單元格內(nèi)數(shù)值為1時(shí),單元格會(huì)變成黑色。利用這一功能,可以在Excel中形象地顯示點(diǎn)陣字模顯示效果。在Excel中選中與需要取模的點(diǎn)陣大小相當(dāng)?shù)谋砀駞^(qū)域,一個(gè)單元格代表一個(gè)LED,將列寬設(shè)置為2,將此區(qū)域中的各個(gè)單元格均設(shè)置好條件格式,并在需要點(diǎn)亮的LED對(duì)應(yīng)位置單元格中填人1,便得到了與顯示效果類似的圖形。如圖2中為5×7點(diǎn)陣中顯示數(shù)字“1”的效果。然后就可以利用Excel的公式功能計(jì)算對(duì)應(yīng)行和列的數(shù)據(jù),得到點(diǎn)陣數(shù)據(jù)了。為便于識(shí)讀,在左側(cè)和頂部分別加上了行標(biāo)號(hào)和列標(biāo)號(hào),右側(cè)得到的便是每行的字模數(shù)據(jù),底部得到的是每列的字模數(shù)據(jù)。
在加載了Excel的“分析工具庫(kù)”宏后,可以使用函數(shù)DEC2HEX()將十進(jìn)制轉(zhuǎn)換為十六進(jìn)制,并使用函數(shù)TEXT()將其轉(zhuǎn)換為兩位的字符,再用運(yùn)算符在其后面加上H,便得到了單片機(jī)程序中常用的十六進(jìn)制數(shù)據(jù)格式。對(duì)應(yīng)圖2的Excel表格區(qū)域位置,5×7點(diǎn)陣中顯示“1”的第1行字模數(shù)據(jù)的公式為:=TEXT(DEC2HEX(B2+C2*2+D2*4+E2*8+F2*16),”00”)”H”,結(jié)果為04H;第1列字模數(shù)據(jù)的公式為:=TEXT(DEC2HEX(B2+B3*2+B4*4+B5*8+B6*16+B7*32+B8*64),”00””H”,結(jié)果為00H。其他行、列公式類推。同理,使用運(yùn)算符可以將各字模數(shù)據(jù)組合成單片機(jī)程序的數(shù)據(jù)表格式。如圖2中第10行公式為:=”DB”B9","C9 ","D9",","E9 ","F9,得到"1",的5×7點(diǎn)陣按列取的字模數(shù)據(jù)為DB 00H,42H,7FH,40H,00H;圖2中第11行公式為:="DB"G2","G3 8L","G4","G5 ","G6","G7","G8,得到“1”的5×7點(diǎn)陣按行取的字模數(shù)據(jù)為DB04H,06H,04H,04H,04H,04H,0EH,成功生成單片機(jī)匯編語(yǔ)言數(shù)據(jù)表格式字模數(shù)據(jù),直接復(fù)制到單片機(jī)程序中即可使用。
擴(kuò)展運(yùn)用此法,在Excel中還可實(shí)現(xiàn)七段數(shù)碼管求字形碼。如圖3中第9行中計(jì)算七段數(shù)碼管求字形碼的公式為:=TEXT(DEC2HEX(C2+D3*2+D5*4+C6*8+B5*16+B3*32+C4*64),"00")"H",得到“2”的七段數(shù)碼管求字形碼為5BH。
在此使用Excel取字模的方法中:
①點(diǎn)陣取模的高低位順序問(wèn)題可以通過(guò)調(diào)整單元格計(jì)算公式中各位的位權(quán)來(lái)修改。
②不同大小點(diǎn)陣取字模時(shí),以文中5×7點(diǎn)陣類推,畫出對(duì)應(yīng)大小區(qū)域并修改公式計(jì)算的單元格數(shù)量即可實(shí)現(xiàn)。
③此方法中如果條件格式設(shè)置為“單元格數(shù)值等于1時(shí)單元格格式為黑色底紋”,則計(jì)算和求字形碼
顯示結(jié)果為共陰極數(shù)碼管字形碼,即亮的字段為1。如需
共陽(yáng)極數(shù)碼管字形碼,即亮的字段為0,則將條件格式設(shè)置為“單元格數(shù)值等于0時(shí)單元格格式為黑色底紋”,并在不需要點(diǎn)亮的位置輸入1,公式不變即可實(shí)現(xiàn)。
評(píng)論