登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 51单片机数码管

[复制链接]
发表于 2022-1-27 18:37:38 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 51单片机数码管
学习安排: 数码管
开始时间: 2022-01-27
结束时间: 2022-01-27
         数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。玻璃管中包括一个金属丝网制成的阳极和多个阴极。大部分数码管阴极的形状为数字。管中充以低压气体,通常大部分为加上一些和/或。给某一个阴极充电,数码管就会发出颜色光,视乎管内的气体而定,一般都是橙色或绿色。


一个数码管是由a、b、c、d、e、f、g、dp八个二极管组成,八个LED一端接在一起,另一端引脚引出来。二极管如果阳极连在一起,就是共阳极数码管,阴极连在一起,就是共阴极数码管。
点亮数码管根据原理图,我们要配置74HC138来让指定的数码管使能,然后根据对应的引脚点亮玻璃管,如果要同时使用6个数码管,用74HC138不能一次性实现,我们可以用延时函数,短暂的配置后,重置,再配置下一个数码管,间隔时间短以至于感觉是一直亮。


代码如下
#include <reg51.h>
#include <INTRINS.h>

        sbit ENLED=P1^1;
        sbit ADDR0=P2^0;
        sbit ADDR1=P2^1;
        sbit ADDR2=P2^2;
        sbit LED0=P0^0;
        sbit LED1=P0^1;
        sbit LED2=P0^2;
        sbit LED3=P0^3;
        sbit LED4=P0^4;
        sbit LED5=P0^5;
        sbit LED6=P0^6;
        sbit LED7=P0^7;

void Delay10ms()                //@11.0592MHz
{
        unsigned char i, j;

        _nop_();
        _nop_();
        i = 108;
        j = 144;
        do
        {
                while (--j);
        } while (--i);
}

void main()
{
        ENLED=0;

        while (1)
        {
                ADDR0=0;  //1
                ADDR1=0;
                ADDR2=0;
                LED1=0;
                LED2=0;
                Delay10ms();
                LED1=1;
                LED2=1;
               
                ADDR0=1;   //2
                ADDR1=0;
                ADDR2=0;
                LED0=0;
                LED1=0;
                LED3=0;
                LED4=0;
                LED6=0;
                Delay10ms();
                LED0=1;
                LED1=1;
                LED3=1;
                LED4=1;
                LED6=1;
               
                ADDR0=0;   //3
                ADDR1=1;
                ADDR2=0;
                LED0=0;
                LED1=0;
                LED2=0;
                LED3=0;
                LED6=0;
                Delay10ms();
                LED0=1;
                LED1=1;
                LED2=1;
                LED3=1;
                LED6=1;
               
               
                ADDR0=1;   //4
                ADDR1=1;
                ADDR2=0;               
                LED1=0;
                LED2=0;
                LED5=0;
                LED6=0;
                Delay10ms();
                LED1=1;
                LED2=1;
                LED5=1;
                LED6=1;
               
                ADDR0=0;   //5
                ADDR1=0;
                ADDR2=1;
                LED0=0;
                LED2=0;
                LED3=0;
                LED5=0;
                LED6=0;
                Delay10ms();
                LED0=1;
                LED2=1;
                LED3=1;
                LED5=1;
                LED6=1;
               
                ADDR0=1;    //6
                ADDR1=0;
                ADDR2=1;
                LED0=0;
                LED2=0;
                LED3=0;
                LED4=0;
                LED5=0;
                LED6=0;
                Delay10ms();
                LED0=1;
                LED2=1;
                LED3=1;
                LED4=1;
                LED5=1;
                LED6=1;
               
        }       
}



IMG_20220127_183647.jpg
好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表