精华内容
下载资源
问答
  • 1、四位数码管的简单介绍 因为在学校做项目的时候使用到了数码管显示,所以就编写了个基于SMT32的数码管显示程序。通过看手册知道这个四位数码管采用TM1637 驱动电路。内部有集成MCU数字电路接口,数据锁存器,LED...
  • 基于Proteus的一位数码管显示实验

    千次阅读 2020-05-20 19:55:54
    通过程序的输入来控制P0口,逐个的给P0口赋值(1~9),使数码管逐个从1显示到9,然后循环往复,达到一位数码管显示的效果。 2Proteus仿真电路图 排阻一般应用在数字电路上,比如:作为某个并行口的上拉或者下拉电阻...

    1实验原理

    通过程序的输入来控制P0口,逐个的给P0口赋值(1~9),使数码管逐个从1显示到9,然后循环往复,达到一位数码管显示的效果。

    2Proteus仿真电路图

    在这里插入图片描述
    排阻一般应用在数字电路上,比如:作为某个并行口的上拉或者下拉电阻用。使用排阻比用若干只固定电阻更方便.
    上拉排阻:上拉是相对下拉来说的。可以简单的理解上拉的作用是给信号线提供一个驱动电压,使之传输更稳定,传输距离更远,用来抵消线路中内阻对信号的损耗。

    3所用元器件图

    在这里插入图片描述
    在Proteus软件中排阻有两种型号:respack-7和respack-8,均属于Resistorpacks类别。

    4. C51代码

    #include<reg51.h> //定义头文件
    #include<intrins.h>  
    #define uchar unsigned char	 //宏定义
    #define uint unsigned int
    
    uchar code num[10]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};  // 0~9字码
    void delay(uint ms) //定义延时子函数
    {
    	uint i,j;
    	for(i=ms;i>0;i--) //通过改变ms的次数来改变延时时间	 
    	  for(j=110;j>0;j--); 
    }
    	
    void main() //主函数
    {
    	uchar i=0;
    	P0=0x00; //初始化
    	while(1)
    	{
    		P0 = num[i];    //直接给 P0 口赋值
    		i=(i+1)%10   ;	   //逐个显示数字1~9
    		delay(1000);
    		}
    }
    
    

    #include<intrins.h>
    在C51单片机编程中,如果你要用到这个库文件里的函数的话,你就得包含它。
    包含头文件intrins.h的函数,使用时,就会像在用汇编时一样简便。

    展开全文
  • 、控制数码管的构成 在我手上的这块开发板(正点原子的nano板)控制数码管需要控制 38译码器 和 595锁存器。下面主要说明一下两块芯片的原理 以及 如何用STM32 keil的开发环境实现。 二、595锁存器 以及 38译码器 ...

    一、控制数码管的构成

    在我手上的这块开发板(正点原子的nano板)控制数码管需要控制 38译码器 和 595锁存器。下面主要说明一下两块芯片的原理 以及 如何用STM32 keil的开发环境实现。

    二、595锁存器 以及 38译码器

    595锁存器功能简介:SCLK每来一个上升沿,DATA中的数据进入到595中,如此读八次之后,再有一个LCLK,就全部把八位数据并行输出,输出的端脚为QA~QH。
    595锁存器
    38译码器:将来自A0—A2中的三位数据转到CH1—CH8中的某一个高电平。
    38译码器

    三、实现代码

    (1)宏定义部分

    //段选define
    #define DATA PBout(3) 
    #define LCLK PBout(4) 
    #define SCLK PBout(5) 
    //段选define	
    
    //位选define
    #define SISEL0 PCout(10)
    #define SISEL1 PCout(11)
    #define SISEL2 PCout(12)
    //位选define
    
    #define JTAG_SWD_DISABLE   0X02
    #define SWD_ENABLE         0X01
    #define JTAG_SWD_ENABLE    0X00	
    
    

    (2)定义一个给数码管显示的列表

    u8 temp[] = {0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x01,0x00};
    

    (3)关闭jtag,因为PB4正常是作为jtag使用,所以先关闭他的jtag功能。

    void JTAG_Set(u8 mode)
    {
    	u32 temp;
    	temp=mode;
    	temp<<=25;
    	RCC->APB2ENR|=1<<0;     //开启辅助时钟	   
    	AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]
    	AFIO->MAPR|=temp;       //设置jtag模式
    }
    

    (4)使能时钟

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB,ENABLE);
    

    (5)对GPIO进行初始化

    	GPIO_InitTypeDef GPIO_InitStructre;
    
    	GPIO_InitStructre.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructre.GPIO_Pin=	GPIO_Pin_10|GPIO_Pin_12|GPIO_Pin_11
        GPIO_InitStructre.GPIO_Speed= GPIO_Speed_50MHz;
        GPIO_Init(GPIOC,&GPIO_InitStructre);
    
    	GPIO_InitStructre.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructre.GPIO_Pin=	GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5; 
        GPIO_InitStructre.GPIO_Speed= GPIO_Speed_50MHz;
    	GPIO_Init(GPIOB,&GPIO_InitStructre);
    

    (6)产生上升沿、下降沿使得数据能输出到数码管上

    	while(1){
    			SISEL0 = 1;
    	SISEL1 = 1;
    	SISEL2 =  1;
    
    	SCLK = 0;
    	LCLK = 0;
        tmp=temp[2];
    	for( j = 0 ; j < 8 ; j ++ )
    	{
    	    DATA = tmp & 0X01;
    		SCLK =1;
    		SCLK =0;
    		tmp = tmp >> 1;
    	}	
    	LCLK = 1;
    		}
    

    (7)总体代码

    #include "sys.h"
    //数码管显示用  
    //段选define
    #define DATA PBout(3) 
    #define LCLK PBout(4) 
    #define SCLK PBout(5) 
    //段选define	
    
    //位选define
    #define SISEL0 PCout(10)
    #define SISEL1 PCout(11)
    #define SISEL2 PCout(12)
    //位选define
    
    #define JTAG_SWD_DISABLE   0X02
    #define SWD_ENABLE         0X01
    #define JTAG_SWD_ENABLE    0X00	
    
    u8 tmp,j;
    u8 temp[] = {0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x01,0x00};
    void JTAG_Set(u8 mode)
    {
    	u32 temp;
    	temp=mode;
    	temp<<=25;
    	RCC->APB2ENR|=1<<0;     //开启辅助时钟	   
    	AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]
    	AFIO->MAPR|=temp;       //设置jtag模式
    }
    int main(void){
    	//设置数码管PB4/5  PC10/11/12
        GPIO_InitTypeDef GPIO_InitStructre;
    
       RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB,ENABLE);
    	
    	GPIO_InitStructre.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructre.GPIO_Pin=	GPIO_Pin_10|GPIO_Pin_12|GPIO_Pin_11;
        GPIO_InitStructre.GPIO_Speed= GPIO_Speed_50MHz;
        GPIO_Init(GPIOC,&GPIO_InitStructre);
    	
    	GPIO_InitStructre.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructre.GPIO_Pin=	GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5; 
        GPIO_InitStructre.GPIO_Speed= GPIO_Speed_50MHz;
    	GPIO_Init(GPIOB,&GPIO_InitStructre);
    
    	//设置数码管PB4/5  PC10/11/12
    	JTAG_Set(SWD_ENABLE);//关闭jtag,使能SWD,可以用SWD模式调试 PB4做普通IO口使用,否则不能当IO使用
    
    		
    	while(1){
    			SISEL0 = 1;//需要修改的参数,选择哪个数码管亮。
    	        SISEL1 = 1;//需要修改的参数,选择哪个数码管亮。
    	        SISEL2 =  1;//需要修改的参数,选择哪个数码管亮。
    
    	SCLK = 0;
    	LCLK = 0;
        tmp=temp[2];     //里面的2是需要修改的参数,选择数码管显示哪个数字。
    	for( j = 0 ; j < 8 ; j ++ )
    	{
    	    DATA = tmp & 0X01;
    		SCLK =1;
    		SCLK =0;
    		tmp = tmp >> 1;
    	}	
    	LCLK = 1;
    		}
    }	
    
    
    展开全文
  • c语言编程一 单个数码管显示技术#include "at89x51.h"#include "intrins.h"unsigned char code Led[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; unsigned char x=3;void delay(long t){while(t--);}...

    c语言编程

    一 单个数码管显示技术

    #include "at89x51.h"

    #include "intrins.h"

    unsigned char code Led[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; unsigned char x=3;

    void delay(long t)

    {

    while(t--);

    }

    void main()

    {

    for(;;)

    {

    P1=Led[x];

    x++;

    if(x>9) x=0;

    delay(15000);

    }

    }

    二 4位数码管显示技术

    #include "at89x51.h"

    #include "intrins.h"

    unsigned char code Led[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; unsigned char code Addr[4]={0xfe,0xfd,0xfb,0xf7};

    unsigned char dis[4];

    unsigned int x=1234;

    void delay(long t)

    {

    while(t--);

    }

    void main()

    {

    unsigned char i,t;

    展开全文
  • //这是个四位数码管动态显示c语言程序,每隔一秒加一,直至加到9999为止//使用时需采用锁存器#include#include"stdio.h"unsigned char code LED[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};...

    //这是一个四位数码管动态显示c语言程序,每隔一秒加一,直至加到9999为止//使用时需采用锁存器

    #include

    #include"stdio.h"

    unsigned char code LED[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; unsigned char LEDbuff[]={0xff,0xff,0xff,0xff};

    //定义数码管的位选段

    sbit SEG_bit_1 = P0^1;

    sbit SEG_bit_2 = P0^2;

    sbit SEG_bit_3 = P0^3;

    sbit SEG_bit_4 = P0^4;

    unsigned int cnt=0;

    unsigned int sec =0;

    unsigned int mini=0;

    unsigned int hour=0;

    unsigned char i=0;

    /*void delay(unsigned int z )

    {

    unsigned int x,y;

    for(x=z;x>0;x--)

    for(y=110;y>0;y--);

    }

    */

    void interrupttimer0() interrupt 1 /*设置中断函数*/

    {

    TH0=0xfc;

    TL0=0x18;

    cnt++;

    //P1=0x80;

    //delay(1);

    switch(i)

    {

    case 0: SEG_bit_1 = 0;SEG_bit_4 = 1;P1=LEDbuff[0];i++;break;

    case 1: SEG_bit_4 = 0;SEG_bit_3 = 1;P1=LEDbuff[1];i++;break;

    case 2: SEG_bit_3 = 0;SEG_bit_2 = 1;P1=LEDbuff[2]&;i++;break;

    case 3: SEG_bit_2 = 0;SEG_bit_1 = 1;P1=LEDbuff[3];i=0;break;

    default:break;

    }

    }

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

    void serial_init()

    {

    展开全文
  • 利用Verilog语言实现一位数码管动态显示0到F
  • 采用两位数码管显示,c语言编程!相信对你有用!
  • T89C52单片机和一位数码管组成一个流水显示0-9数字。电路构成用Cepark单片机开发实验板上的四位动态数码管中的一位,做一位静态显示控制。
  • 基于arduino的一位数码管控制

    千次阅读 2019-12-11 22:46:12
    基于arduino的一位数码管控制 (一)arduino是什么? (二)一位数码管是什么? (三)一位数码管的结构组成和分类 1、共阴极 2、共阳极 (四)一位数码管的控制逻辑 (五)一位数码管的三种控制方式(由浅入深) 1...
  • 【Arduino】四位数码管显示

    千次阅读 2020-07-31 15:02:40
    程序功能:四位数码管显示 程序版本:Ver 1.0 编写日期:2020/07/30 作者信息:天津科技大学创新实验室-JC /****************************************************************** * 程序名称:数码管静态显示 * ...
  • 微信搜索【沛华测控】订阅我们Shania本来想更一期“一位数码管倒计时”的课程,后面觉得不是很有意思,于是换成四位数码管,想做一个“数码管显示电压值”的效果。经过几天的摸索,分别使用LabVIEW和Arduino C/C++...
  • 谁帮忙编写 个 四位数码管显示分钟和秒钟的单片机c语言吧
  • 用c语言编写的 51单片机数码管驱动程序 下面是电路图
  • 51单片机一位数码管汇编程序

    万次阅读 多人点赞 2015-07-29 15:50:11
    51单片机一位数码管汇编程序
  • 位数码管动态显示

    2020-11-11 15:46:47
    8位数码管依次显示,后一位显示一位不变 通过while switch 实现数码管多位动态显示 如果需要proteus仿真请联系作者 #include<reg52.h> //定义一些特殊功能寄存器 #include<intrins.h> //需要用到流水...
  • 数码管显示

    2021-05-05 00:01:19
    数码管显示 、实验目的: 1、了解数码管的结构和功能; 2、学会如何区分三极管的三个引脚并正确使用三极管;‘ 3、学会利用“星星点灯”实验原理来控制数码管发光,从而为后续试验(制作电子钟,电压表,温度计)...
  • PLC专为在工业环境下应用而设计,它采用可编程序的存储器,用来在其内部存储执行逻辑运算、顺序控制、定时、...本人收集了些实例,用户可在三菱官网的下载中心下载三菱编程软件,安装好三菱编程软件GX-7C,以便参考。
  • PLC专为在工业环境下应用而设计,它采用可编程序的存储器,用来在其内部存储执行逻辑运算、顺序控制、定时、...本人收集了些实例,用户可在三菱官网的下载中心下载三菱编程软件,安装好三菱编程软件GX-7C,以便参考。
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼/*************************************************************************************** DS18B20温度传感器实验 *实现现象:下载程序后,...数码管就会显示检测的...
  • 数码管显示学号

    2018-11-30 00:36:05
    51单片机完成学号的显示。选择数码管的其中一位显示全部学号
  • 编程 模拟八位数码管显示

    千次阅读 2018-04-12 10:28:52
    #include #include int main() { char Display[31] = { 0 }; //输出字符串 int model[10] = { 0 }; //二进制数模 int code[10] = { 63, 6, 91, 79, 102, 109, 125, 7, 127, 111 }; //十进制数模 ...
  • 这里分享个我很早写的数码管显示的代码和整体流程,希望能对后来人有所帮助 、软件基础 proteus和CCS(我用的是CCS9.3.0和proteus8.6) 下载和安装破解只要在CSDN上搜索就行,这里给出两个链接,如果你按...
  • 数码管显示按键次数

    2012-02-22 20:16:17
    独立按键,数码管显示按键次数 独立按键,数码管显示按键次数
  • 该程序是个人见人爱,花见花开的七段数码管显示程序,非常的不错!
  • 单片机(AT89X52)四位数码管显示0123

    千次阅读 2014-01-14 12:21:55
    用一片3线8线译码器来选择4个数码管,其中有四个输出端不用。 原理图如下: 讲解注释我都写到程序里了,直接上程序: #include #define uchar unsigned char unsigned char code LED[10]= //0-9的数码管字形...

空空如也

空空如也

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

一位数码管显示编程