C51_数码管显示

数码管介绍

  • 当发光二极管被施加正向电压后,相应的段即被点亮,从而显示出不同的字符
  • 七段数码管内部电路有两种连接方式,共阳型和共阴型, 51单片机使用共阳型

数码管的工作原理

在这里插入图片描述

数码管静态显示

  • 是指利用1组段选引脚控制1位数码管。以第一位数码管中显示数字“6”为例,首先位定义P2.3引脚 sbit SegmentG1 = P2 ^ 3; // 定义数码管1
  • 数字“6”的段码为0x41,因此将P0寄存器赋值为0x41,并且选中第一位数码管
P0 = 0x41; // 数码管1显示为数字6
SegmentG1 = 0; // 打开数码管1
  • 由于51核心板上的数码管只有1组选段引脚。+,如果将其他位数码管同时点亮,则数码管所有位都显示统一数字。如果需要使用静态显示的方法显示多为不同的数字,则需要多组段选引脚

数码管动态显示

如果轮流点亮每位数码管,并在数码管熄灭与点亮之间的间隔中不断切换显示的数字,并且每位数码管的点亮与熄灭之间的时间间隔缩短至5ms…

实例与代码解析

  1. 包含头文件
#include <reg52.h>
  1. 位定义数码管
sbit SegmentG1 = P2 ^ 3; // 定义数码管1
sbit SegmentG2 = P2 ^ 2;
sbit SegmentG3 = P2 ^ 1;
sbit SegmentG4 = P2 ^ 0;
  1. 定义数码管显示数字
// 定义数码管显示数字0 - 9
static unsigned char s_arrNumber[] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09};
  1. 编写延时函数
static void DelayNms(int nms); // 内部函数声明
static void DelayNms(int nms)
{
    unsigned int i, j;
    
    for (i = 0; i < nms; i++)
    {
        for (j = 0; j < 123; j++)
        {
            
        }
    }
}
  1. 编写主函数
void main()
{
    while (1)
    {
        P0 = s_arrNumber[1]; // 数码管1显示为数字1
        SegmentG1 = 0; // 打开数码管1
        DelayNms(5); // 延时5ms
        SegmentG1 = 1; // 关闭数码管1
        
        P0 = s_arrNumber[2];
        SegmentG2 = 0;
        DelayNms(5);
        SegmentG2 = 1;
        
        P0 = s_arrNumber[3];
        SegmentG3 = 0;
        DelayNms(5);
        SegmentG3 = 1;
        
        P0 = s_arrNumber[4];
        SegmentG4 = 0;
        DelayNms(5);
        SegmentG4 = 1;
    }
}
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值