七段式LED显示屏的使用

电子说

1.3w人已加入

描述

简介

时钟收音机,录像机,微波炉,玩具和许多其他家用物品中经常发现七段LED显示屏。它们主要用于显示十进制数字,但也可以显示一些字母和其他字符。该实验描述了将七段式LED显示器连接到PIC16F688单片机的方法。您将创建一个从0(00h)到15(0Fh)的十六进制计数器,并在七段LED显示屏上显示该值。

要求的理论

七段式LED显示屏是由7个LED元件组成的特殊布置,在每侧使用两个垂直段,在顶部,中部和底部使用一个水平段来形成矩形。通过分别打开或关闭分段,可以显示0到9之间的数字和一些字母。有时七段显示也有第八段显示小数点。因此,一个七段显示器将需要微控制器的七个输出来显示一个数字,如果还要显示小数点,则还需要一个输出。

这些段用非大写字母标记: a,b,c,d,e,f,g和dp,其中dp是小数点。显示器内部的8个LED可以配置为共阴极或共阳极配置。对于公共阴极显示器,所有分段LED的阴极都绑在一起,并且该公共点必须接地。然后,通过向其阳极施加逻辑1来打开所需的LED段。在公共阳极显示器中,所有阳极连接在一起,并且公共阳极连接到电源电压Vcc。通过将逻辑0施加到其阴极来打开各个段。

当使用七个以上的段显示时,将使用一种多路复用技术来最大限度地减少所需的微控制器引脚数。

在此实验中,将使用LT543模型共阴极七段显示器。分段LED指示灯亮起时呈红色。该模块有10个引脚,其配置如下所示。

LED显示屏

所有阴极都连接在一起,并且公共阴极点在引脚3和8处可用。阳极通过带有限流电阻器的微控制器的I/O引脚驱动。要显示数字,需要打开和关闭适当的段LED。例如,要显示数字7,仅应打开段a,b和c。

电路图

用于连接的电路图PIC16F688单片机端口的共阴极七段LED显示屏如下所示。微控制器的I/O引脚提供段LED所需的电流。串联在微控制器pina和段LED之间的限流电阻为330Ω。每。段a-f通过RC0-RC5驱动,段g由RA2驱动。不使用小数点。请检查制造商的数据表以标识您的七段显示模块的段引脚。

LED显示屏

七段显示接口电路图

LED显示屏

电路板上的电路设置

软件

分段LED通过PORTC和PORTA驱动,因此它们被定义为数字输出。这些引脚上的任何比较器功能也必须禁用。程序从0到15计数,间隔为1秒,然后再次翻转为0。计数值在七段显示器上显示为0、1、2、3、4、5、6、7、8、9,A,B,C,D,E和F。使用以下命令编译以下程序来自MikroElektronika的用于PIC编译器的MikroC Pro,并将HEX文件加载到PIC16F688微控制器中。阅读第一个实验会话, 实验1:使LED闪烁 ,以了解微控制器的时钟和配置位设置。

/*

Lab 6: Seven segment display

Copyright @ Rajendra Bhatt

November 13, 2010

*/

// Define seven segment connections

sbit seg_a at RC0_bit;

sbit seg_b at RC1_bit;

sbit seg_c at RC2_bit;

sbit seg_d at RC3_bit;

sbit seg_e at RC4_bit;

sbit seg_f at RC5_bit;

sbit seg_g at RA0_bit;

unsigned short count=0;

void main() {

ANSEL = 0b00000000; //All I/O pins are configured as digital

CMCON0 = 0x07 ; // Disbale comparators

TRISC = 0b00000000; // PORTC All Outputs

TRISA = 0b00001000; // PORTA All Outputs, Except RA3

do {

switch (count) {

case 0 : seg_a=1; seg_b=1; seg_c=1;

seg_d=1; seg_e=1; seg_f=1; seg_g=0;

break;

case 1 : seg_a=0; seg_b=1; seg_c=1; seg_d=0;

seg_e=0; seg_f=0; seg_g=0;

break;

case 2 : seg_a=1; seg_b=1; seg_c=0; seg_d=1;

seg_e=1; seg_f=0; seg_g=1;

break;

case 3 : seg_a=1; seg_b=1; seg_c=1; seg_d=1;

seg_e=0; seg_f=0; seg_g=1;

break;

case 4 : seg_a=0; seg_b=1; seg_c=1; seg_d=0;

seg_e=0; seg_f=1; seg_g=1;

break;

case 5 : seg_a=1; seg_b=0; seg_c=1; seg_d=1;

seg_e=0; seg_f=1; seg_g=1;

break;

case 6 : seg_a=1; seg_b=0; seg_c=1; seg_d=1;

seg_e=1; seg_f=1; seg_g=1;

break;

case 7 : seg_a=1; seg_b=1; seg_c=1; seg_d=0;

seg_e=0; seg_f=0; seg_g=0;

break;

case 8 : seg_a=1; seg_b=1; seg_c=1; seg_d=1;

seg_e=1; seg_f=1; seg_g=1;

break;

case 9 : seg_a=1; seg_b=1; seg_c=1; seg_d=0;

seg_e=0; seg_f=1; seg_g=1;

break;

case 10 : seg_a=1; seg_b=1; seg_c=1; seg_d=0;

seg_e=1; seg_f=1; seg_g=1;

break;

case 11 : seg_a=0; seg_b=0; seg_c=1; seg_d=1;

seg_e=1; seg_f=1; seg_g=1;

break;

case 12 : seg_a=1; seg_b=0; seg_c=0; seg_d=1;

seg_e=1; seg_f=1; seg_g=0;

break;

case 13 : seg_a=0; seg_b=1; seg_c=1; seg_d=1;

seg_e=1; seg_f=0; seg_g=1;

break;

case 14 : seg_a=1; seg_b=0; seg_c=0; seg_d=1;

seg_e=1; seg_f=1; seg_g=1;

break;

case 15 : seg_a=1; seg_b=0; seg_c=0; seg_d=0;

seg_e=1; seg_f=1; seg_g=1;

break;

} //case end

count ++;

if(count ==16) count =0;

Delay_ms(1000); // Wait for 1 sec before updating the display

} while(1); // Infinite Loop

}

下载十六进制文件

输出

将程序加载到微控制器后,打开电源并查看十六进制计数器的计数从0到F。

LED显示屏

LED显示屏

LED显示屏

责任编辑:wv

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分