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);
	}
}
相关推荐
星辰即远方2 小时前
计算器仿写总结
学习·ui·ios·cocoa·xcode
VALENIAN瓦伦尼安教学设备3 小时前
激光对中仪采购要点
数据库·嵌入式硬件·算法
芯岭技术3 小时前
OM6625A芯片使用PY32 link烧录程序流程操作介绍
嵌入式硬件·物联网
影寂ldy4 小时前
SQL 事务(Transaction)完整版学习笔记(含转账案例+存储过程+异常捕获)
笔记·sql·学习
zlinear数据采集卡5 小时前
ZLinear DABM-D223 通信协议与软件开发全解析:从 USB CDC 到 DDS 波形输出
arm开发·嵌入式硬件·fpga开发·开源
小比特-combat6 小时前
多模式调光台灯
单片机·嵌入式硬件
2CM_Embed6 小时前
Altium Designer 中为什么一颗芯片会分成多个 Part?——以 C2000 MCU 为例
单片机·嵌入式硬件·altium designer·c2000
Bernice橘子6 小时前
职场英语学习计划Day034
学习
磊灬泽7 小时前
【从零学习 MQTT】发布/订阅、主题、QoS 与报文解析
学习
0566467 小时前
Python数据结构——循环队列
python·学习