找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5071|回复: 1
收起左侧

51单片机PWM水滴滴落效果流水灯程序

[复制链接]
ID:103513 发表于 2016-1-17 00:53 | 显示全部楼层 |阅读模式
此程序的电路图下载:http://www.51hei.com/f/ks51.pdf   


  1. /**作者:网友 孤竹翼羽 **/
  2. //自已修正了下,可以在我的板子上运行了
  3. //水滴形成,并拖尾滴落
  4. #include <reg52.h>
  5. typedef unsigned char uint8;
  6. sbit ENLED = P0^4;
  7. sbit ADDR3 = P0^3;
  8. sbit ADDR2 = P0^2;
  9. sbit ADDR1 = P0^1;
  10. sbit ADDR0 = P0^0;
  11. sbit DB0 = P1^0;
  12. sbit P25=P2^5;
  13. void main()
  14. {
  15. unsigned char i,k,p,t,j;
  16. char l;
  17. unsigned char a[]={0,1,2,4,6,16,32,64};           //亮度数组以实现拖尾效果
  18. unsigned char b[]={0,34,48,59,68,76,84,91,97,103,109,114,119,123,126};   //时间数组以实现加速效果
  19. signed   char c[]={-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7};

  20. ENLED=0;ADDR3=1;
  21. ADDR0=0;ADDR1=1;ADDR2=1;
  22. P25=1;
  23. P0=0xff;
  24. P1=0xFF;

  25. while(1)
  26. {
  27.   /******************************************************************************************************/
  28.   /****************************************水滴形成(渐变效果)******************************************/
  29.   /******************************************************************************************************/
  30.   k=0;
  31.   for(i=0;i<=252;i++)   
  32.   {         
  33.    if(0==(i%4))   
  34.     k++;     
  35.    for(t=0;t<=16;t++)
  36.    {        
  37.     DB0=0;
  38.     for(j=0;j<=96;j++)  
  39.      if(j==k)   
  40.       DB0=1;
  41.    }            
  42.   }   
  43.     /******************************************************************************************************/
  44.   /***********************************水滴掉下(加速与拖尾效果)*****************************************/
  45.   /******************************************************************************************************/
  46.   
  47.   for(j=0;j<=254;j++)
  48.   {
  49.    p=0;
  50.    for(k=0;k<=15;k++)
  51.    {
  52.     if(j==b[k]) l=c[k];
  53.    }
  54.   
  55.    for(i=0;i<=64;i++)
  56.    {
  57.     for(k=0;k<=7;k++)
  58.     {     
  59.      if(i==a[k])
  60.      {
  61.       p=p|(1<<k);
  62.       t=~p;
  63.       if(l>=0)
  64.       P1=~(t<<l);
  65.       else
  66.       P1=~(t>>-l);
  67.      }
  68.     }
  69.    }
  70.   }
  71. }
  72. }
复制代码



回复

使用道具 举报

ID:292103 发表于 2018-5-30 18:27 | 显示全部楼层
PWM水滴滴落效果流水灯程序
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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