新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 以從0開始做4位8段共陰數(shù)碼管3461AS驅(qū)動(dòng)

以從0開始做4位8段共陰數(shù)碼管3461AS驅(qū)動(dòng)

作者: 時(shí)間:2017-01-16 來源:網(wǎng)絡(luò) 收藏

  1)問題產(chǎn)生

本文引用地址:http://2s4d.com/article/201701/342939.htm

  在上一篇“ 以控制直流電機(jī)為例建一個(gè)簡單的51工程框架”中已向大家介紹了一個(gè)封裝好的8位8段的驅(qū)動(dòng)(如下圖中FUNC文件夾下led8.c文件)。

    

 

  但是該驅(qū)動(dòng)電路是要有一定的硬件基礎(chǔ)的(如下圖):如2片74HC573。而我這里只有幾個(gè)4位8段共陰又沒有74HC573,所以就得尋求用51直接驅(qū)動(dòng)的方案了!

    

 

  2)失敗嘗試

  失敗操作:直接在相應(yīng)的引腳間加5伏電壓來測試該是否正常

  結(jié)果:燒壞了2個(gè)3461AS

  分析:被第二張圖騙了,以為3461AS可以承受01電平產(chǎn)生的壓差,而真實(shí)情況如下圖:在P0口有10K的排阻,然后測量一下電壓終于恍然大悟!

    

 

  3)最終方案

  在第二步到第三步之間還找到一個(gè)例子:他采用3-8譯碼器然后串聯(lián)電阻進(jìn)行保護(hù)。

    

 

  因?yàn)橛?-8譯碼器的例子我的直驅(qū)的想法得到進(jìn)一步的驗(yàn)證,于是綜合上面的分析給出了下面的方案:

    

 

  4)使用方法

  同樣的我把關(guān)于3461AS封裝起來(如下)

    

 

  在要使用該功能的文件中首先包含頭文件,然后引用DuanMa數(shù)組、TempData數(shù)組以及用于顯示的Display函數(shù)。

    

 

  然后在想要顯示數(shù)據(jù)前把數(shù)據(jù)存儲(chǔ)在TempData中(TempData[0]表示要顯示的第一個(gè)數(shù)字,這里把共陰8段數(shù)碼管顯示從0~F的值存儲(chǔ)在DuanMa數(shù)組中。因此要讓第一個(gè)數(shù)字顯示2則只要TempData[0]=DuanMa[2])。當(dāng)在TempData中設(shè)置好要顯示的信息后就可以調(diào)用Display函數(shù)進(jìn)行刷新數(shù)碼管顯示(Display的第一個(gè)參數(shù)表示從第幾個(gè)數(shù)碼管開始顯示,例如FirstBit=0表示從第一個(gè)數(shù)碼管開始顯示num位數(shù)據(jù))

    

 

  注:要保證Display有比較快的刷新頻率

  5)知識(shí)共享

  https://github.com/beautifulzzzz/stc89c51-or-stc89c52

    



關(guān)鍵詞: PWM 數(shù)碼管

評(píng)論


技術(shù)專區(qū)

關(guān)閉