//================文件tm1629.h================================#ifndef _TM1629_H_#define _TM1629_H_//#include "tm1629.h"/*#defineP_1668DATLATA0 //数据输出端口#defineP_1668CLKLATA1#defineP_1668CSLATC0*///数据命令设置#defineV_MDAT10x40 //写数据到显示区 自动地址增加#defineV_MDAT40x44 //写数据到显示区 固定地址//地址命令设置#defineV_ADDR00xC0 //地址0#defineV_ADDR10xC1 //地址1#defineV_ADDR20xC2 //地址2#defineV_ADDR30xC3 //地址3#defineV_ADDR40xC4 //地址4#defineV_ADDR50xC5 //地址5#defineV_ADDR60xC6 //地址6#defineV_ADDR70xC7 //地址7#defineV_ADDR80xC8 //地址8#defineV_ADDR90xC9 //地址9#defineV_ADDR100xCA //地址10#defineV_ADDR110xCB //地址11#defineV_ADDR120xCC //地址12#defineV_ADDR130xCD //地址13#defineV_ADDR140xCE //地址14#defineV_ADDR150xCF //地址15//显示控制 - 亮度调节#defineV_DIS16_010x80 //显示宽度1/16#defineV_DIS16_020x81 //显示宽度2/16#defineV_DIS16_030x82 //显示宽度4/16#defineV_DIS16_100x83 //显示宽度10/16#defineV_DIS16_110x84 //显示宽度11/16#defineV_DIS16_120x85 //显示宽度12/16#defineV_DIS16_130x86 //显示宽度13/16#defineV_DIS16_140x87 //显示宽度14/16#defineV_DIS16_OFF0x00 //显示关#defineV_DIS16_ON0x88 //显示开//---------------------------------------------// V_DIS16_01#defineV_LED_LIGHT1(V_DIS16_02|V_DIS16_ON) //显示亮度设置#defineV_LED_LIGHT2(V_DIS16_12|V_DIS16_ON) //显示亮度设置//-------------------------------------------extern void TM1629_WriteCommand(uint8 Comm);extern void TM1629_WriteDat(uint8 *InDat,uint8 DspLight);#endif//================文件tm1629.c==============================#include "global.h" #include "tm1629.h"#defineTM1629_CS_HIGHP_1629CS = 1#defineTM1629_CS_LOWP_1629CS = 0#defineTM1629_DAT_HIGHP_1629DAT = 1#defineTM1629_DAT_LOWP_1629DAT = 0#defineTM1629_CLK_HIGHP_1629CLK = 1#defineTM1629_CLK_LOWP_1629CLK = 0//----------------------------#defineV_NOP1//3 5//*************************************// 函数名称:Nop1629// 函数功能:延时函数// 入口参数:延时时间// 出口参数:无//***************************************void Nop1629(uint8 T_Dly){while(T_Dly--);return ;}//**************************************// 函数名称:TM1629_WriteByteData// 函数功能:TM1668发送一字节数据// 入口参数:要发送的数据// 出口参数://***************************************void TM1629_WriteByteData(uint8 Data) { uint8 i; Nop1629(V_NOP) ;for(i=8;i>0;i--) { TM1629_CLK_LOW ; if(Data & 0x01) {TM1629_DAT_HIGH ;} else {TM1629_DAT_LOW ;} Data >>= 1 ;Nop1629(V_NOP) ;TM1629_CLK_HIGH ; Nop1629(V_NOP) ; } }//**************************************// 函数名称:TM1668_WriteCommand// 函数功能:写设置命令// 入口参数:设置命令参数// 出口参数:无//***************************************void TM1629_WriteCommand(uint8 Comm){TM1629_CS_LOW ; Nop1629(V_NOP) ; TM1629_WriteByteData(Comm); TM1629_CS_HIGH ; }//**************************************// 函数名称:TM1668_WriteAddrData// 函数功能:向固定地址写一个数据// 入口参数:地址 数据// 出口参数:无//***************************************void TM1629_WriteAddrData(uint8 Addr,uint8 Data){TM1629_CS_LOW ; TM1629_WriteByteData(Addr); //写地址TM1629_WriteByteData(Data); //写数据SSTM1629_CS_HIGH ; }//**************************************// 函数名称:TM1629_WriteDat// 函数功能:TM1629 写缓冲区数据// 入口参数:显示数据缓存区// 出口参数:// 备注://***************************************void TM1629_WriteDat(uint8 *InDat,uint8 DspLight){uint8 i ;uint8 Addr ; TM1629_WriteCommand(V_MDAT4) ; //写数据到1629 固定地址模式 TM1629_WriteCommand(DspLight) ;//V_LED_LIGHT1显示对比度 //-----Addr = V_ADDR0 ;//从第1个地址开始写for(i=16;i>0;i--) //刷显数据 6{ TM1629_WriteAddrData(Addr,*InDat) ;Addr ++ ;InDat ++ ; }//-----}
TM1629操作源代码-LED驱动IC