數碼管顯示

2021-07-02 19:36:25 字數 1666 閱讀 9871

一、區分數碼管的類別

共陰數碼管:即所有數碼管的陰極接在一起。要使某個數碼管點亮,只需置上高電平,**中該位置'1'

共陽數碼管:即所有數碼管的陽極接在一起。要使某個數碼管點亮,只需置上低電平,**中該位置'0'

二、單個數碼管顯示

a~h:表示單個數碼管上面的8個led。

根據共陰共陽的特性,點亮相應的led,組成想要的數字(一般由取模軟體得到)

如:共陰數碼管顯示數字'0,即**中該數碼管賦值0x3f (0011 1111)

三、多位數碼管顯示

1、區分段、位:段指的是單個數碼管上的8段led;位指的是數碼管所在的位置

2、存在問題:

a)各個數碼管輪流閃爍顯示——原因:數碼管逐個顯示的間隔時間長

b)數碼管顯示存在亂碼殘影——原因:數碼管顯示存在「鬼影」,即沒有做消隱處理

四、數碼管消隱

對不需要顯示的數碼管進行關閉操作即可。

五、消除鬼影,殘影

1、為什麼存在「鬼影」

2、如何消除鬼影

總的來說,就是對埠賦新值時,先清空上一次的資料。

法1)操作段前,先關閉段

//個位

dataport = 0xff; //關閉段

dataport = data[curnum%10]; //設定段,兩個段操作之間有其他運算**,即有時間間隔

location = 0x02; //設定位

delay(20); //延時

//十位

dataport = 0xff;

dataport = data[curnum/10];

location = 0x01;

delay(20);

法2)操作位前,先關閉位

/*error

dataport = data[curnum%10]; //設定段

location = 0x00; //關閉位

location = 0x02; //設定位,兩個位操作沒有時間間隔,顯示仍然會有殘影

*///個位

dataport = data[curnum%10]; //設定段

location = 0x02; //設定位

delay(20); //延時

//十位

location = 0x00;

dataport = data[curnum/10];

location = 0x01;

delay(20);

注意:對段/位的關閉、賦值的操作不能是上下語句關係,必須要有時間間隔

六、連線數碼管

1、可以數碼管引腳直接與微控制器連線,但是對於共陰數碼管,因為微控制器引腳驅動能力不足,需要外加電源驅動

2、使用74hc573節省i/o口

**中的位鎖存,段鎖存(latch),其實分別控制兩個74hc573的使能端。

哪個使能有效,p0口的資料就往位或者段傳送,達到對位和段的分別控制。

數碼管顯示

數碼管顯示 最近因為對突然對電子感興趣,前幾天在路過電子 時買了乙個數碼管。因為以前總是紙上談兵,根本沒實驗過,連數碼見都沒見過,所以開始覺得將這塊數碼管顯示出來是非常具有挑戰性的工作。今天正好有空,拿來了我的數碼管,並在網上看了一些資料,才發現並不是想象中的那麼難,其實更準確的說是太簡單了。不到半...

數碼管顯示

數碼管由8個led組成,對應乙個i o口的輸出.根據連線方式不同分為共陽和共陰數碼管 可以看到,由於結構不同,共陽和共陰使led亮起的輸出電平也不同,如下是兩種連線方式對應的16進製製碼 當我們要對多個數碼管進行控制的時候,不僅需要控制顯示內容 段碼 還要控制顯示的位置 位碼 簡單一點的方法可以用另...

LED數碼管顯示

在電梯 家用電器中,隨處可見數碼管顯示的應用。一般是7個發光管組成8字形的排列,可以顯示0 9的數字。我們可以給這7個發光管編號,以便區分它們 我們給出了乙個用於模擬這個顯示過程的程式,並提供了源 輸入數字,可以在控制台示意這些數字的對應數碼管顯示的效果,亮的管顯示為 不亮的管顯示為 程式的主要用途...