打印
[国产单片机]

如何利用单片机控制开关来检测电网电压过零点的简单程序

[复制链接]
1896|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liweicheng85|  楼主 | 2013-1-8 11:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序如下:
#include<reg52.h>
sbit sc=P1^0;    //检测电网电平
sbit kg=P1^7;    //开关检测
sbit sd=P0^7;    //输出

void delayms(unsigned char  i)
{
unsigned char  j;
while(i--)
{
  for(j=0;j<116;j++)
  {
       ;
  }
}
}

void GET_Z()
{
  while(sc==0)
;
    while(sc==1)
;
}
void GET_K()
{
bit k=1;
while(k==1)
    {
      while(kg==0);
      
   delayms(20);
   if(kg==1)
  k=0 ;
      
    }
k=1;
while(k==1)
    {
      while(kg==1);
      
   delayms(20);
   if(kg==0)
  k=0 ;
      
    }
}  
void main()
{
bit  R_P0;
      sd=0;
      R_P0=0;
   P1=0xFF;
   while(1)
   {
     GET_K();
   GET_Z();
   R_P0=~R_P0;
   sd=R_P0;
   delayms(100);
   
    }
}

相关帖子

沙发
McuPlayer| | 2013-1-8 11:39 | 只看该作者
PIC官网有个例程,电路和程序都有,可以参考

使用特权

评论回复
板凳
airwill| | 2013-1-8 12:34 | 只看该作者
初步看明白了楼主的程序.
不过这段程序很成问题. 基本上不能达到要的要求.
主要的问题是出在 delayms(20); 上.
软件能检测跳变, 但跳变时间点被 delayms(20); 给耽误掉了.

使用特权

评论回复
地板
Ketose| | 2013-1-11 10:36 | 只看该作者
用中断SC是上升沿触发,KG用高电平解发。

使用特权

评论回复
5
赛元sc| | 2013-1-23 14:26 | 只看该作者
楼主 这个程序我都看明白了哦   好像是蛮假、难的哦

使用特权

评论回复
6
贞观之治| | 2013-1-23 14:29 | 只看该作者
要配合硬件说明就好

使用特权

评论回复
7
电子灵| | 2013-3-18 14:49 | 只看该作者
检测过零的方法,硬件部分最好还是用一个比较器,两线取压电压然后分压送入比较器的两个端口,比较输出口的电压变化来判断,简单。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:(Stay hungry, stay foolish)——人不是为了光活着而活着,人活着有最起码的底线:有尊严,有快乐,有希望!

34

主题

830

帖子

4

粉丝