单片机-数码管显示

一、数码管显示作用

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

具体而言,它的作用主要体现在三个方面:一是数据可视化,如实时显示温度、电压、转速等测量值;二是状态指示,通过显示"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,你可以调整这个值
        }
    }
}
相关推荐
东小东博客5 小时前
STM32 WS2812 Proteus仿真 汉字显示 SPI控制
stm32·嵌入式硬件·proteus
czhaii10 小时前
STM32中的位带(bit-band)操作
单片机
嵌入式-老费12 小时前
esp开发与应用(DS18B20温度传感器)
单片机·嵌入式硬件
szxinmai主板定制专家12 小时前
基于ZYNQ MPSOC图像采集与压缩系统总体设计方案
linux·arm开发·人工智能·嵌入式硬件·fpga开发
Jonathan_LF13 小时前
DMA使用心得-STM32
stm32·单片机·嵌入式硬件
国科安芯14 小时前
ASM232S抗辐照RS-232收发器的技术架构与空间环境适应性研究
单片机·嵌入式硬件·安全·架构·安全性测试
嵌入式小站14 小时前
STM32 零基础可移植教程 07:USART 串口打印,从 CubeMX 配置到 printf 输出
stm32·单片机·嵌入式硬件
都在酒里14 小时前
STM32矩阵按键详解——4×4行列扫描与非阻塞消抖(硬件总结六)
stm32·嵌入式硬件·矩阵
都在酒里15 小时前
STM32有限状态机(FSM)详解,综合应用总结(二)
stm32·单片机·嵌入式硬件·状态机
嵌入式-老费16 小时前
esp开发与应用(继电器的使用)
单片机·嵌入式硬件