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

標題: 單片機控制光耦+可控硅調節亮度程序+過零檢測觸發電路圖 [打印本頁]

作者: 1256818476    時間: 2019-1-21 17:25
標題: 單片機控制光耦+可控硅調節亮度程序+過零檢測觸發電路圖
用光耦實現過零檢測觸發可控硅電路原理圖如下:


單片機可控調節程序:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit SW1=P2^0;//用于調高燈的亮度
  6. sbit SW2=P2^1;//用于調低燈的亮度
  7. sbit CF=P2^2;//用于觸發可控硅
  8. sbit SW3=P2^3;//用于控制燈的亮滅
  9. void kdelay();
  10. void maichong();
  11. delay500us(uint z);
  12. void delay10us();
  13. void liangmie();
  14. uint x,y,z,k,i,j;
  15. void main()
  16. {
  17. IT0=1;//設定外部中斷 0 為下降沿觸發方式
  18. EX0=1;//開外部中斷 0

  19. P2=0xff;
  20. z=10;
  21. j=0;
  22. while(1)
  23. {
  24. if(SW1==0)
  25. {
  26. kdelay(); //軟件 2ms 延時防抖
  27. if(SW1==0)
  28. {
  29. z--;
  30. if(z==0){z=19;}//燈達到最亮以后繼續按下 SW2,燈會變到最暗
  31. }
  32. while(!SW1);//等待按鍵彈起
  33. }
  34. if(SW2==0)
  35. {
  36. kdelay();
  37. if(SW2==0)
  38. {
  39. z++;
  40. if(z==20){z=0;}//燈達到最暗以后繼續按下 SW1,燈會變到最亮
  41. }
  42. while(!SW2);
  43. }
  44. liangmie();
  45. if(j==0)
  46. {
  47. EA=1; //開總中斷
  48. }
  49. else
  50. {
  51. EA=0; //關總中斷
  52. }

  53. }
  54. }
  55. /************2ms 按鍵防抖動延時函數**********/
  56. void kdelay()
  57. {
  58. for(i=0;i<200;i++)
  59. {
  60. delay10us(); //調用 200 次 10us 約為 2ms
  61. }
  62. }
  63. /*將半周期 0.01 秒平均分成 20 等分,每等分為 0.5 毫秒,即 500us*/
  64. /************0.5ms 倍數的子函數************/
  65. delay500us(uint z)
  66. {
  67. uchar x,y;

  68. for(x=0;x<z;x++)
  69. {
  70. for(y=0;y<50;y++)
  71. {
  72. delay10us();//調用 50 次 10us 約為 502us
  73. }
  74. }
  75. }
  76. /*************脈沖函數*****************/
  77. void maichong()
  78. {
  79. CF=0;
  80. for(k=0;k<10;k++)
  81. {
  82. delay10us();//調用 10 次 10us 約為 102us
  83. }
  84. CF=1;
  85. }
  86. /*************10us 延時函數**************/
  87. void delay10us()
  88. {
  89. _nop_(); _nop_();_nop_();
  90. _nop_(); _nop_();_nop_();
  91. }
  92. /************燈的亮滅控制函數***********/
  93. void liangmie()
  94. {
  95. if(SW3==0)
  96. {
  97. kdelay();
  98. if(SW3==0)
  99. {
  100. j++;
  101. if(j==2){j=0;}
  102. }
  103. while(!SW1);//等待按鍵彈起
  104. }
  105. }
  106. /**********外部中斷 0 函數**********/
  107. void Int0(void) interrupt 0
  108. {
  109. delay500us(z);//控制角的大小由 z 決定
  110. maichong();//發脈沖
  111. }
復制代碼




作者: 電控1999    時間: 2019-5-21 17:02
謝謝大神的分享 好資料,51黑有你更精彩!!!

作者: shideli    時間: 2020-2-10 15:51
謝謝分享
作者: zhangleixbyl    時間: 2021-3-15 04:17
成功了嗎?
作者: TSTCQH    時間: 2022-2-23 19:09
要是有原文件就更好了

作者: 阿飛7812    時間: 2023-2-10 09:08
樓主打個包發一下哦 謝謝




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