原创 【单片机基础-7】一位数码管的显示

2023-3-26 16:46 331 9 9 分类: MCU/ 嵌入式 文集: 单片机基础

风风雨雨二十载,多少bug在心间。

代码编译不通过,急得抓耳直挠腮。

回想当年恩师讲,基础知道全忘干。

忙里偷闲回首看,权当引玉的抛转。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

一、LED数码管结构及工作原理

1、LED数码管结构

通常使用的是七段LED显示器,这种显示器由8个led构成,有共阴极和共阳极两种接法, 如图所示,分为a,b,c,d,e,f,g七段和一个点dp

数码管结构

LED数码管工作原理

共阴极接法数码管的8个led的阴极连在一起,接公共端COM。使用时公共端接地,当led的阳极为高电平时,对应的发光二极管点亮。共阳极接法数码管则与之相反。

从管脚a~g及dp输入不同的8位二进制数,可显示不同的数字或字符,把控制数码管显示不同字符的8位二进制数称为段码。例如:对于共阳极数码管,若要显示0,其段码为0xc0。下表是共阴极数码管和共阳极数码管的字形码。

其中H表示16进制。

二、LED数码管的显示方法

数码管的显示方式有静态显示和动态显示两种。

1、静态显示

静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。每个数码管的8个字段分别与一个8位I/O口相连。

2、动态显示

动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常,各位数码管的相应段选线并联在一起,由一个8位的I/O口控制;各位数码管的位选线(公共阴极或阳极)由另外的I/O口线控制。动态显示是运用人眼睛的时间暂存效应,实际上极短时间内各位数码管的轮流显示在人眼看来则为静止的。

三、proteus中一位数码管显示0~F的设计

1、画图

在proteus中数码管的关键字为7SEG-MPX1(位数)-CC或CA,其中CC表示的是共阴极接法数码管,CA表示的是共阳极接法数码管。以上两电路均为共阴极数码管,第1副比第2副图多了一个小数点。

注意,字形码8位led引脚接P0口时一定不要忘记接排阻(即一排电阻)respack-8(或7)。

2、写出程序。

  1. uchar a[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
  2. 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
  3. void main()
  4. {
  5. uchar i=0,j;
  6. for(j=0;j<16;j++)
  7. {
  8. P0=a[i]; //字形码输送给P0口
  9. i++; //数组下标+1
  10. delay(500); //延时500ms
  11. }
  12. }

程序中新知识点:数组,简单总结以下。

(1)数组形式为

变量[长度,元素的个数]

(2)变量,为定义时任意设定的,变量定义时需要设定某数据类型,比如此设计中为unsigned char ;

(3)长度,为常数,表示数组内元素的个数,此项可以大于或等于赋值时元素的个数,也可以省略不写。本程序中在定义时就没写。

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条