标题: 如何实现红外对管收到信号一次变量加1 [打印本页]

作者: 854810145    时间: 2017-3-17 23:32
标题: 如何实现红外对管收到信号一次变量加1
要用到中断,中断这块不大懂,论坛大大能给我指点一下不
作者: angmall    时间: 2017-3-18 11:58
红外对管的工作原理就是利用光电管受光照和不受光照的状态差别来区分是否受遮挡,有光照即无遮挡时,光电管处于导通态,被遮挡则无光照,光电管则处于截止态.要两组红外对管,根据哪路先被遮断来判断方向即可.长的距离需要给发射管加载波.“一般是40KHz” 接收管端做放大和锁相环.“锁40KHz频率”
当接收到红外发射管的信号时锁相环输出高.人挡住输出低.或者反过来.


  1. /*-----------------------------------------------
  2.   名称:外部中断0电平触发
  3.   内容:通过中断接口P3.2连接的红外对管接收头
  4. ------------------------------------------------*/
  5. #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
  6. /*------------------------------------------------
  7.                     主程序
  8. ------------------------------------------------*/
  9. unsigned int count=0;

  10. main()
  11. {
  12.   
  13.   EA=1;          //全局中断开
  14.   EX0=1;         //外部中断0开
  15.   IT0=0;         //电平触发
  16.   while(1)
  17.   {
  18.                  //在此添加其他程序
  19.   }
  20. }
  21. /*------------------------------------------------
  22.                  外部中断程序
  23. ------------------------------------------------*/
  24. void ISR_Key(void) interrupt 0 using 1
  25. {
  26. count++;     //进入中断程序执行程序, 红外对管收到信号一次变量加1
  27. //此时可以通过 EA=0指令暂时关掉中断
  28.    
  29. }

复制代码

作者: 854810145    时间: 2017-3-18 13:51
顶,求大神帮忙啊
作者: imxuheng    时间: 2017-3-18 14:02
给你个例子,摘自“JH《单片机C语言程序设计实训100例——基于8051+Proteus仿真》案例压缩包”

无标题.jpg (173.04 KB, 下载次数: 97)

无标题.jpg

外部中断0计数.zip

162 Bytes, 下载次数: 15


作者: 15874829055    时间: 2017-3-18 14:42
每接收一次延迟 不然太快
作者: 卡卡卡卡    时间: 2017-3-18 16:09
用脉冲计数
作者: yzwzfyz    时间: 2017-3-18 23:51
关键看你如何定义“收到信号一次”?





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1