51单片机实验2:静态数码管
  k5GskpyrCqoj 2023年11月22日 24 0

数码管介绍

共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极的数码管,共阳极数码管在应用时将公共端接到+5V。

共阴极数码管是指将所有发光二极管的阳极接到一起形成公共阴极的数码管,共阴极数码管在应用时将公共端接到GND。

硬件设计

74HC138译码器

51单片机实验2:静态数码管_单片机

管脚说明

51单片机实验2:静态数码管_静态数码管_02

真值表(低电平有效)

51单片机实验2:静态数码管_数码管_03

51单片机实验2:静态数码管_数码管_04

P0口是段选,LEDx(x=1~8)是位选。电路图来源普中51单片机A2板。

软件设计

#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
#define PORT          P0
#define LSA           P22
#define LSB           P23
#define LSC           P24
u8 gsmg_code[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
                    0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
void delay_10us(u16 ten_us)
{
    while (ten_us--);
}
void display(u8 dat[], u8 pos1)
{
    u8 i= 0;
    u8 pos = pos1 - 1;
    for (i = pos; i < 8; i++) {
        switch (i) {
            case 0:LSC = 1;LSB = 1;LSA = 1;break;
            case 1:LSC = 1;LSB = 1;LSA = 0;break;
            case 2:LSC = 1;LSB = 0;LSA = 1;break;
            case 3:LSC = 1;LSB = 0;LSA = 0;break;
            case 4:LSC = 0;LSB = 1;LSA = 1;break;
            case 5:LSC = 0;LSB = 1;LSA = 0;break;
            case 6:LSC = 0;LSB = 0;LSA = 1;break;
            case 7:LSC = 0;LSB = 0;LSA = 0;break;
        }
        PORT = gsmg_code[dat[i-pos]];
        delay_10us(10);//消影
        PORT = 0x00;
    }
}
void main()
{
    u8 dat[8] = {1, 2, 3, 4, 5, 6, 7,8};
    while (1)
    {
    display(dat,1);
    } 
}

实验现象

51单片机实验2:静态数码管_静态数码管_05

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月22日 0

暂无评论

推荐阅读
  k5GskpyrCqoj   2023年11月13日   29   0   0 单片机sdcc编译器
k5GskpyrCqoj
作者其他文章 更多