51单片机C语言程序

我想用89C52做一个电路,判断每秒脉冲个数,当一秒钟内没有一个脉冲输入,继电器吸合,C语言程序怎么做?

这个很简单,可以利用单片机的定时器来完成


当有脉冲输入的时候,启动定时器,并对定时器的计数值进行清零


每一次脉冲输入都清零计数值,当脉冲消失后,定时器的计数值达到指定时间则关闭


关闭的同时,调用其它函数,例如你的继电器控制


需要说明的是,我使用的开发板和你的不见得一样,所以端口的使用只能你自己修改了


但程序已经经过硬件测试成功,请放心使用,如果满意记得采纳哦


/***************************************************************************/

#include <reg51.h> //51单片机通用头文件

sbit P24=P1^0; sbit P25=P1^1; sbit P26=P1^2; sbit P27=P1^3;//数码管位选端口

char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示编码

sbit k=P3^7; sbit KK=P1^4;//定义按键和继电器端口

int t,n,s,fe=0;

/***************************************************************************/

void YS(int hs){int hk;for(;hs>0;hs--){for(hk=100;hk>0;hk--);}}//延时函数

/***************************************************************************/

void XS(int xs)//数码管显示

{

char d1,d2,d3,d4;

d1=(xs/1)%10;  d2=(xs/10)%10;  d3=(xs/100)%10;  d4=(xs/1000)%10;

P0=table[d1]; P27=0; YS(5); P27=1;

P0=table[d2]; P26=0; YS(5); P26=1;

P0=table[d3]; P25=0; YS(5); P25=1;

P0=table[d4]; P24=0; YS(5); P24=1;

}

/***************************************************************************/

void main(void)//主函数

{

     TMOD=0x01; EA=1; ET0=1; KK=0;//定时器初始化

     TH0=(65536-921)/256; TL0=(65536-921)%256;//定时器初值

     while(1)

     {

         XS(t);//调用数码管显示函数

         if(k==0)//如果按键被按下

         {

              YS(10);//延时去抖动

              if(k==0)//如果是有效按键

              {

                  TR0=1;//启动定时器,开始计时

                  n=0;//每次按键都清空定时计数

                  t++;//按键值累加一次

                  KK=1;//继电器打开

                  while(!k){XS(t);}//等待按键松开,并调用数码管显示,避免黑屏

              }

         }

         if(fe==1)//如果没按键输入

         {

             fe=0;t=0;//清空按键计数值,并设置标识符

             KK=0;//继电器吸合

         }

     }

}

/***************************************************************************/

void int1() interrupt 1 //定时器中断

{

     TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;//n等于100时,则为1秒

     if(n>1000){TR0=0;n=0;fe=1;}//如果达到指定时间,则关闭定时器,并设置标识符

}

/***************************************************************************/

温馨提示:答案为网友推荐,仅供参考
相似回答