单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 371|回复: 2
收起左侧

不要复杂不要简单新奇的水滴灯与水滴声的单片机程序+电路

[复制链接]
areyouok 发表于 2018-12-12 11:42 | 显示全部楼层 |阅读模式
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
pppppppppppppp.jpg
0.png

单片机源程序如下:
  1. #include <reg52.h>
  2. typedef unsigned char uint8;
  3. sbit wps = P0^0;
  4. sbit SPK=P1^7;

  5. unsigned int i;
  6. unsigned char frq;
  7. unsigned char y,k,p,t,j;
  8. char l;
  9. unsigned char a[]={0,1,2,4,6,16,32,64};                                                                          //亮度数组以实现拖尾效果
  10. unsigned char b[]={0,34,48,59,68,76,84,91,97,103,109,114,119,123,126};          //时间数组以实现加速效果
  11. signed   char c[]={-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7};

  12. void delay(unsigned char rr)
  13. {   
  14.         while(--rr);
  15. }

  16. void delay_mS(unsigned char rr)
  17. {
  18.        
  19.         while(rr--)
  20.         {
  21.                 delay(245);
  22.                 delay(245);
  23.         }
  24. }

  25. void led_sp(void);
  26. void ert(void);



  27. void main()
  28. {
  29.         P0=0xFF;

  30.         while(1)
  31.         {
  32.                 led_sp();
  33.                 ert();
  34.                
  35.         }
  36. }                               

  37. void led_sp(void)
  38. {
  39.        
  40.         k=0;
  41.         SPK=0;
  42.         for(y=0;y<=252;y++)
  43.         {       
  44.                 if(0==(y%4)) k++;
  45.        
  46.         }
  47.        
  48.         for(j=0;j<=254;j++)
  49.         {
  50.                 p=0;
  51.                 for(k=0;k<=15;k++)
  52.                 {if(j==b[k]) l=c[k];}
  53.                
  54.                 if(y==a[k])
  55.                                 {
  56.                                         p=p|(1<<k);
  57.                                         t=~p;
  58.                                         if(l>=0)
  59.                                                 P0=~(t<<l);
  60.                                         else
  61.                                                 P0=~(t>>-l);
  62.                
  63.                 }
  64.         }
  65.        
  66. }



  67. void ert(void)
  68. {

  69.                 for(i=0;i<349;i++)
  70.                 {        delay(50);
  71.                         delay(50);
  72.                         SPK=!SPK;
  73.                 }
  74.                 for(i=0;i<349;i++)
  75.                 {
  76.                         delay_mS(2);  
  77.                         SPK=!SPK;
  78.                 }
  79.                         for(i=0;i<380;i++)
  80.                 {
  81.                         delay(30);
  82.                         delay(30);
  83.                         SPK=!SPK;
  84.                 }

  85.                         for(i=0;i<600;i++)
  86.                 {
  87.                         delay(100);
  88.                         delay(100);
  89.                         SPK=!SPK;
  90.                 }
  91.                 for(i=0;i<600;i++)
  92.                 {
  93.                         delay_mS(1);
  94.                         SPK=!SPK;
  95.                 }

  96.         }
复制代码

所有资料51hei提供下载:
水滴灯水滴声.zip (16.19 KB, 下载次数: 15)

评分

参与人数 2黑币 +55 收起 理由
shuisheng + 5 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

无效楼层,该帖已经被删除
8846 发表于 2018-12-19 11:42 | 显示全部楼层
sbit wps = P0^0;这一行是定义的什么可以解释一下吗
回复

使用道具 举报

无效楼层,该帖已经被删除
 楼主| areyouok 发表于 2018-12-22 21:52 | 显示全部楼层
8846 发表于 2018-12-19 11:42
sbit wps = P0^0;这一行是定义的什么可以解释一下吗

定义的是一个灯,此灯由不亮慢慢变为最亮,模仿水滴形成过成,要接实物能看到效果,后面就是落下拖尾时的效果

评分

参与人数 2黑币 +30 收起 理由
#include51.h + 15
Sawardeakar + 15 很给力!

查看全部评分

回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机. 联系QQ:125739409;技术交流QQ群582644647

Powered by 单片机教程网

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