找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

單片機(jī)控制光耦+可控硅調(diào)節(jié)亮度程序+過零檢測(cè)觸發(fā)電路圖

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
用光耦實(shí)現(xiàn)過零檢測(cè)觸發(fā)可控硅電路原理圖如下:


單片機(jī)可控調(diào)節(jié)程序:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit SW1=P2^0;//用于調(diào)高燈的亮度
  6. sbit SW2=P2^1;//用于調(diào)低燈的亮度
  7. sbit CF=P2^2;//用于觸發(fā)可控硅
  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;//設(shè)定外部中斷 0 為下降沿觸發(fā)方式
  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 延時(shí)防抖
  27. if(SW1==0)
  28. {
  29. z--;
  30. if(z==0){z=19;}//燈達(dá)到最亮以后繼續(xù)按下 SW2,燈會(huì)變到最暗
  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;}//燈達(dá)到最暗以后繼續(xù)按下 SW1,燈會(huì)變到最亮
  41. }
  42. while(!SW2);
  43. }
  44. liangmie();
  45. if(j==0)
  46. {
  47. EA=1; //開總中斷
  48. }
  49. else
  50. {
  51. EA=0; //關(guān)總中斷
  52. }

  53. }
  54. }
  55. /************2ms 按鍵防抖動(dòng)延時(shí)函數(shù)**********/
  56. void kdelay()
  57. {
  58. for(i=0;i<200;i++)
  59. {
  60. delay10us(); //調(diào)用 200 次 10us 約為 2ms
  61. }
  62. }
  63. /*將半周期 0.01 秒平均分成 20 等分,每等分為 0.5 毫秒,即 500us*/
  64. /************0.5ms 倍數(shù)的子函數(shù)************/
  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();//調(diào)用 50 次 10us 約為 502us
  73. }
  74. }
  75. }
  76. /*************脈沖函數(shù)*****************/
  77. void maichong()
  78. {
  79. CF=0;
  80. for(k=0;k<10;k++)
  81. {
  82. delay10us();//調(diào)用 10 次 10us 約為 102us
  83. }
  84. CF=1;
  85. }
  86. /*************10us 延時(shí)函數(shù)**************/
  87. void delay10us()
  88. {
  89. _nop_(); _nop_();_nop_();
  90. _nop_(); _nop_();_nop_();
  91. }
  92. /************燈的亮滅控制函數(shù)***********/
  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 函數(shù)**********/
  107. void Int0(void) interrupt 0
  108. {
  109. delay500us(z);//控制角的大小由 z 決定
  110. maichong();//發(fā)脈沖
  111. }
復(fù)制代碼



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏18 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:496131 發(fā)表于 2019-5-21 17:02 | 只看該作者
謝謝大神的分享 好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:43387 發(fā)表于 2020-2-10 15:51 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

地板
ID:848824 發(fā)表于 2021-3-15 04:17 來自手機(jī) | 只看該作者
成功了嗎?
回復(fù)

使用道具 舉報(bào)

5#
ID:1003611 發(fā)表于 2022-2-23 19:09 | 只看該作者
要是有原文件就更好了
回復(fù)

使用道具 舉報(bào)

6#
ID:65237 發(fā)表于 2023-2-10 09:08 | 只看該作者
樓主打個(gè)包發(fā)一下哦 謝謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表