IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 51单片机学习笔记(四)数码管 -> 正文阅读

[嵌入式]51单片机学习笔记(四)数码管

一、数码管的结构

数码管是一种半导体发光器件,其基本单元是发光二极管。一般的数码管由组成数字的七段二极管以及一个小数点构成,一共是八段,分别用a,b,c,d,e,f,g,dp来表示。通过选择数码管上的二极管,既可以显示需要的字符,这些二极管所对应的数码组合就称为段码。
请添加图片描述
按二极管单元的连接方式,可分为共阳极和共阴极数码管。

  1. 共阳极数码管:是指将所有二极管的阳极接到一起形成公共阳极(COM)。在使用时,需要将想要显示的字符对应的二极管的阴极设置成低电平,其余二极管为高电平,从而显示相应的字符;
  2. 共阴数码管:与共阳极数码管相反,是将所有的阴极接到一起形成公共阴极(COM)。使用时,对应字段应为高电平。

按照可以显示的位数分,又可以分为一位、两位、三位、四位……
请添加图片描述
单片机上常用的是由两个四位数码管组合成的八位数码管,每个四位数码管的公共端(COM)都独立分开,称为为选段,可以根据需要,只使用其中的某一位数码管进行显示,也可以一起显示。
同时,为了节省I/O口,常常会令四个数码管共用同一个段码端。因此,当进行数据显示的时候,所有的数码管接受的都是同样的数据。
请添加图片描述

二、数码管的动态驱动显示方式

由于电路中所有的数码管的8个字段的同名段连在一起,使得它们在同一时间只能显示相同的字符。因此,常采用动态驱动的方式对数码管进行控制,该方法利用了视觉暂留现象和发光管的余辉现象,尽管各位数码管并非同时点亮,只要间隔的时间足够短,就会在人眼中看到稳定的数据。这样一来,既能够节省I/O端口,同时又能保证显示效果。

三、数码管的驱动电路

在单片机电路中,想要驱动数码管需要用到两大模块,分别是:动态数码管模块和74HC138译码器。
请添加图片描述
在动态数码管模块中,有一块芯片叫做74HC25,这个芯片的作用是进行数据的传送,当它的DIR端接入高电平时,可以将左侧的数据输出到右侧,而当它接入低电平时,则会将右侧的数据读取到左侧。
通过使用这个芯片,可以将左侧的较微弱的控制信号进行放大,从增强对数码管的驱动能力。

请添加图片描述
74HC138的作用主要是操控数码管的位选端,通过从左侧的输入端A、B、C(权重C>B>A),将其转化为十进制的数据,从右侧对应的输出端输出(对应输出为低电平0,其余为1)。
同时,通过使用138译码器,可以减少I/O口的数量,将原本的8的口缩减为3个口。

四、代码

1. 单个显示数码管

#include <regx52.h>

void main()
{
	P2_2=0;P2_3=0;P2_4=0;//位选端数据,选择LED1
	P0=0x06;//段选端数据,数码管显示为‘1’
	while(1)
	{
		
	}
}

2. 多个数码管动态显示

#include <regx52.h>

unsigned char NixieDic[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
                    //对应   0   1    2    3    4    5    6    7    8    9

void DelayXms(unsigned char xms)
{
	unsigned char i,j;
	while(xms--)
	{
		i=2;j=239;
		do
		{
			while(--j);
		}while(--i);
	}
}

//数码管显示函数,输入:location(数码管位选:1~8),number(要显示的数据:0~8)
void NixieTube(unsigned char location,number)
{
	switch(location)
	{
		case 1:P2_2=0;P2_3=0;P2_4=0;break;
		case 2:P2_2=1;P2_3=0;P2_4=0;break;
		case 3:P2_2=0;P2_3=1;P2_4=0;break;
		case 4:P2_2=1;P2_3=1;P2_4=0;break;
		case 5:P2_2=0;P2_3=0;P2_4=1;break;
		case 6:P2_2=1;P2_3=0;P2_4=1;break;
		case 7:P2_2=0;P2_3=1;P2_4=1;break;
		case 8:P2_2=1;P2_3=1;P2_4=1;break;
	}
	P0=NixieDic[number];//调用列表来将数据转换为对应的段码
	DelayXms(1);//使用延时函数进行消影
}

void main()
{
	while(1)
	{
	  NixieTube(1,1);	
	  NixieTube(2,2);
	  NixieTube(3,3);
	}
}
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-06 11:19:00  更:2021-09-06 11:21:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:59:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码