微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 数码管静态显示

数码管静态显示

时间:10-02 整理:3721RD 点击:

#include <reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

uchar code leddata[]={          //存储在程序存储空间

                0x3F,  //"0"

                0x06,  //"1"

                0x5B,  //"2"

                0x4F,  //"3"

                0x66,  //"4"

                0x6D,  //"5"

                0x7D,  //"6"

                0x07,  //"7"

                0x7F,  //"8"

                0x6F,  //"9"

                0x77,  //"A"

                0x7C,  //"B"

                0x39,  //"C"

                0x5E,  //"D"

                0x79,  //"E"

                0x71,  //"F"

                0x76,  //"H"

                0x38,  //"L"

                0x37,  //"n"

                0x3E,  //"u"

                0x73,  //"P"

                0x5C,  //"o"

                0x40,  //"-"

                0x00,  //熄灭

                0x00  //自定义

                         };

sbit wei = P2^7;

sbit duan = P2^6;

void delay(uint z)

{

         uintx,y;

         for(x= z;x > 0;x--)

                  for(y= 120; y > 0; y--);

}

void main()

{

         duan= 1;           //打开段选

         P0= leddata[0];    //控制数码管段选

         duan= 0;         //关闭段选,锁存

         delay(5);

         wei= 1;   //打开位选

         P0= 0;     //控制数码管位选

         wei= 0;   //关闭位选

}


下面实现对某一位从0到9显示

#include <reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int


uchar code leddata[]={         //存储在程序存储空间

                0x3F,  //"0"

                0x06,  //"1"

                0x5B,  //"2"

                0x4F,  //"3"

                0x66,  //"4"

                0x6D,  //"5"

                0x7D,  //"6"

                0x07,  //"7"

                0x7F,  //"8"

                0x6F,  //"9"

                0x77,  //"A"

                0x7C,  //"B"

                0x39,  //"C"

                0x5E,  //"D"

                0x79,  //"E"

                0x71,  //"F"

                0x76,  //"H"

                0x38,  //"L"

                0x37,  //"n"

                0x3E,  //"u"

                0x73,  //"P"

                0x5C,  //"o"

                0x40,  //"-"

                0x00,  //熄灭

                0x00  //自定义

                         };


sbit wei = P2^7;

sbit duan = P2^6;


void delay(uint z)

{

        uint x,y;

        for(x = z;x > 0;x--)

                for(y = 120; y > 0; y--);

}


void main()

{

        uchar i;

        wei = 1;        //打开位选

        P0 = 0xfe;     //控制数码管位选

        wei = 0;        //关闭位选


        for(i=0;i<10;i++)

        {

                duan = 1;           //打开段选

                P0 = leddata;    //控制数码管段选

                duan = 0;                //关闭段选,锁存

                delay(500);

        }                                                               //主要是在此处对第一个程序进行了代码修改,使用了for循环控制。后面的位选被放在前面


}


这里有非常好的视频,包括静态显示与动态显示,建议先看看。
视频地址:http://pan.baidu.com/share/home?uk=4077802723&view=share#category/type=0

不错的文件,值得收藏

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top