找回密码
 请用中文注册用户!

QQ登录

只需一步,快速开始

查看: 3846|回复: 0

(LED学习板)实验23--LED流星灯8段16段-软件生成生成数据

[复制链接]
lxqlzj 发表于 2012-2-3 14:49:07 | 显示全部楼层 |阅读模式

注册登录后可以在线提问,行业从业者将帮助您解答!

您需要 登录 才可以下载或查看,没有账号?请用中文注册用户!

×
//============================================================================
//================翼芯科技 LED流星灯8段16段==软件生成生成数据=================
//============================================================================   
//  此源码版权属 翼芯科技 全权享有,如欲引用,敬请署名并告知
//          严禁随意用于商业目的,违者必究,后果自负
//          公司网站 http://www.mcu-led.com
//          公司论坛 http://www.cpu-led.com
//          淘宝店:  http://cpu-led.taobao.com/  和  http://mcu-led.taobao.com/
//          产品咨询 QQ :1322130074   电话:13715619122
//程序说明:本程序用于实现LED流星灯8段16段,不同步.IC插到U9位置.      
//文件名称:main.C  
//日期:    2011/01/23   
//版本:    1.0  
//C编译器:  keil 8.05
//=============================================================================                    
#include <STC12C5AXX.H>
#define uchar unsigned char
#define uint unsigned int
#define nop() _nop_();_nop_()


sbit DAT = P3^2;        //DM134数据输出
sbit CLK  = P3^3;    //DM134时钟输出
sbit LE   = P3^4;        //DM134锁存口
sbit EN   = P4^4;        //DM134使能口


/******************************************************************
- 功能描述:ms延时  
- 隶属模块:无
- 函数属性:无
- 参数说明:无      
- 返回说明:无
- 注:.....
******************************************************************/
void Delay(uint ms)
{
  uint a,b;
    for(a=ms;a!=0;a--)         
         for(b=250;b!=0;b--)        
         ;
}

/******************************************************************
- 功能描述:DM134传送一个字的数据,        高位在前
- 隶属模块:无
- 函数属性:无
- 参数说明:无      
- 返回说明:无
- 注:.....
******************************************************************/
void DM134(uint dat)
{
  uchar i;
  for(i=16;i!=0;i--)
   {
            CLK=0;        
      DAT=dat&0x01;      //低位在前
      dat=dat>>1;               //左移一位
          CLK=1;                  //上升延数据移入  
   }
  LE=1;                  //寄存器数据更新
  LE=0;
}


/******************************************************************
- 功能描述:实现8段拖尾效果
- 隶属模块:无
- 函数属性:无
- 参数说明:无      
- 返回说明:无
- 注:.....
******************************************************************/
void Grayscale8(uchar speed)
{
    uchar x,y,f;                               //上半
    uint z=0x8000, gray;

    for(y=8;y>0;y--)
     {  
                for(f=speed;f>0;f--)    //流动速度
                 {        
                   gray=z;
                   for(x=8;x>0;x--)  
            {   
              DM134(gray);
                          gray>>=1;
              gray&=z;
                        }
                 }
                z>>=1;
                z|=0x8000;
     }  

        z=0x7f80;
    for(y=16;y>0;y--)                         //下半
     {  
                for(f=speed;f>0;f--)    //流动速度
                 {
                  gray=z;
                  for(x=8;x>0;x--)  
            {   
              DM134(gray);
                             gray>>=1;
              gray&=z;
                        }
                 }
                z>>=1;
     }

}

/******************************************************************
- 功能描述:实现16段拖尾效果
- 隶属模块:无
- 函数属性:无
- 参数说明:无      
- 返回说明:无
- 注:.....
******************************************************************/
void Grayscale16(uchar speed)
{
    uchar x,y,f;
    uint z=0x8000, gray;
    for(y=16;y>0;y--)
     {  
                for(f=speed;f>0;f--)      //流动速度
                 {
                   gray=z;
                   for(x=16;x>0;x--)
            {   
              DM134(gray);
                          gray>>=1;
              gray&=z;
                        }
                 }
           z>>=1;        
           z|=0x8000;;
     }  
        z=0x7fff;
    for(y=16;y>0;y--)
     {  
                for(f=speed;f>0;f--)      //流动速度
                 {
                  gray=z;
                  for(x=16;x>0;x--)
            {   
              DM134(gray);
                          gray>>=1;
              gray&=z;
                        }
                 }
                z>>=1;
     }  
}

/******************************************************************
- 功能描述:主函数   
- 隶属模块:无
- 函数属性:无
- 参数说明:无      
- 返回说明:无
- 注:.....
******************************************************************/
void main(void)
{  
    uchar CNT;

//M1:M0  0:0为标准51;0:1输出;1:0输入;1:1开漏输出
    P0M1=0X00;                              //P0口设为推挽输出
    P0M0=0XFF;

    P4M1=0X00;                              //P4口设为推挽输出
    P4M0=0XFF;

        EN=0;

        P0=0;
        while(1)
          {
         for(CNT=0;CNT<3;CNT++)
           {
                      Grayscale16(100); //16段
                          Delay(100);
                }

         for(CNT=0;CNT<3;CNT++)
          {
                      Grayscale8(250);  //8D段
                        Delay(100);
                  }
                          

          }
}

本版积分规则

QQ|返回首页|有问题扫码关注公众号|LED控制卡 ( 鲁ICP备18053106号 鲁公安网备案号37170202666047 ) keywords:LED显示屏 LED控制卡 LED显示屏配件 麒麟电子

GMT+8, 2024-11-22 00:34

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表