欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 利用ds18b20制作恒溫水浴鍋的單片機程序+Proteus仿真 [打印本頁]

作者: sakuralap    時間: 2019-5-21 22:02
標題: 利用ds18b20制作恒溫水浴鍋的單片機程序+Proteus仿真
ds18b20測水溫,利用三個繼電器控制三個加熱棒加熱(這里用電燈代替加熱棒仿真,暫設計控溫溫度為36度),三個加熱棒功率為大中小三個。當低于30度時,三個加熱棒同時工作,當溫度在30~35度時,小中兩個加熱棒工作,到達35度時只有小功率加熱棒工作,36度時加熱棒全部不工作。
注意:繼電器的選擇,恒溫控需考慮PID,防止繼電器震蕩而加熱棒溫度猛烈增高不受控制,實驗時也請使用小功率的加熱棒實驗,防止發生意外,切記。道路千萬條,安全第一條,行車不規范,親人兩行淚(特別是使用220v供電加熱棒)。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. /*板子引腳說明
  2. X0  PC7
  3. X1  PC6
  4. X2  PB15
  5. X3  PA1
  6. X4  PA0
  7. X5  PC4
  8. X6  PB12
  9. X7  PB14

  10. Y0  PC9
  11. Y1  PA8
  12. Y2  PA11
  13. Y3  PA12
  14. Y4  PD2
  15. Y5  PC12

  16. AD0 PC1
  17. AD1 PC2
  18. */

  19. #include "system.h"
  20. #include "SysTick.h"
  21. #include "led.h"
  22. #include "pwm.h"
  23. #define TIME_1MS 1000
  24. #define TIME_3min 36000000
  25. #define TRUE  1
  26. #define FALSE 0
  27. volatile  u32  timer_tick_count = 0; //定時器節拍
  28. volatile u32  timer_tick_count1 = 0; //建立任務池
  29. volatile u32  timer_tick_count2 = 0; //建立任務池
  30. static u16 Key_Value=0;
  31. static u16 Key_Value1=0;
  32. static u8 light_FG= FALSE;
  33. static u8 P_FG= FALSE;
  34. u16 value=0;
  35. u8 a=0;
  36. u8 i ;
  37. float vol=0;               
  38. int  PWM_TAB[10]={0,                 //白天不工作
  39.                                    200,             //晚上無人20%亮度
  40.                               1000             //有人亮度100%
  41.                              };
  42. u8 pwm=0;
  43. u8 key_SCAN;
  44. #define X0    PCin(7)                                                           
  45. //程序入口
  46. int main()
  47. {       
  48.         Output_GPIO_Init();   //輸出GPIO 初始化。
  49.     ADCx_Init();       //AD初始化
  50.         TimerInit();//定時器初始化
  51.         while(1)
  52.         {
  53.                 /*Y0  PC9 Y1  PA8 Y2  PA11 Y3  PA12 Y4  PD2  Y5  PC12*/
  54.             /*ADC轉換*/
  55.                  value=Get_ADC_Value(ADC_Channel_11,30);     //光電傳感器,在沒有放書的情況下,不會觸發,只要放到上面有書籍,就要觸發。
  56.                    vol=(float)value*(3.3/4096);    //轉換完成之后的值
  57.            i=(int)vol;    //數據類型需要強制轉換         
  58.               if(i>=1) //天黑的情況
  59.                   {
  60.                       light_FG= TRUE;
  61.                           a=1;   //占空比20%
  62.                           if(P_FG==TRUE)
  63.                           { light_FG= FALSE;
  64.                                   a=2;
  65.                           }
  66.                                   
  67.                           if(timer_tick_count1>2000)      //設置天黑有人的情況   紅外識別   可認為是按鍵檢測
  68.                           {timer_tick_count1=0;
  69.                   if(X0==1)
  70.                                   {
  71.                                   Key_Value=1;
  72.                                   }
  73.                                     if(X0==0)
  74.                                   {
  75.                                   Key_Value=0;
  76.                                   }
  77.                                   
  78.                              if(Key_Value== Key_Value1)
  79.                                  {
  80.                                           if( Key_Value==0)     //邊沿處理
  81.                                           {Key_Value1= Key_Value;
  82.                                            light_FG= FALSE;
  83.                                            P_FG=TRUE;
  84.                                                 timer_tick_count2=0;
  85.                                a=2;
  86.                                           }
  87.                                  }  
  88.                           }
  89.                   }
  90.                    else
  91.                  {
  92.              GPIO_SetBits(GPIOC,GPIO_Pin_9);     //高電平無效   PC9對應Y0
  93.         //                 GPIO_ResetBits(GPIOC,GPIO_Pin_9);
  94.                           light_FG= FALSE;
  95.                   }  
  96.                  if( light_FG==TRUE)  
  97.            {                
  98.                            //PWM波輸出,調節燈光亮度
  99.                                 if( timer_tick_count>=TIME_1MS)     //頻率為1K    產生PWM波形                       
  100.                                   {        timer_tick_count=0;                   //周期值清零                                   
  101.                                   }                  
  102.                                 if( timer_tick_count<PWM_TAB[a])     //調節占空比
  103. //                                   GPIO_SetBits(GPIOC,GPIO_Pin_9);     //高電平無效   PC9對應Y0
  104.                                  {         GPIO_ResetBits(GPIOC,GPIO_Pin_9);   //低電平有效   PC9對應Y0
  105.                                   }               
  106.                                   else
  107.                                   { GPIO_SetBits(GPIOC,GPIO_Pin_9);     //高電平無效   PC9對應Y0
  108.                                
  109.                                    }
  110.                    }                 
  111.                   
  112.          if( P_FG==TRUE)  
  113.            {                
  114.                            //PWM波輸出,調節燈光亮度
  115.                                 if( timer_tick_count>=TIME_1MS)     //頻率為1K    產生PWM波形                       
  116.                                   {        timer_tick_count=0;                   //周期值清零                                   
  117.                                   }                  
  118. ……………………

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

所有資料51hei提供下載:
完成版 - 副本.rar (235.3 KB, 下載次數: 47)



作者: aking991    時間: 2019-5-22 08:16
如果按你畫的PCB板去作成品,肯定危險太大,而且肯定老會死機,一是你的繼電器設計控制接口沒有進行強弱電隔離措施,二是你的單片機晶振離單片機太遠,一干擾單片機就掛了,看來是個布板新手
作者: sakuralap    時間: 2019-5-22 20:25
aking991 發表于 2019-5-22 08:16
如果按你畫的PCB板去作成品,肯定危險太大,而且肯定老會死機,一是你的繼電器設計控制接口沒有進行強弱電 ...

對的,pcb還不熟
作者: sakuralap    時間: 2019-5-22 20:32
aking991 發表于 2019-5-22 08:16
如果按你畫的PCB板去作成品,肯定危險太大,而且肯定老會死機,一是你的繼電器設計控制接口沒有進行強弱電 ...

謝謝指教。
作者: sakuralap    時間: 2019-5-22 20:38
aking991 發表于 2019-5-22 08:16
如果按你畫的PCB板去作成品,肯定危險太大,而且肯定老會死機,一是你的繼電器設計控制接口沒有進行強弱電 ...

強弱電隔離措只要把220v的獨立一塊和其他線幾乎沒有交集就可以了吧?
作者: 浮夢先森    時間: 2019-6-23 09:50
請問這個的PCB圖和原理圖有嗎,你發的文件里面貌似沒有
作者: sakuralap    時間: 2019-6-24 15:30
浮夢先森 發表于 2019-6-23 09:50
請問這個的PCB圖和原理圖有嗎,你發的文件里面貌似沒有

原理圖按照Proteus仿真圖照搬過來加上電源模塊就行了,加一下封裝就可以畫pcb了,因為這個的pcb當時我是剛剛學,隨便畫的,不怎么好,還是自己畫一個吧。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1