找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7184|回复: 10
收起左侧

单片机模拟萤火虫制作

  [复制链接]
ID:98792 发表于 2017-11-19 17:24 | 显示全部楼层 |阅读模式
基于51单片机的模拟萤火虫的实物制作出来是如下效果,用pwm实现渐亮 渐渐暗的效果。大胆送给你的女票吧
0.png 0.png

电子萤火虫原理图和pcb:
0.png 0.png

单片机萤火虫源程序如下:
  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, 下载次数: 63)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:251577 发表于 2017-11-20 19:12 | 显示全部楼层
不错,可以试试
回复

使用道具 举报

ID:243501 发表于 2017-11-21 17:03 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:251711 发表于 2017-11-21 23:44 | 显示全部楼层
这个没有基础做起来会不会很困难
回复

使用道具 举报

ID:252319 发表于 2017-11-23 16:18 | 显示全部楼层
挺有创意的,学习了。
回复

使用道具 举报

ID:243501 发表于 2017-12-12 19:51 | 显示全部楼层
学习学习
回复

使用道具 举报

ID:261333 发表于 2017-12-13 22:41 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:261333 发表于 2017-12-13 22:41 | 显示全部楼层
我想做这个
回复

使用道具 举报

ID:425846 发表于 2019-6-7 16:53 来自手机 | 显示全部楼层
太垃圾,连随机函数也没有,你怎么确定萤火虫有几只亮,几只不亮
回复

使用道具 举报

ID:557411 发表于 2019-6-7 22:19 | 显示全部楼层
wqwqw111 发表于 2019-6-7 16:53
太垃圾,连随机函数也没有,你怎么确定萤火虫有几只亮,几只不亮

感觉这说法太尖锐了,能开源共享就是好样的。但是你能提出这种好的思路想法相信作者更高兴
回复

使用道具 举报

ID:559230 发表于 2019-6-10 18:35 来自手机 | 显示全部楼层
创意不错
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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