顯示是任何嵌入式系統(tǒng)應(yīng)用程序中非常重要的一部分,因?yàn)樗梢詭椭脩袅私庀到y(tǒng)的狀態(tài),并顯示系統(tǒng)生成的輸出或任何警告消息。電子產(chǎn)品中使用的顯示器類型很多,如7段顯示器,LCD顯示器,TFT觸摸屏顯示器,LED顯示器等。
今天在本教程中,我們將用ARM7-LPC2148連接7段顯示器。在詳細(xì)介紹之前,我們將了解如何控制7段模塊以顯示任意數(shù)量的字符。
7段顯示器
7段顯示是顯示數(shù)字和字符的最簡(jiǎn)單的顯示單元之一。它通常用于顯示數(shù)字,并且比點(diǎn)陣顯示具有更亮的照明和更簡(jiǎn)單的結(jié)構(gòu)。由于照明更亮,因此可以從比LCD更大的距離觀看輸出。如上圖所示的7段顯示器,它由8個(gè)LED組成,每個(gè)LED用于照亮單元的一個(gè)段,第8個(gè)LED用于照亮7段顯示器中的DOT。當(dāng)使用兩個(gè)或多個(gè) 7 段模塊時(shí),例如用于顯示 (0.1),則使用 8thLED。單個(gè)模塊用于顯示單個(gè)數(shù)字或字符。要顯示多個(gè)數(shù)字或字符,請(qǐng)使用多個(gè) 7 段。
7段顯示器的引腳
有10個(gè)引腳,其中8個(gè)引腳用于表示a,b,c,d,e,f,g和h / dp,中間兩個(gè)引腳是所有LED的公共陽(yáng)極/陰極。這些公共陽(yáng)極/陰極在內(nèi)部短路,因此我們只需要連接一個(gè)COM引腳
根據(jù)連接,我們將 7 段分為兩種類型:
共陰極
其中,所有8個(gè)LED的所有負(fù)端子(陰極)都連接在一起(見(jiàn)下圖),命名為COM。所有正極均單獨(dú)放置或連接到微控制器引腳。如果我們使用微控制器,我們將邏輯設(shè)置為高電平以照亮特定內(nèi)容,并將低電平設(shè)置為關(guān)閉LED。
普通陽(yáng)極
其中,所有8個(gè)LED的所有正極(陽(yáng)極)都連接在一起,稱為COM。所有負(fù)熱量都單獨(dú)放置或連接到微控制器引腳。如果我們使用微控制器,我們將邏輯設(shè)置為低電平以照亮特定,并將邏輯設(shè)置為高以關(guān)閉LED。
因此,根據(jù)引腳值,可以打開(kāi)或關(guān)閉特定的段或7段的行以顯示所需的數(shù)字或字母。例如,要顯示 0 位數(shù)字,我們必須將引腳ABCDEF 設(shè)置為高電平,僅將 G 設(shè)置為低電平。由于ABCDEF 指示燈亮起,G 指示燈熄滅,因此在 7 段模塊中形成 0 位數(shù)字。(這是針對(duì)共陰極的,對(duì)于公共陽(yáng)極,它是相反的)。
下表顯示了根據(jù)LPC2148引腳的HEX值和相應(yīng)數(shù)字,用于共陰極配置。
重要提示:在上表中,我根據(jù)LPC2148中使用的引腳給出了十六進(jìn)制值,請(qǐng)查看下面的電路圖。您可以使用所需的任何引腳,但會(huì)根據(jù)該引腳更改十六進(jìn)制值。
所需材料
硬件
斷續(xù)器2148
七段顯示模塊(個(gè)位數(shù))
試驗(yàn)板
連接線
軟件
凱爾烏維森5
閃光魔術(shù)
電路圖
為了將7段與LPC2148連接,無(wú)需外部元件,如下圖所示:
下表顯示了7段模塊和LPC2148之間的電路連接
對(duì) ARM7 LPC2148 進(jìn)行編程
在上一教程中,我們已經(jīng)學(xué)會(huì)了如何使用 Keil 對(duì) ARM7-LPC2148 進(jìn)行編程。我們?cè)谶@里使用相同的Keil uVision 5來(lái)編寫(xiě)代碼并創(chuàng)建十六進(jìn)制文件,然后使用閃存魔術(shù)工具將十六進(jìn)制文件上傳到LPC2148。我們使用USB電纜供電并將代碼上傳到LPC2148
本教程末尾給出了帶有視頻說(shuō)明的完整代碼。在這里,我們解釋代碼的幾個(gè)重要部分。
首先,我們需要包含LPC214x系列微控制器的頭文件
#include
接下來(lái)將引腳設(shè)置為輸出
IO0DIR=IO0DIR|0xffffffff
這會(huì)將引腳 P0.0 設(shè)置為 P0.31 作為輸出,但我們將僅使用引腳(P0.0、P0.1、P0.4、P0.5、P0.6、P0.7 和 P0.8)。
然后根據(jù)要顯示的數(shù)字將某些引腳設(shè)置為邏輯高電平或低電平。在這里,我們將顯示從(0到9)的值。我們將使用一個(gè)數(shù)組,該數(shù)組由值 0 到 9 的 HEX 值組成。
unsigned int a[]={0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3};
值將在代碼放入 while 循環(huán)時(shí)連續(xù)顯示
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分別用于設(shè)置引腳高電平和低電平。由于我們使用了端口0引腳,因此我們有IO0SET和IO0CLR。
For loop用于在每次迭代中增加i,每次當(dāng)i增加時(shí),7段也會(huì)增加其上顯示的數(shù)字。
延遲函數(shù)用于在 SET 和 CLR 之間生成延遲時(shí)間
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++);
}
-
顯示器
+關(guān)注
關(guān)注
21文章
4999瀏覽量
140187 -
ARM
+關(guān)注
關(guān)注
134文章
9137瀏覽量
368285 -
LPC2148
+關(guān)注
關(guān)注
0文章
25瀏覽量
14940
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論