单片机-数码管显示

一、数码管显示作用

单片机控制数码管显示,是嵌入式系统中最经典、最基础的人机交互方式,其核心作用是将单片机内部晦涩的二进制数据转化为人类直观可读的数字与字符。

具体而言,它的作用主要体现在三个方面:一是数据可视化,如实时显示温度、电压、转速等测量值;二是状态指示,通过显示"Err"、"H"或"C"等代码,直观反映设备的故障或运行模式;三是参数设置与计时,配合按键完成目标数值的修改,或作为时钟、倒计时的显示终端。

二、静态的数码管显示

静态显示20260412

复制代码
#include <REGX52.H>

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

void Delay(unsigned char xms)	//@11.0592MHz
{
	unsigned char data i, j;

	_nop_();
	_nop_();

	while(xms--){
		i = 2;
		j = 15;
		do
		{
			while (--j);
		} while (--i);
	}

}


void Nixie(unsigned char Location, unsigned char 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) {
        Nixie(1, 2);
        Nixie(2, 0);
        Nixie(3, 2);
        Nixie(4, 6);
        Nixie(5, 0);
        Nixie(6, 4);
        Nixie(7, 1);
        Nixie(8, 2);
    }
}

三、动态展示

动态轮询显示20260412

复制代码
#include <REGX52.H>

// 共阴极数码管段码表 (0~9)
unsigned char code NixieTable[] = {
    0x3F, 0x06, 0x5B, 0x4F, 0x66, 
    0x6D, 0x7D, 0x07, 0x7F, 0x6F
};

// 【保留你提供的函数】
void Nixie(unsigned char Location, unsigned char 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 Delay(unsigned char xms)	//@11.0592MHz
{
	unsigned char data i, j;

	_nop_();
	_nop_();

	while(xms--){
		i = 2;
		j = 15;
		do
		{
			while (--j);
		} while (--i);
	}

}

void main() {
    unsigned char i;
    unsigned char numbers[] = {2, 0, 2, 6, 0, 4, 1, 2}; // 要显示的数字数组

    while(1) {
        // 循环显示,从第1位到第8位
        for(i = 0; i < 8; i++) {
            // 清空数码管 (显示全灭)
            P2 = 0xFF;
            P0 = 0x00;
            
            // 显示当前位
            Nixie(i + 1, numbers[i]);
            
            // 延时,让数字稳定显示一会儿
            Delay(2500); // 延时2500ms,你可以调整这个值
        }
    }
}
相关推荐
AOI小白新手上路32 分钟前
江科协51单片机16-1 AD/DA ADC 三通道综合显示(LCD1602 版)改造说明
单片机·嵌入式硬件·51单片机
HUI-4741 小时前
EG1135|SSOP‑16 同步整流降压控制器,大功率外置 MOS 降压优选
单片机·嵌入式硬件·硬件工程
单片机仿真设计2 小时前
【proteus仿真】基于 STM32 单片机恒温箱控制系统设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
国科安芯2 小时前
星载CAN总线通信网络中抗辐射MCU的通信可靠性设计分析
网络·人工智能·分布式·单片机·嵌入式硬件·架构
新晨单片机设计3 小时前
S003A-基于STM32单片机温度计(数码管显示)【Proteus仿真+Keil程序+原理图】
stm32·单片机·stm32单片机功能定制
AOI小白新手上路4 小时前
江科协51单片机16-1 DA数模转换实验(PWM 呼吸灯)
单片机·嵌入式硬件·51单片机
hongmai6668884 小时前
告别Wi-Fi,专注Mesh:ESP32-H2-MINI-1U-H2S模组规格与应用
单片机·嵌入式硬件·物联网·5g·h.265
Yiran_G4 小时前
BLE通信距离怎么判断?从发射功率、PHY到天线设计分析
单片机·嵌入式硬件
女神下凡4 小时前
芯参谋(11): 各种存储芯片电路设计
开发语言·嵌入式硬件
HUI-4745 小时前
EG5101|TSSOP‑24 数字算法电流模式同步降压控制器,高性能数字化电源方案
单片机·嵌入式硬件