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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3034|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

智能電熱毯控制器怎么設(shè)計呢

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:111479 發(fā)表于 2016-3-30 20:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
怎么設(shè)計呢,求指教
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2016-3-30 20:27 | 只看該作者
電熱毯控制用,C51程序AT89S51,可定時控制溫度,并根據(jù)設(shè)定檔位自動調(diào)節(jié)輸出
  1. #include <AT89X51.H>//6MHz
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define reset() {WDT=0x1e;WDT=0xe1;}//看門狗復(fù)位宏定義
  5. sfr WDT=0xa6;                        //定義看門狗寄存器
  6. uchar code DATA_7SEG[10]={0x3f,0x06,0x5b,0x4f,0x66,
  7.                     0x6d,0x7d,0x07,0x7f,0x6f};/*0~9的數(shù)碼管段碼*/
  8. //============================================================
  9. uchar data deda;           /*100mS計數(shù)單元*/
  10. uchar data sec;                //計時秒
  11. uchar data min;                //計時分
  12. char data set_min;        //設(shè)定分
  13. uchar data cnt_5s;
  14. uchar data ram_flag;
  15. char data powout_flag;
  16. bit work_status;
  17. bit flag_500ms;
  18. bit bz_flag=0;                //蜂鳴標(biāo)志
  19. bit startflag_5s;                 //5S標(biāo)志
  20. bit start_flag;
  21. bit pout_flag;
  22. //===========================================================
  23. sbit h_pow_out=P2^7;                //驅(qū)動H
  24. sbit m_pow_out=P2^6;                //驅(qū)動M
  25. sbit l_pow_out=P2^5;                //驅(qū)動L
  26. sbit g_x1=P2^2;                //個位顯示
  27. sbit g_x2=P2^3;
  28. sbit s_x1=P2^0;                //十位顯示
  29. sbit s_x2=P2^1;
  30. sbit r_led=P3^1;       
  31. sbit g_led=P3^0;       
  32. sbit on_off_key=P3^2;       
  33. sbit timeinc_key=P3^3;       
  34. sbit timedec_key=P3^4;
  35. sbit pow_sel_key=P3^5;
  36. sbit run_stop_key=P3^6;
  37. sbit bz_out=P2^4;       
  38. //==================================================
  39. void init(void)
  40. {
  41. sec=min=set_min=0;
  42. cnt_5s=0;
  43. powout_flag=0;
  44. work_status=0;
  45. flag_500ms=0;
  46. bz_flag=0;       
  47. startflag_5s=0;
  48. start_flag=0;
  49. pout_flag=0;
  50. }
  51. /*=========定時器T0初始化======*/
  52. void init_timer0()
  53. {
  54. TMOD=0x11;//T0、T1方式1
  55. TH0=-(50235/256);//100mS初值
  56. TL0=-(50235%256);
  57. ET0=1;TR0=1;        //T0開中斷,啟動T0
  58. }
  59. //======================================================
  60. /*延時k*1mS子函數(shù)*/
  61. void delay(uint k)
  62. {
  63. uint i,j;
  64. for(i=0;i<k;i++){reset()
  65. for(j=0;j<60;j++)
  66. {;}}
  67. }
  68. /*定時器T1初始化*/
  69. void init_timer1()
  70. {
  71. TH1=-(2500/256); //5mS初值
  72. TL1=-(2500%256);
  73. ET1=1; TR1=1; //T1開中斷,啟動T1
  74. }
  75. //======================================================
  76. /*100mS定時中斷服務(wù)子函數(shù)*/
  77. void timer0(void) interrupt 1 using 1
  78. {
  79. TH0=-(50235/256);// 重裝定時初值
  80. TL0=-(50235%256);
  81. deda++;                        //計時單元遞加
  82. if(startflag_5s)cnt_5s++;//啟動5秒計時
  83. if(deda>=10){sec++;deda=0;}// 秒加1
  84. if(cnt_5s>=50){pout_flag=1;cnt_5s=50;}//5秒到,輸出標(biāo)志置位,
  85. //同時5秒計時值固定為5秒
  86. if(sec>=60){set_min--;sec=0;}//60秒到,設(shè)定分遞減
  87. if(set_min<=0)set_min=0;// 最小為0
  88. if((set_min==0)&&(work_status==0)){startflag_5s=0;}// 若設(shè)定分為0且工作狀態(tài)為0,
  89. //5秒啟動標(biāo)志復(fù)位
  90. else {startflag_5s=1;}// 否則5秒啟動標(biāo)志置位
  91. if((set_min<=3)&&(work_status==0))bz_flag=1;// 若設(shè)定分小于3且工作狀態(tài)為0,
  92. //蜂鳴器啟動標(biāo)志置位
  93.         else bz_flag=0;                                        //否則蜂鳴器啟動標(biāo)志復(fù)位
  94. }
  95. //===========================================================
  96. /*T1 5ms定時中斷服務(wù)子*/
  97. void timer1(void) interrupt 3 using 2
  98. {static bit RL;static uchar cnt500;
  99. cnt500++;if(cnt500==100){cnt500=0;flag_500ms=!flag_500ms;}// 每0.5秒,標(biāo)志取反
  100. RL=!RL;
  101. TH1=-(2500/256);// 重裝5mS定時初值
  102. TL1=-(2500%256);
  103. if(start_flag)// 若系統(tǒng)啟動
  104. {if(work_status==0)// 若自動時控工作
  105.         {        if(RL){P1=DATA_7SEG[set_min/10];// 點亮十位數(shù)碼管
  106.                         s_x1=0;s_x2=0;g_x1=1;g_x2=1;}
  107.                 else{P1=DATA_7SEG[set_min%10];// 點亮個位數(shù)碼管
  108.                         s_x1=1;s_x2=1;g_x1=0;g_x2=0;}
  109.         }
  110. //===========================================
  111. else//否則處于持續(xù)工作時
  112.         {        if(flag_500ms){if(RL){P1=0x40;s_x1=0;s_x2=0;// 點亮g段
  113.                                                 g_x1=1;g_x2=1;}
  114.                                                 else {P1=0x40;s_x1=1;s_x2=1;// 點亮g段
  115.                                                         g_x1=0;g_x2=0;}
  116.                                                 }
  117.                 else{P1=0x00;s_x1=1;s_x2=1;g_x1=1;g_x2=1;}
  118.         }
  119. }
  120. else {P1=0x00;s_x1=1;s_x2=1;g_x1=1;g_x2=1;}        // 若系統(tǒng)關(guān)閉,熄滅數(shù)碼管
  121. }


  122. /**************************************************/
  123. void key(void)                        //掃描時間設(shè)定鍵
  124. {uchar temp,ss;
  125. delay(10);
  126. ss=P3;P3=0xff;
  127. if(P3!=0xff)
  128. {delay(10);temp=P3;P3=ss;
  129. if(temp==0xfb){start_flag=!start_flag;ram_flag=0x55;delay(300);}// 按下開/關(guān)鍵,
  130. //系統(tǒng)啟動標(biāo)志取反,同時防干擾標(biāo)志寫入55H
  131.         if(start_flag)        //若處于開機狀態(tài),根據(jù)按鍵狀態(tài),進(jìn)行功能散轉(zhuǎn)
  132.         {
  133.         switch(temp)
  134.                         {
  135.                        
  136.                         case 0xf7:{set_min++;bz_flag=0;startflag_5s=1;cnt_5s=0;// 設(shè)定分遞增
  137.                                                 if(set_min>=60)set_min=60;delay(300);}break;
  138.                         case 0xef:{set_min--;bz_flag=0;startflag_5s=1;cnt_5s=0;// 設(shè)定分遞減
  139.                                                 if(set_min<=00)set_min=0;delay(300);}break;
  140.                         case 0xdf:{powout_flag++;if(powout_flag>=3)powout_flag=0;// 切換
  141. //輸出功率
  142.                                                                                                 delay(300);}break;
  143.                         case 0xbf:{work_status=!work_status;delay(300);}break;// 選擇自動時控
  144. //或持續(xù)工作
  145.                         default:break;
  146.                         }
  147.         }
  148.         else //否則處于關(guān)機狀態(tài),設(shè)定分清零
  149.         {set_min=0;}
  150. //===================================
  151.         if(work_status==0){if(set_min>0)startflag_5s=1;// 工作狀態(tài)為0,
  152. //當(dāng)設(shè)定分大于0,啟動5秒標(biāo)志
  153.                                                 else startflag_5s=0;}
  154.         else {startflag_5s=1;}// 工作狀態(tài)為1,也啟動5秒標(biāo)志
  155. }
  156. }

  157. /**************************************/
  158. void power_out(uchar powout_flag)// 切換高中低三檔溫度
  159. {       
  160.         if(pout_flag==1)
  161.         {       
  162.                         switch(powout_flag)
  163.                         {
  164.                         case 0:m_pow_out=0;h_pow_out=1;l_pow_out=1;break;
  165.                         case 1:h_pow_out=0;m_pow_out=1;l_pow_out=1;break;
  166.                         case 2:l_pow_out=0;m_pow_out=1;h_pow_out=1;break;
  167.                         default:break;
  168.                         }
  169.         }
  170.         else {m_pow_out=1;h_pow_out=1;l_pow_out=1;}
  171. if(start_flag==0)
  172. {m_pow_out=1;h_pow_out=1;l_pow_out=1;pout_flag=0;bz_flag=0;bz_out=1;}
  173. if(work_status==1)startflag_5s=1;
  174. else {if(set_min==0)
  175.                 {m_pow_out=1;h_pow_out=1;l_pow_out=1;
  176.                 pout_flag=0;bz_flag=0;bz_out=1;startflag_5s=0;}
  177.         }
  178. //=====================================================
  179. if((bz_flag)&&(pout_flag)){if(flag_500ms)bz_out=0;else bz_out=1;}
  180. else bz_out=1;
  181. }
  182. /*******************************************************/
  183. /*主函數(shù)*/
  184. void main()
  185. {       
  186.         if(ram_flag!=0x55)init();//上電時初始化
  187.         init_timer0();      //定時器T0初始化
  188.         init_timer1();                //定時器T1初始化
  189.         EA=1;                                         //開總中斷
  190.                
  191. while(1)                    //無限循環(huán)
  192.     {
  193.         if(!start_flag){g_led=0;r_led=1;}// 系統(tǒng)關(guān)閉,綠燈亮,紅燈滅
  194.         else {g_led=1;r_led=0;}// 否則系統(tǒng)啟動,紅燈亮,綠燈滅
  195.         key();                                //掃描按鍵
  196.         power_out(powout_flag);        //調(diào)用功率切換子函數(shù)
  197.         reset()                        //看門狗復(fù)位
  198.     }
  199. }
復(fù)制代碼
回復(fù)

使用道具 舉報

板凳
ID:478073 發(fā)表于 2020-10-21 15:38 | 只看該作者
提供原理圖,沒原理圖有啥用
回復(fù)

使用道具 舉報

地板
ID:832903 發(fā)表于 2020-10-21 21:27 | 只看該作者
主要是選好傳感器。然后讀取當(dāng)前的溫度,讀到之后控制加熱
回復(fù)

使用道具 舉報

5#
ID:420836 發(fā)表于 2020-10-22 09:02 | 只看該作者
當(dāng)您具有單片機代碼時,設(shè)計電熱毯應(yīng)該很容易。 只是電源開關(guān)控制和傳感器。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美在线观看一区 | 久日精品 | 97超碰站| 91.com视频| a级黄色片在线观看 | 日韩一级欧美一级 | 久久91 | 国产精品毛片一区二区在线看 | 日韩一区二区三区在线视频 | 欧美视频三区 | 91精品国产91| 中文精品视频 | 天天艹日日干 | 久久免费视频观看 | 久久久夜| 国产一区二区三区色淫影院 | 免费看大片bbbb欧美 | 成年网站在线观看 | 亚洲精品99999 | 九九久久国产 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 久久精品久久久久久 | 一区二区视频在线 | 日韩av成人在线 | 亚洲小视频在线观看 | 精品av| 黄色一级大片视频 | 久久成人国产精品 | 国产最好的av国产大片 | 91免费观看 | 亚洲国产黄| 欧美日韩在线视频一区 | 亚洲欧美国产精品一区二区 | 色又黄又爽网站www久久 | 少妇精品亚洲一区二区成人 | 欧美日韩视频一区二区 | 国产综合精品 | 久久久91精品国产一区二区三区 | 精品福利视频一区二区三区 | 四虎影视 | 99久久久国产精品免费消防器 |