標(biāo)題: 51單片機(jī)可控硅占空比調(diào)節(jié)+過零檢測(cè)程序與Proteus仿真電路圖 [打印本頁]

作者: 634658537    時(shí)間: 2023-2-22 17:30
標(biāo)題: 51單片機(jī)可控硅占空比調(diào)節(jié)+過零檢測(cè)程序與Proteus仿真電路圖
     一位共陰數(shù)碼管顯示檔位,一個(gè)開關(guān)控制開關(guān)機(jī),一個(gè)開關(guān)調(diào)節(jié)檔位,共四擋。

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


單片機(jī)源程序如下:
  1. #include <reg51.h>
  2. #include"intrins.h"
  3. sbit pump=P3^7;
  4. sbit pump_button=P3^5;
  5. sbit ON_OFF=P3^6;
  6. sbit COM1=P3^4;

  7. unsigned char zero_crossing=0;
  8. unsigned char setting=0;
  9. unsigned char k=0;
  10. unsigned char tab[ ]={0x03f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  

  11.         /****************************************************************************
  12. display
  13. ****************************************************************************/
  14. void delay1(void)      
  15. {
  16.     unsigned int j;
  17.           for(j=0;j<100;j++)
  18.                 ;
  19.   }

  20. void display1()
  21. {  
  22.     COM1=0;        
  23.           P1=tab[setting%10];                       
  24.     delay1();        
  25.     COM1=1;



  26.                
  27. }

  28. void Delayms(unsigned int n)//ms delay

  29. {

  30. unsigned int i,j;

  31. for(j=n;j>0;j--)

  32. for(i=112;i>0;i--);

  33. }


  34. void main(void)
  35. {

  36. IT0=1;
  37. EX0=1;
  38. EA=0;
  39. pump=0;
  40. setting=1;
  41. zero_crossing=0;
  42. while(1)
  43. {
  44.         if(k==1)
  45.         {
  46.                 display1();
  47.         }
  48.     if(ON_OFF==0)        
  49.        {
  50.          Delayms(20);
  51.         if(ON_OFF==0)
  52.          {
  53.                                           EA=~EA;
  54.                                           setting=1;
  55.                                           k++;
  56.                                          if(k>=2)
  57.                                          {
  58.                                          k=0;
  59.                                          }
  60.          
  61.                                        
  62.                                          
  63.        while(!ON_OFF);
  64.          }
  65.          }

  66.          
  67.            
  68.       if(pump_button==0)        
  69.        {
  70.          Delayms(20);
  71.         if(pump_button==0)
  72.          {
  73.           setting++;
  74.          if (setting==5)
  75.          {
  76.                                          setting=1;      
  77.          }
  78.                                  while(!pump_button);
  79.          }

  80.         }        

  81. }
  82. }

  83. //zero crossing checking
  84. void ext0(void) interrupt 0
  85. {
  86. zero_crossing++;
  87.          if(zero_crossing>=setting)
  88. {
  89. pump=1;
  90. Delayms(4);
  91. pump=0;
  92. zero_crossing=0;

  93. }

  94. }

復(fù)制代碼



Keil5代碼與Proteus8.13仿真下載: 51單片機(jī)可控硅調(diào)檔位 仿真 程序.rar (68.08 KB, 下載次數(shù): 90)





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