AT89C51单片机控制数码管显示数字。

张开发
2026/4/12 14:14:04 15 分钟阅读

分享文章

AT89C51单片机控制数码管显示数字。
数码管是一种常用的数字显示器件广泛应用于电子仪表、工业控制设备等人机交互界面中。本实训以STC89C52RC单片机为核心控制器使用P2口驱动共阴极数码管实现数字09的循环显示旨在掌握数码管的工作原理、段码生成方法以及单片机I/O口的控制技术。本次任务及要求1.在Proteus中设计LED流水灯电路。2.在Keil中编写C语言程序实现LED流水灯效果。3.将程序加载到Proteus中进行仿真调试。原理说明.数码管的结构与显示原理数码管由8个发光二极管LED组成包括7个用于构成“8”字形的段a、b、c、d、e、f、g和1个小数点段dp。根据内部连接方式可分为共阴极数码管所有LED的阴极连接在一起并接地当某一段的阳极输入高电平时该段点亮。共阳极数码管所有LED的阳极连接在一起并接电源当某一段的阴极输入低电平时该段点亮。本实训采用共阴极数码管。要显示特定数字需向各段输出对应的电平组合这种组合称为段码。例如显示数字“0”时需点亮a、b、c、d、e、f段g段熄灭其对应的十六进制段码为 0x3F。. STC89C52RC单片机与数码管的接口P2口驱动STC89C52RC 是一款兼容8051指令集的高性能单片机具有以下特性8KB Flash程序存储器512字节RAM32个可编程I/O引脚分为P0、P1、P2、P3四个8位并行端口支持ISP在线编程便于程序下载与调试抗干扰能力强适用于工业环境在本实训中使用P2口作为段码输出端口连接数码管的adp各段P2.0 → a段P2.1 → b段P2.2 → c段……由于P2口内部带有上拉电阻可直接输出高电平驱动共阴极数码管无需外接上拉电阻在实际电路中建议串联限流电阻保护LED在Proteus仿真中可直接连接。.静态显示原理本实训采用静态显示方式单个数码管固定连接P2口持续输出当前数字的段码。显示稳定、亮度高、无闪烁。程序简单适合初学者掌握基本显示原理。.软件设计原理程序使用C语言编写开发环境为Keil μVision头文件使用 reg52.h对应STC89C52RC。核心设计定义一个常量数组 digit[10]存储共阴极数码管显示09的段码。主函数中通过 while(1) 循环不断遍历数组将段码写入P2口实现数字循环显示。过程步骤Keil4环境准备与代码运行1.启动 keil4并创建一个项目选择STC MCU Database并选取AT89C51型芯片2.创建新 .c 文件并输入代码最后添加源代码文件到项目中3.调整振荡周期和输出hex4.编译工程5.启动proteus7绘制原理图6.载入hex文件并启动仿真。C源代码参考#include REGX51.H unsigned char SEGNum[10] {0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F}; unsigned char index 0; sbit key_add P1^4; sbit key_sub P1^5; sbit led1 P1^1; sbit led2 P1^0; void Delay(unsigned int x) { unsigned int i,j; for(i0;ix;i) { for(j0;j120;j); } } void main() { while(1) { if(key_add 0) { Delay(10); if(key_add 0) { led1 0; index; if(index 10) index 0; while(key_add 0); led1 1; } } if(key_sub 0) { Delay(10); if(key_sub 0) { led2 0; index--; if(index 10) index 9; while(key_sub 0); led2 1; } } P2 ~SEGNum[index]; } }电路图

更多文章