数码管显示原理与驱动方式
目錄
一、數碼管內部結構
二、數碼管的顯示方式
三、數碼管顯示編程思想???
一、數碼管內部結構
1、內部結構有八個發光二極管,一個8字只需要顯示7段,但是有一個小數點,dp,所以有八個發光二極管。
2、單個數碼管封裝十個引腳。3、8引腳是連在一起的,組成公共端。八個發光二極管分別與一個限流電阻串聯后再并聯,有一個公共端,公共端可以分為共陽或共陰極。
共陰極是公共端接地,然后給高電平讓想讓亮的字段亮起來。想讓顯示幾,就給對應的字段高電平;
共陽極需要給需要的字段低電平,注意發光二極管本身需要通過5毫安以上的電流才可以發光,且電流不得過大。但是單片機的I/O口送不了這么大的電流,所以需要驅動電路。可以用上拉電阻的方式也可以直接使用專門的驅動芯片,可以使用74HC573鎖存器芯片、74HC138譯碼器,也可以使用專門的數碼管驅動芯片LM1640。
3、當多位一體的數碼管時內部的公共端是獨立的,而負責顯示什么數字的段選線是全部連接在一起的。
公共端控制哪個位亮,稱為“位選線”,控制單個數碼管哪一段亮的叫做“段選線”。
一般單位數碼管和二位數碼管都有10個引腳,四位數碼管有12個引腳。
二、數碼管的顯示方式
????????數碼管有兩種顯示方式:靜態顯示和動態顯示。
?? ????位選去選哪幾個數字亮,而由于段選是連在一起的所以顯示的數字是相同的,這稱為靜態顯示。靜態顯示就是選中不同的數碼管顯示相同的數字。
? ? ? ??數碼管動態顯示又叫做動態掃描顯示,就是選中幾個數碼管同時顯示不同的數字。
? ? ? ? 數碼管的動態是以掃描的方式輪流向數碼管送出段選碼和位選,利用發光管的余輝和人眼的視覺暫留作用,使人感覺各位數碼管同時都在顯示,而實際上是多為數碼管一位一位的輪流顯示,只是輪流的速度非常快,人眼已經無法分辨。
? ? ? ? 由于數碼管動態顯示的特性,動態顯示時,我們要在每次送完段選數據后、送入位選數據前,加上語句P0 = 0xff或P0=0x00,看采用的是共陽極還是共陰極的數碼管。這個操作叫做消影。如果不執行消影操作,語句再接下來的打開位選命令后,仍保持著上次的段選數據,該段選數據將立刻加在數碼管上,接下來才是再次通過IO口給位選送入位選數據,數碼管上會出現混亂的現象。
三、數碼管顯示編程思想???
?????數碼管顯示步驟:1、送段碼 2、送位選 3、延時一下,不要超過10ms(不是必須的) 4、消隱
????????數碼管顯示時,最好將段碼數據和位選數據按順序放到各自的數組中,這樣調用各自的數組,便可以用數字的方式給數碼管送入位選和段選數據,更加方便直觀。
我們只需將代表不同數字的段碼和位選地址放入數組中,便可以直接調用
unsigned char code leddata[] = {//數碼管段碼表0x3f,//"0"0x06,//"1"0x5b,//"2"0x4f,//"3"0x66,//"4"0x6d,//"5"0x7d,//"6"0x07,//"7"0x7f,//"8"0x6f,//"9"0x77,//"A"0x7c,//"B"0x39,//"C"0x5e,//"D"0x79,//"E"0x71,//"F"0x76,//"H"0x38,//"L"0x37,//"n"0x3e,//"u"0x73,//"P"0x5c,//"o"0x40,//"-"0x00,//"熄滅"}; unsigned char LEDBUF[] = {22,22,22,22};//數據顯示緩沖區 unsigned char code PLACE_CODE[] = {0xfe, 0xfd, 0xfb, 0xf7};//位選信號我們可以在我們設置的數據緩沖區數組中填入我們想要顯示的內容,就可以通過數組之間的相互調用的實現顯示。
void Display()//因為有數據顯示緩沖區,就不用帶參數的函數 {static unsigned char i = 0;//靜態變量只在第一次時初始化,再次調用就不會被初始化//1、送段碼GPIO_DIG = leddata[LEDBUF[i]];//2、送位選GPIO_PLACE = PLACE_CODE[i];//3、延時 1ms,所有數碼管整體延時時間不要超過10msDelayXms(1);//4、消隱GPIO_DIG = 0x00;i++;if(i == N)i = 0; }總結
以上是生活随笔為你收集整理的数码管显示原理与驱动方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下QT去掉边框,qt 界面去掉
- 下一篇: 递归神经网络RNN总结