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);
	}
}
相关推荐
charlie1145141914 分钟前
深入理解CC++的编译与链接技术9:动态库细节
c语言·开发语言·c++·学习·动态库
码界奇点21 分钟前
Java Web学习 第15篇jQuery万字长文详解从入门到实战解锁前端交互新境界
java·前端·学习·jquery
无人装备硬件开发爱好者22 分钟前
初级菜鸟快速学习无人机电调教程:第2节
嵌入式硬件·无人机·电调开发
逐辰十七30 分钟前
EDA学习笔记
笔记·学习
MM_MS30 分钟前
VisionPro工具使用--->通过连接器距离及其角度的测量并显示案例掌握并学习到工具的知识点和使用步骤
学习·目标检测·计算机视觉·视觉检测
南龙大魔王32 分钟前
spring ai Alibaba(SAA)学习(二)
java·人工智能·spring boot·学习·ai
Wnq1007233 分钟前
当无人机 “飞” 入生活,安全隐患如何破解?
嵌入式硬件·物联网·网络安全·信息与通信·信号处理
my_angle201634 分钟前
c语言 个人学习计划打卡与番茄钟程序
学习
无垠的广袤36 分钟前
【启明云端 WT9932S3-Nano 开发板】介绍、环境搭建、工程测试
python·单片机·嵌入式硬件
代码游侠1 小时前
应用——Linux进程编程实例分析
linux·运维·网络·笔记·学习·算法