精华内容
下载资源
问答
  • 数码管静态显示程序

    2018-03-14 17:24:36
    C语言的,完整程序 数码管动态显示程序
  • 应用于51单片机的数码管静态显示的C51小程序,适合单片机新手使用
  • 应用于51单片机的数码管静态显示的C51小程序,适合单片机新手使用
  • 数码管静态显示 按照连接方式不同可分为共阴极与共阳极数码管 数码管共十引脚,除了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(cntMAX_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

    展开全文
  • 数码管静态显示程序 我的是四位的数码管,共阳极 一个数码管有八段:A,B,C,D,E,F ,G,H,DP,即由八个发光二极管组成 由0到f编码为: 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,...

    数码管静态显示程序

    我的是四位的数码管,共阳极
    一个数码管有八段:A,B,C,D,E,F ,G,H,DP,即由八个发光二极管组成
    由0到f编码为:
    0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e

    main.c

    #include "sys.h"
    #include "delay.h"
    #include "num.h"
    
    int main(void)
    { 
    	RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);	//系统时钟设置PLL作为系统时钟
    	delay_init();			//初始化延时函数
    	NUM_STATIC();  //数码管静态显示	
    }
    
    

    num.c

    #include "num.h"
    
    //数码管初始化
    void NUM_Init(void){
    
    	GPIO_InitTypeDef  GPIO_InitStructure;
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);	 //使能GPIO端口时钟,数码管显示GPIO使能配置
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);	//位选使能
    	//段码设置
    	GPIO_InitStructure.GPIO_Pin = NUM_STATIC_GPIO;    //数码管段选显示GPIO引脚配置
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出
    	GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;  //最高输出速率50MHz	
    	GPIO_Init(GPIOD, &GPIO_InitStructure);  //IO口初始化
    	//位选设置
    	GPIO_InitStructure.GPIO_Pin = NUM_STATIC_BIT;    //数码管位选显示GPIO引脚配置
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出
    	GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;  //最高输出速率50MHz	
    	GPIO_Init(GPIOC, &GPIO_InitStructure);  //IO口初始化
    	GPIO_ResetBits(GPIOC, NUM_STATIC_BIT);   //给数码管位码置0
    }
    
    //数码管静态函数
    void NUM_STATIC(void){
    	NUM_Init();  
    	while(1)
    	{
    		GPIO_Write(GPIOD,0xc0);  //段码输出0
    	}		
    }
    
    

    num.h

    #include "sys.h"
    
    //段码引脚
    #define NUM_STATIC_GPIO  GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7  
    #define NUM_STATIC_BIT GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3
    //数码管静态显示
    void NUM_STATIC(void);
    
    
    展开全文
  • 数码管静态显示数码管静态显示数码管静态显示数码管静态显示数码管静态显示数码管静态显示数码管静态显示数码管静态显示数码管静态显示数码管静态显示数码管静态显示数码管静态显示数码管...
  • *****该程序用于驱动led数码管显示,在8个LED数码管上依次显示数字1、2、3、4、5、6、7、8*******;****http://www.51hei.com 单片机学习网经典程序已测试,led数码管共阴和共阳不同请修改码值转换表部分LIST P=18F458...

    ;*****该程序用于驱动led数码管显示,在8个LED数码管上依次显示数字1、2、3、4、5、6、7、8*******

    ;****http://www.51hei.com 单片机学习网经典程序已测试,led数码管共阴和共阳不同请修改码值转换表部分

    LIST P=18F458

    INCLUDE "P18F458.INC"

    ;所用的寄存器

    XIANR EQU 0X20

    ORG 0X00

    GOTO MAIN

    ORG 0X30

    ;****************以下为码值转换表********************

    CONVERT ADDWF PCL,1

    RETLW 0XC0 ;0,显示段码与具体的硬件连接有关

    RETLW 0XF9 ;1

    RETLW 0XA4 ;2

    RETLW 0XB0 ;3

    RETLW 0X99 ;4

    RETLW 0X92 ;5

    RETLW 0X82 ;6

    RETLW 0XD8 ;7

    RETLW 0X80 ;8

    RETLW 0X90 ;9

    RETLW 0X88 ;A

    RETLW 0X83 ;B

    RETLW 0XC6 ;C

    RETLW 0XA1 ;D

    RETLW 0X86 ;E

    RETLW 0X8E ;F

    RETLW 0X7F ;"."

    RETLW 0XBF ;"-"

    RETLW 0X89 ;H

    RETLW 0XFF ;DARK

    RETURN

    ;**************初始化子程序*****************

    INITIAL

    BCF TRISA,5 ;置RA5为输出方式,以输出锁存信号

    BCF TRISC,5

    BCF TRISC,3 ;设置SCK与SDO为输出方式

    BCF INTCON,GIE ;关闭所有中断

    MOVLW 0XC0

    MOVWF SSPSTAT ;设置SSPSTAT寄存器

    MOVLW 0X30

    MOVWF SSPCON1 ;设置SPI的控制方式,允许SSP方式,并且时钟下降

    ;沿发送数据,与"74HC595当其SCLK从低到高电平

    ;跳变时,串行输入数据(DI)移入寄存器"的特点相对应

    MOVLW 0X11 ;显示值寄存器赋初值,每个值占两个字节,

    MOVWF XIANR ;从8开始显示

    RETURN ;返回

    ;***************led数码管显示子程序******************

    ;SPI发送显示子模块

    DISPLAY

    TRANSMIT CLRF PORTA ;LACK送低电平,为锁存做准备

    MOVWF SSPBUF ;启动发送

    WAIT

    BTFSS PIR1,SSPIF

    GOTO WAIT ;等待发送结束

    BCF PIR1,SSPIF ;清除中断标志

    NOP

    BSF PORTA,5 ;最后给一个锁存信号,代表一显示任务完成

    RETURN

    ;*****************pic单片机驱动led显示程序的主程序开始***************

    MAIN NOP

    CALL INITIAL ;调用系统初始化子程序

    LOOP MOVF XIANR,W

    CALL CONVERT ;查出XIANR的显示段码值

    CALL DISPLAY

    DECF XIANR

    DECF XIANR ;显示值减2,因为按字存放,按字节读取

    MOVF XIANR,W

    SUBLW 0X01

    BTFSS STATUS,Z

    GOTO LOOP ;若送完显示的数,则退出显示

    HERE GOTO HERE

    END

    本程序完毕,本程序的c语言版本请打开 http://www.51hei.com/mcu/558.html

    展开全文
  • 数码管静态显示实验

    2018-06-20 11:51:10
    基于51单片机的数码管静态显示实验 C程序 实验步骤以及需要用到的软件
  • 数码管静态显示

    2011-12-10 15:08:42
    数码管静态显示的汇编源程序,适合初学者学习参考
  • AVR单片机ATmega8数码管单位静态显示程序
  • 74LS164级联控制5个数码管静态显示
  • 分频是基于计数器程序。由于FPGA的并行处理能力,根本不需要单片机式...即所有数目管公用一套段LED选择端,每管的亮灭靠片选控制。只要刷新频率够高,就能出现连续的效果。 代码如下: 1 library IEEE; ...

    转载请注明出处:http://www.cnblogs.com/connorzx/p/3633860.html 

    分频是基于计数器程序。由于FPGA的并行处理能力,根本不需要单片机式的中断指令,用起来很方便。

    数码管是靠段选和片选控制的。即所有数目管公用一套八段LED选择端,每个管的亮灭靠片选控制。只要刷新频率够高,就能出现连续的效果。

    代码如下:

     1 library IEEE;
     2 use IEEE.STD_LOGIC_1164.ALL;
     3 use IEEE.STD_LOGIC_ARITH.ALL;
     4 use IEEE.STD_LOGIC_UNSIGNED.ALL;
     5 
     6 
     7 entity digit_node is
     8     Port ( 
     9            clk : in  STD_LOGIC;
    10               an :  out  STD_LOGIC_VECTOR (3 downto 0);
    11            seg : out  STD_LOGIC_VECTOR (6 downto 0));
    12               
    13 end digit_node;
    14 
    15 architecture Behavioral of digit_node is
    16 signal cnt:  INTEGER;
    17 signal sclk: STD_LOGIC;
    18 signal sw:STD_LOGIC_VECTOR (3 downto 0);
    19 begin
    20 an<="0000";
    21 process(clk)
    22 begin
    23 if(clk'event and clk='1') then
    24     if(cnt=10000000) then
    25         cnt<=0;
    26         sclk<=not sclk;
    27     else
    28         cnt<=cnt+1;
    29     end if;
    30 end if;
    31 end process;
    32 process(sclk)
    33 begin
    34 if(sclk'event and sclk='1') then
    35     sw<=sw+1;
    36 case sw is
    37     when x"0"=>seg<=b"0000001";
    38     when x"1"=>seg<=b"1001111";
    39     when x"2"=>seg<=b"0010010";
    40     when x"3"=>seg<=b"0000110";
    41     when x"4"=>seg<=b"1001100";
    42     when x"5"=>seg<=b"0100100";
    43     when x"6"=>seg<=b"0100000";
    44     when x"7"=>seg<=b"0001111";
    45     when x"8"=>seg<=b"0000000";
    46     when x"9"=>seg<=b"0000100";
    47     when x"a"=>seg<=b"0001000";
    48     when x"b"=>seg<=b"1100000";
    49     when x"c"=>seg<=b"0110001";
    50     when x"d"=>seg<=b"1000010";
    51     when x"e"=>seg<=b"0110000";
    52     when x"f"=>seg<=b"0111000";
    53     when others=>seg<=b"0000001";
    54 end case;
    55 end if;
    56 end process;
    57 
    58 end Behavioral;

     

    约束文件如下:

     1 NET "clk"   LOC="B8";
     2 NET "an<0>" LOC="K14";
     3 NET "an<1>" LOC="M13";
     4 NET "an<2>" LOC="J12";
     5 NET "an<3>" LOC="F12";
     6 #NET "seg<7>" LOC="N13";
     7 NET "seg<6>" LOC="L14";
     8 NET "seg<5>" LOC="H12";
     9 NET "seg<4>" LOC="N14";
    10 NET "seg<3>" LOC="N11";
    11 NET "seg<2>" LOC="P12";
    12 NET "seg<1>" LOC="L13";
    13 NET "seg<0>" LOC="M12";

     

    转载于:https://www.cnblogs.com/connorzx/p/3633860.html

    展开全文
  • 单片机—数码管静态显示

    千次阅读 2017-07-01 20:52:31
    数码管静态显示
  • LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类
  • 51单片机——数码管静态显示 1、由原理图找到对应控制端口 这次是想要在数码管上显示出数值。同样的,先在开发板原理图中...先写简单一点数码管静态显示程序如下: #include <reg52.h> sbit ADD...
  • 51单片机之数码管静态显示

    万次阅读 多人点赞 2018-10-14 14:17:59
     在对单片机编程以实现数码管静态显示数字之前,我们先来了解一下数码管的结构以及一些常识,对于数码管,有称段数码管的,也有称七段数码管的,其实无非就是多在一小数点h , 如上图所示, 我们就拿带小数点的...
  • 名称:单个共阳数码管静态显示 内容:通过赋值给P1,让数码管显示特定的字符或者数字
  • 数码管静态显示程序 定时器设置及中断应用
  • MC9S08FL16单片机数码管静态显示分析.pdf
  • 51单片机 8位7段数码管静态显示

    千次阅读 2020-12-19 23:48:53
    51单片机 8位7数码管静态显示 如图所示接电路: P0口加了 排阻 增强其驱动能力。
  • 本文介绍了数码管显示原理,及共阴极数码管应用电路图及相关程序设计。
  • 多位LED数码管处于静态显示,各位的共阴极或共阳极连接在一起并接地或接5v ;每一位数码管的段码线(a,b,…g,dp)分别与单片机控制的8为I/O 口锁存器输出相连,通过选择点亮段码线达到显示数值效果。 优点:显示无...
  • 数码管静态及动态显示一、八位共阳数码管1.1 硬件连接图1 共阳数码管原理图上图是独立共阳数码管,用于演示数码管显示原理图2 共阴和共阳数码管原理说明... 4 共阳数码管静态显示程序/*---------------------------...
  • 单片机c代码数码管静态显示0-9循环~~好东西

空空如也

空空如也

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

8个数码管静态显示程序