TM1637四位数码管模块驱动(TM1637.h头文件)51单片机C语言

发布者:皮球最新更新时间:2020-02-06 来源: 51hei关键字:TM1637  四位数码管  模块驱动  头文件  51单片机 手机看文章 扫描二维码
随时随地手机看文章

TM1637四位数码管模块是一个带时钟点的4位共阳数码管(0.36英寸)的显示模块,驱动芯片为TM1637,驱动方式为IIC,因此只需2根信号线即可使单片机控制4位8段数码管(数码管8级灰度可调)。


控制接口:共4个引脚(GND、VCC、DIO、CLK),GND为地,VCC为供电电源,DIO为数据输入输出脚,CLK为时钟信号脚。
 

TM1637.h单片机源程序如下:

sbit CLK= P3^4;   //定义模拟IIC总线的时钟线

sbit DIO = P3^5;   //定义模拟IIC总线的数据线

  

code unsigned char tab[] = 

{

        0x3F,/*0*/

        0x06,/*1*/

        0x5B,/*2*/

        0x4F,/*3*/

        0x66,/*4*/

        0x6D,/*5*/

        0x7D,/*6*/

        0x07,/*7*/

        0x7F,/*8*/

        0x6F,/*9*/

        0x77,/*10 A*/

        0x7C,/*11 b*/

        0x58,/*12 c*/

        0x5E,/*13 d*/

        0x79,/*14 E*/

        0x71,/*15 F*/

        0x76,/*16 H*/

        0x38,/*17 L*/

        0x54,/*18 n*/

        0x73,/*19 P*/

        0x3E,/*20 U*/

        0x00,/*21 黑屏*/

}; 


void Delay_us(unsigned  int i)

{

        for(;i>0;i--)

                _nop_();;

}


//IIC开始

void TM1637_start(void)

{

         CLK=1;

         DIO=1;

         Delay_us(2);

         DIO=0;

}



//IIC应答

void TM1637_ack(void)

{

        uchar i;

        CLK=0;

        Delay_us(5);

         //DIO=1;    

        while(DIO==1&&(i<250))i++;

        CLK=1;

        Delay_us(2);

        CLK=0;

}


//IIC停止

void TM1637_stop(void)

{

         CLK=0;

         Delay_us(2);

         DIO=0;

         Delay_us(2);

         CLK=1;

         Delay_us(2);

         DIO=1;

         Delay_us(2);

}


//写数据函数

void TM1637_Write(unsigned char DATA)   

{

        unsigned char i;   

        for(i=0;i<8;i++)        

        {

                CLK=0;     

                if(DATA & 0x01)

                        DIO=1;

                else DIO=0;

                 Delay_us(3);

                DATA=DATA>>1;      

                CLK=1;

                 Delay_us(3);

        }  

        //TM1637_ack();

}




//按顺序显示

void TM1637_display(uchar a,uchar b,uchar c,uchar d,uchar h)

{


        TM1637_start();

        TM1637_Write(0x40);//写数据+自动地址加1+普通模式

        TM1637_ack();

        TM1637_stop(); 

        TM1637_start();

        TM1637_Write(0xc0);//设置显示首地址即第一个LED

        TM1637_ack();


        TM1637_Write(tab[a]);

        TM1637_ack();

        TM1637_Write(tab[b]|h<<7);//h为1时显示时钟中间的两点

        TM1637_ack();

        TM1637_Write(tab[c]);

        TM1637_ack();

        TM1637_Write(tab[d]);

        TM1637_ack();


        TM1637_stop(); 

        TM1637_start();

        TM1637_Write(0x89);//开显示,2/16亮度

        TM1637_ack();

        TM1637_stop();

}


关键字:TM1637  四位数码管  模块驱动  头文件  51单片机 引用地址:TM1637四位数码管模块驱动(TM1637.h头文件)51单片机C语言

上一篇:51单片机控制电机正反转
下一篇:DS12887+lcd1602万年历仿真原理图+程序

推荐阅读最新更新时间:2024-11-09 17:51

海速芯8051单片机TM52F1376在电子投票机中的应用
8051单片机的应用可减小电子产品的尺寸、成本和复杂性,本篇文章主要介绍海速芯8051单片机TM52F1376在电子投票机中的应用。 TM52F1376电子投票机应用 电子投票机,也就是我们常看到的电视节目中给演唱歌手投票的工具,这是TM52F1376在电子领域的典型应用之一。 如使用某一项目设计的投票机可容纳八名参赛者,那么,八个按钮与八个参赛者相关,其中一个主按钮用于投票权限。通过使用主按钮,可以避免单个人进行多次投票,因为每个人都需要获得其投票的批准(一个人只能将一个选票投票给任何一位参赛者)。 此方案的应用框图由电源模块、按钮、单片机模块、LCD显示屏、蜂鸣器、EEPROM和晶体管等各种模块组成。投票人员的
[单片机]
51单片机——定时器/计数器
1.概述 8051单片机内部有T0和T1两个定时器/计数器。它们既可用作定时器,也可用作计数器,可以通过编程来设置其使用方法。 2.定时器/计数器 2.1 定时功能 2.2.1 定时功能的用法 当定时器/计数器用作定时器时,可以用来计算时间。如果要求单片机在一定的时间后产生某种控制,可将定时器/计数器设为定时器。单片机定时器/计数器的定时功能用法如图1所示。 图1 定时器/计数器的定时功能用法 要将定时器/计数器 T0设为定时器,实际上就是将定时器/计数器与外部输入断开,而与内部信号接通,对内部信号计数来定时。单片机的时钟振荡器可产生12MHz的时钟脉冲信号,经12分频后得到1MHz的脉冲信号
[单片机]
<font color='red'>51单片机</font>——定时器/计数器
#51单片机# UART串口通信的基本应用、模块介绍和串口程序
UART串口通信的基本应用 通信的三种基本类型: 单工通信:值允许一方向另一方传送星系,另一方不能回传信息。例:电视遥控器、收音机广播 半双工通信:数据可在双方之间相互传播,但同一时刻只能一方传给另一方。例:对讲机 全双工通信:发送数据的同时也可接收数据,两者同步进行。例:电话 UART模块介绍 通常情况下,我们关心的是通信的结果而非过程。51单片机内部存在UART模块,可自动接收数据,接收完毕,会发出通知信号。要使用这个模块,需要配置对应的具有特殊功能的寄存器。 51单片机的UART串口结构由串行口控制寄存器SCON、发送和接收电路三部分构成。 先来了解串口控制寄存器SCON SCON——串行控制寄存
[单片机]
#<font color='red'>51单片机</font># UART串口通信的基本应用、<font color='red'>模块</font>介绍和串口程序
51单片机利用74HC595驱动数码管
基于51单片机利用八个数码管花样显示如下: xxx11xxx→xx2222xx→x333333x→44444444→x555555x→xx6666xx→x777777x→88888888 每个状态各一秒,显示反复循环,其中x表示对应的数码管熄灭 问题补充:是共阳极的数码管,利用595芯片驱动的。采用C语言。 =================================================== 最佳答案:程序设计完毕,采用PROTEUS仿真截图如下。 程序如下: //============================================= #include reg52.h #define u
[单片机]
<font color='red'>51单片机</font>利用74HC595<font color='red'>驱动</font>数码管
51单片机中的数据类型解析
  数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。数据类型包括原始类型、多元组、记录单元、代数数据类型、抽象数据类型、参考类型以及函数类型。本文主要以51单片机中的数据类型为中心而展开的话题。   在keil C51或者iar for c8051编译器下:   int 占两个字节 范围:-32768~+32767   long占四个字节 范围:-2147483648~+2147483647   float占四个字节 范围:3.40E+38 ~ +3.40E+38   double占8个字节 范围:-1.79E+308 ~ +1.79E+308   在标准C语言中,存在着如下六种基本数据类型:   1、
[单片机]
<font color='red'>51单片机</font>中的数据类型解析
51单片机:数码管显示
1. 静态数码管显示 点亮数码管需要用到P0端口和P2部分端口,P0端口负责显示要输出的数字,P2部分端口负责让哪个数码管点亮,具体的去看电路图,这次还包含了74HC245和74HC138芯片 现在让单片机数码管区域第三位的数码管显示数字5,程序如下 #include reg52.h //定义P2端口 sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; //用数组来表示数码管上每个数字输出对应的相关电平输入 int str ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f}; void Display(int
[单片机]
<font color='red'>51单片机</font>:数码管显示
MCS-51单片机地址指针详细剖析
MCS-51单片机外部RAM的地址空间为64K,地址总线为16位,访问外接RAM可执行如下4条指令: MOVX A,@DPTR MOVX @DPTR,A MOVX A,@RI MOVX @RI,A 其中DPTR为16位地址寄存器,地址高8位存于DPH,地址低8位存于DPL;Ri(I=0,1)是8位寄存器,作为地址指针时仅存低8位地址。 MCS-51执行上述指令时分为两个阶段:首先,是从外接程序存储器中取出指令代码,并进行分析。然后,执行对外接RAM的数据读/写操作。在这两个阶段,P0口、P1口上的地址选通是有区别的。 执行“MOVX A,@DPTR”和“MOVX @DPTR,A”指令时,在读指令代码阶段,由程序计数器(PC)提供A
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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