5.0 静态数码管 _ [AT89C51/2] [从零开始的单片机]

数码管介绍

数码管即发光二极管,有的时七段,有的是八段,八段的二极管比七段的多了一小段二极管"dp"(为下一节"动态数码管"及段选埋伏笔)
一般把能显示一个数字"8"的二极管叫做一位(位选的伏笔),如果有8个8能全部显示出来,叫做8位数码管,当然也有1~7位的数码管。
数码管
下面用数字表出数码管的8个"段":
8段数码管

数码管显示原理——共阳极\共阴极输送电平的区别

在这里插入图片描述
数码管内部电路如图,左侧为共阳极原理图,右侧为共阴极原理图。
要想让数码管输出数字"0",就要使除了"g""dp"之外的二极管全部点亮即可。

以输出数字"0"为例子:

注意:要使二极管导通,就要使线路两端有电平差。如果我们不能改变共阴极的阴级电平,就只能改变输入的电平!共阳极同理。

  • 对于共极来说,因为阳极使捆绑在一起的,我们只能控制阴极,使单片机控制8条线路的电平。要使二极管点亮,就要使电路接通,所以要对除"g"、"dp"以外的线路输送电平。

  • 极同理,阴极是捆绑在一起的,所以我们只能通过控制各个阳极来控制二极管点亮。所以对除"g"、"dp"以外的线路输送电平。

(如果使用共阴极数码管需要注意:共阴极数码管是要靠单片机 IO 口输出电流来点亮的,但单片机 I/O 口难以输出稳定且巨大的电流。可以用上拉电阻的方法或使用专门的数码管驱动芯片,比如 74HC573、74HC245 等,优点为输出电流较大,电路接口简单。)

数码管显示原理——输送电平"内容"

上面提到过,对于不同数码管,输送的电平也有区别,具体如下:

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

u8 smg_code[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0xc0,0xf9,
				 0xa4,0xb0,0x99,0x92,0xc6,0xa1,0x86,0x8e};//共阳极数码管

共阴数码管数数字"0"段码为例:要让除了除"g"、"dp"以外的线路输送高电平,即输入1,0x3f,其二进制是:0011 1111,取反后为:1100 0000,转换成 16 进制即为 0xc0。
其他数字同理,不yig难发现其中输出同一个数字有着按位取反的规律。其中,把a作为高位,dp作为低位,正好使单片机的8个管脚同时输出。

数码管显示原理——核心

数码管静态显示基础原理:每个数码管的段选必须接一个 8 位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。
和2.0 LED闪烁 相比不需要编写延时函数,仅需要让特定的段选恒亮即可。

硬件设计

数码管原理图虽然开发板上没有单个的静态数码管,但依然可以在动态数码管电路中使用其中一个来学习静态数码管显示。本实验使用 SMG1 最左边那个数码管作为静态数码管,因为单片机 IO 口外部都增加了外部上拉电阻,因此 P22、P23、P24 引脚默认就是高电平,根据 38 译码器输出特点,此时LED8输出有效,即低电平。

软件设计

#include "reg52.h"

typedef unsigned char u8;
typedef unsigned int u16;

#define SMG_A_DP_PORT P0//P0^0~P0^7为整体

//数组从下表"0"开始,依次表示为0、1、2......e,f,要想使数码管显示其中的字符,直接调用下标即可
u8 smg_code[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴极数码管

u8 smg_code1[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0xc0,0xf9,
				  0xa4,0xb0,0x99,0x92,0xc6,0xa1,0x86,0x8e};//共阳极数码管


//直接定义74HC38译码器的端口,利用38译码规律直接控制8个数码管的输出数字
sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;

//直接使用P0宏端口
void main()
{
	LSA = 1;
	LSB = 1;
	LSC = 1;
	P0 = smg[0];//调用数组的下标
	while(1);
}

代码块中涉及到74HC38译码器的使用,在静态数码管使用较少,在下一节"动态数码管"中详细解析,因此在这里不过多赘述。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、实验目的   (1)通过实验掌握 LED 的显示控制方法;   (2)巩固实验 4.1 中所掌握的对存储区进行访问的方法;   二、实验设备   硬件: Embest EduKit-III 实验平台, Embest ARM 标准/ 增强型仿真器套件,PC 机   软件:Embest IDE Pro ARM集 成开发环境, Windows 98/2000/NT/XP     三、实验内容   编写程序使实验板上八段数码管循环显示 0 到 9 字符   四、实验原理   嵌入式系统中,经常使用八段数码管来显示数字或符号,由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。   (1)结构   八段数码管由八个发光二极管组成,其中七个长条形的发光管排列成“日”字形,右下角一个点形的发光管作为显示小数点用,八段数码管能显示所有数字及部份英文字母   (2)工作原理   以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。电平信号按照dp,g,e, a 的顺序组合形成的数据字称为该字符对应的段码,常用字符的段码表   (3)显示方式   八段数码管的显示方式有两种,分别是静态显示和动态显示。静态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管控制信号一直保持有效。动态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管是轮流点亮的,即控制信号按一定周期有效,在轮流点亮的过程中,点亮时间是极为短暂的(约 1ms),由于人的视觉暂留现象及发光二极管的余辉效应,数码管的显示依然是非常稳定的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值