zoukankan      html  css  js  c++  java
  • 51单片机 数码管的显示与译码器

    共阳极数组0~9:display[]={0xC0,0xF9,0xA4,0xB0,0x91,0xA2,0x82,0xF8,0x80,0x90}

    共阳极数组A~F:display[]={0x88,0x83,0xA6,0xC1,0x86,0x8E}

     

    共阴极数组0~9:display[]={0x3F,0x06,0x5B,0x4F,0x6E,0x6D,0x7D,0x07,0x7F,0x6F}

    共阴极数组A~F:display[]={0x77,0x7C,0x59,0x3E,0x79,0x71}

     

    共阴、两组四位一体数码管,位选接74LS138译码器,输入(位选)CBA接P20,P21,P22。段选通过74573后接P1口。

    若不使用译码器,可直接将位选段接IO口,赋值改变。


    /*******************************************************************************
    * 实 验 名         : 动态数码管显示
    * 实验说明         : 8位数码管依次显示0~7
    * 作    者         : L2
    * 时    间         : 2016-08-02
    
    *******************************************************************************/
    #include<reg51.h>
    
    #define GPIO_DIG P1         //Digitron  数码管
    sbit LSA= P2^0;
    sbit LSB= P2^1;
    sbit LSC= P2^2;
    
    unsigned char code DIG_CODE[10]={
    0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //0~9的显示码
    void DigDisplay();
    
    void main(void)
    {
        while(1)
            DigDisplay();                
    }
    
    
    void DigDisplay()
    {
        unsigned char i;
        unsigned int j;
        for(i=0;i<8;i++)
        {
            switch(i)     //位选,选择点亮的数码管,
            {
                case(0):
                    LSA=0;LSB=0;LSC=0; break;//显示第0位
                case(1):
                    LSA=1;LSB=0;LSC=0; break;//显示第1位
                case(2):
                    LSA=0;LSB=1;LSC=0; break;//显示第2位
                case(3):
                    LSA=1;LSB=1;LSC=0; break;//显示第3位
                case(4):
                    LSA=0;LSB=0;LSC=1; break;//显示第4位
                case(5):
                    LSA=1;LSB=0;LSC=1; break;//显示第5位
                case(6):
                    LSA=0;LSB=1;LSC=1; break;//显示第6位
                case(7):
                    LSA=1;LSB=1;LSC=1; break;//显示第7位    
            }
            GPIO_DIG=DIG_CODE[i];//发送段码
            j=10000;                         //扫描间隔时间设定,若减少j,可观察到稳定显示的0~7 (扫描速度太快,人眼识别不了)
            while(j--);    
            GPIO_DIG=0x00;//消隐
        }
    }


  • 相关阅读:
    阿里面试后的问题总结
    Spring IOC源码实现流程
    Spring Aop源码分析
    SpringCloud的分布式配置及消息总线
    阿里java编码规范考试总结
    压缩文件的压缩时候中文乱码码
    mybatis的时间比较 xml 及不解析<=的写法
    批量插入一张表的数据,并且生成不同的uuid 字符截取 批量更新 去除重复数据
    Redis集群的搭建
    Python 之 基础知识(二)
  • 原文地址:https://www.cnblogs.com/l20902/p/10610974.html
Copyright © 2011-2022 走看看