顯示是任何嵌入式系統應用程序中非常重要的一部分,因為它可以幫助用戶了解系統的狀態,并顯示系統生成的輸出或任何警告消息。電子產品中使用的顯示器類型很多,如7段顯示器,LCD顯示器,TFT觸摸屏顯示器,LED顯示器等。
今天在本教程中,我們將用ARM7-LPC2148連接7段顯示器。在詳細介紹之前,我們將了解如何控制7段模塊以顯示任意數量的字符。
7段顯示器
7段顯示是顯示數字和字符的最簡單的顯示單元之一。它通常用于顯示數字,并且比點陣顯示具有更亮的照明和更簡單的結構。由于照明更亮,因此可以從比LCD更大的距離觀看輸出。如上圖所示的7段顯示器,它由8個LED組成,每個LED用于照亮單元的一個段,第8個LED用于照亮7段顯示器中的DOT。當使用兩個或多個 7 段模塊時,例如用于顯示 (0.1),則使用 8thLED。單個模塊用于顯示單個數字或字符。要顯示多個數字或字符,請使用多個 7 段。
7段顯示器的引腳
有10個引腳,其中8個引腳用于表示a,b,c,d,e,f,g和h / dp,中間兩個引腳是所有LED的公共陽極/陰極。這些公共陽極/陰極在內部短路,因此我們只需要連接一個COM引腳
根據連接,我們將 7 段分為兩種類型:
共陰極
其中,所有8個LED的所有負端子(陰極)都連接在一起(見下圖),命名為COM。所有正極均單獨放置或連接到微控制器引腳。如果我們使用微控制器,我們將邏輯設置為高電平以照亮特定內容,并將低電平設置為關閉LED。
普通陽極
其中,所有8個LED的所有正極(陽極)都連接在一起,稱為COM。所有負熱量都單獨放置或連接到微控制器引腳。如果我們使用微控制器,我們將邏輯設置為低電平以照亮特定,并將邏輯設置為高以關閉LED。
因此,根據引腳值,可以打開或關閉特定的段或7段的行以顯示所需的數字或字母。例如,要顯示 0 位數字,我們必須將引腳ABCDEF 設置為高電平,僅將 G 設置為低電平。由于ABCDEF 指示燈亮起,G 指示燈熄滅,因此在 7 段模塊中形成 0 位數字。(這是針對共陰極的,對于公共陽極,它是相反的)。
下表顯示了根據LPC2148引腳的HEX值和相應數字,用于共陰極配置。
重要提示:在上表中,我根據LPC2148中使用的引腳給出了十六進制值,請查看下面的電路圖。您可以使用所需的任何引腳,但會根據該引腳更改十六進制值。
所需材料
硬件
斷續器2148
七段顯示模塊(個位數)
試驗板
連接線
軟件
凱爾烏維森5
閃光魔術
電路圖
為了將7段與LPC2148連接,無需外部元件,如下圖所示:
下表顯示了7段模塊和LPC2148之間的電路連接
對 ARM7 LPC2148 進行編程
在上一教程中,我們已經學會了如何使用 Keil 對 ARM7-LPC2148 進行編程。我們在這里使用相同的Keil uVision 5來編寫代碼并創建十六進制文件,然后使用閃存魔術工具將十六進制文件上傳到LPC2148。我們使用USB電纜供電并將代碼上傳到LPC2148
本教程末尾給出了帶有視頻說明的完整代碼。在這里,我們解釋代碼的幾個重要部分。
首先,我們需要包含LPC214x系列微控制器的頭文件
#include
接下來將引腳設置為輸出
IO0DIR=IO0DIR|0xffffffff
這會將引腳 P0.0 設置為 P0.31 作為輸出,但我們將僅使用引腳(P0.0、P0.1、P0.4、P0.5、P0.6、P0.7 和 P0.8)。
然后根據要顯示的數字將某些引腳設置為邏輯高電平或低電平。在這里,我們將顯示從(0到9)的值。我們將使用一個數組,該數組由值 0 到 9 的 HEX 值組成。
unsigned int a[]={0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3};
值將在代碼放入 while 循環時連續顯示
while(1)
{
for(i=0;i<=9;i++)
{
IO0SET=IO0SET|a[i]; //sets corresponding pins HIGH
delay(9000); //Calls delay function
IO0CLR=IO0CLR|a[i]; //Sets corresponding pins LOW
}
}
在這里,IOSET和IOCRR分別用于設置引腳高電平和低電平。由于我們使用了端口0引腳,因此我們有IO0SET和IO0CLR。
For loop用于在每次迭代中增加i,每次當i增加時,7段也會增加其上顯示的數字。
延遲函數用于在 SET 和 CLR 之間生成延遲時間
void delay(int k) //Function for making delay
{
int i,j;
for(i=0;i
for(j=0;j<=1000;j++);
}
完整代碼
//INTERFACING SINGLE SEVEN SEGMENT MODULE WITH LPC2148
//CIRCUIT DIGEST
//By Pramoth.T
#include
void delay(int ); //Function declaration for delay
int i; //Variable declared as integer
unsigned int a[]={0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3}; //integer array with numbers for display
int main()
{
IO0DIR=IO0DIR|0xffffffff; //Sets direction as output for PORT 0 pins
while(1)
{
for(i=0;i<=9;i++)
{
IO0SET=IO0SET|a[i]; //sets corresponding pins HIGH
delay(9000); //Calls delay function
IO0CLR=IO0CLR|a[i]; //Sets corresponding pins LOW
}
}
return 0;
}
void delay(int k) //Function for making delay
{
int i,j;
for(i=0;i
for(j=0;j<=1000;j++);
}
-
顯示器
+關注
關注
21文章
4986瀏覽量
140117 -
ARM
+關注
關注
134文章
9107瀏覽量
367970 -
LPC2148
+關注
關注
0文章
25瀏覽量
14940
發布評論請先 登錄
相關推薦
評論