单片机-数码管显示

一、数码管显示作用

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

具体而言,它的作用主要体现在三个方面:一是数据可视化,如实时显示温度、电压、转速等测量值;二是状态指示,通过显示"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,你可以调整这个值
        }
    }
}
相关推荐
LCMICRO-1331084774612 小时前
长芯微LPS123完全P2P替代ADP123,高性能、低压差的线性稳压器
单片机·嵌入式硬件·fpga开发·硬件工程·dsp开发·线性稳压器
守护安静星空13 小时前
esp32开发笔记-工程搭建
笔记·单片机·嵌入式硬件·物联网·visual studio code
ACP广源盛1392462567313 小时前
破局 Type‑C 切换器痛点@ACP#GSV6155+LH3828/GSV2221+LH3828 黄金方案
c语言·开发语言·网络·人工智能·嵌入式硬件·计算机外设·电脑
时空自由民.15 小时前
ST7701S 3.5寸显示屏
单片机
金戈鐡馬15 小时前
BetaFlight中的定时器引脚绑定详解
stm32·单片机·嵌入式硬件·无人机
Wave84516 小时前
FreeRTOS软件定时器详解
stm32·单片机·freertos
VBsemi-专注于MOSFET研发定制17 小时前
奶茶制作机器人功率MOSFET选型方案——高效、精准与可靠驱动系统设计指南
单片机·嵌入式硬件
水云桐程序员18 小时前
单片机项目从入门到精通
单片机·嵌入式硬件
Wave84518 小时前
STM32 裸机中断与 FreeRTOS 中断管理的四大核心差异
单片机·嵌入式硬件