找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1876|回复: 4
收起左侧

单片机鱼缸夜灯设计(含仿真) 求帮助

[复制链接]
ID:626275 发表于 2021-2-2 11:02 | 显示全部楼层 |阅读模式
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png

单片机源程序如下:
  1. #include <REGX51.H>
  2. #include <LCD1602.H>
  3. unsigned int t,t1,t2;
  4. unsigned int n=10,y,i,f;
  5. #define w 5000
  6. sbit out=P1^5;
  7. sbit out1=P1^2;
  8. void xianshi();
  9. void delay(unsigned int x)
  10. {
  11.    while(x--)
  12.    {
  13.             y=2;
  14.          while(y--);
  15.    }
  16. }

  17. void init(void)  //定时器设置
  18. {
  19.     TMOD=0x0;
  20.         TH0=(65536-10000)/256;
  21.         TL0=(65536-10000)%256;                        
  22.         EA=1;
  23.         ET0=1;
  24.         TR0=1;
  25. }
  26. void exter() interrupt 0
  27. {
  28. EX0=0;
  29. n=n+10;
  30. if(n>50){n=10;}
  31. EX0=1;
  32. }
  33. void time0()interrupt 1
  34. {
  35.         TH0=(65536-10000)/256;
  36.         TL0=(65536-10000)%256;        
  37.   t++;
  38.   if(t==708)
  39.           {        out1=!out1;
  40.                   t=0;t1++;
  41.                 xianshi();                  //t1是秒
  42.         }
  43.   if(t1==3600)
  44.   {t1=0;t2++;}                         //t2小时
  45.   if(t2==24){t2=0;f=1;}  
  46. }
  47. void xianshi()
  48. {
  49.   unsigned int shi1,shi0,fen1,fen0,miao1,miao0;
  50.   shi1=t2/10;
  51.   shi0=t2%10;
  52.   fen1=t1/60/10;
  53.   fen0=t1/60%10;
  54.   miao1=t1%60/10;
  55.   miao0=t1%60%10;
  56.   LcdShowStr(2,0,shuzi[shi1]);
  57.   LcdShowStr(3,0,shuzi[shi0]);
  58.   LcdShowStr(4,0,':');
  59.   LcdShowStr(5,0,shuzi[fen1]);
  60.   LcdShowStr(6,0,shuzi[fen0]);
  61.   LcdShowStr(7,0,':');
  62.   LcdShowStr(8,0,shuzi[miao1]);
  63.   LcdShowStr(9,0,shuzi[miao0]);
  64. }

  65. void main()
  66. {
  67.         shumaOFF();
  68.   init();
  69.   init1602();
  70.   IT0=1;
  71.   EX0=1;  
  72.   while(1)
  73.   {         
  74.       if(t2<8)  
  75.           {for(i=w;i>0;i--)
  76.                   {
  77.                           out=1;
  78.                         delay(n*1/10);
  79.                         out=0;
  80.                         delay(50-n*1/10);
  81.                   }
  82.                   for(i=w;i>0;i--)
  83.                   {
  84.                           out=1;
  85.                         delay(n*2/10);
  86.                         out=0;
  87.                         delay(50-n*2/10);
  88.                   }
  89.                   for(i=w;i>0;i--)
  90.                   {
  91.                           out=1;
  92.                         delay(n*3/10);
  93.                         out=0;
  94.                         delay(50-n*3/10);
  95.                   }
  96.                   for(i=w;i>0;i--)
  97.                   {
  98.                           out=1;
  99.                         delay(n*4/10);
  100.                         out=0;
  101.                         delay(50-n*4/10);
  102.                   }
  103.         
  104.           for(i=w;i>0;i--)
  105.                   {
  106.                           out=1;
  107.                         delay(n*5/10);
  108.                         out=0;
  109.                         delay(50-n*5/10);
  110.                   }         
  111.           for(i=w;i>0;i--)
  112.                   {
  113.                           out=1;
  114.                         delay(n*6/10);
  115.                         out=0;
  116.                         delay(50-n*6/10);
  117.                   }         
  118.           for(i=w;i>0;i--)
  119.                   {
  120.                           out=1;
  121.                         delay(n*8/10);
  122.                         out=0;
  123.                         delay(50-n*8/10);
  124.                   }
  125.                   }
  126.           while(t2<8)
  127.                  {
  128.                    out=1;
  129.                    delay(n);
  130.                    out=0;
  131.                    delay(50-n);
  132.                  }
  133.                  if(t2==8)
  134.                  {
  135.                    for(i=w;i>0;i--)
  136.                   {
  137.                           out=1;
  138.                         delay(n*8/10);
  139.                         out=0;
  140.                         delay(50-n*8/10);
  141.                   }
  142.         
  143.                   for(i=w;i>0;i--)
  144.                   {
  145.                           out=1;
  146.                         delay(n*6/10);
  147.                         out=0;
  148.                         delay(50-n*6/10);
  149.                   }         
  150.                   for(i=w;i>0;i--)
  151.                   {
  152.                           out=1;
  153.                         delay(n*4/10);
  154.                         out=0;
  155.                         delay(50-n*4/10);
  156.                   }         
  157.                   for(i=w;i>0;i--)
  158.                   {
  159.                           out=1;
  160.                         delay(n*2/10);
  161.                         out=0;
  162.                         delay(50-n*2/10);
  163.                   }
  164.                   
  165.                  }
  166.                  while(f==0);
  167.                   f=0;
  168.   }
  169. }
复制代码

所有资料51hei提供下载:
鱼缸显示.zip (83.75 KB, 下载次数: 2)
回复

使用道具 举报

ID:739545 发表于 2021-2-4 15:42 | 显示全部楼层
夜灯仿真设计,放一个示波器看什么?至少放两灯吧。另while(1)是否能够写的更简洁一点
回复

使用道具 举报

ID:626275 发表于 2021-3-2 11:55 | 显示全部楼层
lovezjf234 发表于 2021-2-4 15:42
夜灯仿真设计,放一个示波器看什么?至少放两灯吧。另while(1)是否能够写的更简洁一点

看波形变化,哈哈
回复

使用道具 举报

ID:478073 发表于 2021-3-2 14:04 | 显示全部楼层
夜灯最好加一个光敏电阻或红外感应才有一点意义,
回复

使用道具 举报

ID:626275 发表于 2021-12-6 11:31 | 显示全部楼层
春风十里吹死你 发表于 2021-3-2 14:04
夜灯最好加一个光敏电阻或红外感应才有一点意义,

对对对
回复

使用道具 举报

6#
无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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