精华内容
下载资源
问答
  • 掌握动态扫描显示电路驱动程序编写方法 二、实验内容 打开ISIS 7 Professional,参照图14.1设计仿真电路原理图 编写程序实现: (1)显示“8.8.8.8.8.8.8.8.”,即点亮显示器所有段,持续时间约为500ms;之后灭...

    8位7段LED数码管动态扫描显示

    一、实验目的

    二、实验内容

    三、实验步骤

    四、C代码如下

    五、实验结果

    六、实验体会


    一、实验目的

    1. 掌握数码管动态扫描显示原理及实现方法
    2. 掌握动态扫描显示电路驱动程序的编写方法

    二、实验内容

    1. 打开ISIS 7 Professional,参照图14.1设计仿真电路原理图
    2. 编写程序实现:

    (1)显示“8.8.8.8.8.8.8.8.”,即点亮显示器所有段,持续时间约为500ms;之后灭显示器,持续时间约为200ms;最后显示“HELLO-93”,保持

    (2)参照第13章实验,在P1口上扩展行列式键盘,将16个按键定义为:0~9、+、-、X、÷、确认和取消。在此电路上实现可完成两个数的四则运算的计算器,运算过程和结果在8位7段LED数码管上显示

    三、实验步骤

    四、C代码如下

    #include <intrins.h>
    #include <REG52.H>
    #define TRUE 1
    #define dataPort P0  /*定义P0为段输出口*/
    #define ledConPort P2  /*定义P2为位输出口*/
    
    unsigned char code ch[8]={0x76,0x79,0x38,0x38,0x3f,0x40,0x6f,0x4f};
                    /*定义'HELLO-93'对应的数值*/
    //unsigned char code ch[9]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
                    /*LED灯0~8译码*/
    
    void time(unsigned int ucMs);  //延时单位:ms
    
    void main(void)
    {
    	unsigned char i,counter=0;  /*各LED灯状态值数组的索引*/
    	
    	for(i=0;i<30;i++){
    		   //1.显示"8.8.8.8.8.8.8.8.",即点亮显示器所有段,持续约500ms
    		for(counter=0;counter<8;counter++)
    		{
    			ledConPort=counter;
    			dataPort=0xff;  /*点亮选中的LED灯*/
    			time(5);  /*延时5ms*/
    		}
    	}
    	
    	ledConPort=0xff;
    	time(2000);  //2.灭显示器,持续约2秒
    	
    	while(TRUE)  //3.显示"HELLO-93",保持
    	{
    		for(counter=0;counter<8;counter++)
    		{
    			ledConPort=counter;
    			dataPort=ch[counter];  /*点亮选中的LED灯*/
    			time(5);  /*延时5ms*/
    		}
    	}
    }
    /***************************************************
    *  函数说明:延时5us,晶振改变时只需要改变这一个函数!
       1.对于11.0592MHz晶振而言,需要改变2个_nop_();
       2.对于22,1184MHz晶振而言,需要改变4个_nop_();
    *  入口参数:无
    *  返回:无
    *  创建日期:20010623
    *  作者:张齐
    ****************************************************/
    void delay_5us(void)//延时5us,晶振改变时只用改变这一个函数!
    {
    	_nop_();
    	_nop_();
    	//_nop_();
    	//_nop_();
    }
    /************ delay_50us ***************/
    void delay_50us(void)//延时50us
    {
    	unsigned char i;
    	for(i=0;i<4;i++)
    	{
    		delay_5us();
    	}
    }
    /******** 延时100us ******************/
    void delay_100us(void)//延时100us
    {
    	delay_50us();
    	delay_50us();
    }
     
    /*********** 延时单位:ms *******************/
    void time(unsigned int ucMs)//延时单位:ms
    {
    	unsigned char j;	
    	while(ucMs>0){
    		for(j=0;j<10;j++) delay_100us();
    		ucMs--;
    	}
    }

    五、实验结果

    六、实验体会

    在实验中尽可能的减少错误和警告次数的出现,并能够根据错误提示,找出问题所在,多请教老师和同学掌握和吸收实验中的精华。

     

    展开全文
  • 在单片机教学中,我们往往会遇到8位数码管动态显示电路。动态驱动是将所有数码管8个段码a,b,c,d,e,f,g,dp”同名端连在一起,公共端各自独立,还为...动态扫描程序基本思路是:第一步:①P0口输出第一个段码...

    在单片机教学中,我们往往会遇到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个端口,也不失为一种好办法。

                                                                  江苏      缪耀东

    展开全文
  • 数码管动态扫描应用

    2020-10-27 13:42:26
    数码管动态扫描应用 电路图 t1动态扫描 //显示当天日期 #include <reg51.h> unsigned char code tab1[16] = {0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; ...

    数码管动态扫描应用

    电路图

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BRv12eba-1603777049766)(C:\Users\86182\Pictures\Saved Pictures\8段数码管.jpg)]

    t1动态扫描

    //显示当天的日期 
    #include <reg51.h>
    unsigned char code tab1[16] = {0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; 
    unsigned char code tab2[8] ={2,0,2,0,1,0,1,9};
    unsigned char code tab3[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};   //0111 1111      1011 1111 .。。。。。
    void delay(unsigned int x)
    {
    	unsigned int i,j;
    	for(j=0;j<x;j++)
     		for(i=0;i<120;i++);  //计数120,就是1ms,不超过16ms,啥人类视觉瞬时现象。 
    }
                  
    void main()
    {
    	unsigned char i,m,n;
    	while(1)
    	{
    		for(i=0;i<8;i++)
    		{
    			n = tab2[i];
    			P2 = tab1[n];    //P2是段码 
    			P1 = tab3[i];    //P1是位码 
    			delay(1);
    			P1 = 0xff;     //这个很重要 
    			delay(1);     //这个很重要 
    		}
    	}
     } 
    

    t2交替闪烁

    #include <reg51.h>
    unsigned char code tab[16] = {0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; 
    unsigned char code tab1[8] = {2,0,0,0,0,5,2,3};
    unsigned char code tab2[8] = {1,2,3,4,5,6,7,8};    //外卖地址中的名字
    char scan;
    char i,j,k;
    char *ptr;    //声明指针变量ptr
    
    void scanner(char *);
    void delay(unsigned int x);
    
    main()
    {
    	while(1)
    	{
    		ptr = &tab1[0];  //ptr = &tab1[0] 也可以
    		scanner(ptr);
    		ptr = &tab2[0];
    		scanner(ptr); 
    	}
     } 
     
     void scanner(char *x)
     {
    	for(k=0;k<30;k++)
    	{
    		scan = 1;
    		for(i=0;i<8;i++)
    		{
    			j = *(x+7-i);
    			P2 = tab[j];
    			P1 = ~scan;   //   1111 1110    然后0000 0001左移再取反就是 1111 1101   也可以直接scan = 0x01   然后scan = (scan<<1)|0x01    
    			delay(1);
    			scan<<=1;
    			P1 = 0xff;    //这个很重要
    			delay(1); 	  //这个很重要不然就乱闪了
    		}		
    	}
     }
     
     void delay(unsigned int x)
    {
    	unsigned int i,j;
    	for(j=0;j<x;j++)
     		for(i=0;i<120;i++);  //计数120,就是1ms,不超过16ms,啥人类视觉瞬时现象。 
    }
    

    t3_0飞入显示

    #include <reg51.h>         // I    L    o    V    E    C    5     1    
    unsigned char code tab[9] = {0xb0,0x38,0x5c,0x2A,0xf9,0x39,0x6d,0x3f,0x00};
                              //   0    1   2    3     4   5    6     7   8
    char code disp[36][8] = { {8,8,8,8,8,8,8,0},{8,8,8,8,8,8,0,8},{8,8,8,8,8,0,8,8},{8,8,8,8,0,8,8,8},{8,8,8,0,8,8,8,8},{8,8,0,8,8,8,8,8},{8,0,8,8,8,8,8,8},{0,8,8,8,8,8,8,8},
                            {0,8,8,8,8,8,8,1},{0,8,8,8,8,8,1,8},{0,8,8,8,8,1,8,8},{0,8,8,8,1,8,8,8},{0,8,8,1,8,8,8,8},{0,8,1,8,8,8,8,8},{0,1,8,8,8,8,8,8},
                            {0,1,8,8,8,8,8,2},{0,1,8,8,8,8,2,8},{0,1,8,8,8,2,8,8},{0,1,8,8,2,8,8,8},{0,1,8,2,8,8,8,8},{0,1,2,8,8,8,8,8},
                            {0,1,2,8,8,8,8,3},{0,1,2,8,8,8,3,8},{0,1,2,8,8,3,8,8},{0,1,2,8,3,8,8,8},{0,1,2,3,8,8,8,8},
                            {0,1,2,3,8,8,8,4},{0,1,2,3,8,8,4,8},{0,1,2,3,8,4,8,8},{0,1,2,3,4,8,8,8},
                            {0,1,2,3,4,8,8,5},{0,1,2,3,4,8,5,8},{0,1,2,3,4,5,8,8},
                            {0,1,2,3,4,5,8,6},{0,1,2,3,4,5,6,8},
                            {0,1,2,3,4,5,6,7} };
    
    void scanner(char);
    void delay(unsigned int t);
    main()
    {
    	char i;
    	while(1)
    	{
    		for(i=0;i<36;i++)
    			scanner(i);
    	}
    }
    
    void scanner(char x)
    {
    	char i,j,k;
    	char scan;
    	for(k=0;k<10;k++)
    	{
    		scan = 1;
    		for(i=0;i<8;i++)
    		{	
    			j = disp[x][7-i];
    			P2 = tab[j];
    			P1 = ~scan;
    			delay(1);
    			scan<<=1;
    			P1 = 0xff;    // 
    			delay(1);
    		}
    	}
    }
    
    void delay(unsigned int t)
    {
    	int i,j;
    	for(i=0;i<t;i++)
    		for(j=0;j<120;j++);
    }
    
    
    
    
    展开全文
  • 数码管动态扫描显示 象棋小子 1048272975 数码管由于发光亮度强,指示效果好,非常适合于电梯楼层等数值显示应用中。对于一位数码管,可以采用静态显示,但实际应用中都是需要显示多位数值,数码管模块也只能动态...

    51单片机开发系列三

    数码管动态扫描显示

    象棋小子    1048272975

    数码管由于发光亮度强,指示效果好,非常适合于电梯楼层等数值显示应用中。对于一位数码管,可以采用静态显示,但实际应用中都是需要显示多位数值,数码管模块也只能动态显示,因此笔者在这里简单分析一下数码管动态扫描驱动的实现。

    1. 数码管原理概述

    数码管由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。数码管根据内部接法又可分成共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管(如下图SM*10501),共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管如下图(SM*20501)。以共阳数码管为例,要想显示数字2,需把A、B、G、E、D段点亮,即公共端接上正电源,ABGED段阴极拉低,其余段拉高即可显示数字2。


    2. 硬件设计

    笔者此处以四位一体共阳数码管显示为例讲解其大概的硬件设计。

    微控制器的IO口均不能流过过大的电流,LED点亮时有约10ms的电流,因此数码管的段码输出不要直接接单片机IO口,应先经过一个缓冲器74HC573。单片机IO口只需很小的电流控制74HC573即可间接的控制数码管段的显示,而74HC573输出也能负载约10ms的电流。设置数码管段的驱动电流为ID=15ma,这个电流点亮度好,并且有一定的裕度,即使电源输出电压偏高也不会烧毁LED,限流电阻值

    R = (VCC- VCE – VOL – VLED) / ID

    VCC为5v供电,VCE为三极管C、E间饱和电压,估为0.2v, VOL为74hc573输出低电平时电压,不同灌电流,此值不一样,估为0.2v,具体查看规格书,VLED为红光驱动电压,估为1.7v,根据上式可算出限流电阻为R = 200R。

    数码管需接收逐个扫描信号,扫描到相应数码管时,对应的段码数据有效,即显示这个数码管的数值。笔者采用三线八线译码器74HC138来产生对应的扫描线信号。

    当各个段码均点亮时,电流约15max8=90ma流过数码管公共端,74HC138无法直接驱动这个电流,需加三极管驱动,由于74HC138输出低电平有效,此处只有PNP三极管适合作为驱动。三极管基极电流设为2ma即可让三极管饱和,最大驱动电流远大于90ma。基极偏置电阻阻值

    Rb =(VCC - VEB – VOL) / IB

    VCC为5v供电,VEB为三极管E、B间的导通电压0.7v,VOL为74hc138输出低电平时电压,可根据规格书估为0.3v,故Rb = 2k即可。


    图2-1 四位一体数码管原理图

    3. 驱动实现

    数码管段码接P0口,位码接P2口第0~2位。对于LED显示器都是有一个刷新频率的,同样对于数码码动态扫描也需要一个扫描频率。扫描频率下限为50HZ,低于一定的扫描频率,显示会闪烁。频率过高,则亮度较差且占用cpu资源。一般整个数码管扫描一遍时间为约10ms较合适(即扫描频率100HZ),我们用的是四位数码管,每个数码管点亮时间为2ms,扫描一遍时间为8ms。为保证这个刷新频率,通过是通过定时器来周期性进行数码管刷新。笔者在此以四位一体数码管实现秒表计数显示为例来作代码开发。

    数码管动态显示功能实现模块文件DigitalTubeTable.c内容如下:

     

    #include "reg52.h"

    #include"DigitalTube.h"

     

    // 数值相对应的段码,共阳极

    static unsigned char codeDigitalTubeTable[12]= { // 共阳LED段码表

    0xc0, 0xf9, 0xa4, 0xb0, 0x99,0x92, 0x82, 0xf8, 0x80, 0x90, 0xff, 0xbf

    //"0"  "1"   "2"   "3"   "4"   "5"   "6"   "7"   "8"   "9" "不亮"  "-"

    };

     

    // 每个数码管需一个字节的内存保存对应数码管数据            

    static unsigned charFrameBuffer[DigitalTubeNumber];

     

    unsigned char*DigitalTube_GetBuffer()

    {

           return FrameBuffer;

    }

     

    void DigitalTube_Scan()

    {

           static unsigned char Select = 0; // 记录扫描的选择线

           unsigned char Code;

           // 从对应选择线中找到显存数据,并得到相应的段码

           Code = DigitalTubeTable[FrameBuffer[Select]];

           // 段码实际输出到数码管接口

           DigitalTube_Data(Code);

           // 位选实际输出到数码管接口

           DigitalTube_Select(Select);

           Select++; // 进入到下一位选扫描

           if (Select >= DigitalTubeNumber) {

                 Select = 0;    // 所有数码管已扫描,从第一个数码管再次开始扫描

           }

    }

     

    我们在数码管模块头文件DigitalTube.h中实现模块的接口访问宏实现,使之方便移植及修改接口配置。模块头文件同时也引出模块的接口函数,void DigitalTube_Scan(void)为数码管刷新函数,需周期性调用刷新数码管显示。unsigned char *DigitalTube_GetBuffer(void)用来获得数码管显存,从而更新数码管显存数据。其内容如下:

     

    #ifndef __DigitalTube_H__

    #define __DigitalTube_H__

     

    #ifdef __cplusplus

    extern "C" {

    #endif

     

    // 数码管模块中的个数,最大为8

    #define DigitalTubeNumber      4

     

    // 输出数码管位选

    #defineDigitalTube_Select(Select) {P2 = (P2&0xf8) + (Select);}

    // 输出数码管段码

    #define DigitalTube_Data(Dat)     {P0 =(Dat);}

     

    // 数码管刷新函数,必须保证以一定周期调用刷新

    void DigitalTube_Scan(void);

    // 获得数码管显存,以作显示的数据更新

    unsigned char*DigitalTube_GetBuffer(void);

     

    #ifdef __cplusplus

    }

    #endif

     

    #endif /*__DigitalTube_H__*/

     

    外部模块通过引入数码管的模块头文件DigitalTube.h来实现调用数码管驱动函数,简单测试调用(秒表数码管显示计数)实现如下:

     

    #include"reg52.h"

    #include"DigitalTube.h"

     

    // 以定时器时间为计时标准,记录时间间隔

    static volatile unsignedint SystemTick = 0;

     

    // 定时器2ms中断处理进行数码管刷新

    void T0_Interrupt()interrupt 1

    {

           TH0 = (65536-2000) / 256;

           TL0 = (65536-2000) % 256;

           SystemTick++; // 记录时间间隔

           DigitalTube_Scan();     //刷新数码管

    }

     

    void T0_Init()

    {

           TMOD = 0x01; // 定时器0工作方式1

           // 2ms计时中断(12M)

           TH0 = (65536-2000) / 256;

           TL0 = (65536-2000) % 256;

           ET0 = 1; // 定时器T0中断允许

           EA = 1; // 总中断允许

    }

     

    void main()

    {

           unsigned char *pBuffer;

           unsigned char i;

           // 定时器初始化

           T0_Init();

           // 获得数码管显存,以作更新数据显示

           pBuffer = DigitalTube_GetBuffer();

           // 数据管显存初始化显示0

           for (i=0; i<DigitalTubeNumber; i++) {

                  pBuffer[i] = 0;

           }

           // 开启定时器进行计时以及数码管刷新

           TR0 = 1;

     

           while(1) {

                  // SystemTick读数到500时为1s间隔到

                  if (SystemTick > 500) {

                         SystemTick =0; // 重新计秒

                         // 更新数码管秒表计数显存     

                         for (i=0; i<DigitalTubeNumber; i++) {

                                pBuffer[DigitalTubeNumber-1-i]++;

                                if (pBuffer[DigitalTubeNumber-1-i] <10) {

                                       break; // 未到10,不用进位更新高位显存,退出

                                } else {

                                       // 到10,这一位清0,并继续循环更新高位显存

                                       pBuffer[DigitalTubeNumber-1-i] =0;

                                }

                         }                         

                  }                         

           }

    }

    附录:

    此章节的Keil工程,包含源码,Preteus仿真,包含仿真电路,可直接查看效果,DigitalTube.rar。

    http://pan.baidu.com/s/19wRr4

     

    展开全文
  • 动态扫描LED显示电路编程范例

    千次阅读 2008-01-17 16:07:00
    2006-05-11 09:32:16 51单片机编程范例(动态扫描LED显示电路编程范例) 上一节我们讲述了单只LED与单片机的接口电路及编程实例,目的在于让初学者了解LED在单片机中的应用原理,单只LED显示在实际应用中并...
  • 对于一位数码管,可以采用静态显示,但实际应用中都是需要显示多位数值,数码管模块也只能动态显示,因此笔者在这里简单分析一下数码管动态扫描驱动实现。 1. 数码管原理概述 数码管由多个发光二极管封装在一起...
  •  在单片机系统中动态扫描显示接口是单片机中应用最为广泛一种显示方式之一。其接口电路是把所有显示器8个笔划段a-h同名端连在一起,而每一个显示器公共极COM是各自独立地受I/O线控制。CPU向字段输出口送出...
  •  在单片机系统中动态扫描显示接口是单片机中应用为广泛一种显示方式之一。其接口电路是把所有显示器8个笔划段a-h同名端连在一起,而每一个显示器公共极COM是各自独立地受I/O线控制。CPU向字段输出口送出字形...
  • 它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。同时也可广泛应用到军事、车站、宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业。  ...
  • 它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。同时也可广泛应用到军事、车站、宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业。  ...
  • 所谓几段就是指数码管里有相应几个小LED 发光二极管,通过控制不同LED 亮灭来显示出不同字形(见图1(a))。从各发光二极管电极连接方式又可以分为共阳极和共阴极两种类型。共阴极则是所有二极管...
  • 它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。同时也可广泛应用到军事、车站、宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业。  ...
  • 1 引 言 传统数码管显示驱动电路占用系统资源较多。若是动态显示,8位显示驱动电路一般由1片8255,4片5407构成,不仅硬件...它内部有可存储显示信息8×8静态RAM,动态扫描电路,以及段、位驱动器。 它
  • 摘要:采用单片机来开发点钞机外接显示屏,具有...在数码管显示器中,一般情况下都采用动态扫描显示方式。所谓扫描式,就是当有多个七段(带小数点为八段)显示器要显示时,将其各个对应引脚接在一起,也就是说,
  • Maxim公司MAX7219芯片用于动态扫描显示驱动,芯片内有可存储显示信息8x8静态RAM、动态扫描电路以及段、位驱动器。它与通用微处理器有3根串行线相连,最多可驱动8个共阴数码管或64个发光二极管。采用MAX7219芯片...
  • 所谓几段就是指数码管里有相应几个小LED 发光二极管,通过控制不同LED 亮灭来显示出不同字形(见图1(a))。从各发光二极管电极连接方式又可以分为共阳极和共阴极两种类型。共阴极则是所有二极管...
  • C51单片机数码管动态显示

    万次阅读 多人点赞 2018-08-27 21:49:25
    数码管作为最廉价的输出设备,在各种自动化设备中有很大的应用,最简单普通的显示方式为动态刷新显示,称为假动态显示,即通过分时扫描每一位,利于人眼的视觉停留现象,造成一种静态显示的效果,如下图所示: ...
  • Maxim公司MAX7219芯片用于动态扫描显示驱动,芯片内有可存储显示信息8x8静态RAM、动态扫描电路以及段、位驱动器。它与通用微处理器有3根串行线相连,多可驱动8个共阴数码管或64个发光二极管。采用MAX7219芯片...
  • 最后介绍高速控制方案在大屏幕LED显示屏中的应用。  引言  LED显示屏的基本工作原理是动态扫描显示控制的过程是先从数据存储器读得字模数据,再通过单片机的串行口或并行口将数据写给LED点阵片,然后再行扫描...
  • 模数转换ADC0804的应用(含源程序及电路)  [实验要求]  A/D转换器的基本原理----ADC0804所谓A/D转换器... 学习如果用单片机控制ADC0804芯片进行数模转换,掌握数码管动态扫描显示的原理。  动态扫描:就六位数码
  • 模数转换ADC0804的应用(含源程序及电路)  [实验要求]  A/D转换器的基本原理----ADC0804所谓A/D转换器... 学习如果用单片机控制ADC0804芯片进行数模转换,掌握数码管动态扫描显示的原理。  动态扫描:就六位数码
  • 介绍高速控制方案在大屏幕LED显示屏中的应用。  引言  LED显示屏的基本工作原理是动态扫描显示控制的过程是先从数据存储器读得字模数据,再通过单片机的串行口或并行口将数据写给LED点阵片,然后再行扫描。 ...
  • 通过编程控制可以显示中英文字符、图形及视频动态图形.LED显示以其组构方式灵活、亮度高、技术成熟、成本低廉等特点在证券、运动场馆及各种室内/外显示场合得到广泛的应用.随着集成电路技术的发展,数字系统...
  • 摘 要: LED点阵显示器作为...它采用低电压扫描驱动,具有耗电省、使用寿命长、成本低、亮度高、视角大、可视距离远、规格品种多等优点,被广泛地应用于许多公共场合提示、说明、广告等。  本设计包括硬件和软件。硬
  •  I2C总线接口的显示及键盘管理器件ZLG7290广泛应用于智能仪表的接口设计当中,在具体应用过程中,它接收所要显示的数据并将其显示在LED显示器上,动态扫描管理着显示过程,该器件本身只需2根线就可与单片机实现...
  • CH452完整应用电路  CH452 是数码管显示驱动和键盘扫描控制芯片。CH452内置时钟振荡电路,可以动态驱动8 位数码管或者64 只LED,具有BCD 译码、闪烁、移位、段位寻址、光柱译码等功能;同时还可以进行64键键盘...
  • 摘要:该文介绍了一种基于单线串接通信LED显示系统方案。...其中,LED 单元板包括了增强信号驱动能力BUFFER 电路、产生动态显示扫描时序译码电路、若干个开关管和若干个LED 驱动电路。其通信
  • CH452完整应用电路  CH452 是数码管显示驱动和键盘扫描控制芯片。CH452内置时钟振荡电路,可以动态驱动8 位数码管或者64 只LED,具有BCD 译码、闪烁、移位、段位寻址、光柱译码等功能;同时还可以进行64键键盘...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 334
精华内容 133
关键字:

动态扫描显示的应用