找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4106|回复: 7
打印 上一主题 下一主题
收起左侧

基于51单片机的厨房定时器仿真+源代码错误

  [复制链接]
跳转到指定楼层
楼主
单片机厨房定时器仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机厨房定时器源程序如下:
  1. #include<reg52.h>
  2. sbit fmq = P2^5; //凤鸣器
  3. sbit mo_shi= P3^2;
  4. sbit jia=P3^3;
  5. sbit jian=P3^4;
  6. sbit qi_dong=P3^5;
  7. unsigned char code xianshi[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
  8.                               0xf8,0x80,0x90};
  9. unsigned char code kongzhi[]={0x0e,0x0d,0x0b,0x07};
  10. char fen = 1, miao = 0, ting_zhi = 1,mo=0;

  11. void delay(unsigned int time)
  12. {
  13. unsigned int i;
  14. for(i = 0; i<time; i++);
  15. }
  16. void main()
  17. {
  18. TMOD=1;
  19. TH0=-5000/256;
  20. TL0=-5000%256;
  21. TR0=1;
  22. EA=1;
  23. ET0=1;

  24. P0 = 0;
  25. P2 = 0xff;
  26. while(1)        //按键控制
  27.          {
  28.          if(jia==0)
  29.            {
  30.             fmq=1;
  31.             ting_zhi = 1;
  32.             if(mo==1)
  33.                   {
  34.                    fen += 10;
  35.                    if((fen/10)>5) fen = fen%10;
  36.                   }
  37.                 if(mo==2)
  38.                   {
  39.                if((fen%10)==9) fen -= 9;
  40.                    else fen++;
  41.                   }

  42.                 if(mo==3)
  43.                   {
  44.                    miao += 10;
  45.                    if((miao/10)>5)  miao=miao%10;
  46.                   }
  47.             if(mo==4)
  48.                   {
  49.                   if((miao%10)==9)
  50.                    miao -= 9;
  51.                   else   miao++ ;
  52.                   }
  53.                 delay(15000);
  54.            }
  55.            
  56.          if(jian==0)
  57.            {
  58.             fmq=1;
  59.                    ting_zhi = 1;
  60.             if(mo==1)
  61.                   {
  62.                   if((fen/10)==0) fen = fen + 50;
  63.                     else          fen = fen - 10;
  64.                   }
  65.                  
  66.                 if(mo==2)
  67.                 {
  68.                 if((fen%10)!=0) fen--;
  69.                   else          fen+=9;
  70.                                  
  71.                 }
  72.                 if(mo==3)
  73.                   {
  74.                    if((miao/10)==0) miao = miao + 50;
  75.                     else          miao = miao - 10;
  76.                   }
  77.                  
  78.                 if(mo==4)
  79.                   {
  80.                          if((miao%10)==0) miao+=9;
  81.                     else miao--;
  82.                   }
  83.                 delay(15000);
  84.                
  85.            }
  86.            if(mo_shi==0)
  87.               {
  88.                ting_zhi = 1;
  89.                    mo++;               
  90.                if(mo>=5) mo=0;        
  91.                    if(mo<5)  ;
  92.                    delay(15000);
  93.                   }
  94.            if(qi_dong==0)
  95.            {
  96.             mo=0;
  97.                 if(fen!=0||miao!=0)
  98.                   {
  99.                    ting_zhi = 0;
  100.                   }
  101.            }            
  102.         }
  103. }

  104. void LU_int()interrupt 1
  105. {
  106. static unsigned char c=0,v=0; //初值
  107. TH0=-5000/256;                //5ms
  108. TL0=-5000%256;

  109. P2 = P2|0x0f;        //0xff;        //xx(1)x 1111        fmq

  110. switch(v)      //判断
  111.          {
  112.          case 0: if(mo!=1)P0=xianshi[fen/10];
  113.                             else{
  114.                                         if(c<100) P0=xianshi[fen/10]; //前0.5s 模式闪烁
  115.                                           else    P0=0xff;                    //后0.5s
  116.                                }
  117.                            break;

  118.          case 1: if(mo!=2)P0=xianshi[fen%10]&0x7f;
  119.                             else{
  120.                                         if(c<100) P0=xianshi[fen%10]&0x7f;
  121.                                           else    P0=0xff&0x7f;                    
  122.                                };
  123.                            break;//0111 1111
  124.          case 2: if(mo!=3)P0=xianshi[miao/10];
  125.                             else{
  126.                                         if(c<100) P0=xianshi[miao/10];
  127.                                           else    P0=0xff;                    
  128.                                };
  129.                            break;
  130.          case 3: if(mo!=4)P0=xianshi[miao%10];
  131.                             else{
  132.                                         if(c<100) P0=xianshi[miao%10];
  133.                                           else    P0=0xff;                    
  134.                                };
  135.                            break;
  136.         }
  137. P2 = (P2&0xf0)|kongzhi[v];
  138.                            
  139. if(fen==0&&miao==0&&mo==0&&ting_zhi==0)  //定时到点
  140.         {
  141. ……………………

  142. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
厨房模式定时器.zip (63.48 KB, 下载次数: 73)




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:373787 发表于 2018-7-18 08:58 | 只看该作者
谢谢,正需要这个
回复

使用道具 举报

板凳
ID:373898 发表于 2018-7-18 10:38 | 只看该作者
谢谢版主,帮上大忙了
回复

使用道具 举报

地板
ID:651428 发表于 2019-12-6 13:57 | 只看该作者
能不能弄完整的程序
回复

使用道具 举报

5#
ID:656094 发表于 2019-12-6 16:38 | 只看该作者
不错很实用
回复

使用道具 举报

6#
ID:715720 发表于 2020-7-2 09:12 | 只看该作者
就只有代码,其他的都打不开
回复

使用道具 举报

7#
ID:328014 发表于 2020-7-2 13:50 | 只看该作者
20点02分 发表于 2020-7-2 09:12
就只有代码,其他的都打不开

Proteus仿真是dsn文件啊 所以你要安装Proteus7.5才行哦
回复

使用道具 举报

8#
ID:868426 发表于 2021-5-11 22:09 | 只看该作者
为什么程序没有反应呢,就显示01.00
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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