|
對(duì)于這個(gè)問(wèn)題,首先你要了解一下硬件,比如下圖數(shù)碼管的原理,其實(shí)就是7個(gè)LED,分共陰和共陽(yáng)數(shù)碼管。共陰數(shù)碼管就是七個(gè)數(shù)碼管共用一個(gè)接地引腳,七個(gè)LED顯示七個(gè)段,所以,點(diǎn)亮七個(gè)LED也叫段選,這里共陰的數(shù)碼管在段選a-g分別接高電位,公用引腳接低電位,這樣就可以點(diǎn)亮選定的LED顯示數(shù)字,例如,b、c接高電位,COM接低電位,就顯示數(shù)字1,以此類推。(共陽(yáng)數(shù)碼管電位是相反的,另外所說(shuō)七段是沒(méi)有顯示小數(shù)點(diǎn)的情況,有些數(shù)碼管直接把DP和公共引腳連在一起是無(wú)法顯示的)
所謂的位選,就是提供給公共的引腳以相應(yīng)的電壓,比如上圖的共陰數(shù)碼管,位選就是給在一起的幾個(gè)數(shù)碼管其中的某一位提供對(duì)應(yīng)的電位,比如下邊的1、2、3、4就是位選,a-g是段選。
明白了這個(gè)數(shù)碼管的用法之后,那么來(lái)說(shuō)下普中開(kāi)發(fā)板教程里所寫(xiě)的那幾行,因?yàn)槠罩虚_(kāi)發(fā)板的教程從開(kāi)始寫(xiě)第一個(gè)點(diǎn)亮一個(gè)LED程序的時(shí)候就為后邊使用74LS138譯碼器做準(zhǔn)備,所以第一個(gè)例程就開(kāi)始用LSA LSB LSC這樣的語(yǔ)句,其實(shí)開(kāi)始并沒(méi)有用。74LS138譯碼器是用三個(gè)引腳通過(guò)不同的電平組合來(lái)輸出8個(gè)引腳的電平變化。這樣可以利用單片機(jī)的三個(gè)IO口來(lái)解決需要8個(gè)IO口的解決法案。
如果直接使用單片機(jī)的IO口來(lái)驅(qū)動(dòng)數(shù)碼管,那么首先需要7-8個(gè)引腳來(lái)驅(qū)動(dòng)段(8段包括小數(shù)點(diǎn))。然后有幾位就需要幾個(gè)IO口來(lái)控制位,只有位和段同時(shí)有電位差的時(shí)候數(shù)碼管的該段才被點(diǎn)亮,這就是數(shù)碼管的動(dòng)態(tài)顯示原理。
單片機(jī)驅(qū)動(dòng)的時(shí)候,從低位至高位依次接入數(shù)碼管的段,假如用P0口,那么P0.0 - P0.3 P0.4 - P0.7分成兩組,分別為8 4 2 1,8 4 2 1 ,他們?nèi)奎c(diǎn)亮的時(shí)候就是共陰數(shù)碼管的話輸出全部為高電平,也就是P0.0 - P0.7(小數(shù)點(diǎn)也點(diǎn)亮)全部為高電平,那么值就是8+4+2+1,8+4+2+1,就是16,16。16進(jìn)制就是FF,寫(xiě)成C語(yǔ)音就是P0 = 0xFF; 其他的自己研究吧,共陽(yáng)數(shù)碼管相反,就是數(shù)碼管一個(gè)8字加小數(shù)點(diǎn)全部點(diǎn)亮C語(yǔ)言寫(xiě)的程序就是:
P0 = 0x00;
如果使用LSA LSB LSC的方式編碼按上邊38譯碼器的真值表來(lái)確定0-F這16個(gè)數(shù)字的碼表來(lái)寫(xiě)上邊的程序就可以了,這個(gè)你就自己去思考吧。
|
評(píng)分
-
查看全部評(píng)分
|