51单片机数码管静态显示

数码管静态显示其实在实际应用中很少,除非项目中就只用到了一位数码管显示,否则的话静态显示非常占用IO口。但是,静态显示又是动态显示的基础,所以,在这里我打算跟大家分享一下,数码管静态显示的工作原理和编程方法。

一、电路原理图

注:这是一个6位数码管的电路,在本项目中我们只用到其中的一个,电路中74LS04电路在这里主要是用作驱动芯片,用于提高单片机IO口的驱动能力。

二、相关知识

1、数码管的结构

数码管内部结构其实就是由8颗LED按照8自形排列组成,而根据结构的不同,数码管可分为共阳极数码管和共阴极数码管,其中把所有LED的阴极连接到一起做引出端的成为共阴极数码管,其中把所有LED的阳极连接到一起做引出端的成为共阳极数码管。

2、取码方式

数码管的使用过程中,我们通过点亮数码管的不同笔段组合,来达到显示不同数字的效果,这就是取码,段码一般按照16进制书写。而共阴极数码管和共阳极数码管的的段码也不一样。

(1)共阴极数码管的取码方式

“0”的段码:取码时a为对应地位,h对应高位

“1”的段码:取码时a为对应地位,h对应高位

根据这种方式我们可以总结得出,共阴极数码管的段码表

0x3f

0x06

0x5b

0x4f

0x66

0x6d

0x7d

0x07

0

1

2

3

4

5

6

7

0x7f

0x6f

0x77

0x7c

0x39

0x5e

0x79

0x71

8

9

A

B

C

D

E

F

如果将段码表使用c语言数组的方式书写则为:

unsigned char table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0~f

(2)共阳极数码管的取码方式

“0”的段码:取码时a为对应地位,h对应高位

“1”的段码:取码时a为对应地位,h对应高位

根据这种方式我们可以总结得出,共阳极数码管的段码表

0xc0

 0xf9 

0xa4

0xb0

0x99

0x92

0x82

0xf8

0

1

2

3

4

5

6

7

0x80

0x90

0x88

0x83

0xc6

0xa1

0x86

0x8e

8

9

A

B

C

D

E

F

如果将段码表使用c语言数组的方式书写则为:

unsigned char table[]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//0~f

3、数显方式

如果我们想要在数码管上显示数字,只需要把相应的段码送到IO口,即可让数码管显示。

三、例程

#include<reg52.h>

#define uint unsigned int
#define uchar unsigned char

sbit LED1=P2^0;

uchar table_K[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//共阴极数码管段码表

/*-------微秒延时--------*/
void delay_us(uint z)
{
	uint x;
	for(x=z;x>0;x--);
}
/*--------毫秒延时--------*/
void delay_ms(uint z)
{
  uint x,y;
	for(x=z;x>0;x--)
	   for(y=110;y>0;y--); 
}

/*----------主函数-----------*/
void main()
{
	uchar i=1;
	P0=0x00;P1=0xff;P2=0x00;P3=0x00;  //IO口状态初始化
	while(1)
	{
    LED1=1;
		for(i=0;i<16;i++)  //循环16次 i从0~15
		{
			P0=table_K[i]; //把0~f的段码一次送到P0口
			delay_ms(1000);//等待1秒
		}
  }
}

四、视频讲解

项目3、数码管静态显示

B站链接:https://www.bilibili.com/video/BV1TH4y1J7pT/?spm_id_from=333.1365.list.card_archive.click&vd_source=963ae9aae236be73cd4b5b480953fe48

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值