51单片机控制单位数码管显示数字

张开发
2026/4/6 10:52:48 15 分钟阅读

分享文章

51单片机控制单位数码管显示数字
51单片机控制单位数码管显示数字的技术详解摘要本文详细介绍了如何使用51单片机以AT89C51为例驱动单位数码管显示数字。内容包括硬件连接原理、软件编程方法C语言、Proteus仿真实现及详细操作步骤。通过本实验读者可以掌握数码管的基本工作原理和单片机的I/O口控制技术。目录仿真运行图Proteus仿真模型搭建截图* 包含AT89C51单片机、单位数码管标明共阴/共阳、限流电阻、电源的完整电路图。1数码管显示02显示数字73显示数字轮播实现代码块1数字0#includereg52.h#defineucharunsignedchar#defineuintunsignedint// 定义锁存器控制引脚sbit LEP2^7;// 74HC573的锁存使能端// 共阴极数码管段码表uchar code seg_code[]{0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F// 9};voiddelay(uint ms){uint i,j;for(ims;i0;i--)for(j110;j0;j--);}voiddisplay_one(){P0seg_code[0];// 发送0的段码LE1;// 锁存数据delay(5);// 稳定信号LE0;// 关闭锁存可选}voidmain(){while(1){display_one();// 显示数字0}}2数字7#includereg52.h#defineucharunsignedchar#defineuintunsignedint// 定义锁存器控制引脚sbit LEP2^7;// 74HC573的锁存使能端// 共阴极数码管段码表uchar code seg_code[]{0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F// 9};voiddelay(uint ms){uint i,j;for(ims;i0;i--)for(j110;j0;j--);}voiddisplay_one(){P0seg_code[7];// 发送7的段码LE1;// 锁存数据delay(5);// 稳定信号LE0;// 关闭锁存可选}voidmain(){while(1){display_one();// 显示数字7}}3数字轮播#includereg52.h#defineucharunsignedchar#defineuintunsignedint// 共阴极数码管段码表uchar code seg_code[]{0x3F,// 00x06,// 10x5B,// 20x4F,// 30x66,// 40x6D,// 50x7D,// 60x07,// 70x7F,// 80x6F// 9};// 延时函数voiddelay(uint ms){uint i,j;for(ims;i0;i--)for(j110;j0;j--);}// 数码管展示函数voiddisplay_digit(uchar digit){P0seg_code[digit];// 发送数字对应的段码//dula 1; // 锁存数据可选delay(5);// 稳定信号//dula 0; // 关闭锁存可选}voidmain(){uchar digit;while(1){for(digit0;digit10;digit){// 轮流显示0到9display_digit(digit);// 显示当前数字delay(500);// 适当延时以便观察每个数字}}}步骤讲解1 硬件搭建步骤确认所用数码管类型共阴或共阳。根据原理图使用杜邦线连接单片机I/O口如P1.0 - P1.7到数码管的段引脚a - g, dp。连接数码管的公共端COM共阴数码管COM → GND。共阳数码管COM → VCC (5V)。在每条段信号线单片机I/O口到数码管段引脚上串联一个限流电阻如220Ω。给单片机和数码管供电。2 软件编程步骤打开Keil μVision创建新工程选择正确的51单片机型号。新建C源文件如 main.c。在源文件中编写代码包含头文件。定义数码管段引脚位定义或端口定义。定义正确的段码表根据数码管类型选择共阴或共阳表。在 main 函数中设置要显示的数字变量。从段码表中获取该数字对应的编码。将编码输出到控制端口。添加死循环保持显示。编译工程生成HEX文件。3 烧录与调试使用编程器/下载器将生成的HEX文件烧录到单片机中。上电观察数码管是否显示设定的数字。调试技巧数码管完全不亮检查电源、COM端连接是否正确、限流电阻是否过大、I/O口是否有输出。显示错误数字检查段码表是否正确、I/O口与段引脚连接顺序是否匹配、数码管类型共阴/共阳判断及代码处理是否正确。部分段不亮检查该段对应的连线、限流电阻是否损坏、该段LED是否损坏。实验总结这次实验还原的是一个基础 51 单片机最小系统 外设扩展的典型场景可实现的典型功能包括数码管静态显示数字P1 口 LED 流水灯 / 闪烁控制按键触发蜂鸣器间歇报警支持程序烧录后独立运行无需外部仿真器。简言之这是一个覆盖 51 单片机基础外设的入门级综合实验电路可直接用于仿真验证数码管、LED、蜂鸣器等基础模块的驱动逻辑。

更多文章