找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2165|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机可控硅占空比调节+过零检测程序与Proteus仿真电路图

[复制链接]
跳转到指定楼层
楼主
     一位共阴数码管显示档位,一个开关控制开关机,一个开关调节档位,共四挡。

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


单片机源程序如下:
  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. }

复制代码



Keil5代码与Proteus8.13仿真下载: 51单片机可控硅调档位 仿真 程序.rar (68.08 KB, 下载次数: 90)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表