标题: 单片机模拟萤火虫制作 [打印本页]

作者: 19960601    时间: 2017-11-19 17:24
标题: 单片机模拟萤火虫制作
基于51单片机的模拟萤火虫的实物制作出来是如下效果,用pwm实现渐亮 渐渐暗的效果。大胆送给你的女票吧


电子萤火虫原理图和pcb:


单片机萤火虫源程序如下:
  1.    #include<reg52.h> //包含头文件,一般情况不需要改动,
  2. //头文件包含特殊功能寄存器的定义
  3. void Delay(unsigned int t); //函数声明
  4. /*------------------------------------------------
  5. 主函数
  6. ------------------------------------------------*/
  7. void main (void)
  8. {

  9. unsigned int CYCLE=1500,PWM_LOW=0;//定义周期并赋值

  10. while (1) //主循环
  11. {
  12.    Delay(1000);
  13.    P0=0XFF; //熄灭LED
  14.    P1=0X00;
  15.    P2=0X00;
  16.    P3=0XFF;
  17.    for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
  18.    {//PWM_LOW表示低
  19.    //电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次
  20.    Delay(200);
  21.    P0=0X00; //点亮LED
  22.    P1=0XFF;
  23.    P2=0XFF;
  24.    P3=0X00;
  25.    Delay(PWM_LOW);//延时长度,600次循环中从1加至599
  26.    P0=0XFF; //熄灭LED
  27.    P1=0X00;
  28.    P2=0X00;
  29.    P3=0XFF;
  30.    Delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减至1
  31.    }
  32.    P0=0X00; //点亮LED
  33.    P1=0XFF;
  34.    P2=0XFF;
  35.    P3=0X00;
  36.    for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
  37.    {//与逐渐变亮相反的过程
  38.    P0=0X00;
  39.    P1=0Xff;
  40.    P2=0Xff;
  41.    P3=0X00;
  42.    Delay(PWM_LOW);
  43.    P0=0Xff;
  44.    P1=0X00;
  45.    P2=0X00;
  46.    P3=0Xff;
  47.    Delay(CYCLE-PWM_LOW);
  48.    Delay(1000);
  49.    }
  50.    
  51.    P0=0Xff;
  52.    P1=0X00;
  53.    P2=0X00;
  54.    P3=0Xff;
  55.    Delay(2000);
  56.   
  57.    P0=0X0f; //前熄 后部熄状
  58.    P1=0X00;
  59.    P2=0X00;
  60.    P3=0X0f;
  61.    for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
  62.    {//PWM_LOW表示低
  63.    //电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次
  64.    Delay(200);
  65.    P0=0X00; //后部逐步点亮
  66.    P1=0X0f;
  67.    P2=0X0f;
  68.    P3=0X00;
  69.    Delay(PWM_LOW);//延时长度,600次循环中从1加至599
  70.    P0=0X0f; //后部熄灭时间减少
  71.    P1=0X00;
  72.    P2=0X00;
  73.    P3=0X0f;
  74.    Delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减至1
  75.    }
  76.    
  77.    Delay(1000);
  78.    P0=0X00; //后部点亮状态
  79.    P1=0X0f;
  80.    P2=0X0f;
  81.    P3=0X00;
  82.    for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
  83.    {//与逐渐变亮相反的过程
  84.    P0=0X00;
  85.    P1=0X0f;
  86.    P2=0X0f;
  87.    P3=0X00;
  88.    Delay(PWM_LOW);
  89.    P0=0X0f;
  90.    P1=0X00;
  91.    P2=0X00;
  92.    P3=0X0f;
  93.    Delay(CYCLE-PWM_LOW);
  94.    Delay(1000);
  95.    }

  96.    P0=0X00;
  97.    P1=0X00;
  98.    P2=0X00;
  99.    P3=0X00;
  100.    Delay(2000);
  101.    for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
  102.    {//PWM_LOW表示低
  103.    //电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次
  104.    Delay(200);
  105.    P0=0X00; //后部逐步点亮
  106.    P1=0Xf0;
  107.    P2=0Xf0;
  108.    P3=0X00;
  109.    Delay(PWM_LOW);//延时长度,600次循环中从1加至599
  110.    P0=0Xf0; //后部熄灭时间减少
  111.    P1=0X00;
  112.    P2=0X00;
  113.    P3=0Xff;
  114.    Delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减至1
  115.    }
  116.    
  117.    Delay(1000);
  118.    P0=0X00; //后部点亮状态
  119.    P1=0Xf0;
  120.    P2=0Xf0;
  121.    P3=0X00;
  122.    for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
  123.    {//与逐渐变亮相反的过程
  124.    P0=0X00;
  125.    P1=0Xf0;
  126.    P2=0Xf0;
  127.    P3=0X00;
  128.    Delay(PWM_LOW);
  129.    P0=0Xf0;
  130.    P1=0X00;
  131.    P2=0X00;
  132.    P3=0Xf0;
  133.    Delay(CYCLE-PWM_LOW);
  134.    Delay(1000);
  135.    }
  136. ……………………

  137. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
参考资料:http://www.51hei.com/bbs/dpj-19181-1.html

所有资料51hei提供下载:
萤火虫.zip (250.39 KB, 下载次数: 66)





作者: 小龙龙龙    时间: 2017-11-20 19:12
不错,可以试试
作者: 爱喝柠檬水    时间: 2017-11-21 17:03
感谢分享
作者: 15703013756    时间: 2017-11-21 23:44
这个没有基础做起来会不会很困难
作者: legent    时间: 2017-11-23 16:18
挺有创意的,学习了。
作者: 爱喝柠檬水    时间: 2017-12-12 19:51
学习学习
作者: Dream丶    时间: 2017-12-13 22:41
感谢分享
作者: Dream丶    时间: 2017-12-13 22:41
我想做这个
作者: wqwqw111    时间: 2019-6-7 16:53
太垃圾,连随机函数也没有,你怎么确定萤火虫有几只亮,几只不亮
作者: xyzdh    时间: 2019-6-7 22:19
wqwqw111 发表于 2019-6-7 16:53
太垃圾,连随机函数也没有,你怎么确定萤火虫有几只亮,几只不亮

感觉这说法太尖锐了,能开源共享就是好样的。但是你能提出这种好的思路想法相信作者更高兴
作者: 本不平凡    时间: 2019-6-10 18:35
创意不错




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1