基礎知識:
單片機系統中常用的顯示器有:
發光二極管LED(Light Emitting Diode)顯示器、液晶LCD(Liquid Crystal Display)顯示器、TFT液晶顯示器等。LED顯示器有兩種顯示結構:段顯示 (7段、米字型等) 和點陣顯示 (5X8、8X8點陣等)
LED數碼管根據LED的不同接法可以分為2類:共陰和共陽。
共陰極接法:將八個LED的負極全部接到0V,只有當我們給出一個正極1的信號才會亮。
共陽極接法:將八個LED的負極全部接到+5V,只有當我們給出一個0的信號才會亮。
使用LED顯示器時,要注意區分這兩種不同的接法。為了顯示數字或字符,必須對數字或字符進行編碼。七段數碼管加上一個小數點,共計8段。因此為LED顯示器提供的編碼正好是一個字節。
LED數碼管顯示原理
舉例說明一下:
假如我們需要顯示一個2,那么對應的就要點亮途中的a,b,d,e,g,其他的全部都要熄滅,這樣顯示出來的數碼管才是我們想要的結果。(假設八位LED剛好全部對應接到一個P口,而且還是從dp算最高位、a為最低為的接法)
所以對于共陰極接法來說,那么就要輸出一個0101 1011的信號,轉換成16進制的話,就是0x5B
而對于共陽極接法的話,那么就要輸出1010 0100,轉換成16進制的話就是0xA4
LED數碼管靜態顯示的原理:
靜態顯示的特點是每個數碼管的段選必須接一個8位數據線來保持顯示的字形碼。當送入一次字形碼后,顯示字形可一直保持,直到送入新字形碼為止。這種方法的優點是占用CPU時間少,顯示便于監測和控制。缺點是硬件電路比較復雜,成本較高
技能進階:(數組)
單片機的數組結構是一種用來存儲多個相同類型數據的數據結構,它可以用一組連續的內存空間來存儲數據,也可以用指針來連接一組零散的內存塊。數組結構可以方便地通過下標來訪問數組中的元素,也可以通過結構體來封裝數組和相關的函數,實現更高級的功能。
使用數組結構的方法有以下幾點:
定義數組時,需要指定數組的類型、名稱和大小,例如 int array[10]; 定義了一個有10個整數元素的數組。
初始化數組時,可以用花括號包含一組初始值,例如 int array[10] = {1,2,3,4,5,6,7,8,9,10}; 初始化了一個數組,每個元素的值等于其下標加一。
訪問數組時,可以用數組名和下標來表示一個元素,例如 array[3] 表示數組中第四個元素,其值為4。注意下標從0開始計數。
修改數組時,可以用賦值語句來改變某個元素的值,例如 array[3] = 5; 將第四個元素的值改為5。
遍歷數組時,可以用循環語句來依次訪問每個元素,例如 for(i=0;i<10;i++) printf("%d ",array[i]); 將打印出數組中所有元素的值。
使用結構體時,可以將數組和相關的函數定義為一個新的數據類型,例如 struct LED { unsigned char array[8]; void (*on)(int); void (*off)(int); }; 定義了一個LED結構體,包含一個8位的數組和兩個函數指針。這樣可以方便地對外設進行操作,例如 LED led; led.on(3); 將點亮第四個LED燈。
程序編寫:
#include
unsigned char code sunduan[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
//創建一個數組的結構,此時采用的是共陽極接法,將0-F的顯示使用了數組的結構創建出來
void main()
{
P2=sunduan[0]; //要顯示一個0,即在P2口上接入了一個LED數碼管之后,需要顯示的數值,直接從編輯號的數組中挑選出來即可。
}
仿真展示:
可以看到,當我們啟動仿真時,這個時候,就會在P2組管腳上的輸出情況(P2.0 ~ P2.5全輸出0,P2.6 ~ P2.7輸出1)因為LED數碼管采用的是共陽極接法,所以a~f全部點亮,g和dp都熄滅,這樣展示出來的效果就是一個0的數字。
程序除了上述的數組結構之外,其實還可以直接通過點亮單片機的輸出管腳單獨控制。
-
led
+關注
關注
242文章
23153瀏覽量
658609 -
單片機
+關注
關注
6032文章
44525瀏覽量
633249 -
發光二極管
+關注
關注
13文章
1195瀏覽量
66209 -
液晶顯示器
+關注
關注
11文章
575瀏覽量
43612 -
數碼管
+關注
關注
32文章
1876瀏覽量
90968
發布評論請先 登錄
相關推薦
評論