精华内容
下载资源
问答
  • 2006-05-11 09:29:36 51单片机编程范例(串行口动态扫描显示电路) 单片机并行I/O口数量总是有限的,有时并行口需作其他更重要的用途,一般也不会用数量众多的并行I/O口专门用来驱动显示电路,能否用80C51...
    2006-05-11 09:29:36

    字体变小字体变大
    51单片机编程范例(串行口动态扫描显示电路)
    单片机并行I/O口数量总是有限的,有时并行口需作其他更重要的用途,一般也不会用数量众多的并行I/O口专门用来驱动显示电路,能否用80C51的串行通信口加上少量I/O及扩展芯片用于显示电路呢?答案是肯定的。
    80C51的串行通信口是一个功能强大的通信口,而且是相当好用的通信口,用于显示驱动电路再合适不过了,下面我们就根据这种需要设计一个用两个串行通信口线加上两根普通I/O口,设计一个4位LED显示电路。当然只要再加上两根I/O口线即可轻易实现8位LED的显示电路。
    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/2004105103556478.gif" width=370 vspace=5 dypop="串行口动态扫描显示电路">
    左图是电原理图,我们还是采用C2051单片机,同时用廉价易得的74LS164和74LS138作为扩展芯片。74LS164(详细技术手册)是一个8位串入并出的移位寄存器,其此处的功能是将C2051串行通信口输出的串行数据译码并在其并口线上输出,从而驱动LED数码管。74LS138是一个3-8译码器,它将单片机输出的地址信号译码后动态驱动相应的LED。但74LS138电流驱动能力较小,为此,我们使用了未级驱动三极管2SA1015作为地址驱动。
    将4只LED的段位都连在一起,它们的公共端则由74LS138分时选通,这样任何一个时刻,都只有一位LED在点亮,也即动态扫描显示方式,其优点在上一节中我们已经阐述。使用串行口进行LED通信,程序编写相当简单,用户只需将需显示的数据直接送串口发送缓冲器,等待串行中断即可,看看下面的程序。
    · 程序清单
    0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" height=490 hspace=5 src="http://data.willar.com/upload/article/2004105103557644.gif" width=305 border=0>
    展开全文
  • 该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include "reg52.h" //此文件中定义了单片机的一些... //改变X值,可以改变显示,最大四位,小于四位前几位为0显示。 a=x; while(1) { disp(); } } 引脚自己改下吧!~

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器

    typedef unsigned int u16; //对数据类型进行声明定义

    typedef unsigned char u8;

    sbit LSA=P2^2;

    sbit LSB=P2^3;

    sbit LSC=P2^4;

    sbit LSD=P2^5;

    sbit led=P2^7;

    #define GPIO P0

    u8 code smgduan[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};//显示0~F的值

    u8 n=0;

    u16 a,b,c;x;

    void delayms(u16 i)

    {

    while(i--);

    }

    void disp(void)

    {

    LSA=0;LSB=1;LSC=1;LSD=1; //显示第0位

    GPIO=smgduan[a%10 / 1];

    delayms(1);

    GPIO=0;

    LSA=1;LSB=0;LSC=1;LSD=1; //显示第1位

    GPIO=smgduan[(a%100 / 10)]; //加小数点

    delayms(1);

    GPIO=0;

    LSA=1;LSB=1;LSC=0;LSD=1; //显示第2位

    GPIO=smgduan[a%1000 / 100];

    delayms(1);

    GPIO=0;

    LSA=1;LSB=1;LSC=1;LSD=0; //显示第3位

    GPIO=smgduan[a%10000 / 1000];

    delayms(1);

    GPIO=0;

    }

    /*******************************************************************************

    * 函 数 名 : main

    * 函数功能 : 主函数

    * 输 入 : 无

    * 输 出 : 无

    *******************************************************************************/

    void main()

    {

    x=1278; //改变X值,可以改变显示,最大四位,小于四位前几位为0显示。

    a=x;

    while(1)

    {

    disp();

    }

    }

    引脚自己改下吧!~

    展开全文
  • 51单片机汇编语言教程:24课动态扫描显示接口电路及程序
  • 动态扫描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>
    展开全文
  • 采用VHDL设计实现8位数码管显示的设计源码,采用层次化设计
  • 掌握动态扫描显示电路驱动程序的编写方法 二、实验内容 打开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--;
    	}
    }

    五、实验结果

    六、实验体会

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

     

    展开全文
  • 摘要:给出了一种数字钟电路设计的具体方法,采用石英晶体振荡器和分频器产生秒时钟信号,以动态扫描方式将计数结果进行译码,终在共阴极LED数码管上显示时.分.秒时间.电路主要采用中规模CMOS集成电路纯硬件实现,...
  • 所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态...
  • 所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态...
  • 用数字方式来设计led数码管的显示动态显示。 共阴极。 7段数码管。
  • I/O输出——实例3:数码管动态扫描显示

    万次阅读 多人点赞 2018-04-14 10:21:07
    I/O输出——实例3:数码管动态扫描显示一、实例目的 通过本实例,我们应: 1. 了解多位数码管的结构及引脚; 2. 了解多位数码管驱动电路; 3.掌握数码管动态扫描程序设计。 本例重点介绍多位数码管的驱动电路...
  • Arduino-Proteus仿真07-集成式数码管动态扫描显示 设计者:STCode(公众号同名) 前言: Proteus是英国Labcenter公司开发的电路分析与实物仿真及印制电路板设计软件,它可以仿真、分析各种模拟电路和集成电路,其...
  • 数字电路中学过,生活中的数码管显示数字都是采用动态扫描的方法。 简单说就是段选和位选以相同的频率变化,当变化速度很快的时候,由于视觉暂留现象,我们就能看见百位十位个位...每一位数都不同的多种多样的数字...
  • 1、动态扫描动态扫描是从驱动IC的输出到像素点之间实行“点对列”的控制,动态扫描需要控制电路,成本要低,显示效果差一些,亮度损失较大,亮度偏低,适用于室内环境显示,比如室内橱窗门店。 2、静态扫描:静态...
  • 2006-05-11 10:24:54 数码管动态扫描扩展显示 单片机并行I/O口数量总是有限的,有时并行口需作其他更重要的用途,一般也不会用数量众多的并行I/O口专门用来驱动显示电路,能否用80C51的串行通信口加上少量...
  • )2、Arduino直接连接四位数码管实现四位阿拉伯数字显示(Friting绘制电路图(注意每个段都要加470欧姆限流电阻),程序原理说明,包含完整注释的源...数码管的动态扫描显示所需要了解并掌握的四位数码管的电路结构与显示原理...
  • 数码管扫描显示实验目的实验要求实验原理程序代码测试用例仿真波形图电路管脚图引脚配置文件数码管说明 实验目的 学习数码管的显示原理,掌握数码管的动态扫描方法。 掌握灵活运用Verilog HDL 语言进行各种描述与...
  • 数码管动态扫描

    2017-12-10 11:34:35
    每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态...
  • 二、请设计一个单片机5位动态扫描数码显示,要求P2端口输出数码管段代码,P3口控制数码管的公共端,实现位点亮控制。5位显示内容为“89C51” 。 1、 正确连接电路(10分) 2 只能显示部分内容(10分) 3 能完整...
  • 数码管动态扫描应用

    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}; ...
  • 什么叫动态扫描显示  在单片机系统中动态扫描显示接口是单片机中应用为广泛的一种显示方式之一。其接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。CPU...
  • 2、译码模块: 四个数码管都要分别显示0-9的字符,随着计数的累加,数码管显示字符各有不同,所以刷新电路显示的字符需要经过译码,对应到每个数码的当前要显示的数字字符。 --译码电路1,数码管1动态字符查表 ...
  • 单片机led显示电路

    2020-08-11 09:27:07
    单片机来连接led显示器的设计是经常的事情,常用的有两种方法一是接并口显示,这种方法占用了大量的单片机端口资源,利用8279等芯片可以实现动态...还有一种是利用单片机串口动态扫描的led显示电路,本站将一一介绍。
  • 1、概述基于明德扬至简设计法和明德扬设计规范,设计一个基于FPGA的频率、电压测量仪器,实现了测量AD采集后的波形频率和电压(峰峰值),并将数值显示在数码管上。这个案例通过扩展还可结合明德扬的波形采集显示...
  • 利用proteus软件对数码管动态显示进行了仿真,由于是软件仿真,对于动态数码管的视觉残留有一些影响,所以把延时时间调的较长,以便能够看清其扫描显示的过程,可以作为课堂给学生演示的课件,亦可以给爱好者作为...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 292
精华内容 116
关键字:

动态扫描显示电路