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
数码管

小广播

独家专题更多

东芝在线展会——芯科技智社会创未来
东芝在线展会——芯科技智社会创未来
2017东芝PCIM在线展会
2017东芝PCIM在线展会
TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源

何立民专栏

单片机及嵌入式宝典

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

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