永发信息网

关于单片机测量多路脉冲宽度的问题

答案:3  悬赏:30  手机版
解决时间 2021-02-07 22:36
  • 提问者网友:wodetian
  • 2021-02-07 11:06
1.单片机为2051,用在路边红绿灯的人行灯到计时器。大概的原理:当人行红灯到来后,输入220V市电,通过整流后接TP521光耦,此时光耦右边输出一个电平(低电平持续0-99s),通过74ls14接入单片机2051的int0;同理绿灯也是如此。请问写,如何测得这两个电平的宽度并且在数码管显示出来(第一次数码管不亮,之后每次对应显示上一次的电平宽度值倒计时)
最佳答案
  • 五星知识达人网友:雪起风沙痕
  • 2021-02-07 12:03
记得2051单片机应该是有两个定时器的,更改T0,T1计数器工作模式,同时设置EX0,EX1外部中断,有中断时对于定时器开始计时,然后显示就可以了。估计代码应该在2到3百行就可以搞定了。另外不知道管脚怎么分配,把原理图贴上,或许哪天闲的话就给敲一个。
全部回答
  • 1楼网友:一袍清酒付
  • 2021-02-07 15:01
首先,低电平持续0-99s,时间很长精度要求应该不高,这个根本不需要用中断方式,用查询方式就可以了,而且有多个灯,用循环查询的方式比较好。
  • 2楼网友:往事埋风中
  • 2021-02-07 13:26
建议你在int1引脚上,加一个反相器。这样,可以使用中断功能来完成。程序如下: org 0000h sjmp main org 000bh ljmo i_t0 org 00013h ljmp i_int1 main: mov r0,#0 mov tmod,#02h mov th0,#0 mov tl0,#0 setb it1 setb ea setb ex1 setb et0 sjmp $ i_int1: setb tr0 jnb p3.3,$ mov 60h,tl0 mov 61h,r0 mov r0,#0 mov tl0,#0 clr tr0 reti i_t0: clr tf0 inc r0 reti end 最后正脉冲的宽度为:[(61h)×256+(60h)]×t 其中:t为机器周期,如果是6mhz的话就是2us,如果是12mhz的话就是2us。 我评经验,你要测量正脉冲宽度是要计算占空比。这个程序,实现该功能没问题。 附带说一句,你这样的问题才30分,少了点哇。呵呵,写程序很辛苦的啦~!:)呵呵
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯