数码管驱动_数码管驱动程序 - CSDN
精华内容
参与话题
  • 数码管原理及驱动应用

    千次阅读 2019-01-25 12:25:28
    百度百科:数码管的一种是半导体发光器件,数码管可分为七段数码管和八段数码管,区别在于八段数码管比七段数码管多一个用于显示小数点的发光二极管单元DP(decimal point),其基本单元是发光二极管。 下图是...

            百度百科:数码管的一种是半导体发光器件,数码管可分为七段数码管和八段数码管,区别在于八段数码管比七段数码管多一个用于显示小数点的发光二极管单元DP(decimal point),其基本单元是发光二极管

    下图是数码管内部原理图:

    相信很多嵌入式的朋友们每次使用数码管的时候都要重新去找相应数码管的段选Code,有点小麻烦,为此将一些写好的程序贴到这里,方便使用:

    • 共阳极数码管(带小数点)段选Code如下:
    /*共阳极数码管(带小数点)*/
    unsigned char code CASEG_CODE[] =
    {
        0xC0,/*"0"*/ 0xF9,/*"1"*/ 0xA4,/*"2"*/ 0xB0,/*"3"*/ 0x99,/*"4"*/
        0x92,/*"5"*/ 0x82,/*"6"*/ 0xF8,/*"7"*/ 0x80,/*"8"*/ 0x90,/*"9"*/
        0x88,/*"A"*/ 0x83,/*"B"*/ 0xC6,/*"C"*/ 0xA1,/*"D"*/ 0x86,/*"E"*/
        0x8E,/*"F"*/ 0x89,/*"H"*/ 0xC7,/*"L"*/ 0xC8,/*"n"*/ 0xC1,/*"u"*/
        0x8C,/*"P"*/ 0xA3,/*"o"*/ 0xBF,/*"-"*/ 0xFF,/*熄灭*/ 0xFF /*自定义*/
    };
    • 共阴极数码管(带小数点)段选Code如下:
    /*共阴极数码管(带小数点)*/
    unsigned char code CCSEG_CODE[] = 
    { 
        0x3F,/*"0"*/ 0x06,/*"1"*/ 0x5B,/*"2"*/ 0x4F,/*"3"*/ 0x66,/*"4"*/
        0x6D,/*"5"*/ 0x7D,/*"6"*/ 0x07,/*"7"*/ 0x7F,/*"8"*/ 0x6F,/*"9"*/
        0x77,/*"A"*/ 0x7C,/*"B"*/ 0x39,/*"C"*/ 0x5E,/*"D"*/ 0x79,/*"E"*/
        0x71,/*"F"*/ 0x76,/*"H"*/ 0x38,/*"L"*/ 0x37,/*"n"*/ 0x3E,/*"u"*/
        0x73,/*"P"*/ 0x5C,/*"o"*/ 0x40,/*"-"*/ 0x00,/*熄灭*/0x00 /*自定义*/
    };

    当然还有小软件送给大家“LED代码查询”和“单片机小精灵”

    展开全文
  • #include #include "./delay/delay.h" #include #define SEGPORT P0 sbit bit_sel = P2^0; ...sbit seg_sel = P2^1;...unsigned char segdata[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x
    #include <reg52.h>
    #include "./delay/delay.h"
    #include <intrins.h>
    #define SEGPORT P0
    sbit bit_sel = P2^0;
    sbit seg_sel = P2^1;
    unsigned char segdata[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
    unsigned char bitdata[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
    void main()
    {
        unsigned char i;
        //unsigned char temp;  
       //SEGPORT = 0x7f;
       //bit_sel = 0;
       //bit_sel = 1;
       //bit_sel = 0;
       //temp = 0x7f;
     
       while(1)
        { 
           for(i = 0; i < 8; i++)
           {
           SEGPORT = 0x0;
           seg_sel = 1;
           seg_sel = 0;
         
           SEGPORT = 0xff;
           bit_sel = 1;
           bit_sel = 0;
         
             SEGPORT = segdata[i];
             seg_sel = 1;
             seg_sel = 0;
         
           SEGPORT = bitdata[i];
             bit_sel = 1;
             bit_sel = 0;
        
             delay_ms(2);
            }
      }
    }
    展开全文
  • TM1640 8段*16位 数码管驱动程序

    万次阅读 2018-08-25 13:51:55
    TM1640 是一种LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 驱动等电路。本产品性能优良,质量可靠。主要应用于电子产品LED显示屏驱动。采用SOP28的封装形式。 特性说明 ...

    概述

    TM1640 是一种LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 驱动等电路。本产品性能优良,质量可靠。主要应用于电子产品LED显示屏驱动。采用SOP28的封装形式。

    特性说明

    1. 采用CMOS工艺
    2. 显示模式(8 段×16 位)
    3. 辉度调节电路(占空比 8 级可调)
    4. 两线串行接口(SCLK,DIN)
    5. 振荡方式:内置RC 振荡
    6. 内置上电复位电路
    7. 封装形式:SOP28

    管脚定义:

    这里写图片描述

    注意,官方文档显示可以使用 共阴和共阴接线方式,实际使用当中请务必使用共阴极数码管,不然程序很难控制.

    这里写图片描述

    官方文档下载

    TM1640 PDF

    驱动部分程序

    #define WRITE_DATA_MODE_Z   0x40        // 地址自动加
    #define WRITE_DATA_MODE_G   0x44        // 固定地址
    #define START_DATA          0xC0        // 
    #define DISPLAY_EN          0x8A        // 开显示
    #define DISPLAY_DIS         0x80        // 关显示
    
    // 端口定义
    sbit SCLK   =   P2^7;
    sbit DIO    =   P2^6;
    
    unsigned char DisBuf[16];           // 显示缓存
    
    unsigned char code ch_table[]={
            0x3F,  //"0"
            0x06,  //"1"
            0x5B,  //"2"
            0x4F,  //"3"
            0x66,  //"4"
            0x6D,  //"5"
            0x7D,  //"6"
            0x07,  //"7"
            0x7F,  //"8"
            0x6F,  //"9"
            0x77,  //"A"
            0x7C,  //"B"
            0x39,  //"C"
            0x5E,  //"D"
            0x79,  //"E"
            0x71,  //"F"
            0x76,  //"H"
            0x38,  //"L"
            0x37,  //"n"
            0x3E,  //"u"
            0x73,  //"P"
            0x5C,  //"o"
            0x40,  //"-"
            0x00,  //熄灭
    };
    
    // 开始
    void start()
    {
        SCLK=1;
        _nop_();
        _nop_();
        DIO=1;
        _nop_();
        _nop_();
        DIO=0;
        _nop_();
        _nop_();
        SCLK=0;   
    }
    
    void send_data(unsigned char x)          //送数据    低位先传
    {
        unsigned char  i;
        for(i=0;i<8;i++)
        {
            SCLK=0;
            _nop_();
            _nop_();
            DIO=(bit)(x&0x01);
            _nop_();
            _nop_();
            SCLK=1;
            x>>=1;
        }
        SCLK=0;
    }
    
    // 结束
    void stop()
    {
        SCLK=0;
        DIO=0;
        SCLK=1;
        DIO=1;
    }
    
    void Init_Display()
    {
        start();
        send_data(DISPLAY_DIS);         // 关显示
        stop();
    
        start();
        send_data(WRITE_DATA_MODE_Z);   // 自动地址
        stop();
    
        start();
        send_data(0x8F);                // 开显示
        stop();
    }
    
    void Update_Display(void)
    {
        unsigned char i;
    
        if(Sys_Flag_B.Updata_Display_Flag)
        {
            Sys_Flag_B.Updata_Display_Flag = false;
    
            start();
            send_data(START_DATA);              //起始地址
            for(i=0;i<16;i++)                   //送16位数
            {
                send_data(DisBuf[i]);
            }
            stop();
        }
    }
    
    发送前需要转码,将 10进制 转数码管段码
    for(i=0; i<16; i++)
        DisBuf[i] = ch_table[n];
    



    有问题,请留言…


    end!

    展开全文
  • 关注【电子开发圈】微信公众号,一起学习吧! 电子DIY、Arduino、51单片机、STM32单片机、FPGA…… 电子百科、开发技术、职业经验、趣味知识、科技头条、设备拆机…… ... ...hid=7&sn=ad5d...

    博主福利:100G+电子设计学习资源包!

    http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5d5d0f15df84f4a92ebf72f88d4ee8&scene=18#wechat_redirect
    --------------------------------------------------------------------------------------------------------------------------

     

    记得当时刚学器件的时候,叫同学给我讲原理,他当时说你去看datasheet就懂了。

    当时看到一大篇英文的说明书时,马上就退缩了。

    其实刚开始学的时候,几页的英语说明书,只需要找到自己需要的就行了。

    把真值表对着电路图一看,芯片的作用就了解的一清二楚,也不会有误解,因为真值表里的输入输出都是相互对应的。

    数码管的显示用的是74HC138译码器 ,这是一种三通道输入,八通道输出译码器。

    采用动态扫描显示即轮流向各位数码管送出执行码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,

    使人的感觉好像各位数码管同时都在显示。

     

     

     

    #include "reg52.h"             //此文件中定义了单片机的一些特殊功能寄存器
    
    typedef unsigned int u16;      //对数据类型进行声明定义
    typedef unsigned char u8;
    
    sbit LSA=P2^2;
    sbit LSB=P2^3;
    sbit LSC=P2^4;
    
    u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
    
    void delay(u16 i)
    {
        while(i--);    
    }
    
    
    void DigDisplay()
    {
        u8 i;
        for(i=0;i<8;i++)
        {
            switch(i)     //位选,选择点亮的数码管,
            {
                case(0):
                    LSA=0;LSB=0;LSC=0; break;//显示第0位
                case(1):
                    LSA=1;LSB=0;LSC=0; break;//显示第1位
                case(2):
                    LSA=0;LSB=1;LSC=0; break;//显示第2位
                case(3):
                    LSA=1;LSB=1;LSC=0; break;//显示第3位
                case(4):
                    LSA=0;LSB=0;LSC=1; break;//显示第4位
                case(5):
                    LSA=1;LSB=0;LSC=1; break;//显示第5位
                case(6):
                    LSA=0;LSB=1;LSC=1; break;//显示第6位
                case(7):
                    LSA=1;LSB=1;LSC=1; break;//显示第7位    
            }
            P0=smgduan[i];//发送段码
            delay(100); //间隔一段时间扫描    
            P0=0x00;//消隐
        }
    }
    
    void main()
    {    
        while(1)
        {    
            DigDisplay();  //数码管显示函数    
        }        
    }

     

    展开全文
  • tm1638 2*5位 8段共阳数码管驱动, Device: STM32F030CCT6, IDE: IAR,
  • 四位共阳数码管显示驱动,使用 python3 编写。
  • 驱动大尺寸数码管的方法与电路

    千次阅读 2016-01-25 11:27:10
    相信大家都见过数码管数码管上面有abcdefg七个笔画,构成一个“日”字,一般还有一个小数点dp。数码管的外形有不同的大小,其度量标准是其中“日”字的高度,单位一般都是英寸。市场上数码管的尺寸范围一般为 0.25...
  • 数码管的几种驱动方式汇总

    千次阅读 2009-12-08 11:20:00
    数码管的几种驱动方式汇总 这段时间做数码管的电路,所以就专门整理了一下数码管驱动IC和相关问题,集中发在这里便于学习。 数码管的显示方式可以分为动态和静态的。 动态的也叫扫描方式,是利用发光二极管的余辉...
  • 7段数码管显示驱动电路参数推导

    万次阅读 2017-09-15 15:18:28
    以三极管驱动的7段数码管驱动电流计算及电阻参数选择
  • 本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有系统性...
  • 针对研究数码管显示的初学者,本资源包含了TM1640-16位8段数码管驱动程序代码,有助于初步学习如何驱动数码管显示
  • 大尺寸共阴数码管驱动电路

    千次阅读 2016-01-25 11:27:10
    以前做而论道曾经写过“驱动大尺寸数码管的方法与电路”的博文,链接如下:...因为文中的大数码管是共阳的,所以也有一些网友提出问题:驱动共阴的数码管
  • 6脚数码管驱动方式(7脚类似)

    千次阅读 2020-05-04 08:43:21
    最近遇到一个6脚数码管的案子,跟常规的共阴/共阳数码管驱动方式完全不同,处理方法有点特殊,特此记录。先上传数码管的脚位资料。(做的是一个蓝牙对耳充电仓方案,百分比显示充电仓本身的电量,下面显示对耳的左右...
  • verilog数码管驱动显示

    千次阅读 2018-07-30 11:53:43
    实现功能:让4个数码管每隔1s不断递增计数显示,计数范围为0-F(十六进制)。 片选信号:本例中是将公共端接到FPGA的I/O引脚上,这是数码管片选信号,如果这个I/O引脚输出低电平0,那么这个数码管就能够显示数字,...
  • 转载于:https://www.cnblogs.com/fanweisheng/p/11414695.html
  • 关注【电子开发圈】微信公众号,一起学习吧! 电子DIY、Arduino、51单片机、STM32单片机、FPGA…… 电子百科、开发技术、职业经验、趣味知识、科技头条、设备拆机…… ... ...hid=7&sn=ad5d...
  • stm32共阴极四位数码管驱动

    千次阅读 2019-09-16 17:52:47
    自己写的四位数码管驱动 使用Hal库 LED.C #include "main.h" #include "gpio.h" #define getbit(x,y) ((x)>>(y)&1) //first bit is y=0 #define SCLK0 HAL_GPIO_WritePin(SCLK_GPIO_Port,SCLK_Pin...
  • 138和595控制数码管驱动头文件 #ifndef __SMG_H #define __SMG_H #include "reg52.h" #include "delay.h" //---重定义关键词---// #ifndef u8 #define u8 unsigned char #endif #ifndef u16 #define u16 unsigned...
  • 188数码管驱动案方案

    千次阅读 2020-06-02 17:29:07
    最近做的一个案子,需要用单片机的5个引脚来控制一块5PIN的188数码管显示电量 数码管资料如下: 数字1到5表示对应的数码管引脚,利用二极管的单向导通性来点亮单独的LED 驱动程序如下: __sbit PIN1 = PORTA:7; __...
  • 首先给出廉价的LED(发光二极管)多位数码管驭动电路,指出产生各数码管显示...文中还介绍了克服数码管闪烁、增强数码管亮度、增大 V O 端口驱动能力和杭干扰能力、多面显示同样字符时减少连线和降低施工难度等原则或方法
1 2 3 4 5 ... 20
收藏数 4,454
精华内容 1,781
关键字:

数码管驱动