单片机-数码管显示

一、数码管显示作用

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

具体而言,它的作用主要体现在三个方面:一是数据可视化,如实时显示温度、电压、转速等测量值;二是状态指示,通过显示"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,你可以调整这个值
        }
    }
}
相关推荐
LCG元2 小时前
STM32项目实战:基于STM32F103的智能农业监控系统
stm32·单片机·嵌入式硬件
ACP广源盛139246256732 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
一起搞IT吧3 小时前
Android性能系列专题理论之十:systrace/perfetto相关指标知识点细节含义总结
android·嵌入式硬件·智能手机·性能优化
Truffle7电子4 小时前
STM32CubeIDE/Programmer/Touch GFX 应用
stm32·单片机·嵌入式硬件
constant_LDX5 小时前
步进电机开发(一、硬件设计)
单片机·嵌入式硬件
北山有鸟5 小时前
修改源码法和插件法
嵌入式硬件·学习
richxu202510015 小时前
嵌入式学习之路->stm32篇->(14)通用定时器(上)
stm32·单片机·嵌入式硬件·学习
Deitymoon5 小时前
STM32——串口通信(USART)
单片机·嵌入式硬件
iCxhust5 小时前
微机原理实践教程(C语言篇)---A002流水灯
c语言·开发语言·单片机·嵌入式硬件·51单片机·课程设计·微机原理
Deitymoon7 小时前
STM32——外部中断按键控制led
stm32·单片机·嵌入式硬件