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