|
|
大神最終是如何解決的,現(xiàn)在我也研究了好久依然無法完美顯示,請教一下大神們 |
datouyuan 發(fā)表于 2022-5-11 15:40 今天問了芯片客服,他們回答和你的答案一樣,設(shè)置為輸入就是高阻態(tài),并且要禁掉上下拉。謝謝你的解答 |
mengzhixinheng 發(fā)表于 2022-5-11 07:28 能說詳細一點嗎,謝謝您的解答 |
| 不過依據(jù)控制臺編程經(jīng)驗來看未必就一定使用32次控制或許可以更少但是原理還是每次顯示一段,然而可以每位顯示一段或可減少次數(shù)并使得程序?qū)懙煤啙?忽然想起了寫過這樣控制臺仿真編程. |
|
一時之間沒查資料就憑感覺猜測,覺得每次顯示一段是比較合理的也好控制但是顯示一個字則需要八次控制4位則需要32次控制,所花費時間比較多.就好比C++編程控制臺模擬數(shù)碼管段仿真一樣道理 https://blog.csdn.net/xianfajushi/article/details/104877907 |
an770841487 發(fā)表于 2022-5-10 17:21 設(shè)置端口為輸入,就是高阻。 有的mcu能配置上拉、下拉電阻,這種單片機要把上拉、下拉電阻配置為無。 絕大部分單片機都能設(shè)為高阻。 這種數(shù)碼管要求單片機端口能設(shè)置為高阻、推挽高、推挽低。除了很老的51單片機外,其它單片機都能勝任。 另外這種數(shù)碼管應(yīng)該是白、藍光led,它們的壓降高,能達到3V。其它顏色壓降低,估計不行。 |
| 參與人數(shù) 1 | 黑幣 +60 | 收起 理由 |
|---|---|---|
|
| + 60 | 回帖助人的獎勵! |
yzwzfyz 發(fā)表于 2022-5-11 14:39 如果我只想點亮Digi1的A段 M1 = 1000 0YYY YYY=? 111?Digi2/3/4 的 B/C/D段會同時被點亮 000?Digi2/3/4 的 A段會同時被點亮 |
|
樓主有此一問了,有下例原因。 1、未真正地吃透掃描顯示的原理。 2、如何讓一只LED明暗。 建議:分8次掃描顯示: 4次正邏輯,5678為數(shù)值,1234分時逐一為0。 4次負邏輯,5678為數(shù)值,1234分時逐一為1。 以上是如何掃描,需要吃透。 這樣需要8個4位數(shù)值,建立用8個寄存器或內(nèi)存存放(M1-M8)。數(shù)值是什么,自己好好的算一下(如何讓一只LED明暗)。參考答案如下: M1=XXXX0111 M2=XXXX1011 M3=XXXX1101 M4=XXXX1110 M5=XXXX1000 M6=XXXX0100 M7=XXXX0010 M8=XXXX0001 XXXX=?就不告訴你了,以防腦子生銹。 |
an770841487 發(fā)表于 2022-5-10 16:55 加限流電阻。看看是否段位上的電阻太小了有漏電流。 |
mengzhixinheng 發(fā)表于 2022-5-11 07:28 愿聞其詳 |
| 分時復(fù)用不就行了,哪有那么復(fù)雜??? |
an770841487 發(fā)表于 2022-5-10 19:49 如果有是LED模塊,那看一下LED模塊有沒有三態(tài)控制,如果LED模塊有高阻設(shè)置的話,基本也是這么個原理的了 |
| 八位單片機當(dāng)作四位單片機用就可以了,簡單地說就是移位操作。 |
Y_G_G 發(fā)表于 2022-5-10 18:23 你寫的很仔細到位,謝謝你的回復(fù),按你的思路,如果單片機有高阻態(tài),肯定是容易實現(xiàn)。但現(xiàn)在使用的電路,我看了這個單片機手冊,沒寫有高阻功能,但有LED驅(qū)動模塊。這是別人做開的已經(jīng)商用的電路,因此不存在無法控制的問題,只是不知道他是不是用的LED模塊來驅(qū)動或者別的方法。 |
|
限流電阻只接在5678這4個引腳 把一個數(shù)碼管當(dāng)成兩個數(shù)碼管來看,一個數(shù)字分兩次顯示 假設(shè):#define out P1 com1 bit P1^0 com2 bit P1^1 com3 bit P1^2 com4 bit P1^3 顯示一個數(shù)字8: 設(shè)定com1,5678為推挽輸出 設(shè)定com2,com3,com4,為高阻,就是沒有輸出和吸入能力,隨便怎么操作,234這幾個數(shù)碼管都是不會亮的 顯示數(shù)碼管的ABCD: 這個過程com2,com3,com4是不參與的,因為是高阻,所以,不會有輸出和吸入能力的 1: com1=1 ;//高電平輸出 out&=0x0f;//低電平吸入,用按位與操作,顯示,低位是com的,不影響 延時1mS;這是顯示部分 com1=0;//這是消除殘影部分 out&=0x0f;//com1為低電平,5678這幾個IO輸出低電平,用于消除殘影out&=0x0f一定要有,在這里out&=0x0f只是和數(shù)碼的"8"巧合了而已,不是重復(fù)操作 顯示數(shù)碼管EFG DP 2: com1=0;//低電平吸入 out&=0xff;//高電平輸出,用按位與操作,顯示,低位是com的,不影響 延時1mS;out&=0x0f;//com1為低電平,5678這幾個IO輸出低電平,用于消除殘影 這就完成了一個數(shù)碼管的顯示了,剩下的也是一樣的道理,每次顯示之后都要消除殘影,每次顯示之前都要先更改幾個com的輸出模式,保證只有一個IO有輸出和吸入能力,其它的都沒有這個能力 5678這幾個高位的不需要設(shè)置,只要設(shè)置一次就行,設(shè)置成推挽 |
名字不是重點 發(fā)表于 2022-5-10 17:21 沒有高阻不行吧? 如果我只要點亮Digi1的A段 COM1=1 8=0 756=1 如果234=1 Digi234的A段也會亮 如果234=0 Digi234的FGDg段也會亮 |
an770841487 發(fā)表于 2022-5-10 17:21 沒高阻態(tài)的話,你會發(fā)現(xiàn)不該亮的管子亮了,而且這個問題是無解的。 |
Hephaestus 發(fā)表于 2022-5-10 17:01 謝謝指點。單片機的高阻態(tài)是指?我只知道有設(shè)置端口為輸入或者輸出,高阻態(tài)是如何設(shè)置?亮度是不成問題的,可以滿足 |
|
這種數(shù)碼管,分解到段掃,一次就點一個段,整屏分32次掃完。軟件就好寫了,不用高阻。 這個還不是極端的,至少,SEG是SEG,COM 是COM。 更極端的是COM與SEG混用。一個IO,有時是SEG,有時是COM。 8個IO最大的驅(qū)動LED數(shù)是8*(8-1)*2=112個LED! |
|
你要選擇有高阻/推挽/開漏管腳功能的單片機 如要顯示2345 第一個循環(huán) 所有腳設(shè)為高阻消影 設(shè)8, 7, 5 腳為開漏 設(shè)1腳為推挽 第二個循環(huán) 所有腳設(shè)為高阻消影 設(shè)8,6 腳為推挽 設(shè)1腳為開漏 第三個循環(huán) 所有腳設(shè)為高阻消影 設(shè)8, 7, 6, 5 腳為開漏 設(shè)2腳為推挽 第四個循環(huán) 所有腳設(shè)為高阻消影 設(shè)6 腳為推挽 設(shè)2腳為開漏 第五個循環(huán) 所有腳設(shè)為高阻消影 設(shè)7, 6 腳為開漏 設(shè)3腳為推挽 第六個循環(huán) 所有腳設(shè)為高阻消影 設(shè)7, 6 腳為推挽 設(shè)3腳為開漏 第七個循環(huán) 所有腳設(shè)為高阻消影 設(shè)8, 6 ,5 腳為開漏 設(shè)4腳為推挽 第八個循環(huán) 所有腳設(shè)為高阻消影 設(shè)7,6 腳為推挽 設(shè)4腳為開漏 |
an770841487 發(fā)表于 2022-5-10 16:34 這種數(shù)碼管設(shè)計有點獨特,每一個單元一半共陰一半共陽,也就是說一位數(shù)碼管要分2次驅(qū)動,共8次才能完成4位數(shù)碼管完整顯示。COM端置推挽模式先高電平,后低電平,再高阻態(tài)。段碼的低4位取共陰、高4位取共陽。要選擇有相關(guān)端口模式選擇功能的MCU。 |
an770841487 發(fā)表于 2022-5-10 16:47 單片機IO口推挽電流就能滿足驅(qū)動亮度的話,就很好做了。 硬件上,5、6、7、8串限流電阻到單片機,1、2、3、4直接接單片機。 軟件上分8個時間段: 1)1高電平,2、3、4高阻態(tài),8、7、6、5分別輸出第一個數(shù)碼的A、B、C、D。 2)2高電平,1、3、4高阻態(tài),8、7、6、5分別輸出第二個數(shù)碼的A、B、C、D。 3)3高電平,1、2、4高阻態(tài),8、7、6、5分別輸出第三個數(shù)碼的A、B、C、D。 4)4高電平,1、2、3高阻態(tài),8、7、6、5分別輸出第四個數(shù)碼的A、B、C、D。 5)1低電平,2、3、4高阻態(tài),8、7、6分別輸出第一個數(shù)碼的E、F、G。 6)2低電平,1、3、4高阻態(tài),8、7、6、5分別輸出第二個數(shù)碼的E、F、G和DP5。 7)3低電平,1、2、4高阻態(tài),8、7、6、5分別輸出第三個數(shù)碼的E、F、G和DP6。 8)4低電平,1、2、3高阻態(tài),8、7、6分別輸出第四個數(shù)碼的E、F、G。 |
xianfajushi 發(fā)表于 2022-5-10 16:53 共用IO問題如何防止其它COM漏顯 |
pcbboy 發(fā)表于 2022-5-10 16:47 謝謝。但是其它COM如何關(guān)閉呢,會影響到其它COM哦 |
pcbboy 發(fā)表于 2022-5-10 16:50 現(xiàn)在小家電用的都很多這種的了,原理我懂,但實際編程的時候發(fā)現(xiàn)有時候會矛盾,比如E段輸出高時,其它段位就無法完全關(guān)閉 |
| 比如要顯示4則FGBC需要點亮那么1高67低1低67高。 |
| 需要高阻模式,百度搜索一下《基于QN8035的收音機 STC8單片機程序和電路》,自己去弄代碼就行了 |
| 這個數(shù)碼管有個特點,就是共陰極和共陽極一體的,很少見這種雙極性的數(shù)碼管。 |
Hephaestus 發(fā)表于 2022-5-10 16:34 商用的單片機IO口能省則省,成本問題。用8個IO口控制 |
| 這是常規(guī)的動態(tài)掃描點亮LED啦。先第一個發(fā)段位,再發(fā)第一個COM就是第一個位的數(shù)字顯示,延時幾個毫秒再發(fā)第二個,依次發(fā)完四個就是四位都顯示了,然后繼續(xù)循環(huán)就行了,要修改數(shù)字就需改段位碼繼續(xù)發(fā)就行了! |
| 有大神在嗎?此問題已經(jīng)困擾我很久了 |
| 這要用推挽電路才能驅(qū)動了,為什么要用這么繁瑣的東西? |
Powered by 單片機教程網(wǎng)