程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> TM1629操作源代碼-LED驅動IC

TM1629操作源代碼-LED驅動IC

編輯:C++入門知識

TM1629操作源代碼-LED驅動IC


//================文件tm1629.h================================

#ifndef _TM1629_H_
#define _TM1629_H_
//#include "tm1629.h"

/*
#define	P_1668DAT		LATA0 //數據輸出端口
#define	P_1668CLK		LATA1
#define	P_1668CS		LATC0
*/

//數據命令設置
#define		V_MDAT1		0x40 //寫數據到顯示區 自動地址增加	
#define		V_MDAT4		0x44 //寫數據到顯示區 固定地址	

//地址命令設置
#define		V_ADDR0			0xC0 //地址0
#define		V_ADDR1			0xC1 //地址1	
#define		V_ADDR2			0xC2 //地址2
#define		V_ADDR3			0xC3 //地址3
#define		V_ADDR4			0xC4 //地址4
#define		V_ADDR5			0xC5 //地址5
#define		V_ADDR6			0xC6 //地址6	
#define		V_ADDR7			0xC7 //地址7
#define		V_ADDR8			0xC8 //地址8
#define		V_ADDR9			0xC9 //地址9
#define		V_ADDR10		0xCA //地址10
#define		V_ADDR11		0xCB //地址11
#define		V_ADDR12		0xCC //地址12
#define		V_ADDR13		0xCD //地址13
#define		V_ADDR14		0xCE //地址14
#define		V_ADDR15		0xCF //地址15


//顯示控制 - 亮度調節
#define		V_DIS16_01		0x80 //顯示寬度1/16
#define		V_DIS16_02		0x81 //顯示寬度2/16
#define		V_DIS16_03		0x82 //顯示寬度4/16	
#define		V_DIS16_10		0x83 //顯示寬度10/16
#define		V_DIS16_11		0x84 //顯示寬度11/16
#define		V_DIS16_12		0x85 //顯示寬度12/16
#define		V_DIS16_13		0x86 //顯示寬度13/16	
#define		V_DIS16_14		0x87 //顯示寬度14/16

#define		V_DIS16_OFF		0x00 //顯示關
#define		V_DIS16_ON		0x88 //顯示開

//---------------------------------------------
//	  V_DIS16_01
#define		V_LED_LIGHT1	(V_DIS16_02|V_DIS16_ON)  //顯示亮度設置
#define		V_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"


#define		TM1629_CS_HIGH	P_1629CS = 1
#define		TM1629_CS_LOW	P_1629CS = 0

#define		TM1629_DAT_HIGH	P_1629DAT = 1
#define		TM1629_DAT_LOW	P_1629DAT = 0

#define		TM1629_CLK_HIGH	P_1629CLK = 1
#define		TM1629_CLK_LOW	P_1629CLK = 0

//----------------------------
#define		V_NOP		1//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); //寫數據SS
	TM1629_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 ++ ;	  
	}
	//-----
	
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved