最近遇到乙個6腳數碼管的案子,跟常規的共陰/共陽數碼管驅動方式完全不同,處理方法有點特殊,特此記錄。先上傳數碼管的腳位資料。(做的是乙個藍芽對耳充電倉方案,百分比顯示充電倉本身的電量,下面顯示對耳的左右耳機的電量)
首先這種數碼管肯定也是逐行掃瞄點亮,掃瞄完所有行後,乙個顯示畫面幀就完整呈現出來。(可以理解為刷圖顯示)
程式裡面每次間隔2ms,掃瞄一行,總共掃瞄6行後,一幀完整畫面結束了。一定要記得,每行掃瞄的時候,需要亮燈的高低電平點亮,不亮燈的io口一定要設為懸浮。
2,掃瞄方式確定後,剩下是要確定每一行應該亮哪個燈。這個數碼管是由27個點(seg)組成的,也就是說所有的顯示都是這27個點組合而成的。我的做法是參考液晶屏的做法,定義乙個display_ram_buf[27]=。陣列裡面27個元素代表27個點,需要這個點顯示,就把改元素置1,如果不用顯示就設為0。那麼身下的工作,就是根據顯示內容去更新display_ram_buf[27]就好了。
3,如何把顯示的內容**化,便於程式處理。根據具體內容,我要顯示三個變數值,分別是左耳機的電量等級0~5;有耳機的電量等級0~5;充電倉自身的電量百分比0~100。百分比我是分解成個位0~9,九個**查詢。百位0~10十個**查詢顯示。
4,程式關鍵**解釋:
這個ram 陣列,是存放seg點數ram,這個屏總弄有27個點,所以ram buf長度是27+1。操作方式跟lcd驅動差不多,把要點亮的點在ram裡面用1表示,不點亮用0表示。
自此6腳數碼管驅動方式結束,此方法可以拓展為7腳數碼管。
同時也開啟了乙個少量io驅動做個led的新思路,例如本案例,6腳這樣算來最多可以驅動6*5=30個led。所以最後一行還可以湊足5個led。7腳數碼管可以驅動7*6=42個led。
數碼管的驅動
乙個數碼管需要點亮多長時間呢?也就是說要多長時間完成一次全部數碼管的掃瞄呢 很明顯 整體掃瞄時間 單個數碼管點亮時間 數碼管個數 答案是 10ms 以內。鬼影 的出現,主要是在數碼管位選和段選產生的瞬態造成的。解決方案有兩種 關閉段或者關閉位。示例 如下 include sbit addr0 p1 ...
7 靜態數碼管
當oe為低電平,開始工作,預設接地 le為鎖存器,高電平為置數,低電平為鎖存狀態,保持。le預設短接到vcc,即為高電平置數狀態。104為濾波電容 74ls138晶元的y0輸出低電平,靜態數碼管顯示 includetypedef unsigned char u8 typedef unsigned i...
驅動數碼管的實驗
課程名稱 微控制器原理與應用 專業班級 嵌入式14103班 姓 名 趙存檔 學 號 14160310317 2015 2016 學年第 1 學期 實驗專案 四 預習報告 專案名稱 驅動7段數碼管實驗 實驗目的及要求 1 掌握用proteus畫電路圖。2 用keil編寫 進行除錯。3 進行 測試 實驗...