单片机-数码管显示

一、数码管显示作用

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

具体而言,它的作用主要体现在三个方面:一是数据可视化,如实时显示温度、电压、转速等测量值;二是状态指示,通过显示"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,你可以调整这个值
        }
    }
}
相关推荐
FreakStudio7 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
✎ ﹏梦醒͜ღ҉繁华落℘12 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
u1521096484912 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
zd84510150012 天前
RS485 总线详解
单片机·嵌入式硬件
半条-咸鱼12 天前
【STM32】I2C协议原理、HAL读写与OLED显示操作
嵌入式硬件·c·信息与通信
wohoo_wangzi12 天前
苏州晟雅泰电子:关于W25Q128JVSIQ这个芯片物料的参数,规格及应用领域
嵌入式硬件
✎ ﹏梦醒͜ღ҉繁华落℘12 天前
编程基础 --高内聚,低耦合
c语言·单片机
科芯创展12 天前
1A,1MHz,30VIN,XZ4115,降压恒流LED驱动芯片
单片机·嵌入式硬件
集芯微电科技有限公司12 天前
四通道2A输出集成功率电感降压模块专为紧凑型方案设计
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设
踏着七彩祥云的小丑12 天前
嵌入式测试学习第 37 天:异常场景测试:断电、拔插、干扰、非法指令
单片机·嵌入式硬件·学习