zoukankan      html  css  js  c++  java
  • TM1668 Led 驱动芯片源程序

    #define	P_1668DAT_In	RA0   //数据输入端口
    #define	P_1668DAT		LATA0 //数据输出端口
    #define	P_1668CLK		LATA1
    #define	P_1668CS		LATC0
    
    
    #define		TM1668_CS_HIGH	P_1668CS = 1
    #define		TM1668_CS_LOW	P_1668CS = 0
    
    #define		TM1668_DAT_HIGH	P_1668DAT = 1
    #define		TM1668_DAT_LOW	P_1668DAT = 0
    
    #define		TM1668_CLK_HIGH	P_1668CLK = 1
    #define		TM1668_CLK_LOW	P_1668CLK = 0
    
    
    //显示模式设置命令
    #define		V_MDSP1		0x00 //4位13段
    #define		V_MDSP2		0x01 //5位12段	
    #define		V_MDSP3		0x02 //6位11段	
    #define		V_MDSP4		0x03 //7位10段
    
    //数据命令设置
    #define		V_MDAT1		0x40 //写数据到显示区
    #define		V_MDAT2		0x42 //读键扫数据
    //#define		V_MDAT3		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_DIS16_01		0x80 //显示宽度1/16
    #define		V_DIS16_02		0x81 //显示宽度2/16
    #define		V_DIS16_03		0x82 //显示宽度3/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		0x80 //显示宽度14/16
    #define		V_DIS16_ON		0x88 //显示宽度14/16
    
    //---------------------------------------------
    #define		V_LED_LIGHT		(V_DIS16_10|V_DIS16_ON)  //显示亮度设置
    
    
    //----------------------------
    #define		V_NOP		3//5
    //*************************************
    // 函数名称:Nop1668
    // 函数功能:延时函数
    // 入口参数:延时时间
    // 出口参数:无
    //***************************************
    void Nop1668(uint8 T_Dly)
    {	
    	while(T_Dly--);			
    	return ;
    }
    //**************************************
    // 函数名称:TM1668_WriteByteData
    // 函数功能:TM1668发送一字节数据
    // 入口参数:要发送的数据
    // 出口参数:
    //***************************************
    void TM1668_WriteByteData(uint8 Data)   
    {   
     	uint8 i;  
    
     	Nop1668(V_NOP) ;
    	for(i=8;i>0;i--)   
    	{   
    		TM1668_CLK_LOW ;   
    		if((Data & 0x01) == 0) 
    		{
    			TM1668_DAT_LOW ;
    		}   
    		else  
    		{
    			TM1668_DAT_HIGH ;
    		}   
    		Data >>= 1 ;
    		Nop1668(V_NOP) ;
    
    		TM1668_CLK_HIGH ; 
    	    Nop1668(V_NOP) ;  
    	}   
    }
    //**************************************
    // 函数名称:TM1668_ReadByteData
    // 函数功能:读TM1668一字节数据
    // 入口参数:无
    // 出口参数:
    // 返回值 : 所读的数据
    //***************************************
    uint8 TM1668_ReadByteData(void)   
    {   
    	uint8 i; 
    	uint8 RetValue = 0 ; 
    
     	TM1668_CLK_LOW ;  
    	for(i=0;i<8;i++)   
    	{   
    		Nop1668(V_NOP) ;
    	
    		TM1668_CLK_HIGH ; 
    		RetValue >>= 1 ;	//先读出的是低位
    		if(P_1668DAT_In)
    		{
    			RetValue |= 0x80 ;
    		}
    		TM1668_CLK_LOW ;      
    	}   
    
       	return	(RetValue);    
    }
    //**************************************
    // 函数名称:TM1668_WriteCommand
    // 函数功能:写设置命令
    // 入口参数:设置命令参数
    // 出口参数:无
    //***************************************
    void TM1668_WriteCommand(uint8 Comm)
    {
    	TM1668_CS_LOW ;  
    	Nop1668(V_NOP) ; 	
    	TM1668_WriteByteData(Comm);
     	TM1668_CS_HIGH ; 	
    }
    //**************************************
    // 函数名称:TM1668_WriteAddrData
    // 函数功能:向固定地址写一个数据	
    // 入口参数:地址 数据
    // 出口参数:无
    //***************************************
    void TM1668_WriteAddrData(uint8 Addr,uint8 Data)
    {
    	TM1668_CS_LOW ;  
    	TM1668_WriteByteData(Addr); //写地址
    	TM1668_WriteByteData(Data); //写数据
    	TM1668_CS_HIGH ; 	
    }
    
    
    
    //----应用实例---------
    //**************************************
    // 函数名称:TM1668_ReadKey
    // 函数功能:TM1668 读按键值	
    // 入口参数:显示数据缓存区
    // 出口参数:
    // 备注:
    //***************************************
    void TM1668_WriteDat(uint8 *InDat)
    {
    	uint8 i ;
    	uint8 Addr,Tmp2 ;
    	
    	TM1668_WriteCommand(V_MDSP4) ;//7位10段
     	TM1668_WriteCommand(V_MDAT1) ; //写数据到1668 固定模式
    	//-----
    	Addr = V_ADDR2 ;
    	for(i=0;i<5;i++)  //刷显数据
    	{
    		if((*InDat) & 0x01)
    		{
    			Tmp2 = 0x01 ;
    		}
    		else
    		{
    			Tmp2 = 0x00 ;
    		}
    	 	TM1668_WriteAddrData(Addr,Tmp2) ;
    		Addr += 2 ;  //地址加2
    		(*InDat) >>= 1 ;	
    	}
    	//-----
    	TM1668_WriteCommand(V_LED_LIGHT) ;	//设置亮度 开启显示
    }
    //**************************************
    // 函数名称:TM1668_ReadKey
    // 函数功能:TM1668 读按键值	
    // 入口参数:无
    // 出口参数:
    // 返回值 : 返回按键值
    //***************************************
    void TM1668_ReadKey(uint8 *OutDat)
    {
    	uint8  i ;
    
    	TM1668_CS_LOW ;  
    	Nop1668(V_NOP) ; 	
    	TM1668_WriteByteData(V_MDAT2) ; //读按键值
    
    	Nop1668(V_NOP) ; 
    	Nop1668(V_NOP) ; 
    
    	TM1668_DAT_HIGH ; //读前数据置高
    	*OutDat = TM1668_ReadByteData() ;//	只读一个字节
    
    /*	for(i=5;i>0;i--) //读所有按键的值
    	{
    		*OutDat = TM1668_ReadByteData() ;	
    		OutDat ++ ;	
    	}*/
    	TM1668_CS_HIGH ; 
    }


  • 相关阅读:
    部署 AppGlobalResources 到 SharePoint 2010
    还原一个已删除的网站集
    使用仪表板设计器配置级联筛选器 (SharePoint Server 2010 SP1)
    File or arguments not valid for site template
    Pex and Moles Documentation
    Content Query Webpart匿名访问
    Running Moles using NUnit Console from Visual Studio
    Calling a WCF Service using jQuery in SharePoint the correct way
    Updating Content Types and Site Columns That Were Deployed as a Feature
    asp.net中判断传过来的字符串不为空的代码
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3231153.html
Copyright © 2011-2022 走看看