文章目录

概要

硬件设计

软件设计

编译下载

小结


概要

项目采用共阴极单支数码管作为显示器件,通过单片机I/O口输出段选信号控制数码管段亮灭,配合延时函数实现数字0~9每隔1秒自动加1,并循环往复显示的功能。

硬件设计

1. 核心器件

- STC89C51/52单片机

- 共阴极单支数码管

- 10K排阻(用于P0口上拉)

- 单片机最小系统(晶振11.0592MHz、复位电路、电源电路)

2. 电路连接

- 数码管段选脚(a~g)直接连接单片机P0口(P0.0~P0.7);

- P0口并联10K排阻做上拉,保证数码管亮度正常;

- 数码管公共端接地(符合共阴极接法);

- 单片机VCC接5V,GND接地,晶振与复位电路按最小系统标准接法。

可参考下图电路连接:

软件设计

程序采用C语言编写,在Keil C51环境下编译,核心包含段码表、延时函数、数字循环自增三部分。

1. 设计思路

- 定义共阴极数码管0~9标准段码表;

- 编写毫秒级延时函数,实现1秒定时;

- 定义变量计数0~9,循环赋值给数码管并刷新。

2. 完整代码(带详细注释)

#include <reg52.h>// 包含51单片机寄存器定义的头文件,必须写
#include "delayms.h"// 包含毫秒级延时函数定义的头文件,必须写
//阴级数码段0-9的段码
unsigned char code seg_table[10] = {
        0x3F,0x06,0x5B,0x4F,0x66,
        0x6D,0x7D,0x07,0x7F,0x6F
    };

void main(void)
{ 
    unsigned char num;

    while(1)
    {
        // 从 0 显示到 9
        for(num = 0; num < 10; num++)
        {
            P0 = seg_table[num];  // P0输出段码
            delay_ms(1000);           // 延时,保持显示
        }
    }
}

编译下载

1.打开keil5项目工程,点击左上角的编译按键进行程序编译,编译结果显示0错误0警告就进行下一步的下载操作

2.打开proteus仿真工程,双击单片机进入配置页面,然后选择导入下载文件,最后点击OK,这样就下载好程序到单片机中了

3.效果演示:点击仿真运行按键,程序开始运行,数码管从0开始显示,每隔1秒自动加1,依次显示0→1→2→…→9,到达9后立即回到0,持续循环,显示稳定无闪烁。

小结

我们成功用单片机驱动了共阴极数码管,实现了0到9每隔一秒循环显示的效果,通过这次实验也掌握了数码管的基本接法、I/O口控制和简单延时程序的写法。

最后,我已经把本次实验的完整源码、Proteus仿真文件、工程文件都整理好啦,需要的同学直接复制链接到百度网盘自取下载:

链接: https://pan.baidu.com/s/1iWTMH6eLHeQVXDkhH_JIDg?pwd=2rd4 提取码: 2rd4

⚠️ 特别提醒:本项目资料仅用于学习与技术交流分享,严禁用于任何商业用途或二次开发售卖,感谢理解!

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐