数码管

LED数码管显示代码生成器 该程序用于生成7段led数码显示块的显示代码。程序饱含一个可执行程序和一个LED段位配置文件,编译环境是Vc2008 win32控制台。 典型7段数码管结构: a b c d e f g dp 对应位 0 1 2 3 4 5 6 7,这个对应关系保存在段位配置文件data.txt中。 data.txt: 7 0 5 3 6 2 1 4 使用方法: SEG [要显示的 阅读详情

–Numeric.h

#ifndef __Numeric_h
#define __Numeric_h

#define  BITBANDADDR(addr,n)   ((addr & 0xF0000000) + 0x2000000 + ((addr & 0xFFFFF) << 5) + (n << 2))
#define  MEMACCESS(addr)         (*((volatile unsigned long *)addr))
#define  BIT_ADDR(addr,n)      (MEMACCESS(BITBANDADDR(addr,n)))

#define  GPIOD_ODR_ADDR        (GPIOD_BASE + 0x0C)
#define  GPIOD_IDR_ADDR        (GPIOD_BASE + 0x08)
#define  PDout(n)               BIT_ADDR(GPIOD_ODR_ADDR,n)
#define  PDin(n)                BIT_ADDR(GPIOD_IDR_ADDR,n)

#define  PD2         PDout(2)
#define  PD3         PDout(3)

#define  LED0_7_0    (GPIOE->ODR = 0xFFFE)
#define  LED0_7_1    (GPIOE->ODR = 0xFFFD)
#define  LED0_7_2    (GPIOE->ODR = 0xFFFB)
#define  LED0_7_3    (GPIOE->ODR = 0xFFF7)
#define  LED0_7_4    (GPIOE->ODR = 0xFFEF)
#define  LED0_7_5    (GPIOE->ODR = 0xFFDF)
#define  LED0_7_6    (GPIOE->ODR = 0xFFBF)
#define  LED0_7_7    (GPIOE->ODR = 0xFF7F)
//第几个数码管显示
#define  PE0_7_0     (GPIOE->ODR = 0xFF3F)
#define  PE0_7_1     (GPIOE->ODR = 0xFF06)
#define  PE0_7_2     (GPIOE->ODR = 0xFF5B)
#define  PE0_7_3     (GPIOE->ODR = 0xFF4F)
#define  PE0_7_4     (GPIOE->ODR = 0xFF66)
#define  PE0_7_5     (GPIOE->ODR = 0xFF6D)
#define  PE0_7_6     (GPIOE->ODR = 0xFF7D)
#define  PE0_7_7     (GPIOE->ODR = 0xFF07)
#define  PE0_7_8     (GPIOE->ODR = 0xFF7F)
#define  PE0_7_9     (GPIOE->ODR = 0xFF6F)
#define  PE0_7_Point (GPIOE->ODR = 0xFF80)
//数码管显示的内容
void Numeric_Init(void);
void Numeric_Show(int,int);
//第一个参数显示的位置,第二个参数为显示的数
void Numeric_Num_Print(int);
void Numeric_Led_Print(int);
void Numeric_delay(int);
void Numeric_Double_Show(int led_num ,int num);
void Numeric_Show_Double(int *double_number ,int size);

#endif

–Numeric.c

#include <stdio.h>
#include "stm32f10x.h"
#include "Numeric.h"
int num;
int led_num;
int i;
int j;
int double_i;
int dtoi_num;
int double_point_locat;
int double_num_locat;
void Numeric_Init(void)
{
    RCC->APB2ENR |= 0x0060;  
    GPIOD->CRL = (GPIOD->CRL&0xFFFF00FF)|0x00003300;
    //PD2~3 用来设置位、段
    GPIOE->CRL = (GPIOE->CRL&0x00000000)|0x33333333;
    //数码管用到了PE0~7端口
}

void Numeric_Show(int led_num ,int num)
{
    Numeric_Led_Print(led_num);//位码
    PD2 = 1;//关闭锁存
    PD2 = 0;

    Numeric_Num_Print(num);//断码
    PD3 = 1;
    PD3 = 0;
    Numeric_delay(100);
}
void Numeric_Double_Show(int led_num ,int num) //为了显示多个数,需要用到视觉暂留所以延时短
{
    Numeric_Led_Print(led_num);
    PD2 = 1;
    PD2 = 0;

    Numeric_Num_Print(num);
    PD3 = 1;
    PD3 = 0;
    Numeric_delay(1);
}
void Numeric_Num_Print(int num)
{
     if(num == 0)
     {
         PE0_7_0; // 显示数字0
     }else if (num == 1)
     {
         PE0_7_1;
     }else if (num == 2)
     {
         PE0_7_2;
     }else if (num == 3)
     {
         PE0_7_3;
     }else if (num == 4)
     {
         PE0_7_4;
     }else if (num == 5)
     {
         PE0_7_5;
     }else if (num == 6)
     {
         PE0_7_6;
     }else if (num == 7)
     {
         PE0_7_7;
     }else if (num == 8)
     {
         PE0_7_8;
     }else if (num == 9)
     {
         PE0_7_9;
     }else
     {
         PE0_7_Point; //显示符号.
     }
}
void Numeric_Led_Print(int led_num)
{
    if(led_num == 0)
     {
         LED0_7_0;//第 0 个位置上的数码管显示
     }else if (led_num == 1)
     {
         LED0_7_1;
     }else if (led_num == 2)
     {
         LED0_7_2;
     }else if (led_num == 3)
     {
         LED0_7_3;
     }else if (led_num == 4)
     {
         LED0_7_4;
     }else if (led_num == 5)
     {
         LED0_7_5;
     }else if (led_num == 6)
     {
         LED0_7_6;
     }else if (led_num == 7)
     {
         LED0_7_7;
     }
}
void Numeric_delay(int ms)
{
    for( i = 0 ; i < 2000 ; i++)
        for(j = 0 ; j < ms ; j++);
}

void Numeric_Show_Double(int *double_number ,int size)//完成显示小数
{
        double_num_locat = 0;
        double_point_locat = 0;

      for(double_i = 0 ; double_i < size ; double_i++)
        {
            dtoi_num = double_number[double_i];

            if(dtoi_num < 10)
            {
                Numeric_Double_Show(double_num_locat,dtoi_num);
                double_num_locat++;

            }else if (dtoi_num >= 10){

                double_point_locat = double_num_locat - 1;
                Numeric_Double_Show(double_point_locat,dtoi_num);
            }

        }
}
数码管:3位6脚的数码管分析和编码 ▪ 基本简介 一个1位数码管共有8段:ABCDEFG+小数点,如下图: 按照我们常规的设计方案一个 IO 口控制一个段,一个1位数码管那么就需要8个IO。当然我们也可以使用扩展 IO 芯片(例如 74HC164、74HC595),那么这种方案就占用单片机2~3个IO和一个扩展IO芯片。 现在我们需要控制一个3位的数码管: 采用IO口直控:那么需要单片机 IO 口24个 采用扩展 IO 芯片控制:那么需要单片机 IO 口 2~3 个 但是市面上有些 3 位的数码管只有 6 个接口,如.. 阅读详情

相关推荐

【单片机】08数码管

以八段管为例介绍其字段,八段数码管其实是由八个LED灯组成的8字型,如图8.2所示,这八个灯按逆时针方向分别为:a,b,c,d,e,f,g,h。如果要显示“7”字,只需要将a,b,c三个灯点亮即可,如图8.3所示:这样来理解的话,要点亮一个数码管很容易,其实就是点亮相应的LED灯,就能显示不同的数字。我们在前面的实验中已经知道怎么点亮开发板上的LED灯,就是用单片机的I/O脚向LED灯输出低电平,灯就能点亮,输出高电平,灯就熄灭。那我们点亮数码管上的LED灯是不是也是这样呢?

m0_58976684的博客 1万+

数码管取模软件支持8段数码管15_17段米字数码管取模工具软件.zip

数码管取模软件支持8段数码管15_17段米字数码管取模工具软件,支持8段数码管,15段米字数码管,17段米字数码管; 支持引脚自定义; 生成的语言格式支持:自定义的数组格式,C语言数组,汇编,PIC等多种语言格式; 方便单片机开发用。

数码管详解

简介   数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。玻璃管中包括一个金属丝网制成的阳极和多个阴极。大部分数码管阴极的形状为数字。管中充以低压气体,通常大部分为氖加上一些汞和/或氩。给某一个阴极充电,数码管就会发出颜色光,视乎管内的气体而定,一般都是橙色或绿色。   数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。玻璃管中包括一个金属丝网制成的阳极和多个阴极。大部...

让技术没有门槛 5182

静态数码管和动态数码管

目录一,什么是数码管二,静态数码管的驱动三,动态数码管四,动态数码管显示编程实战五,使用38译码器驱动动态数码管 一,什么是数码管 1、数码管 (1)作用:数码管是显示器件,用来显示数字的 (2)分类:单个(1位)、联排(2位、4位、8位) 2、工作原理 (1)亮灭原理(其实就是内部的照明LED) (2)显示数字(甚至文字)原理:利用内部的LED的亮和灭让外部的组成数字的笔画显示或者不显示,人看到的就是不同的数字。 3、共阳极和共阴极数码管 (1)驱动方法的差异。必须清楚一个数码管内部的8颗LED是独立

big_C的博客 1万+

stm32控制共阳数码管以及共阴数码管

#include "stm32f10x.h" u8 table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}; void delayms(u16 time) { u16 i=0; while(time--) { i=12000; while(i--); } } void InitStm32() { GPIO_In

liukuangye123的专栏 1万+

fpga学习之数码管显示

1、设计需求: 设计一个数码管驱动电路,是数码管能够显示任意六位数。 2、数码管原理分析: 现在的数码管基本都是八段式的,也就是说由八个发光二极管组成的。如图一所示,这是单个数码管的原理图 我们需要二极管显示数字,只需要控制二极管的亮灭就行。以共阳极数码管为例(给二极管低电平为点亮二极管),如图二所示显示数字与段选关系 数码管位选如图三所示,Y0~Y7表示8位数码管。1为数码管有效 代码功能...

小蒋的博客 2万+

51单片机入门——数码管

目录1.数码管1.1.什么是数码管?1.2.数码管的种类1.3.分段式发光二极管数码管1.3.1八段和七段数码管笔画分布1.3.2.TTL 门驱动半导体数码管电路1.3.3.识图方法1.4.荧光数码管1.5.辉光数码管2.数码管仿真2.1. 74HC153 1.数码管 1.1.什么是数码管? 数码显示器简称数码管,是一种可以显示数字和其他信息的电子设备。它在数字式显示系统中是不可缺少的器件,应用极其广泛,发展速度很快,数码管朝着小型化、 平面化、多功能化和低耗电方面发展。 1.2.数码管的种类 数码管主要有

倾晨灬雨曦的博客 2万+

数码管(段码)生成工具

数码管段码生成工具,可生成数码管0-f的段码,方便写程序时使用

5个IO驱动188数码管

5个IO驱动数码管

Acereng的博客 1万+

数码管数制转换生成器.zip

一款能将数码管的二进制数转换成十六进制数的小工具,不用安装,关闭时就像关闭文件夹一样方便。这个小工具可以按共阳极和共阴极两种方式转换,你只需要点击出你所需要的数字,便会自动给出你所需要的十六进制数值

数码管代码生成器.exe

可以自动生成共阴极,共阳极的编码

8段数码管代码生成器

一个数码管字符生成器 学习单片机开发必备

数码管码值生成器

数码管,LCD码值生成软件。眼睛卫士。

基于51单片机数码管显示

基于51单片机数码管显示,定时器,数码管时间显示 ## 数码管显示原理 数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示,如图所示。数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、3位、4位

Lucifer_min的博客 1万+

LCD、数码管-生成代码软件

内含三个常用的LCD、数码管代码生成软件,分别为PCtoLCD2002完美版、LCD图形生成、数码管代码生成器。

数码管生成器smg-v2.0

数码管生成器smg-v2.0.zip数码管生成器smg-v2.0.zip

51单片机数码管显示

这篇文章将介绍数码管的显示其中包含了动态数码管和静态数码管两种。数码管其实就是由多个发光二极管封装在一起组成“8”字型的器件当分别点亮这些发光二极管时就可以组成不同的数字显示出来。其实数码管就是8个LED灯组成的,只要我们会二进制和16进制的转换那么数码管就是不难的。这里需要提一点的就是动态数码管需要记得消影处理,不进行消影处理将会导致数码管显示重影。

m0_49476241的博客 1万+

单片机 数码管字形代码生成器

本软件可实现7段数码管字形代码的自动转换,根据不同的硬件接口自动转换0~9代码和任意代码

上一篇: 独立按键
下一篇: 矩阵键盘
EncodedStar
博客等级 码龄10年 2614粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值