找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 21138|回復(fù): 7
收起左側(cè)

關(guān)于單片機(jī)數(shù)碼管位選問(wèn)題的詳細(xì)分析

[復(fù)制鏈接]
ID:452212 發(fā)表于 2018-12-30 13:35 | 顯示全部樓層 |閱讀模式
  看過(guò)普中的視頻教程,設(shè)置數(shù)碼管位選時(shí)定義了三個(gè)接口,LSA=P2^2,LSB=P2^3,LSC=P2^4(賦值為二進(jìn)制),然后有人的程序直接定義了P2一個(gè)接口(賦值為十六進(jìn)制),竟然也可以。想知道為什么,并且有什么區(qū)別。

回復(fù)

使用道具 舉報(bào)

ID:97554 發(fā)表于 2018-12-30 15:55 | 顯示全部樓層
對(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ú)法顯示的)

20141230153242.jpg
所謂的位選,就是提供給公共的引腳以相應(yīng)的電壓,比如上圖的共陰數(shù)碼管,位選就是給在一起的幾個(gè)數(shù)碼管其中的某一位提供對(duì)應(yīng)的電位,比如下邊的1、2、3、4就是位選,a-g是段選。

2749557-1G1031515412S.jpg

明白了這個(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)分

參與人數(shù) 2黑幣 +96 收起 理由
lx駕 + 6 贊一個(gè)!
admin + 90 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:458568 發(fā)表于 2018-12-30 14:48 | 顯示全部樓層
可以就是可以 沒(méi)為什么
回復(fù)

使用道具 舉報(bào)

ID:410399 發(fā)表于 2018-12-30 15:46 | 顯示全部樓層
段選吧
3個(gè)IO口的用了138編碼器,001控制第一段(就是8的第一橫),002控制第二段等等
P2整個(gè)的0xfe = 1111 1110 一位控制一段,8段控制等等
回復(fù)

使用道具 舉報(bào)

ID:458606 發(fā)表于 2018-12-30 16:00 | 顯示全部樓層
定義P2一個(gè)接口意思就是同時(shí)對(duì)8個(gè)接口的值一起控制,所以當(dāng)端口賦值為0x01相當(dāng)于00000001,即選中P2.0,定義0x02即0000 0010就是選中P2.1,0x04即0000 0100就是選中P2.2……以此類推,直到0x80即1000 0000,選中P2.7。

評(píng)分

參與人數(shù) 1黑幣 +6 收起 理由
lx駕 + 6 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:452212 發(fā)表于 2018-12-30 22:26 | 顯示全部樓層
unsigned_char_ 發(fā)表于 2018-12-30 16:00
定義P2一個(gè)接口意思就是同時(shí)對(duì)8個(gè)接口的值一起控制,所以當(dāng)端口賦值為0x01相當(dāng)于00000001,即選中P2.0,定 ...

還想知道為什么選中后相應(yīng)數(shù)碼管就會(huì)亮?
回復(fù)

使用道具 舉報(bào)

ID:459120 發(fā)表于 2019-1-1 19:47 | 顯示全部樓層
CPU可以自動(dòng)將16進(jìn)制轉(zhuǎn)為2進(jìn)制使用,或者說(shuō)機(jī)器只認(rèn)識(shí)2進(jìn)制
回復(fù)

使用道具 舉報(bào)

ID:637652 發(fā)表于 2019-11-7 19:07 | 顯示全部樓層
unsigned_char_ 發(fā)表于 2018-12-30 16:00
定義P2一個(gè)接口意思就是同時(shí)對(duì)8個(gè)接口的值一起控制,所以當(dāng)端口賦值為0x01相當(dāng)于00000001,即選中P2.0,定 ...

如果要全選呢 怎么讓他全部亮
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表