久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4974|回復: 2
打印 上一主題 下一主題
收起左側

單片機微波爐控制系統仿真與源程序

[復制鏈接]
跳轉到指定樓層
樓主
微波爐控制仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. /***********************************************

  2. ***********************************************/
  3. #include "reg52.h"
  4. #include "intrins.h"
  5. #include "seg.h"

  6. bit flag_timer ;

  7. sbit Door=P1^0;                //門限位開關
  8. sbit Led=P1^1;                //照明燈
  9. sbit Beep=P2^4;                //揚聲器
  10. sbit JD=P2^5;                //繼電器 加熱裝置控制接口

  11. sbit key_open=P1^4;        //開啟按鈕

  12. sbit key_set=P1^5;        //設置按鈕
  13. sbit key_add=P1^6;        //時間加按鈕
  14. sbit key_dec=P1^7;        //時間減按鈕
  15. void delay_10us(unsigned int nus)
  16. {
  17.         while(nus--);
  18. }

  19. void delay_ms(unsigned int nms)               
  20. {
  21.         unsigned int i ,j;
  22.         for(i=nms;i>0;i--)              //nms即延時約n毫秒
  23.         {        for(j=110;j>0;j--);        }
  24. }
  25. /************************************************************************
  26. * 函數: void Beep_Play(unsigned int t)
  27. * 描述: 無源蜂鳴器驅動函數
  28. * 參數: t :  起振頻率
  29. * 返回: none.
  30. * 備注: t越大頻率越小
  31. ************************************************************************/
  32. void Beep_Play(unsigned int t)
  33. {
  34.         unsigned char i;
  35.         for(i=0;i<100;i++)
  36.         {
  37.                  Beep = ~Beep;
  38.                 delay_10us(t);
  39.         }
  40.         Beep = 0;
  41. }
  42. void Timer1Init(void)        //50毫秒@11.0592MHz
  43. {
  44.         TMOD &= 0x0F;                //設置定時器模式
  45.         TMOD |= 0x10;                //設置定時器模式
  46.         TL1 = 0x00;                        //設置定時初值
  47.         TH1 = 0x4C;                        //設置定時初值
  48.         TF1 = 0;                        //清除TF1標志
  49.         TR1 = 0;                        //定時器1停止計時
  50.         ET1 = 1;                        //中斷使能
  51. }

  52. int cnt=0;
  53. bit ok_flag=0;                //1  為按下按鍵正常工作
  54. bit hotover_flag=0;        //1  加熱完成標志

  55. void main(void)
  56. {
  57.         unsigned char pp=0;
  58.         smg_display(0);                //顯示數值
  59.         Timer0Init();                //定時器0初始化,2毫秒@11.0592MHz
  60.         Timer1Init();                //定時器1初始化,50毫秒@11.0592MHz
  61.         while(1)
  62.         {
  63.                 if(flag_timer==1)                //賦一次值
  64.                 {
  65.                         flag_timer = 0;                //清除標志  等待下一次400ms
  66.                         smg_display(cnt);        //顯示數值
  67.                 }
  68.                 if(hotover_flag == 1)        //加熱完成
  69.                 {
  70.                         Beep_Play(50);
  71.                         Beep_Play(50);
  72.                         Beep_Play(50);
  73.                         pp++;
  74.                         if(pp>10)
  75.                         {
  76.                                 pp = 0;
  77.                                 hotover_flag = 0;
  78.                         }
  79.                                
  80.                 }
  81.                 if(ok_flag == 1)                //確認鍵按下了已經
  82.                 {
  83.                         if(Door==0&&cnt>0)        //門被關上
  84.                         {
  85. //                                TR1 = 1;                //定時器1開始計時  如果是關門自動加熱則不注釋
  86.                                 JD = 0;                        //加熱
  87.                                 Beep = 1;                //報警關閉
  88.                                 Led = 1;                //照明燈滅
  89.                         }
  90.                         else                                //門未關
  91.                         {
  92.                                 Beep_Play(50);
  93. //                                Beep = 0;                //報警
  94.                                 TR1 = 0;                //定時器1停止計時
  95.                                 JD = 1;                        //停止加熱
  96.                                 Led = 0;                //照明燈亮
  97.                         }
  98.                                
  99.                 }
  100.                 if(Door==0)                                //門被關上
  101.                 {
  102.                         Led = 1;                        //照明燈滅
  103.                        
  104.                 }
  105.                 else                                        //門未關
  106.                 {       
  107.                         Led = 0;                        //照明燈亮
  108.                 }
  109.                 if(key_add==0)                        //設置加按鈕按下
  110.                 {       
  111.                         delay_ms(200);                //消除抖動
  112.                         if(key_add==0)                //設置加按鈕按下
  113.                         {
  114.                                 cnt++;
  115.                                 if(cnt>999)
  116.                                         cnt=0;       
  117.                         }
  118.                        
  119.                 }
  120.                 if(key_dec==0)                                //設置減按鈕按下
  121.                 {       
  122.                         delay_ms(200);                        //消除抖動
  123.                         if(key_dec==0)                        //設置減按鈕按下
  124.                         {
  125.                                 cnt--;
  126.                                 if(cnt<0)
  127.                                         cnt=999;       
  128.                         }       
  129.                 }
  130.                 if(key_set==0)                                //確認鍵按下
  131.                 {
  132.                         while(key_set==0);                //等待釋放       
  133.                         if(cnt>0)                                //如果定時的值大于0
  134.                         {
  135.                                 ok_flag = 1;
  136.                                 TR1 = 1;                        //定時器1開始計時
  137.                         }
  138.                 }
  139.         }
  140. }

  141. void tm0_isr() interrupt 1 using 1
  142. {
  143.         static unsigned char num=0;
  144.         TF0 = 0;
  145.         TL0 = 0xCD;                         //設置定時初值
  146.         TH0 = 0xF8;                        //設置定時初值
  147.         display();                        //數碼管顯示函數
  148.         if(num++ >= 100)    //2ms*100 =200ms
  149.         {
  150.                 num = 0;
  151.                 flag_timer = 1;
  152.         }
  153. }
  154. void tm1_isr() interrupt 3 using 1                //定時50毫秒
  155. {
  156.         static unsigned int num1=0;
  157.         TL1 = 0x00;                                //設置定時初值
  158.         TH1 = 0x4C;                                //設置定時初值
  159.         if(num1++>=20&&cnt>0)        //1s到
  160.         {
  161.                 num1 = 0;
  162.                 cnt--;
  163.                
  164.         }
  165.         if(cnt==0)
  166. ……………………

  167. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
微波爐.rar (73.04 KB, 下載次數: 112)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:367110 發表于 2018-7-8 14:01 | 只看該作者
下不了啊 還扣我黑幣QAQ
請問可以發我QQ嗎
回復

使用道具 舉報

板凳
ID:337139 發表于 2021-9-10 10:35 | 只看該作者
仿真與實際的工作還是有一些差別的。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久精品视 | 欧美精品久久久久久 | 五月槐花香 | 一级毛片色一级 | 91av入口 | 国产欧美精品一区二区三区 | 亚洲最新在线视频 | 91av免费观看 | 在线观看国产视频 | 日韩在线一区二区 | 国产精品成人在线播放 | 中文字幕一区二区三 | 国产成人在线视频 | 国产精品久久久亚洲 | 精品国产一区二区久久 | 欧美一级片在线观看 | 亚洲国产精品视频一区 | 精品日韩| 国产精品99久久久久久大便 | 一区二区免费视频 | 精品一区在线看 | 日本激情视频在线播放 | 日本亚洲一区二区 | 午夜视频一区二区 | 亚州精品天堂中文字幕 | 国产精品五月天 | 亚洲一区二区三区欧美 | 日韩有码一区 | 日韩欧美一级 | 久久久精品一区二区三区 | 成人黄色在线 | 亚洲伊人a | 激情毛片 | 一区二区三区日韩精品 | 欧美日韩理论 | 91精品国产一区二区三区香蕉 | 久久精品一区二区视频 | 久久专区| 亚洲午夜电影 | 午夜精品在线 | 久久亚洲欧美日韩精品专区 |