EXC2618N LED矩阵驱动程序
2015-06-02 16:14
141 查看
/******************** (C) COPYRIGHT 2015 ********************
* 文件名 :XYF_EXC2618.c
* 描述 :EXC2618N LED驱动函数实现
* 备注 :
* 作者 :
* 时间 :
***************************************************************/
//#include "STC15F2K60S2.H"
#include "STC15Fxxxx.H"
#include <intrins.h>
#include "XYF_EXC2618N.h"
#include "XYF_GPIO.h"
#include "delays.h"
/*************************************
*功能 :产品1 EXC2618N 初始化,LED全灭
*输入参数 :无
*输出参数 :无
*返回值:无
*备注 :?
***************************************/
void EXC2618N_PDT1_init(void)
{
EXC2618N_PDT1_WRITE_CMD(DATA_MOD2_SET_CMD); //固定地址模式
EXC2618N_PDT1_WRITE(ADDR3_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT1_WRITE(ADDR1_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT1_WRITE(ADDR5_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT1_WRITE(ADDR7_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT1_WRITE_CMD(DIS_OFF_CMD); //显示关闭
}
/*************************************
*函数名:EXC2618N_PDT2_init
*功能 :产品2 EXC2618N 初始化
*输入参数 :无
*输出参数 :无
*返回值:无
*备注 :
***************************************/
void EXC2618N_PDT2_init(void)
{
EXC2618N_PDT2_WRITE_CMD(DATA_MOD2_SET_CMD); //固定地址模式
EXC2618N_PDT2_WRITE(ADDR3_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT2_WRITE(ADDR1_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT2_WRITE(ADDR5_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT2_WRITE(ADDR7_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT2_WRITE_CMD(DIS_OFF_CMD); //显示关闭
}
/*************************************
*函数名:EXC2618N_PDT1_WRITE_CMD
*功能 :产品1 向EXC2618N写命令
*输入参数 :cmd1=命令
*输出参数 :无
*返回值:无
*备注 :?
***************************************/
void EXC2618N_PDT1_WRITE_CMD(u8 cmd1)
{
u8 i;
STB1=0; //STB在下降沿初始化串行接口,随后等待接收命令
PD1_Delay1ms();
for(i=0;i<8;i++)
{
CLK1=0;
DAT1=(bit)(cmd1&0x01); //从低位开始,在时钟上升沿输入串行数据
PD1_Delay1us(); //低电平必须大于400ns
CLK1=1;
PD1_Delay1us(); //高电平必须大于100ns
cmd1>>=1;
}
STB1=1;
}
/*************************************
*函数名:EXC2618N_PDT1_WRITE
*功能 :产品1 向EXC2618N写数据或命令 ,串行数据传输格式
*输入参数 :cmd1=命令 ,dat1=数据
*输出参数 :无
*返回值:无
*备注 :?串行数据传输模式:固定地址模式
***************************************/
void EXC2618N_PDT1_WRITE(u8 cmd1,u8 dat1)
{
u8 i;
STB1=0; //STB在下降沿初始化串行接口,随后等待接收命令
PD1_Delay1ms();
for(i=0;i<8;i++)
{
CLK1=0;
DAT1=(bit)(cmd1&0x01); //从低位开始,在时钟上升沿输入串行数据
PD1_Delay1us(); //低电平必须大于400ns
CLK1=1;
PD1_Delay1us(); //高电平必须大于100ns
cmd1>>=1;
}
PD1_Delay1ms();
for(i=0;i<8;i++)
{
CLK1=0;
DAT1=(bit)(dat1&0x01); //从低位开始,在时钟上升沿输入串行数据
PD1_Delay1us(); //低电平必须大于400ns
CLK1=1;
PD1_Delay1us(); //高电平必须大于100ns
dat1>>=1;
}
STB1=1;
}
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
/*************************************
*函数名:EXC2618N_PDT2_WRITE_CMD
*功能 :产品2 向EXC2618N写命令
*输入参数 :cmd2=命令
*输出参数 :无
*返回值:无
*备注 :?
***************************************/
void EXC2618N_PDT2_WRITE_CMD(u8 cmd2)
{
u8 i;
STB2=0; //STB在下降沿初始化串行接口,随后等待接收命令
PD2_Delay1ms();
for(i=0;i<8;i++)
{
CLK2=0;
DAT2=(bit)(cmd2&0x01); //从低位开始,在时钟上升沿输入串行数据
PD2_Delay1us(); //低电平必须大于400ns
CLK2=1;
PD1_Delay1us(); //数据锁存高电平必须大于100ns
cmd2>>=1;
}
STB2=1;
}
/*************************************
*函数名:EXC2618N_PDT2_WRITE
*功能 :产品2 向EXC2618N写数据或命令 ,串行数据传输格式
*输入参数 :cmd2=命令 ,dat2=数据
*输出参数 :无
*返回值:无
*备注 :?串行数据传输模式:固定地址模式
***************************************/
void EXC2618N_PDT2_WRITE(u8 cmd2,u8 dat2)
{
u8 i;
STB2=0; //STB在下降沿初始化串行接口,随后等待接收命令
PD2_Delay1ms();
for(i=0;i<8;i++)
{
CLK2=0;
DAT2=(bit)(cmd2&0x01); //从低位开始,在时钟上升沿输入串行数据
PD2_Delay1us(); //低电平必须大于400ns
CLK2=1;
PD1_Delay1us(); //数据锁存高电平必须大于100ns
cmd2>>=1;
}
PD2_Delay1ms();
for(i=0;i<8;i++)
{
CLK2=0;
DAT2=(bit)(dat2&0x01); //从低位开始,在时钟上升沿输入串行数据
PD2_Delay1us(); //低电平必须大于400ns
CLK2=1;
PD1_Delay1us(); //数据锁存高电平必须大于100ns
dat2>>=1;
}
STB2=1;
}
* 文件名 :XYF_EXC2618.c
* 描述 :EXC2618N LED驱动函数实现
* 备注 :
* 作者 :
* 时间 :
***************************************************************/
//#include "STC15F2K60S2.H"
#include "STC15Fxxxx.H"
#include <intrins.h>
#include "XYF_EXC2618N.h"
#include "XYF_GPIO.h"
#include "delays.h"
/*************************************
*功能 :产品1 EXC2618N 初始化,LED全灭
*输入参数 :无
*输出参数 :无
*返回值:无
*备注 :?
***************************************/
void EXC2618N_PDT1_init(void)
{
EXC2618N_PDT1_WRITE_CMD(DATA_MOD2_SET_CMD); //固定地址模式
EXC2618N_PDT1_WRITE(ADDR3_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT1_WRITE(ADDR1_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT1_WRITE(ADDR5_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT1_WRITE(ADDR7_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT1_WRITE_CMD(DIS_OFF_CMD); //显示关闭
}
/*************************************
*函数名:EXC2618N_PDT2_init
*功能 :产品2 EXC2618N 初始化
*输入参数 :无
*输出参数 :无
*返回值:无
*备注 :
***************************************/
void EXC2618N_PDT2_init(void)
{
EXC2618N_PDT2_WRITE_CMD(DATA_MOD2_SET_CMD); //固定地址模式
EXC2618N_PDT2_WRITE(ADDR3_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT2_WRITE(ADDR1_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT2_WRITE(ADDR5_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT2_WRITE(ADDR7_SET_CMD,DIS_DATA4); //命令+数据
EXC2618N_PDT2_WRITE_CMD(DIS_OFF_CMD); //显示关闭
}
/*************************************
*函数名:EXC2618N_PDT1_WRITE_CMD
*功能 :产品1 向EXC2618N写命令
*输入参数 :cmd1=命令
*输出参数 :无
*返回值:无
*备注 :?
***************************************/
void EXC2618N_PDT1_WRITE_CMD(u8 cmd1)
{
u8 i;
STB1=0; //STB在下降沿初始化串行接口,随后等待接收命令
PD1_Delay1ms();
for(i=0;i<8;i++)
{
CLK1=0;
DAT1=(bit)(cmd1&0x01); //从低位开始,在时钟上升沿输入串行数据
PD1_Delay1us(); //低电平必须大于400ns
CLK1=1;
PD1_Delay1us(); //高电平必须大于100ns
cmd1>>=1;
}
STB1=1;
}
/*************************************
*函数名:EXC2618N_PDT1_WRITE
*功能 :产品1 向EXC2618N写数据或命令 ,串行数据传输格式
*输入参数 :cmd1=命令 ,dat1=数据
*输出参数 :无
*返回值:无
*备注 :?串行数据传输模式:固定地址模式
***************************************/
void EXC2618N_PDT1_WRITE(u8 cmd1,u8 dat1)
{
u8 i;
STB1=0; //STB在下降沿初始化串行接口,随后等待接收命令
PD1_Delay1ms();
for(i=0;i<8;i++)
{
CLK1=0;
DAT1=(bit)(cmd1&0x01); //从低位开始,在时钟上升沿输入串行数据
PD1_Delay1us(); //低电平必须大于400ns
CLK1=1;
PD1_Delay1us(); //高电平必须大于100ns
cmd1>>=1;
}
PD1_Delay1ms();
for(i=0;i<8;i++)
{
CLK1=0;
DAT1=(bit)(dat1&0x01); //从低位开始,在时钟上升沿输入串行数据
PD1_Delay1us(); //低电平必须大于400ns
CLK1=1;
PD1_Delay1us(); //高电平必须大于100ns
dat1>>=1;
}
STB1=1;
}
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
/*************************************
*函数名:EXC2618N_PDT2_WRITE_CMD
*功能 :产品2 向EXC2618N写命令
*输入参数 :cmd2=命令
*输出参数 :无
*返回值:无
*备注 :?
***************************************/
void EXC2618N_PDT2_WRITE_CMD(u8 cmd2)
{
u8 i;
STB2=0; //STB在下降沿初始化串行接口,随后等待接收命令
PD2_Delay1ms();
for(i=0;i<8;i++)
{
CLK2=0;
DAT2=(bit)(cmd2&0x01); //从低位开始,在时钟上升沿输入串行数据
PD2_Delay1us(); //低电平必须大于400ns
CLK2=1;
PD1_Delay1us(); //数据锁存高电平必须大于100ns
cmd2>>=1;
}
STB2=1;
}
/*************************************
*函数名:EXC2618N_PDT2_WRITE
*功能 :产品2 向EXC2618N写数据或命令 ,串行数据传输格式
*输入参数 :cmd2=命令 ,dat2=数据
*输出参数 :无
*返回值:无
*备注 :?串行数据传输模式:固定地址模式
***************************************/
void EXC2618N_PDT2_WRITE(u8 cmd2,u8 dat2)
{
u8 i;
STB2=0; //STB在下降沿初始化串行接口,随后等待接收命令
PD2_Delay1ms();
for(i=0;i<8;i++)
{
CLK2=0;
DAT2=(bit)(cmd2&0x01); //从低位开始,在时钟上升沿输入串行数据
PD2_Delay1us(); //低电平必须大于400ns
CLK2=1;
PD1_Delay1us(); //数据锁存高电平必须大于100ns
cmd2>>=1;
}
PD2_Delay1ms();
for(i=0;i<8;i++)
{
CLK2=0;
DAT2=(bit)(dat2&0x01); //从低位开始,在时钟上升沿输入串行数据
PD2_Delay1us(); //低电平必须大于400ns
CLK2=1;
PD1_Delay1us(); //数据锁存高电平必须大于100ns
dat2>>=1;
}
STB2=1;
}