单片机 > 单片机程序设计 > 详情

STC单片机+DM134实现LED多段控制

发布时间:2020-08-31 发布时间:
|

 
单片机源程序如下:

//============================================================================

//================翼芯科技 LED流星灯8段16段==软件生成生成数据=================

//============================================================================   

//  此源码版权属 翼芯科技 全权享有,如欲引用,敬请署名并告知

//          严禁随意用于商业目的,违者必究,后果自负

//程序说明:本程序用于实现LED流星灯8段16段,不同步.IC插到U9位置.      

//文件名称:main.C  

//日期:    2011/01/23   

//版本:    1.0  

//C编译器:  keil 8.05 

//=============================================================================                    

#include

#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);

                  }

                          


          }

}


//============================================================================

//================翼芯科技 用DM134实现16段,8段,4段16级灰度拖尾================

//============================================================================   

//  此源码版权属 翼芯科技 全权享有,如欲引用,敬请署名并告知

//          严禁随意用于商业目的,违者必究,后果自负

//程序说明:


关键字:STC单片机  DM134  LED  多段控制

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM基础知识八