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

QQ登錄

只需一步,快速開始

搜索
查看: 2023|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

關(guān)于單片機(jī)數(shù)碼管動(dòng)態(tài)掃描程序處理

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

用STC12W204S單片機(jī) 直接驅(qū)動(dòng)一個(gè)4位數(shù)碼管。我們平時(shí)都是把段選放在一個(gè)口,例如P0,P1,P2,每個(gè)口剛好8個(gè)IO口,但是這個(gè)單片機(jī)沒有一個(gè)完整的8位口,如圖這樣,段選分散在了P1,P3,P5口。
如果段選全在一個(gè)P0口,平時(shí)是直接P0=table[num];但是像這樣分散之后,P0這里應(yīng)該要怎么處理呢?
要怎么把這8個(gè)分散在不同口的段選重新按順序打包一下,并且還能套用段選在一個(gè)端口下那樣的數(shù)組呢?

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1085441 發(fā)表于 2023-8-27 01:22 | 只看該作者
可以吧每個(gè)bit分開送,然后驅(qū)動(dòng)位選
unsigned char bdata tmp;       // 先定義一個(gè)可位尋址RAM
sbit
回復(fù)

使用道具 舉報(bào)

板凳
ID:1085441 發(fā)表于 2023-8-27 01:36 | 只看該作者
sbit   TMP0 = temp^0;
sbit   TMP1 = temp^1;
sbit   TMP2 = temp^2;
sbit   TMP3 = temp^3;
sbit   TMP4 = temp^4;
sbit   TMP5 = temp^5;
sbit   TMP6 = temp^6;
sbit   TMP7 = temp^7;

// 顯示程序
P32 = 1;   // 位選全部為1,不顯示,假設(shè)數(shù)碼管是共陰
P37 = 1;
P10 = 1;
P12 = 1;
temp = table[0];    // 賦值第一個(gè)數(shù)碼管,數(shù)碼管 a b c ~ dp 對(duì)應(yīng)bit0~bit7
P33 = TMP0;
P11 = TMP1;
P14 = TMP2;
P54 = TMP3;
P55 = TMP4;
P36 = TMP5;
P13 = TMP6;
P15 = TMP7;
P32= 0;        // 顯示第一位數(shù)碼管
delay();           // 延時(shí)
P32= 1;
temp= table[1];   // 賦值第二個(gè)數(shù)碼管,
// BIT位賦值同上
P37= 0;  // 顯示第二位數(shù)碼管
回復(fù)

使用道具 舉報(bào)

地板
ID:1085441 發(fā)表于 2023-8-27 01:38 | 只看該作者
在這里敲程序真累啊,TABLE健不能用,一不小心沒寫完就發(fā)出了,應(yīng)該現(xiàn)在編輯器上敲好復(fù)制過來(lái)
回復(fù)

使用道具 舉報(bào)

5#
ID:459275 發(fā)表于 2023-8-27 09:11 | 只看該作者
回復(fù)

使用道具 舉報(bào)

6#
ID:123289 發(fā)表于 2023-8-28 10:12 | 只看該作者
1、這里不關(guān)P0的事。
2、你可以正常使用數(shù)組,完成你想要做的事。
3、驅(qū)動(dòng)LED時(shí),加一個(gè)【翻譯】(自己寫程序):
【翻譯】這樣工作:
3.1、取出的一個(gè)LED的顯示數(shù)據(jù)是N,(假設(shè)你想顯示3,這里的N也=3)
3.2、將N轉(zhuǎn)LED碼:M。(這里你可以做一個(gè)N轉(zhuǎn)M的表格,其中N=3時(shí),M=hgfedcba=01001111,h=dp),M一個(gè)字節(jié)共8位,M7-M0,每位對(duì)應(yīng)一個(gè)LED的顯示段。請(qǐng)自己先編一個(gè)碼生產(chǎn)N-M表格。你想顯示多少種N,就對(duì)應(yīng)做出多少個(gè)M,不要怕麻煩。如顯示3,abcdg=1,ef=0,dp=0。N=03H/M=40H。
3.3、取出M,因?yàn)镸0=a,a接在P3.3上,就將M0送至P3.3(P3.3=M0)。類似處理M1-M7。
3.4、如果M需要顯示在第2位G2,G2接在P3.7上,就讓P3.7=0(共陰LED),其它3位G1/G3/G4=P3.2/P1.0/P1.2=1。
如果是共陽(yáng)LED,則3.3、3.4、的結(jié)果需要求反。

總結(jié):這個(gè)作業(yè)是為了讓你真正地理解LED掃描顯示的原理。就是不讓你【順心】,必須自己寫驅(qū)動(dòng),并翻譯LED碼。
事實(shí)上,在實(shí)戰(zhàn)產(chǎn)品中,大部分情況,為了省錢,也是以硬件優(yōu)先,LED的引腳不一定與CPU【有序】。當(dāng)然設(shè)計(jì)大師們?yōu)榱朔奖丬浖,也?huì)盡可能做成【有序】。不過,魚和熊掌啊。
回復(fù)

使用道具 舉報(bào)

7#
ID:161164 發(fā)表于 2023-8-28 10:34 | 只看該作者
  1. void IO_out(uchar dat)
  2. {
  3.         P34=dat&0x80;
  4.         P30=dat&0x40;
  5.         P12=dat&0x20;
  6.         P10=dat&0x10;
  7.         P32=dat&0x08;
  8.         P33=dat&0x04;
  9.         P13=dat&0x02;
  10.         P11=dat&0x01;
  11. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

8#
ID:383654 發(fā)表于 2023-8-28 15:38 | 只看該作者
cnfloatleaf 發(fā)表于 2023-8-27 01:36
sbit   TMP0 = temp^0;
sbit   TMP1 = temp^1;
sbit   TMP2 = temp^2;

感謝大佬,就是這個(gè)意思!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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