显示是任何嵌入式系统应用程序中非常重要的一部分,因为它可以帮助用户了解系统的状态,并显示系统生成的输出或任何警告消息。电子产品中使用的显示器类型很多,如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 //header file for lpc214x series microcontrollers
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++);
}
FPGA设计流程及原理
电解液市场毛利将呈下降趋势,或减轻电池企业成本压力
物联网总经理徐强说:现在的物联网非常不安全
又一批半导体项目上马!
如何判断是否为线性电阻
用ARM7-LPC2148连接7段显示器的教程
IGBT通态漂移区少子分布仿真分析
人工智能在疫情中发挥了前所未有的作用
共享充电宝第一股将花落谁家?
W/C双网制式 诺基亚Lumia 900全球发布
如何区分光模块?
2020年锂电池隔膜行业研究报告
深度解读MySQL中的WAL策略和CheckPoint技术
基于IEC 61131-3软件的工艺控制编程系统的实现与研究
特斯拉陷入舆论风波 “货不对板”有消费欺诈之嫌
美国科技股泡沫破灭?中概股集体走软 苹果1天蒸发400亿
防爆无人值守称重系统的详细说明
如何制作一个基于Arduino的微处理器3相逆变器电路?
华为两款新机入网 含折叠屏新机
ESP8266官方AT指令的实现方法