51单片机+tm1620驱动3位数码管程序

2016-12-10 17:05:01来源: eefocus 关键字:51单片机  m1620  数码管

TM1620 是天微公司生产的二极管驱动芯片,SOP20封装。芯片如下图所示:

最多可以驱动6个8位数码管,如下图所示:

程序如下:

/**************************************************
 * 名称:STC51驱动TM1620 3位数码管显示
 * MCU: STC12C5608AD
 * 主频:12Mhz(外部接12MHz晶振)
 * 作者:Ration
 * 时间:2013年12月5日(整理)
 * 版权:版权归《单片机学习网》所有,传播请保持完整性
 *
 * 更多程序请访问:http://www.rationmcu.com
 *************************************************/
#include "stc12c5608ad.h"
#include ins.h>

#define uint  unsigned int     // 宏定义uint (0~65535)
#define uchar unsigned char  // 
#define uint32 unsigned long 


sbit STB =P3^2;        // 定义片选通讯口
sbit CLK =P3^3;        // 定义时钟通讯口
sbit DIO =P3^4;        // 定义数据输入/输出通讯口

uchar bai_num,shi_num,ge_num;


static uchar code LED_tab[11]={  // 定义数码管0~9数字码表
0x3f,    //0B00111111,       //0
0x30,    //0B00000110,       //1
0x6d,    //0B01011011,         //2
0x79,    //0B01001111,         //3
0x33,    //0B01100110,         //4
0x5b,    //0B01101101,         //5
0x5f,    //0B01111101,         //6
0x70,    //0B00000111,         //7
0x7f,    //0B01111111,         //8
0x7B,    //0B01101111,         //9
0x4f,                         //E                                               
};

void delay_ms(uchar cyc)
{
    //当将=1的时候,延时1ms
    uchar ii,jj;

    for(jj=1;jj<=cyc;jj++)
    {
        for(ii=0;ii<200;ii++)
        {
            _nop_();
        }
    }
}


void TM1620_Write(uchar wr_data)
{
    uchar i;

    for(i=0;i<8;i++)
    {
        CLK = 0;
        if(wr_data&0x01)DIO = 1;
        else DIO = 0;
        CLK = 1;
        wr_data>>=1;
    }                 
}

void Write_COM(unsigned char cmd)        //发送命令字
{
    STB = 0;
    TM1620_Write(cmd);
    STB = 1;
}

void init_TM1620(void)
{
    Write_COM(0x44);  // 01000000准备写数据到显示寄存器,普通模式,自动地址增加
    STB=0;
    TM1620_Write(0xc0);     // 11000000 设置显示地址从0开始
    TM1620_Write(0x00);      // 所有显示为灭
    STB=1;
    STB=0;
    TM1620_Write(0xc2);
    TM1620_Write(0x00);
    STB=1;
    STB=0;
    TM1620_Write(0xc4);
    TM1620_Write(0x00);
    STB=1;
    Write_COM(0x8f);  // 最亮    10001111 设置消光脉冲14/16 显示开
}

void led_show()
{
//    Write_COM(0x44);  // 01000000准备写数据到显示寄存器,普通模式,自动地址增加
    STB=0;
    TM1620_Write(0xc0);     // 11000000 设置显示地址从0开始
    TM1620_Write(LED_tab[bai_num]);      // 所有显示为灭
    STB=1;
    STB=0;
    TM1620_Write(0xc2);     // 11000000 设置显示地址从0开始
    TM1620_Write(LED_tab[shi_num]);      // 所有显示为灭
    STB=1;    
    STB=0;
    TM1620_Write(0xc4);     // 11000000 设置显示地址从0开始
    TM1620_Write(LED_tab[ge_num]);      // 所有显示为灭
    STB=1;
}





void main()
{
    CLK = 1;            // 上拉TM1620通信时钟引脚
    STB = 1;            // 上拉TM1620通信片选引脚
    DIO = 1;            // 上拉TM1620通信数据引脚

    init_TM1620();      // 初始化LED控制芯片
    bai_num=0;
    shi_num=0;
    ge_num=0;
    led_show();

    while(1)
    {
        ;
    }
}

完整keil工程文件,请按如下方法获取!


关键字:51单片机  m1620  数码管

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/article_2016121032165.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:51单片机PWM占空比不到0的解决方案
下一篇:最后一页

论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
51单片机
m1620
数码管

小广播

独家专题更多

迎接创新的黄金时代 无创想,不奇迹
迎接创新的黄金时代 无创想,不奇迹
​TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved