单片机信号检测问题
问题1描述:具体作用是用来控制红绿灯倒计时的,一台控制器,一块控制板,控制器有红黄绿三个信号,其中一个信号进来到控制板以后首先是对信号进行检测,三种颜色的检测脚分别是绿色...
问题1描述:具体作用是用来控制红绿灯倒计时的,一台控制器,一块控制板,控制器有红黄绿三个信号,其中一个信号进来到控制板以后首先是对信号进行检测,三种颜色的检测脚分别是绿色P2.2,黄色P3.5,红色P2.1,前辈指导说因为进来的是方波信号,用0,1检测无法检测进来的信号,让我定100ms,计数信号高电平的次数,若大于20次则判断接收到信号。现在的问题是,我怎样才能对这方波信号进行计数判断有没有大于20次?计数器引脚已经被作为IO口使用了。
问题2描述:在信号检测到的情况下,比如说一旦检测到绿色的信号了,直到绿色信号停止,单片机怎样才能记住这段信号的时间(相当于前一段周期学习住),并在下一个周期显示时间并开始倒计时(比如控制器给的绿色信号是50秒,然后下个周期绿色从50秒开始倒计时)。 展开
问题2描述:在信号检测到的情况下,比如说一旦检测到绿色的信号了,直到绿色信号停止,单片机怎样才能记住这段信号的时间(相当于前一段周期学习住),并在下一个周期显示时间并开始倒计时(比如控制器给的绿色信号是50秒,然后下个周期绿色从50秒开始倒计时)。 展开
2个回答
展开全部
定100ms,计数信号高电平的次数,若大于20次则判断接收到信号。现在的问题是,我怎样才能对这方波信号进行计数判断有没有大于20次?计数器引脚已经被作为IO口使用了。
----
INT0或INT1,占用没有?
用外部中断对脉冲计数,在100ms中,计数的个数,大于20、小于20,很容易判断的。
查查《单片机频率计》方面的知识,即可解决。
*****************
一旦检测到绿色的信号了,直到绿色信号停止,单片机怎样才能记住这段信号的时间(相当于前一段周期学习住)
----
也这不难的。
利用定时100ms的中断函数,对某个变量进行累加,即可统计出这段信号的时间有多少个《100ms》。
----
INT0或INT1,占用没有?
用外部中断对脉冲计数,在100ms中,计数的个数,大于20、小于20,很容易判断的。
查查《单片机频率计》方面的知识,即可解决。
*****************
一旦检测到绿色的信号了,直到绿色信号停止,单片机怎样才能记住这段信号的时间(相当于前一段周期学习住)
----
也这不难的。
利用定时100ms的中断函数,对某个变量进行累加,即可统计出这段信号的时间有多少个《100ms》。
追问
你好,外部中断引脚也被占用,只有普通IO口P2.1,P2.2和P3.5用以做信号检测口,如果要检测进来的方波信号,应该怎样对信号进行计数?程序能稍微给个提示么?万分感谢
追答
那就需要用软件了,对高低电平进行检测,检测到一次,某变量加一。
例程简述如下:
……
while(K == 0); //低电平时,原地循环
while(K == 1); //高电平时,原地循环
i++; //经历了上面的程序,执行到这里,就是经历了一个信号的周期,个数加一
再循环到前面去。
----
低、高电平等待期间,条件应再弄的复杂些,别在那死等,否则,会死机的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询