51单片机的自学之路(4)——静态数码管和动态数码管的显示实验

本文介绍了51单片机进行静态和动态数码管显示的实验过程,包括数码管的工作原理、静态数码管的硬件连接、程序编写,以及动态数码管的位选线和段选线概念,同时还分享了如何使用38译码器进行数码管控制的实验技巧。
摘要由CSDN通过智能技术生成

静态数码管的显示实验

数码管的简介

数码管是一种半导体发光器件,其基本单元是发光二极管,也称之为LED数码管。**按照发光二极管的单元连接方式,可以分为共阳极数码管和共阴极数码管。

共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时,应该将公众极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就会被点亮。

对于共阴极数码管而言,在应用的时候应该将公共极COM接到地线GND上。当某一字段的发光二极管的阳极为高电平时,其相应的字段就会被点亮。
在这里插入图片描述
这里就举个例子说下如何去点亮,也就是去显示一些数字。
如上图当中,其实可以清楚看到共阴和共阳数码管的结构。对于共阳极而言,当我们要显示数字0的时候,只需要使“a,b,c,d,e,f”这几个二极管的阴极为低电平时,g和dp为高电平,就会显示出这个数字。
同理,对于共阴极数码管而言,如果想要显示数字0,只需要使“a,b,c,d,e,f”这几个二极管的阳极为高电平,g和dp为低电平就可以了。

下面附上共阴和共阳数码管的码表。这对于编程的时候,数码管显示什么内容可以说是至关重要的。
在这里插入图片描述
那么问题就来了:上图当中显示0为什么他的码表是0x3f呢?这其实就比较简单了。对于共阴数码管而言,要想显示数字,只需要使得该显示的二极管亮就可以了,也就是输入高电平就可以了,其余的输入低电平。

在之前的时候就提到过,如果要想显示0,必须要给a,b,c,d,e,f这几个二极管输入高电平,也就是说这几位全部都是1,而g和dp为0。那么结合在一起的话,就成了00111111,也就是十六进制数0x3f。
在这里插入图片描述
而共阳显示数字的原理和共阴差不多,并且由于输入电平之间的相反,还使得他们输入同一个数字的十六进制数是相反的,比如0x3f和0xC0。

这里需要注意的是:在计算十六进制数的时候,是将a段作为最低位来处理的,b为次低位,以此类推,dp为最高位,不要搞错,切记!
在这里插入图片描述
上图为静态数码管的硬件显示图。从图中可以看出,电路是独立的,静态数码管的八个引脚,并没有直接接到单片机的IO口上,而是接到了J8端子。这在连线的时候,就需要单片机的IO口去控制J8端子的输出,并且顺序不能错。至于中间的电阻,作用是限流用的。

下面是静态数码管显示0的程序:

#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
 u8 code gh[1]={
   0xC0};
void  main()
{
   
	P0=gh[0];
	while(1);
	
}

这个程序就比较简单了。我这边用的是共阳极的静态数码管,市面上比较常用的一种。所以在定义了一个无符号字符型的数组,并且这个数组里面也只有一个元素,那就是0xC0,也就是共阳极数码管0的十六进制数。

这里需要注意的是:因为数组的下标都是从0开始的,所以在给P0口赋值的时候,需要使用P0=gh[0]。这个时候的gh[0]=0xC0。切记这个点!

之后的话,我个人又做一个类似的实验,就是用共阳极的静态数码管去循环的显示0-F这16个数。下面分享下实验程序:

#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
 u8 code gh[17]={
   0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};  // 这是共阴极数码管0-F的值,下面用的时候取反就ok
void delay1s(void)   //误差 1s
{
   
    unsigned char a,b,c;
    for(c=167;c>0;c--)
        for(b=171;b>0;b--)
            for(a=16;a>0;a--);
    _nop_();  //if Keil,require use intrins.h
}
void  main()
{
   
	unsigned char i;
	for
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值