• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

发一个DM413的三基色LED驱动程序

#include
#include
#include       //端口
#include     //函数

void DM413_Sys_delay(unsigned int Key_i)  //系统延时
{
  unsigned char idata Key_j;
  while((Key_i--)!=0)
    {
      //WDTRST=0x1E;
      //WDTRST=0xE1;   //喂狗
      for(Key_j =  0;Key_j < 1;Key_j ++);
    }
}

//传入的数据依次为红,绿,蓝 ,数据格式为16进制.256个数值.
void DM413_Send(unsigned char Red_Data,unsigned char Green_Data,unsigned char Blue_Data)
{
unsigned char i,Date_R,Date_G,Date_B;   //R变量,G变量,B变量
Date_R = Red_Data;   //赋予R变量值
Date_G = Green_Data;   //赋予G变量值
Date_B = Blue_Data;   //赋予B变量值
STB = 0;
DAI = 0;
CKI = 0;

STB = 1;    //打开使能端
for(i=8;i>0;i--)   //发送红色数据
{
CKI = 0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
if(Date_R & 0x80)     DAI = 1;
    else         DAI = 0;
CKI = 1;
Date_R <<= 1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
DAI = 0;
}
for(i=8;i>0;i--)   //发送绿色数据
{
CKI = 0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
if(Date_G & 0x80)     DAI = 1;
    else         DAI = 0;
CKI = 1;
Date_G <<= 1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
DAI = 0;
}
for(i=8;i>0;i--)   //发送绿色数据
{
CKI = 0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
if(Date_B & 0x80)     DAI = 1;
    else         DAI = 0;
CKI = 1;
Date_B <<= 1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
DAI = 0;
}
STB = 0;    //关闭使能端
CKI = 0;
DM413_Sys_delay(4);
    
DAI = 0;
}
全部回复(0)
正序查看
倒序查看
现在还没有回复呢,说说你的想法