![]() |
hnmenglei 發表于 2019-1-18 12:19 分享一下程序加仿真 |
![]() |
weidoit 發表于 2019-1-19 09:40 嗯,你用的是我的程序嘛? |
本帖最后由 weidoit 于 2019-1-21 10:37 編輯 Proteus仿真動態掃描,動態顯示的效果,Proteus環境正常。 ![]()
|
本帖最后由 weidoit 于 2019-1-21 10:33 編輯 Proteus仿真通過,沒問題的 ![]()
|
佛云 發表于 2019-1-18 08:46 請問一下,可以詳細解說下那種掃描方式? |
yzwzfyz 發表于 2019-1-18 08:22 感謝,點我的發帖里邊,有我發布的問題。 |
如果用1/16掃,3片596可以驅動 16x8x3個像素,相當于48個數碼管,其他掃描方式類推 |
靜態又有稱為1/1掃的 其他的1/2,1/4,1/8,1/16都屬于動態掃描。 靜態和動態是LED顯示屏的兩種不同的驅動方式。 |
3個 595,1個驅動數碼管段選(a-g,p),2個驅動數碼管位選(com1-16) 用掃描方式驅動,高低位互不影響. |
你先舉一個受到影響的例子 |
3片595是可以驅動16位數碼管的。 第一:兩片595進行位選,一片595進行段選。 第二:我所看到的多位數碼管顯示,都是段并聯,如下圖 ![]() 第三:針對這樣的電路,顯示都是用“視覺暫留”原理的掃描法——一次只亮一個數碼管(位選),間隔時間短,眼就認為都亮了。 程序例如:(原理程序,不是你的電路的配套程序!!!!!) void DigDisplay() //數碼管動態顯示子函數 { GPIO4=0;//位選 GPIO=DisplayData[0];//段選 Delay(30);//時間要自己試,一般在100ms以內 GPIO4=1;//關閉 GPIO3=0; GPIO=DisplayData[1]; Delay(30); GPIO3=1; GPIO2=0; GPIO=DisplayData[2]; Delay(30); GPIO2=1; GPIO1=0; GPIO=DisplayData[3]; Delay(30); GPIO1=1; ...... } 所以,你說的“高低位互不影響”的意思我懂啊,高位給高位的數據,低位給低位的數據,怎么會影響呢? |