51单片机学习——静态数码管显示

1. 数码管介绍

LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成"8"字型的器件。

2. 数码管引脚定义

LED的阴极连接到一个端口上是共阴极连接,称为共阴极数码管。LED的阳极连接到一个端口上是共阳极连接,称为共阳极数码管。

段选 :就是控制数码管的各个段(如a、b、c等段)是否点亮,以显示不同数字、字母等内容。
位选:用于多位数码管中,选择让哪一位数码管进行显示。

共阴极数码管,COM表示公共端,想选择哪一个数码管则在哪一个数码管的COM端给低电平0即可。

共阴极数码管给阳码 1-亮 0-灭,共阳极数码管给阴码 1-灭 0-亮。

3. 138译码器

输入引脚 :除了A2、A1、A0这3个地址输入引脚外,还有3个使能引脚G1、G2A和G2B。只有当G1为高电平,且G2A和G2B都为低电平时,译码器才会正常工作,否则所有输出引脚都为高电平。
输出引脚:Y0 - Y7为译码输出引脚,低电平有效,即当某个输出引脚对应的输入编码有效时,该引脚输出为低电平,其他引脚输出为高电平。

通过P22 P23 P24三个I/O口控制Y0-Y7八个输出端。

给输入引脚CBA一个二进制数,将其转化为十进制数即可选择输出引脚Yx。

例如:CBA是101 则对应的输出引脚为Y5。

作用:减少单片机的I/O口。

特点:原码入,反码出。

4. 74HC245双向数据缓冲器

单片机的高电平驱动能力弱,低电平驱动能力强,加入缓冲器可以提高驱动能力。

5. C语言数组

数组:把相同类型的一系列数据统一编制到某一个组别中,可以通过数组名+索引号简单快捷的操作大量数据。

cs 复制代码
int x[3];           //定义一组变量(3个)
int x[]={1,2,3};    //定义一组变量并初始化

x[0]                //引用数组的第0个变量
x[1]                //引用数组的第1个变量
x[2]                //引用数组的第2个变量
引用x[3]时,数组越界,读出的数值不确定,应避免这种操作。

6. C语言子函数

子函数:将完成某一种功能的程序代码单独抽取出来形成一个模块,在其它函数中可随时调用此模块,以达到代码的复用和优化程序结构的目的。

cs 复制代码
void Function(unsigned char x,unsigned char y)//如果两个形参的数据类型一样,则可以省略。
{
    
}

返回值 函数名(形参)
{
    函数体
}

7. 代码示例

cs 复制代码
#include <REGX52.H>

//(0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00)

unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//0-9的段码

void Nixie(unsigned char Location,Number)//NixieTube数码管
{
	switch(Location)
	{
		case 1:P2_4 = 1;P2_3 = 1;P2_2 = 1;break;
		case 2:P2_4 = 1;P2_3 = 1;P2_2 = 0;break;
		case 3:P2_4 = 1;P2_3 = 0;P2_2 = 1;break;
		case 4:P2_4 = 1;P2_3 = 0;P2_2 = 0;break;
		case 5:P2_4 = 0;P2_3 = 1;P2_2 = 1;break;
		case 6:P2_4 = 0;P2_3 = 1;P2_2 = 0;break;
		case 7:P2_4 = 0;P2_3 = 0;P2_2 = 1;break;
		case 8:P2_4 = 0;P2_3 = 0;P2_2 = 0;break;
	}
	P0 = NixieTable[Number];
}

void main()
{
/*	在第四个数码管显示6
	//P2位选(位置选择) P0段选(字形选择)
	P2_4 = 1;//138译码器从高位到低位为CBA
	P2_3 = 0;
	P2_2 = 0;
	P0 = 0x7D;//数据高位对端口高位,例如一个数是12345,那么1就是数据高位,p07是端口高位,所以从P07往前读,一个数字的第一位才是最高位*/

	Nixie(2,3);
	while(1)
	{
		
	}
}

注:本文出自对bilibili江协科技51单片机入门教程[4-1] 静态数码管显示 内容的学习笔记。

相关推荐
DKPT1 小时前
JVM栈溢出和堆溢出哪个先满?
java·开发语言·jvm·笔记·学习
Rock_yzh4 小时前
AI学习日记——参数的初始化
人工智能·python·深度学习·学习·机器学习
CiLerLinux6 小时前
第四十九章 ESP32S3 WiFi 路由实验
网络·人工智能·单片机·嵌入式硬件
时光の尘6 小时前
【PCB电路设计】常见元器件简介(电阻、电容、电感、二极管、三极管以及场效应管)
单片机·嵌入式硬件·pcb·二极管·电感·三极管·场效应管
Lu Zelin6 小时前
单片机为什么不能跑Linux
linux·单片机·嵌入式硬件
宁静致远20217 小时前
stm32 freertos下基于hal库的模拟I2C驱动实现
stm32·嵌入式硬件·freertos
bnsarocket7 小时前
Verilog和FPGA的自学笔记1——FPGA
笔记·fpga开发·verilog·自学
今天只学一颗糖7 小时前
Linux学习笔记--insmod 命令
linux·笔记·学习
charlie1145141917 小时前
精读C++20设计模式:行为型设计模式:中介者模式
c++·学习·设计模式·c++20·中介者模式
丰锋ff7 小时前
2016 年真题配套词汇单词笔记(考研真相)
笔记