精华内容
下载资源
问答
  • 单片机MSP430G2553四位数码管显示程序,运行结果:程序运行时,数码管显示“0000”十六进制数值,当按键按下,该16进制数值不断增加。 其他程序比如按键中断、定时器中断、PWM等单片机MSP430G2553系列代码我会陆续...
  • 51单片机实验 7段静态数码管显示数字 P0口接7段静态数码管,实现1秒数字显示,从0到16(F),来回闪烁显示 由于数字显示有一秒替换下一个数字的要求,所以采用定时器T0定时一秒。 由于前面实验积累,可以复用一部分...

    51单片机实验 7段数码管静态显示数字

    P0口接7段静态数码管,实现1秒数字变换显示,从0到16(F),来回闪烁显示
    

    由于数字显示有一秒后替换下一个数字的要求,所以采用定时器T0定时一秒。
    由于前面实验积累,可以复用一部分以前的代码。

    C代码:

    #include <at89x52.h>
    code unsigned char SegTab[16]={//段码表--共阳
    	0xc0,0xf9,0xa4,0xb0,
    	0x99,0x92,0x82,0xf8,
    	0x80,0x90,0x88,0x83,
    	0xc6,0xa1,0x86,0x8e 
    };
    
     void Timer0_init(void)
    {
    	TMOD &=~0x0f;
    	TMOD |=0x01;
    	TH0=(65536-50000)/256;  
    	TL0=(65526-50000)%256;
    	ET0=1;
    	TR0=1;
    }
    
    
    void Timer0_ISR(void) interrupt 1
    {
    	static unsigned char intcnt=0,idx=0;
    	TH0=(65536-50000)/256;  
    	TL0=(65526-50000)%256;
    	if(++intcnt == 20){//一秒
    		intcnt=0;
    		P0=SegTab[idx++];
    		if(idx==16) idx=0;}
    }
    		
    void main(void)
    {  
    	Timer0_init();
    	EA=1;
    	//ET0=1; 
    	while(1){
    		;}
    }
    
    

    主要注意段码的选择,本次采用的是共阳极接法的数码管,所以阴极(引脚)为0时对应二极管导通发光,例如数字“8”,由于数码管共阳极接法,应该是000 0000才可以使数码管点亮.

    下面是共阳极接法的段码表
    code unsigned char SegTab[16]={
    0xc0,0xf9,0xa4,0xb0,
    0x99,0x92,0x82,0xf8,
    0x80,0x90,0x88,0x83,
    0xc6,0xa1,0x86,0x8e
    };

    如果是共阴极接法的数码管,则应选择以下段码:
    code unsigned char SegTab[16]={
    0x3f,0x06,0x5b,0x4f,
    0x66,0x6d,0x7d,0x07,
    0x7f,0x6f,0x77,0x7c,
    0x39,0x5e,0x79,0x71
    };

    在这里插入图片描述

    展开全文
  • 应用于51单片机的数码管静态显示的C51小程序,适合单片机新手使用
  • 单片机c代码数码管静态显示任意数字,好东西啦
  • 数码管显示数字(滚动和静态

    千次阅读 2019-12-03 21:54:51
    数码管显示数字(滚动和静态) 1. 8只数码管滚动显示单个数字** 代码: #include<reg51.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char uchar code table[]= {0xc0,0xf...

    数码管显示数字(滚动和静态)

    1. 8只数码管滚动显示单个数字**
    代码:
    #include<reg51.h>
    #include<intrins.h>
    #define uint unsigned int
    #define uchar unsigned char
    uchar code table[]=
    {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
    void delayms(uint xms)
    {
    uint i,j;
    for(i=xms;i>0;i–)
    for(j=110;j>0;j–);
    }
    void main()
    {
    uchar i,k=0x80;
    while(1)
    {
    for(i=0;i<8;i++)
    {
    P2=0xff; //关闭显示
    k=crol(k,1);
    P0=table[i]; //发送数字段码
    P2=k; //发送数码管位选,打开对应的数码管
    delayms(200);
    }
    }
    }
    2. 8只数码管显示多个数字**
    代码
    #include<reg51.h>
    #include<intrins.h>
    #define uint unsigned int
    #define uchar unsigned char
    uchar code table[]=
    {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
    void delayms(uint xms)
    {
    uint i,j;
    for(i=xms;i>0;i–)
    for(j=110;j>0;j–);
    }
    void main()
    {
    uchar i,k=0x80;
    P0=0xff;
    P2=0x00;
    while(1)
    {
    for(i=0;i<8;i++)
    {
    k=crol(k,1);
    P2=k; //发送数码管位选,打开对应的数码管
    P0=table[i+1]; //发送数字段码
    delayms(2);
    }
    }
    }

    3. 仿真图:
    在这里插入图片描述

    展开全文
  • 数码管静态显示 按照连接方式不同可分为共阴极与共阳极数码管 数码管共十个引脚,除了a,b,c,d,e,f,g,dp,两个公共端,共阴极数码管公共端连接到gnd,共阳极数码管阳极公共端连接到+5V,共阴极需要在端口给低电平,共...

    数码管静态显示

     按照连接方式不同可分为共阴极与共阳极数码管
    数码管共十个引脚,除了a,b,c,d,e,f,g,dp,两个公共端,共阴极数码管公共端连接到gnd,共阳极数码管阳极公共端连接到+5V,共阴极需要在端口给低电平,共阳极需要在端口给高电平。
    数码管分为位选与段选信号,位选给高电平。
    六个数码管显示0-f,同时数码管每隔0.5s变化一次。
    由于每隔0.5s变化一次,所以需要一个计时器。

     如下图是源代码
    分为顶层模块,计数模块数码管显示模块

    > module seg_led_static_top(clk,rst_n,sel,sel_led); 
    >  input clk,rst_n;
    >  output  [5:0] sel;               //数码管位选 
    >  output [7:0] sel_led;            //数码管段选 
    >  parameter  TIME=25'd25000_000;   //0.5s变化间隔  
    >  wire add_flag;                   //数码管变化通知信号 
    >  //参数传递
    >  //控制模块 
    >  time_count #(.MAX_NUM(TIME)) time_count_inst(
    >                 .clk(clk),
    >                 .rst_n(rst_n),
    >                 .add_flag(add_flag)
    >                 );  
    >      //计数模块
    > 					 
    > seg_led_static  u_seg_led_static(
    >                            .clk(clk),
    >                            .rst_n(rst_n),
    >                            .add_flag(add_flag),
    >                            .sel(sel),
    >                            .sel_led(sel_led)
    >                                 );
    > 	//数码管显示模块			
    > endmodule
    

    计数模块

    > module time_count(clk,rst_n,add_flag);  
    > input clk,rst_n;  
    > output reg  add_flag; 
    > parameter MAX_NUM=25000_000;
    > reg [24:0] cnt; 
    >  always  @(posedge clk or negedge rst_n)  
    >    begin  if(!rst_n)    
    >      cnt<=25'd0;   
    >    else if(cnt==MAX_NUM)   
    >      cnt<=25'd0;
    >       else    
    >     cnt<=cnt+1;   
    >   end 
    >    always @(posedge clk or negedge rst_n) 
    >     begin      
    >        if(!rst_n)    
    >         add_flag<=0;   
    >       else 
    >     begin 	
    >        if(cnt==MAX_NUM)
    > 	        add_flag<=1; 	   	
    >        else
    > 	        add_flag<=0;
    >         end   
    >      end
     endmodule
    

    数码管显示模块

    >  module seg_led_static
    >  (clk,rst_n,add_flag,sel,sel_led);   
    >   input clk,rst_n;  
    >   input add_flag;  
    >   output reg [5:0] sel;    
    >   output reg  [7:0] sel_led;  
    >   reg [3:0] cnt;
    > //加法器
    >  always @(posedge clk or negedge rst_n)  
    >   begin
    >      if(!rst_n)   
    >          sel<=6'b111_111;   
    >       else  
    >          sel<=6'b000_000;    
    >     end
    > 
    > always @(posedge clk or negedge rst_n)  
    >  begin 
    >     if(!rst_n)  
    >        cnt<=0; 
    >     else if(add_flag)   
    >      begin 	
    >        if(cnt==4'd15)
    > 	        cnt<=0;  	
    >       else
    > 	       cnt<=cnt+1; 	 	
    >          end    	
    >      else     	 
    >         cnt<=cnt;  
    >       end
    > 
    >  always @(posedge clk or negedge rst_n)
    >   begin 
    >    if(!rst_n)  
    >       sel_led<=8'b0; 
    >    else  
    >     case(cnt)
    >      4'h0: sel_led<=8'b1100_0000;
    >      4'h1: sel_led<=8'b1111_1001;
    >      4'h2: sel_led<=8'b1010_0100;
    >      4'h3: sel_led<=8'b1011_0000;
    >      4'h4: sel_led<=8'b1001_1001;
    >      4'h5: sel_led<=8'b1001_0010;
    >      4'h6: sel_led<=8'b1000_0010;
    >      4'h7: sel_led<=8'b1111_1000;
    >      4'h8: sel_led<=8'b1000_0000; 	
    >      4'h9: sel_led<=8'b1001_0000; 	
    >      4'ha: sel_led<=8'b1000_1000; 	 
    >      4'hb: sel_led<=8'b1000_0011; 	
    >      4'hc: sel_led<=8'b1100_0110; 	
    >      4'hd: sel_led<=8'b1010_0001; 	
    >      4'he: sel_led<=8'b1000_0110; 	 
    >      4'hf: sel_led<=8'b1000_1110; 	
    >       default: 
    > 	        sel_led<=8'b1100_0000;    	
    >      endcase 
    >      end
    >    endmodule
    
    展开全文
  • 静态数码管显示实验

    2020-07-13 17:14:06
    数码管是一种现代常用的数码显示器件,具有发光显示清晰、响应速度快、功耗低、体积小、寿命长、易于控制等诸多优点,在数显仪器仪表、数字控制设备等方面得到广泛应用。本章我们将介绍八段数码管的控制原理以及如何...
  • 单片机实验----控制单只数码管静态显示 知识点: 数码管的原理 学习段选、位选和断码、位码的含义 单片机控制数码管显示的方法 静态显示 运行效果: 如图 代码如下: ORG 0000H LJMP MAIN ORG 30H ;.........

    单片机实验----控制单只数码管静态显示


    知识点:

    1. 数码管的原理
    2. 学习段选、位选和断码、位码的含义
    3. 单片机控制数码管显示的方法
    4. 静态显示

    运行效果: 如图
    效果

    代码如下:

    		ORG 0000H
    		LJMP MAIN
    		ORG 30H
    ;..................................................
    ;						主程序
    ;..................................................
    ;........段选数据.........
    MAIN:  	MOV 	P0,#10110000B			;将显示‘3’的段选数据传入P0口
    		CLR	  	P1.0					;选中u2段选芯片
    		CLR   	P1.2					;时序引脚CLK为低电平,为接受数据准备
    		SETB  	P1.2					;时序为上跳沿,即将数据传给u2
    		SETB  	P1.0					;关闭u2,使u2不能再接收其他数据
    ;........位选数据.........
    		MOV   	P0,#11111110B			;将位选数据传入P0口,选择第一个数码管显示
    		CLR   	P1.1					;选中u3位选芯片
    		CLR   	P1.2					;时序引脚CLK为低电平,为接受数据准备
    		SETB  	P1.2					;时序为上跳沿,即将数据传给u3
    		SETB  	P1.1					;关闭u3,使u3不能再接收其他数据
    		LJMP  	MAIN
    		END
    
    

    电路图:
    多只数码管电路图

    数码管显示数字3原理:
    由图可以看出显示数字3,需要a,b,c,d,g段发光二极管发光。
    对应的,即P0.0,P0.1,P0.2,P0.3,P0.6要为低电平(二极管发光),其余为高电平(二极管熄灭)。
    所以P0口的数据为10110000B

    看完图,问题基于来了,u2,u3是什么呢?
    在单片机控制但只数码管的电路图中,u2,u3是两个D触发器,在这里它们的作用是将单片机传来的数据信号按照要求传送锁存

    那么问题又来了,什么是D触发器呢?什么是传送锁存呢?

    触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。
    在数字系统和计算机中有着广泛的应用。触发器具有两个稳定状态,即"0"和"1",在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态。
    触发器有集成触发器和门电路组成的触发器。触发方式有电平触发和边沿触发两种。
    D触发器在时钟脉冲CP的前沿(正跳变0→1)发生翻转,触发器的次态取决于CP的脉冲上升沿到来之前D端的状态,即次态=D。因此,它具有置0、置1两种功能。由于在
    CP=1期间电路具有维持阻塞作用,所以在CP=1期间,D端的数据状态变化,不会影响触发器的输出状态。
    D触发器应用很广,可用做数字信号的寄存,移位寄存,分频和波形发生器等。更多信息

    在本例中,
    u2是段选触发器,实现控制数码管每段的现实;
    u3是位选触发器,他控制数码管公共引脚与电源正极的连接状态,从而选哪只数码工作(有多只数码管的时候)。

    单片机的P0口同时连接了u2,u3的输入口D0-D7,担负着数据传输的任务。
    P1.0和P1.1分别连接u2,u3的控制Ē,这两个脚分别取名CS1和CS2,他们的作用是选择u2,u3的工作状态。
    P1.2同时连接了u2和u3的时钟引脚CLK,为触发器提供所需的触发脉冲(时序脉冲)。

    单片机不与数码管直接连接,而是中间再连接上触发器,来间接控制数码管。

    那么触发器是如何控制数码管的呢?

    由上面的分析,我们知道,触发器的信号有两个,分别是Ē和CKL,只有当Ē=0和CKL上升沿到来时,触发器才工作,其他情况都不工作。

    可以将触发器比作成一座“桥”,连接着单片机和数码管,数据从“桥”上过,在“桥”连接单片机的那头有一个“管理员”,他就是Ē,管理员Ē的工作是接收数据,并判是否让断数据通过“桥”。

    在电路图中有两个触发器,那么意味着有两座桥。
    u2为“段选桥”,它与数码管的个笔画段连接,通过它的数据称为段码,控制着数码管的显示。
    u3为“位选桥”,它与数码管的公共端相连接,通过它的数据为位码,控制哪知数码管显示。

    最后一个知识点:静态显示

    在标题中,提到静态显示,那么什么是静态显示呢?有动态显示吗?

    动态显示是有的。
    数码管正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示所需要的数字或者字符。
    数码管的驱动方式有来两种:静态显示驱动和动态显示驱动。

    这里我们来介绍一下静态显示驱动:

    1. 所谓静态显示驱动,就是每个数码管的每一段码都单独占用单片机的一个I/O口,用于笔画段的编码形成。
    2. 要显示新的数据室,在通过I/O口传入新的段码。
    3. 优点:程序简单,显示度高。
    4. 缺点:数码管数量过多的时候,不适用,应为单片机没有那么多I/O口(总共32个)。

    上面是控制多只数码管,下面在附上一个控制单只数码管的电路图和源码:

    单只数码管电路图

    代码如下:

    		ORG 	0000H
    		LJMP 	MAIN
    		ORG 	30H
    MAIN:  	CLR  	P1.0
    		MOV 	P0,#10110000B			;将显示‘3’的段选数据传入P0口
    		LJMP  	MAIN
    		END
    
    

    时间:2018年10月9日19:42:13


    -END-

    展开全文
  • 静态显示:6位数码管循环显示数字0~F; 动态态显示:6位数码管同时显示数字1~6; 源码以及proteus电路原理图
  • STC89C52单片机 数码管静态显示

    千次阅读 2020-11-01 14:03:34
    静态显示的特点是每个数码管的段选必须接一个9位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。 缺点:使用的IO口比较多。 动态显示 动态显示的特点是将所有位数码管的...
  • 数码管静态显示

    2021-10-20 22:00:07
    控制六位数码管让其以000000、111111、222222一直到FFFFFF循环显示。每个字符显示0.5s后变化。 二、原理介绍 数码管显示对应内容时,对应的段码如下图所示: 74HC595芯片的引脚图及各引脚功能如下: ...
  • 74LS164级联控制5个数码管静态显示
  • 蓝桥杯——数码管静态显示

    千次阅读 2020-01-15 13:31:04
    一、原理部分 前面的原理和蜂鸣器差不多,不懂的可以参考如何控制蜂鸣器 ...例如要让共阴极数码管显示0,则要让abcdef为1,即对应的段码为 0011 1111 转化为16进制则为0x3f。如果为共阳极数码管则对0x3f...
  • 蓝桥杯CT107D单片机数码管静态显示

    千次阅读 2019-02-05 18:30:46
    数码管基础知识 CT107D单片机综合实训平台上使用的数码管是F3461BH,告诉我们数码管的类型。倒数第2个字母是“B”,说明这个数码管是共阳类型的,如果该字母为“A”则为共阴类型。 F3461BH是一个4位8段的数码管,...
  • 一、TX1C数码管介绍 共阴极和共阳极数码管,实验板上是共阴极数码管,8位一体的数码管。 连接原理图如下面两图:连在一起的段线(段选线)控制数码管亮什么数字,独立的公共端(位选线)...一、数码管静态显示 ...
  • 51单片机——数码管静态显示 1、由原理图找到对应控制端口 这次是想要在数码管上显示出数值。同样的,先在开发板原理图中找到数码管对应的控制端口 发现要让数码管起作用的话,LEDS0要为低电平...
  • 51单片机之数码管静态显示

    万次阅读 多人点赞 2018-10-14 14:17:59
     在对单片机编程以实现数码管静态显示数字之前,我们先来了解一下数码管的结构以及一些常识,对于数码管,有称八段数码管的,也有称七段数码管的,其实无非就是多在一个小数点h , 如上图所示, 我们就拿带小数点的...
  • #include<reg52.h> #define uint unsigned int unsigned char code SMG[16]= { 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e }; void delay(uint time) ...voi.
  • 单片机2——数码管静态显示

    千次阅读 2018-07-21 13:25:01
    #include&lt;reg52.h&gt; unsigned char code duanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf...//共阳极数码管的段码表 unsigned char code weima[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};  un...
  • 在单片机系统中,常常用LED数码数码管显示器来显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。
  • 名称:单个共阳数码管静态显示 内容:通过赋值给P1,让数码管显示特定的字符或者数字
  • 51单片机之静态数码管显示

    万次阅读 多人点赞 2019-05-16 21:50:24
    不管将几位数码管连在一起,数码管显示原理都是一样的,都是靠点亮内部的发光二极管来发光,下面就来我们讲解一个数码管是如何亮起来的。数码管内部电路如下图所示,从右图可看出,一位数码管的引脚是10个,显示...
  • 最近刚上手数字电路实验,很多地方都不懂,实验课要求做出数码管静态显示计数器。自己写了一段代码也没报错,但是上basys3板子就行不通。 总体思路如下: 1: 计数模块 ``` module cnt( input clk1, ...
  • 比如要显示数字“1”,需要数码管引脚b和引脚c接收到低电平才能点亮; 即a=1;b=0;c=0;d=1;e=1;f=1;g=1;dp=1才能点亮数字“1”,合起来为P0=10011111; 以此类推,点亮其他数字。 代码原理 数码管显示编码用数组...
  • 数码管是一种现代常用的数码显示器件,具有发光显示清晰,响应速度快,功耗低 、体积小、寿命长、易于控制等诸多优点,在数显仪器仪表、数字控制设备等方面得到广泛应用。 按发光二极管单元连接方式可分为共阳极...
  • 1.基本知识 数码管分为共阴和共阳数码管
  • 例:数码管显示数字1。对应二进制排列:00000110. 3.静态显示 每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直达送入新字形码为止。 1)锁存器原理
  • 是单片的实验,非常详细,有代码,有原理图,有C语言和汇编语言两个版本,有HEX文件,很方便使用,可以直接烧录看结果!!!!
  • 数码管动态显示 位选信号–控制哪个数码管显示 段选信号–控制数码管显示内容

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,520
精华内容 608
关键字:

数码管静态显示数字