单片机信号检测问题

问题1描述:具体作用是用来控制红绿灯倒计时的,一台控制器,一块控制板,控制器有红黄绿三个信号,其中一个信号进来到控制板以后首先是对信号进行检测,三种颜色的检测脚分别是绿色... 问题1描述:具体作用是用来控制红绿灯倒计时的,一台控制器,一块控制板,控制器有红黄绿三个信号,其中一个信号进来到控制板以后首先是对信号进行检测,三种颜色的检测脚分别是绿色P2.2,黄色P3.5,红色P2.1,前辈指导说因为进来的是方波信号,用0,1检测无法检测进来的信号,让我定100ms,计数信号高电平的次数,若大于20次则判断接收到信号。现在的问题是,我怎样才能对这方波信号进行计数判断有没有大于20次?计数器引脚已经被作为IO口使用了。
问题2描述:在信号检测到的情况下,比如说一旦检测到绿色的信号了,直到绿色信号停止,单片机怎样才能记住这段信号的时间(相当于前一段周期学习住),并在下一个周期显示时间并开始倒计时(比如控制器给的绿色信号是50秒,然后下个周期绿色从50秒开始倒计时)。
展开
 我来答
做而论道
高能答主

2012-11-08 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
定100ms,计数信号高电平的次数,若大于20次则判断接收到信号。现在的问题是,我怎样才能对这方波信号进行计数判断有没有大于20次?计数器引脚已经被作为IO口使用了。

----
INT0或INT1,占用没有?
用外部中断对脉冲计数,在100ms中,计数的个数,大于20、小于20,很容易判断的。
查查《单片机频率计》方面的知识,即可解决。
*****************
一旦检测到绿色的信号了,直到绿色信号停止,单片机怎样才能记住这段信号的时间(相当于前一段周期学习住)

----
也这不难的。
利用定时100ms的中断函数,对某个变量进行累加,即可统计出这段信号的时间有多少个《100ms》。
追问
你好,外部中断引脚也被占用,只有普通IO口P2.1,P2.2和P3.5用以做信号检测口,如果要检测进来的方波信号,应该怎样对信号进行计数?程序能稍微给个提示么?万分感谢
追答
那就需要用软件了,对高低电平进行检测,检测到一次,某变量加一。
例程简述如下:
……
while(K == 0); //低电平时,原地循环
while(K == 1); //高电平时,原地循环
i++; //经历了上面的程序,执行到这里,就是经历了一个信号的周期,个数加一

再循环到前面去。
----
低、高电平等待期间,条件应再弄的复杂些,别在那死等,否则,会死机的。
zyj1739
2012-11-07 · TA获得超过140个赞
知道小有建树答主
回答量:238
采纳率:0%
帮助的人:189万
展开全部
还是有点糊涂了,呵呵。先要考虑这三种颜色的灯是不是同时的,如果象交通灯一样,就不存在同时的问题,而且也不必脉冲计数,例如红灯倒计时,它的信号脚要么就是高50S 或是低50S,如果同时都亮,会有点难度,现在最重要的是了解控制器状态到底是什么回事。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式