精华内容
下载资源
问答
  • 动态扫描LED显示电路编程范例

    千次阅读 2008-01-17 16:07:00
    2006-05-11 09:32:16 51单片机编程范例(动态扫描LED显示电路编程范例) 上一节我们讲述了单只LED与单片机的接口电路及编程实例,目的在于让初学者了解LED在单片机中的应用原理,单只LED显示在实际应用中并...
    2006-05-11 09:32:16

    字体变小字体变大
    51单片机编程范例(动态扫描LED显示电路编程范例)
    上一节我们讲述了单只LED与单片机的接口电路及编程实例,目的在于让初学者了解LED在单片机中的应用原理,单只LED显示在实际应用中并无多大用途,一般都是多位的LED显示。现在我们作进一步学习,我们要讲解的是8位LED的显示原理及实际的编程方法。这里我们没有采用多I/O口的8051系列单片机,而是采用了完全兼容C51指令系统的质优价廉的AT89C2051单片机,它的软件编程与C51完全一致。
    在多数的应用场合中,我们并不希望使用多I/O端口的单片机,原则上是使用尽量少引脚的器件。在没有富余端口的情况下,怎样通过扩展电路达到预期的目的呢?我们希望通过此例使设计人员在实际应用中了解一点电路扩展的原理,对实际的应用有所帮助。

    左图是显示电路,由于AT89C2051外部15个I/O引脚,即P1口和P3口,单P3口的P3.6是不引出的,15个I/O口要直接驱动8位LED显然是不够的,我们通过一片面74LS273对地址进行锁存,如果P1口仅用于显示驱动,而没有与其它外设进行数据交换,可省略这个锁存器,直接或通过其他驱动电路驱动连接LED。地址线我们通过一片74LS138三—八译码器对8位LED进行分时选通,这样在任一时刻,只有一位LED是点亮的,但只要扫描的频率足够高(一般大于25Hz),由于人眼的视觉暂留特性,直观上感觉却是连续点亮的,这就是我们常说的动态扫描电路。
    0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" height=250 alt="" hspace=5 src="http://data.willar.com/upload/article/2004105103427877.gif" width=370 vspace=5 border=0 dypop="8位LED显示电路">
    此电路中,74LS273用于驱动LED的8位段码,8位LED相应的"a"—"g"段连在一起,它们的公共端分别连至由74LS138(点击芯片型号可浏览其详细的技术手册)译码选通后经74LS04反相驱动的输出端。这样当选通某一位LED时,相应的地址线(74LS04输出端)输出的是高电平,所以我们的LED选用共阳LED数码管。
    动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜,这就要求在编写程序时,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。在C51指令中,延时子程序是相当简单的,并且延时时间也很容易更改,可参见程序清单中的DELAY延时子程序。
    为简单起见,我们只是编写了8位LED同步显示"00000000"—"11111111"直到"99999999"数字,并且反复循环。程序很简单,流程图略去。

    · 程序清单:
    0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" height=349 hspace=5 src="http://data.willar.com/upload/article/2004105103428142.gif" width=303 border=0>
    展开全文
  • 掌握动态扫描显示电路驱动程序的编写方法 二、实验内容 打开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--;
    	}
    }

    五、实验结果

    六、实验体会

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

     

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

    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

     

    展开全文
  • 传统的数码管显示电路,需占用较多的单片机口线,采用动态扫描方式编程时较为复杂,为解决此类问题,作者介绍了一款数码管显示专用驱动芯片MAX7219,MAX7219采用串行方式与单片机通信,仅占用3条口线,同时,片内...
  • 四位一体数码管介绍、扫描原理、应用电路和共阳共阴码段编写1、 数码管结构如图 1,一般7段数码管由7段条形发光二极管和一个圆点发光二极管组成,控制ABCDEFG发光二极管的亮灭,可以显示0-F字符以及其他特殊字符,...
  • 2006-05-11 10:24:54 数码管动态扫描扩展显示 单片机并行I/O口数量总是有限的,有时并行口需作其他更重要的用途,一般也不会用数量众多的并行I/O口专门用来驱动显示电路,能否用80C51的串行通信口加上少量...
  • 8位数码管动态扫描实验原理图,LED动态扫描电路 protues仿真,特备适合初学者进行学习参考学习。
  • 8255扫描键盘显示实验

    2011-05-12 10:25:22
    应用8255芯片实现扫描键盘,显示的实验,配有电路图,软件设计流程图,已经软件编程,应用汇编语言
  • 数码管的动态扫描实现

    千次阅读 2020-08-12 18:02:27
    实现FPGA驱动数码管动态显示,板级调试时通过in system sources and probes(ISSP)输入想要显示的数据。 八段数码管的驱动原理: 八段数码管的结构如下图所示,七段数码管就是少了h那个点。 数码管分别共阳极和共阴极...
  • process(cnt1)------------------只是显示在某种状态下的段位显示,不参与计算 begin case cnt1 is when 0 => q ;s ;------------cnt是1时,q显示0,依次选通s when 1 => q ;s when 2 => q ;s ; when 3 => q ;s ; ...
  • 准备在STM32上用DMA做一个数码管动态扫描的实例 第一次发文,先问候一下大家,你们好啊! ####一直以来在使用数码显示驱动时,当程序越做愈多时,发现数码管的显示经常会出现一些显示闪烁现象,使用定时器中断方式...
  • 51单片机开发系列四 LED点阵扫描显示 ...笔者此处就LED点阵屏动态扫描显示作一个简单的介绍。 1. LED点阵屏显示原理概述 图1-1为一种8x8的LED点阵单色行共阳模块的内部等效电路图,对于红光LED其工作正向电压约
  • 应用VHDL语言(高速集成电路硬件描述语言)完成了3×4矩阵开关的扫描电路,可预置数的BCD码计数电路及4位数码管动态扫描电路的描述。通过原理图输入方式完成了系统功能的设计。电路结构简单,便于扩展,可靠性高,且...
  • C51单片机数码管动态显示

    万次阅读 多人点赞 2018-08-27 21:49:25
    数码管作为最廉价的输出设备,在各种自动化设备中有很大的应用,最简单普通的显示方式为动态刷新显示,称为假动态显示,即通过分时扫描每一位,利于人眼的视觉停留现象,造成一种静态显示的效果,如下图所示: ...
  • 上一节讲了在主函数循环中动态扫描数码管的程序,但是该程序有一个隐患,在一些项目中 ,主函数循环中的任务越多,就意味着在某一瞬间,每显示一位数码管停留的时间就会越久,一旦超过某个值,会严重影响显示的效果...
  • 我们知道,依次只能让一个数码管/led灯亮起来,但是我们可以通过高频动态扫描得到8位数码管同时亮起来,这里介绍如何实现。 一、八位数码管 八位数码管原理图 下图为原理图: 段选信号:P0[7…0] 位选信号:P2[2…...
  • 产品型号:VK0232 产品品牌:VINTEK/元泰/VINKA封装形式:LQFP128...是一款静态扫描型LCD控制驱动电路,具有对比度好、可视角大、不闪烁等特点,适用于如洗衣机面板的显示,加油机表头、电梯楼层面板、工业仪表、...
  • LED显示接口电路1 LED的工作原理1.1 LED流水灯1.11 CODE 1 LED的工作原理 LED的符号:LED的工作是有方向性的,只有当正极接到LED阳极,负极接到LED阴极的时候才能工作,反接LED是不能正常工作的。 开发板上原理图:...
  • 动态数码管显示

    千次阅读 2017-08-06 23:33:38
    数码管动态显示 关键字:74HC573 锁存器 ,74LS138,单位数码管,段选,位选 首先来介绍一下573芯片: 当多个数码管应用于一个系统时,他的位选是可以独立控制的,而段选是连接在一起的。573芯片 OE为使能端,LE...
  • 单踪示波器转换成多踪显示电路设计  引言  在实际应用中,常常需要用示波器同时观测多个信号,或需要比较同一电路中不同点之间信号的... 为了实现这一目的,通常采用双扫描示波显示、多线显示或多踪显示。本文介
  • 7段数码管显示驱动电路参数推导

    万次阅读 2017-03-04 14:19:37
     电路焊接完成后测试时发现动态显示时数码管的亮度很低。怀疑电阻的取值可能不太合适,在网上查阅了很多资料后更换了电阻值,问题解决。现在把电阻值的估算过程总结如下。  51 单片机 I/O 口的驱动能力有限,...
  • cd4094串口扫描数码管显示

    千次阅读 2008-09-07 21:54:00
    #include#define uchar unsigned charsbit P3_4=P3^4;//code uchar tab[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,};//code uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,};...
  • AD9854的工作原理和应用电路

    千次阅读 2018-05-28 16:17:12
    AD9854应用电路图 这里采用了AD9854 这款DDS 芯片, 它在300 MHz 时钟驱动下, 按照乃奎斯特采样定律可以产生最高150 MHz 的信号,为了得到信号较好的频率则一般只得到最高100 MHz 的信号。若要得到高于100 MHz 的...
  • 电源开发离不开设计,又有哪些软件可以支持工程师们的设计呢?今天我们来盘点一下:SPICE模拟电路仿真用于模拟电路仿真的SPICE(Simulation Program w...
  • 四、数码管的静态显示动态显示 五、数码管的应用代码规划 一、数码管显示原理 数码管内部电路图,一位数码管的引脚是 10 个:其内部有 8 个小的发光二极管,即引脚a~g和dp;还剩两个引脚互连即为公共端。 ...
  • 语言硬件描述语言(VHDL)的一个子集,是对边界扫描器件的边界扫描特性的描述,主要用来沟通边界扫描器件厂商、用户与测试工具之间的联系,其应用包括:厂商将BSDL描述作为边界扫描器件的一部分提供给用户;...
  • ISP是数码相机、扫描仪、摄像头、玩具等电子产品的核心器件,其通过光电转换,将光学信号转换成数字信号,然后实现图像的处理、显示和存储。图像传感器包括一系列不同类型的元器件,如CCD、COMS图像传感器、接触图像...
  • OLED显示模块驱动原理及应用

    万次阅读 多人点赞 2018-12-10 10:15:03
    OLED显示模块驱动原理及应用   本文以中景园OLED显示模块为例,介绍模块的应用和OLED显示及驱动的基本原理。文中介绍了显示模块、SSD1306驱动芯片以及GT20L16S1Y字库芯片相关技术内容及原理,并加上了作者的理解...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,188
精华内容 4,875
关键字:

动态扫描显示电路的应用