找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于微波炉设计的单片机仿真以及程序资料

[复制链接]
跳转到指定楼层
楼主
有关微波炉控制系统的欢迎大家观看,下面是单片机仿真原理图




单片机源程序:
  1. #include<stdio.h>
  2. #include<reg52.h>
  3. #include <absacc.h>
  4. #define PA XBYTE[0x8000]
  5. #define PB XBYTE[0x8001]
  6. #define PC XBYTE[0x8002]
  7. #define COM XBYTE[0x8003]
  8. unsigned int data ledtable[16]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10},keytable[4][6]={{7,8,9,10,16,17},{4,5,6,11,18,19},{1,2,3,12,20,21},{0,15,14,13,22,23}};
  9. unsigned int i,t=0,time_num=0;
  10. sbit light1=P1^0;
  11. sbit light2=P1^1;
  12. sbit light3=P1^2;
  13. sbit light4=P1^3;
  14. /*===================延迟子程序============*/
  15. void delay(void)
  16. {
  17.    unsigned char j,k;
  18.         for(j=20;j>0;j--)
  19.                 for(k=200;k>0;k--);
  20. }
  21. /*===========数码管显示子程序===============*/
  22. void ledplay(int b)
  23. {
  24.     unsigned int m,x[2];
  25.     for(i=0;i<2;i++)
  26.     {
  27.         x[i]=b%10;
  28.         b=b/10;
  29.     }
  30.     for(i=0;i<2;i++)
  31.     {
  32.         x[i]=ledtable[x[i]];
  33.     }
  34.     m=0xfd;
  35.     for(i=2;i>0;i--)
  36.     {
  37.         PA=x[i-1];
  38.         PC=m;
  39.         delay();
  40.         PC=0xff;
  41.         PA=0xff;
  42.         m=(m>>1)|(0x80);
  43.      }
  44. }
  45. /*=============测试按键===========*/
  46. unsigned char testkey(void)
  47. {
  48.     PC=0;
  49.    if((PB&0x0f)!=0x0f)
  50.          return(1);
  51.     else
  52.          return(0);
  53. }

  54. /*===============得到键值==========*/
  55. unsigned int getkey(void)
  56. {
  57.     unsigned int x,y,m;
  58.     m=0xfe;
  59.     PC=m;
  60.     while((PB&0x0f)==0x0f)           //键盘扫描
  61.     {
  62.             m=(m<<1)|0x01;
  63.                 PC=m;
  64.         }
  65.     y=m;
  66.     x=PB;
  67.     for(i=0;(x&0x01)!=0;i++)         
  68.            x>>=1;
  69.     x=3-i;                            //行数
  70.     for(i=0;(y&0x01)!=0;i++)
  71.            y>>=1;
  72.     y=5-i;                            //列数
  73.     while(testkey());                 //等待按键释放
  74.     return(keytable[x][y]);           //查表得键值
  75. }
  76. /*====================main=============*/
  77. main()
  78. {   
  79.      unsigned int get_num;
  80.      COM=0x82;
  81. start:while(1)
  82.      {   
  83.          while(1)                     //开关
  84.          {  PA=0xff;
  85.             P1=0;
  86.             TR0=0;
  87.             ET1=0;
  88.             get_num=50;
  89.             if(testkey())
  90.             {
  91.                 delay();
  92.                 if(testkey())
  93.                     get_num=getkey();
  94.             }
  95.             if(get_num==10)
  96.                 break;
  97.          }
  98.          light1=1;
  99.          
  100.          while(1)                   //输入第一个数
  101.          {
  102.             get_num=50;
  103.             if(testkey())
  104.             {
  105.                 delay();
  106.                 if(testkey())
  107.                     get_num=getkey();
  108.             }
  109.             if(get_num<10)
  110.                  break;
  111.             if(get_num==10)
  112.                  goto start;
  113.             ledplay(0);
  114.          }
  115.          time_num=get_num*10;
  116.          
  117.          while(1)                      //输入第二个数
  118.          {
  119.             get_num=50;
  120.             if(testkey())
  121.             {
  122.                 delay();
  123.                 if(testkey())
  124.                     get_num=getkey();
  125.             }
  126.             if(get_num<10)
  127.                  break;
  128.             if(get_num==10)
  129.                  goto start;
  130.             ledplay(time_num);
  131.          }
  132.          time_num+=get_num;
  133.          
  134.          while(1)                     //输入火力挡位
  135.          {
  136.             get_num=50;
  137.             if(testkey())
  138.             {
  139.                 delay();
  140.                 if(testkey())
  141.                     get_num=getkey();
  142.             }


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



下载:
微波炉(c).rar (69.63 KB, 下载次数: 75)

评分

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

查看全部评分

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

使用道具 举报

沙发
ID:346381 发表于 2018-6-13 13:13 | 只看该作者
这个怎么用
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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