目標:數碼管的動態顯示上篇講到了用74ls138來控制數碼管的位選,那是怎麼選的呢?我們先來看看這個解碼器的說明書
/y0--/y7是資料輸出
a0--a2是資料輸入
/e1,/e2,e3是使能控制,/e1和/e2是低電平有效,e3是高電平有效
vdd是接電源;gnd接地
真值表最重要的是真值表了,來解釋其執行方式
/e1和/e2是低電平有效,e3是高電平有效,只要其中乙個不滿足條件則/y0--/y7全部輸出高電平,我們是共陰式數碼管那麼不會亮
從第四行開始都滿足了,這時候就可以看看a0--a2了,順序是a2-
a1-a0,其從上往下依次是000,001,010,011,100,101,110,111.這樣看出是0,1,2,3,4,5,6,7的二進位制。再看看右半的y0,000是y0, 001是y1, 010是y2........一次對應下去就知道是怎麼控制了?
數碼管動態
裡面有個switch語句 switch(i)是判斷i的,當i是0就執行case 0後面的語句,每句後面加個break不然會一直把下面執行了。
乙個for迴圈,實現了不同數碼管顯示不同數字的要求,i是0時第乙個數碼管亮,數字0。i是1時第二個數碼管亮顯示數字1........
p0 = 0x00是為了讓p0口更加穩定又歸位
寫一半心血來潮又增加了點難度,讓顯示完一遍又倒著來一遍
改進其實也就加了個巢狀for迴圈,是下面判斷一下......
那個9耗了不少時間我一直寫8,導致顯示是0,1,2,3,4,5,6,0,7,6,5,4,3,2,1, 0
以為a 和i是同步的,大意了,自己基礎也不紮實,a是按1,2,3,4,5,6,7......順序的所以當i是7 時a 是8,所以這裡寫<9
那個case4凸出來純屬一下手賤,但這是c語言所以縮排沒關係,如果是靠縮排定位的python就有問題了,但似乎python很少很少寫微控制器。。。。
微控制器驅動數碼管
數碼管的原理?數碼管是分段控制點亮和熄滅的led段,數碼管分為共陽極以及共陰極,共陽極就是說數碼管的led段共乙個電壓正極,共陰極就是說所有的led段共乙個電壓負極。一般方法,乙個io控制公共段,共陽極為例子,給公共段施加乙個正電壓,其餘led段由io分開控制,想顯示多少,只需點亮對應的led段,即...
51微控制器學習之路(二) 數碼管顯示
寫在前面 以下涉及到的程式及電路圖不保證為最優方案,會存在很多不足之處,望諒解。學習目標 使用51微控制器實現數碼管的顯示。學習內容 了解數碼管的靜態顯示 實現數碼管動態顯示 程式一 點亮數碼管 靜態數碼管顯示 根據數碼管的結構,可以將數碼管理解為數碼管是由8個led燈組成,並且這8個led燈按照一...
微控制器模組學習之數碼管
數碼管是led的公升級版,用到段選位選,其實都差不多 位選就是選某個數碼管com,段選就是數碼管送入資料 還有轉碼表 共陰0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 共陽0xc0,xf...