51单片机学习--数码管显示

首先实现静态数码管显示

SMG表示共阴极 ,要让第三位显示数字6,需要LED6端口接0,即Y5=0,5的二进制为101,按P2_4 到 P2_2 的顺序接,则CBA分别接101

然后在数码管另一端,需要点亮的接上1,根据原理图一一对应即可

得到P0_0 到 P0_7 依次为1011 1110

所以P0的十六进制为0111 1101 == 7D


功能:使第三位显示数字6

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



void main()
{
	P2_4 = 1; //C
	P2_3 = 0; //B
	P2_2 = 1; //A
	
	P0 = 0x7D;

	while(1)
	{
		
	}
}


将这个功能封装成函数,指定位置显示指定数字

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

unsigned char NixieTable[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

void Nixie(unsigned char Location, Number)
{
	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()
{
	Nixie(7, 2);

	while(1)
	{
		
	}
}


在点亮某位数码管后,因为切换的太快会产生错位重影,所以每次都要将P0归零来消影,在极快的速度下依次显示123,视觉上得到同时亮起的123,这就是动态数码管显示

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

unsigned char NixieTable[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

void Delay(unsigned int t)		//@11.0592MHz
{
	unsigned char i, j;

	while(t --)
	{
		_nop_();
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);
	}
}


void Nixie(unsigned char Location, Number)
{
	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];
	Delay(1);
	P0 = 0x00; //清零消影
}

void main()
{
	
	while(1) //依次显示123,因为太快所以看起来是同时亮的
	{
		Nixie(1, 1);
		Delay(2);
		Nixie(2, 2);
		Delay(2);
		Nixie(3, 3);
		Delay(2);
	}
}
相关推荐
遇见尚硅谷3 小时前
C语言:20250805学习(文件预处理)
服务器·c语言·学习
DIY机器人工房4 小时前
一个程序通过 HTTP 协议调用天气 API,解析 JSON 格式的天气数据,提取关键信息并格式化输出:日期、天气状况、温度范围、风向、湿度等核心气象数据。
嵌入式硬件·嵌入式·diy机器人工房
wdfk_prog4 小时前
[Linux]学习笔记系列 -- [arm][debug]
linux·运维·arm开发·笔记·学习
wdfk_prog5 小时前
实战教程:从“对象文件为空“到仓库重生——修复 Git 仓库损坏全记录
大数据·网络·笔记·git·学习·elasticsearch·全文检索
小杨爱搞嵌入式5 小时前
【STM32】GPIO的输入输出
c语言·笔记·stm32·单片机·学习
皮蛋sol周5 小时前
嵌入式学习硬件(一)ARM体系架构
arm开发·学习·架构
不会先思考6 小时前
A3.0:防反接和防倒灌的物理意义
单片机·嵌入式硬件
无名工程师7 小时前
浅谈RNN被Transformer 取代的必然性
rnn·学习·transformer
XINVRY-FPGA9 小时前
XCKU115-2FLVB2104E AMD Xilinx Kintex UltraScale FPGA
嵌入式硬件·计算机视觉·fpga开发·云计算·硬件工程·dsp开发·fpga
Virgil1399 小时前
【YOLO学习笔记】YOLOv8详解解读
笔记·学习·yolo