精华内容
下载资源
问答
  • 8位数码管

    2021-04-01 08:39:40
    8位数码管 1. 8位段码(0-F,-----) 2. 8位位选(0-8)为减少IO口,用38译码器,用3位二进制输出并行8位十进制 3. 给每个数码管送段码 4. 在某一个时间,只给某一个位选信号,只显示一个数码管 5. 显示完要给...

    8位数码管

    1.循环8位位选 (0-8)为减少IO口,用38译码器,用3位二进制

       输出并行8位十进制。在某一个时间,只给某一个位选信号,只显示一个数码管

    2. 8位段码 (0-F,-----)给每个数码管送段码 

    3. 等待10ms---100ms

    4.  显示完要给全部位选送断开电平,起消隐的作用

    5. 第1步的循环和第4步,利用人眼余辉效应,起显示效果

    6. 段码表为一个数组,内部存让数码管显示字符的代码

    7. 位选表为一个外部变量数组,内部存每一位将要显示的字符的缓冲变量

    展开全文
  • 8位数码管模块资料

    2017-04-24 21:26:56
    8位数码管模块资料
  • 8位数码管.rar

    2017-12-23 15:51:53
    利用AT89S52单片机上的8位数码管,实现秒表。而且附有虚拟电路图
  • proeus8位数码管仿真

    2014-11-18 13:18:20
    proeus8位数码管仿真
  • 单片机8位数码管控制

    2014-04-17 22:05:50
    单片机8位数码管控制
  • 8位数码管动态扫描

    2014-01-08 17:44:28
    8位数码管动态扫描用Proteus仿真实现8位数码管动态扫描控制。 用Keil C51编程实现上述功能 用Keil与Proteus联调,自动或手动改写显示内容
  • 8个8位数码管,用两个HC595驱动,有原理图,有STM32,89C51,Arduino的例子供参考。
  • 基于FPGA的8位数码管扫描显示电路设计,基于FPGA的8位数码管扫描显示电路设计
  • 8位数码管扫描显示

    2013-12-03 22:31:40
    基于verilog的8位数码管扫描显示,仿真成功
  • 8位数码管显示函数

    2011-12-03 20:31:09
    8位数码管显示函数
  • 前面讲过1位数码管的显示实例,这次讲的是8位数码管显示实例。
  • 8位数码管秒表程序.rar8位数码管秒表程序.rar8位数码管秒表程序.rar8位数码管秒表程序.rar8位数码管秒表程序.rar8位数码管秒表程序.rar8位数码管秒表程序.rar8位数码管秒表程序.rar8位数码管秒表程序.rar8位数码管...
  • 74hc595驱动8位数码管电路图及程序,详见正文
  • 单片机控制8位数码管实现数字1-8从右向左滚动显示, 当所有的数字滚动完成(数码管上面没有数字)后, 数字重新从右边第一个数码管开始向左滚动显示。
  • STM8S207串行通讯595控制8位数码管动态扫描显示 接线 PD5 SCLK PD1 DIO PD6 RCLK
  • 51单片机8位数码管数频电路代码,要求高位为0不显示,精确到1HZ
  • 在单片机教学中,我们往往会遇到8位数码管的动态显示电路。动态驱动是将所有数码管的8个段码a,b,c,d,e,f,g,dp”的同名端连在一起,公共端各自独立,还为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立...

    在单片机教学中,我们往往会遇到8位数码管的动态显示电路。动态驱动是将所有数码管的8个段码a,b,c,d,e,f,g,dp”的同名端连在一起,公共端各自独立,还为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O口线控制。通过分时轮流控制各个数码管的“位选端”(COM端),使各个数码管轮流受控显示。

    原理图如图①所示。动态扫描程序的基本思路是:

    e27b360f048e8841a5f3f395df616bab.png

    第一步:①P0口输出第一个段码数据②P2口输出位码数据③延时④消隐位码——完成第一位数码显示;第二步:①P0口输出第二个段码数据②P2口输出位码数据③延时④消隐位码——完成第二位数码显示;……继续显示下一个数码,最后直至显示一组画面。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,只要扫描的速度足够快(如扫描频率为50HZ,则扫描速度一般在20ms以内),给人的印象就是一组稳定的显示数据。

    但在综合项目的实践中,会发现这种图①显示方式占用的单片机端口多,如果是8位数码管的话,共占用16个脚(8位段码和8个位选端)。如果选用138译码器,则需要3个引脚输出8位位码数据,占用了11个端口。能不能使单片机的多个外部设备共用单片机I/O线来实现“复用”的功能呢?我们对原有的显示电路进行改进:为了节约I/O接口采用了低8位地址与数据总线分时复用的方法。单片机首先由P2、P0口送出16位地址,然后通过P0口读写数据,在整个读写过程中,高8位地址是不变的。单片机在访问外部存储器的时候P0口首先是作为低8位的地址数据线输出地址信号,外接的锁存器74LS373将它锁存后,P0口再写入数据。这个就是P0口双向8位数据口和低8位地址输出口的复用,分时就是先地址后数据,从而达到节约端口的目的。

    12413b448e3c43984e6ad8fc49328475.png

    原理图如图②所示,占用I/O端口变少。单片机的外围可接2片74LS373进行数据锁存。我们分三步来理解这个程序:

    首先是片选:单片机的P2.6P2.7分别接两片74LS3731 /OE(输出使能端),进行位码和段码的片选。只要P2.7为低电平,即可使得U3(74LS373位选锁存芯片)使能端有效;只要P2.6为低电平,可使U2(74LS373段选锁存芯片)使能端有效。

    然后是锁存:单片机的/WR端接两片74LS373的控制端LE(11脚)。当LE=1”时,74LS373输出端1Q8Q与输入端1D8D相同;当LE为下降沿时,将输入数据锁存。P0口输出数据稳定后,/WR写选通发出脉冲信号(低电平)P0  输出的段码或位码数据经由74LS373锁存。

    9403bb303988283040cc9538d3cf70fd.png

    最后是显示控制:定义总线,对外部数据进行赋值。P2口输出外部数据存储器其地址的高8位,P0口输出地址低8位,然后由P0口输出赋值数据,此时P2口在整个过程中信号不变(这是关键),整个对外部数据存储器的访问时序详见图。在ALE信号下降沿时,P0口为低8位地址输出状态①;WR只在P0口输出数据稳定后发出有效脉冲信号(低电平)②。

    P2.6为低电平,选中U2(74LS373位选锁存芯片)P0口输出位码数据给U2锁存;当P2.7为低电平,选中U3(74LS373段选锁存芯片)P0口输出段码数据给U3锁存;然后延时显示、消隐,最后数码管完成动态扫描显示数据。

    1动态显示位数控制程序

    #include

    void delay()  //延时程序

    { unsigned char k;

    for(k=0;k<200;k++);

    }

    unsigned chartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90};//设置共阳极09字型码

    unsigned charval[]={2,0,1,8,1,1,0,8};

    void main()

    {unsigned chari,j;

    while(1)

    {for(i=0,j=0x01;i<8;i++)  //位选码初值为01H,显示8个位

       {P0=tab[val[i]]; //根据va1[i]值送段选码至P0段选码

        P2=~j;    //位选码:选中第一位数码管显示

        delay();  //延时

        P2=0xff;   //位消隐

        j=j<<1;    //位选码左移一位,选中下一位LED

        }}}

    2:分时复用动态扫描显示八位数控制程序

    #include                  // 包含reg52.h头文件

    unsigned char xdata DM _at_ 0x7fff; //定义总线外部地址段码:DM赋值时,P2赋值为0x7f,P0赋值为0xff

    unsigned char xdata PX _at_ 0xbfff; //定义总线外部地址位码:PX赋值时,P2赋值为0xbf,P0赋值为0xff

    unsigned charcode smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

    //共阳数码管0~9的段码

    unsigned charcom[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位码

    unsigned charshuju[]= {2,0,1,8,1,1,0,8};  //需要显示的数据

    voiddelay()  //延时程序

    { unsigned chark;

     for(k=0;k<200;k++);

    }

    void display()

      unsigned char i;           //定义控制变量

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

       { PX=0xff;              //P0口输出赋值数据,WR输出写时序脉冲,位码消隐

         DM=smg[shuju[i]];     //P0口输出赋值数据,WR输出写时序脉冲,数据给段码

         PX=com[i];            //数据给位码               

         delay();              //延时显示

           }                          

    }

    void main()

    { while (1)

        { 

           display();                    //调用显示函数

         }

    }

    最后,我们用仿真器下载程序进行烧录,分时复用动态扫描实验现象和图电路一致。减少端口的方法还有很多,比如选用138译码器,则需要3个引脚输出8位位码数据,占用了11个端口,也不失为一种好办法。

                                                                  江苏      缪耀东

    展开全文
  • 本文主要讲了51单片机8位数码管电子时钟仿真图及源代码,下面一起来学习一下
  • 8位数码管的右移文件

    2012-11-24 21:38:49
    8位数码管的相关程序,包含相关的右移动态显示程序
  • 8位数码管动态扫描原理演示.c8位数码管动态扫描原理演示.c8位数码管动态扫描原理演示.c
  • 在8051单片机上实现8位数码管滚动显示10位学号的代码,采用动态显示
  • proteus-8位数码管显示

    2012-02-05 10:55:49
    通过proteus仿真软件,实现8位数码管显示,课堂作业,大家懂的!!!
  • 51单片机8位数码管动态显示,protues仿真电路+c程序
  • 51单片机 8位数码管动态扫描显示
  • 74HC595控制8位数码管显示
  • #includetypedef unsigned char uint8;typedef unsigned int uint16;sbit a=P2^2;sbit b=P2^3;sbit c=P2^4;uint8 smg[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C...

    #include

    typedef unsigned char uint8;

    typedef unsigned int uint16;

    sbit a=P2^2;

    sbit b=P2^3;

    sbit c=P2^4;

    uint8 smg[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,

                 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};

    uint8 sum[8];

    uint8 m,button;

    void delay(uint16 i) //10ms

    {

    uint8 j,k;

    for(;i>0;i--)

    for(j=38;j>0;j--)

    for(k=130;k>0;k--);

    }

    void delay1(uint8 i) //1.3ms

    {

    uint8 j,k;

    for(;i>0;i--)

    for(j=10;j>0;j--)

    for(k=130;k>0;k--);

    }

    void keyscan()

    {

    uint8 value,h,l;

    P1=0x0f;

    l=P1&0x0f;

    if(l!=0x0f)

    {

    delay(1);

    if(l!=0x0f)

    {

    l=P1&0x0f;

    l=l|0xf0;

    P1=l;

    h=P1&0xf0;

    l=l&0x0f;

    value=h+l;

    button=1; //有按键按下

    delay(50); //如果不加这条语句的话,其按键按下一下会显示多个相同数字

    switch(value)

    {

    case 0xe7: m=0;break;

    case 0xeb: m=1;break;

    case 0xed: m=2;break;

    case 0xee: m=3;break;

    case 0xd7: m=4;break;

    case 0xdb: m=5;break;

    case 0xdd: m=6;break;

    case 0xde: m=7;break;

    case 0xb7: m=8;break;

    case 0xbb: m=9;break;

    case 0xbd: m=10;break;

    case 0xbe: m=11;break;

    case 0x77: m=12;break;

    case 0x7b: m=13;break;

    case 0x7d: m=14;break;

    case 0x7e: m=15;break;

    default : break; 

    }

    }

    }

    }

    void display()   //按键使数字向左移动

    {

    uint8 i;

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

    {

    switch(i)

    {

    case 0: a=1,b=1,c=1;break;

    case 1: a=0,b=1,c=1;break;

    case 2: a=1,b=0,c=1;break;

    case 3: a=0,b=0,c=1;break;

    case 4: a=1,b=1,c=0;break;

    case 5: a=0,b=1,c=0;break;

    case 6: a=1,b=0,c=0;break;

    case 7: a=0,b=0,c=0;break;  

    }

    P0=sum[i];;

    delay1(1);

    P0=0x00;

    }

    }

    /*

    void display()   //按键使数字向右移动

    {

    uint8 i;

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

    {

    switch(i)

    {

    case 0: a=0,b=0,c=0;break;

    case 1: a=1,b=0,c=0;break;

    case 2: a=0,b=1,c=0;break;

    case 3: a=1,b=1,c=0;break;

    case 4: a=0,b=0,c=1;break;

    case 5: a=1,b=0,c=1;break;

    case 6: a=0,b=1,c=1;break;

    case 7: a=1,b=1,c=1;break;  

    }

    P0=sum[i];;

    delay1(1);

    P0=0x00;

    }

    }

    */

    void main()

    {

    button=0;

    while(1)

    {

    keyscan();

    if(button==1)

    {

    sum[7]=sum[6];

    sum[6]=sum[5];

    sum[5]=sum[4];

    sum[4]=sum[3];

    sum[3]=sum[2];

    sum[2]=sum[1];   

    sum[1]=sum[0];

    sum[0]=smg[m];

    button=0;

    }

    display();

    }

    }

    3e85c4e66140474304a00baab780ceb1.png

    展开全文
  • 8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用LED发光二极管亮一秒钟做为提示,同时发出“叮咚”...
  • 8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用LED发光二极管亮一秒钟做为提示,同时发出“叮咚”...
  • 8位数码管显示电路及程序 altium designer keil uversion 4
  • 74hc595级联驱动8位数码管,当然也可以级联更多,

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 553
精华内容 221
关键字:

8位数码管