数码管

数码管:
1.数码管是有8段的,8段其实可以看为8个led(a,b,c,d,e,f,g,dp),分为共阴和共阳两种(所谓共
阴其实就是阴极都连在一起,共阳就是阳极都连在一起的)
第一张图是数码管的基本构建,第2张图是共阴形数码管,第3张图是共阳形数码管
在这里插入图片描述
2.74ls138是38译码器,输入端为:P22、P23、P24,详情可以看原理图,输出为:LED1-LED8,
这个其实就是led的选中处。
3.74HC245是锁存器,OE是使能端,当OE为低电平的时候,锁存器开始工作。D0-D7是输入端,
Q0-Q7是输出端。LE为高电平的时候,D端和Q端的数据一样,LE为低电平的时候,锁存器锁存,
此时不论D端电平如何变化,Q端不会再变化。
在这里插入图片描述
4.我们的数码管是共阴的数码管
数码管静态显示:
程序效果:LED0显示0

#include <reg52.h>

#define LED_CHOOSE	P2
#define LED_VALUE	P0
sbit le = P1^0;

typedef unsigned char u8;
u8 value_array[] = {0x3f, 0x06, 0x56, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77,
0x39, 0x5e, 0x79, 0x71, 0x00, 0x80}; //0x00为无显示,0x80为小数点

void delay(u8 i)
{
	while (i--);
}

int main(void)
{
	
	LED_CHOOSE &= ~(1<<2 | 1<<3 | 1<<4);
	le = 1;
	LED_VALUE = value_array[0];
	delay(10);
	le = 0;
	while (1);
	return 0;
}

5.数码管动态显示:
所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
通俗来说:就是依次在每个数码管上去显示数字,为什么看不出来呢?
24帧/s的时候人眼看着就是连续的,也就是0.041s = 41ms左右,也就是41ms刷新一次,人眼就看不出来
程序效果:在LED0-LED7分别显示0-7


```c
#include <reg52.h>

#define LED_CHOOSE	P2
#define LED_VALUE	P0
sbit le = P1^0;

sbit LA = P2^2;
sbit LB = P2^3;
sbit LC = P2^4;


typedef unsigned char u8;
u8 value_array[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77,
0x39, 0x5e, 0x79, 0x71, 0x00, 0x80}; //0x00为无显示,0x80为小数点

void delay(u8 i)
{
	while (i--);
}

void index_choose(u8 index)
{
	switch (index)
	{
		case 0:
			LA = 0;
			LB = 0;
			LC = 0;
			break;
		case 1:
			LA = 1;
			LB = 0;
			LC = 0;
			break;
		case 2:
			LA = 0;
			LB = 1;
			LC = 0;
			break;
		case 3:
			LA = 1;
			LB = 1;
			LC = 0;
			break;
		case 4:
			LA = 0;
			LB = 0;
			LC = 1;
			break;
		case 5:
			LA = 1;
			LB = 0;
			LC = 1;
			break;
		case 6:
			LA = 0;
			LB = 1;
			LC = 1;
			break;
		case 7:
			LA = 1;
			LB = 1;
			LC = 1;
			break;
		default:
			break;
	}
}

int main(void)
{
	int i = 0;
	while (1)
	{
		for (i=0; i<8; i++)
		{
			index_choose(i);
			LED_VALUE = value_array[i];
			delay(100); 
			//这个用来延时1ms左右,24帧/s的时候人眼看着就是连续的
			//也就是0.041s = 41ms左右,也就是41ms刷新一次,人眼就看不出来
			//这里8ms,就全部刷新了一遍,所以肯定看到的是连续的
			LED_VALUE = 0x0;
		}
	}
	return 0;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值