单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3106|回复: 1
收起左侧

对射式光电传感器—计数传感器 0~9999计数器和TTL输出程序仿真

[复制链接]
77qfy 发表于 2017-7-15 09:38 | 显示全部楼层 |阅读模式
关于对射光电传感器的一些资料,有程序
0.png 0.png
简要说明:
一、长尺寸:32mm X宽11mm X高20mm
二、主要芯片:LM393、对射式红外头
三、工作电压:直流5伏
四、特点:
1、具有信号输出指示。
2、单路信号输出。
3、输出有效信号为低电平。
4、灵敏度不可调。
5、可用于工件计数、电机测速。。。。
6、电路板输出开关量!

适用场合:单片机学习、电子竞赛、产品开发、毕业设计。。。

【图片展示】
0.png

与单片机连接测试程序
TTL输出测试程序源程序如下:
  1. /********************************************************************
  2.                            龙戈电子
  3. 实现功能:此版配套测试程序
  4. 使用芯片:AT89S52
  5. 晶振:11.0592MHZ
  6. 波特率:9600
  7. 编译环境:Keil
  8. 作者:LOGO
  9. 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     
  10. *********************************************************************/
  11. /********************************************************************
  12. 说明:1、        当测量浓度大于设定浓度时,单片机IO口输出低电平
  13. *********************************************************************/
  14. #include<reg52.h>                 //库文件
  15. #define uchar unsigned char//宏定义无符号字符型
  16. #define uint unsigned int  //宏定义无符号整型

  17. /********************************************************************
  18.                             I/O定义
  19. *********************************************************************/
  20. sbit LED=P1^0;         //定义单片机P1口的第1位 (即P1.0)为指示端
  21. sbit DOUT=P2^0;         //定义单片机P2口的第1位 (即P2.0)为传感器的输入端
  22. /********************************************************************
  23.                             延时函数
  24. *********************************************************************/
  25. void delay()//延时程序
  26. {
  27. uchar m,n,s;
  28. for(m=20;m>0;m--)
  29. for(n=20;n>0;n--)
  30. for(s=248;s>0;s--);
  31. }
  32. /********************************************************************
  33.                             主函数
  34. *********************************************************************/
  35. void main()
  36. {
  37.         while(1)   //无限循环
  38.         {
  39.          LED=1;           //熄灭P1.0口灯
  40.          if(DOUT==0)//当浓度高于设定值时 ,执行条件函数
  41.          {
  42.             delay();//延时抗干扰
  43.                 if(DOUT==0)//确定 浓度高于设定值时 ,执行条件函数
  44.             {
  45. ……………………

  46. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码


0~9999计数器程序源程序如下:
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned  int        
  4. uchar duan[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};         //所需的段的位码
  5. //uchar wei[4]={0XEf,0XDf,0XBf,0X7f};                                 //位的控制端        (开发板)
  6. uchar wei[4]={0X80,0X40,0X20,0X10};                                 //位的控制端        (仿真)
  7. uint z,x,c,v, date;        //定义数据类型
  8. uint dispcount=0;
  9. /******************************************************************

  10. 延时函数

  11. ******************************************************************/
  12. void delay(uchar t)
  13. {
  14.   uchar i,j;
  15.    for(i=0;i<t;i++)
  16.    {
  17.             for(j=13;j>0;j--);
  18.          { ;
  19.          }
  20.    }
  21. }

  22. /**********************************************************************
  23.                 数码管动态扫描
  24. *********************************************************************/
  25. void xianshi()
  26. {
  27. /*****************数据转换*****************************/
  28.   z=date/1000;                         //求千位
  29.   x=date%1000/100;                 //求百位
  30.   c=date%100/10;                 //求十位
  31.   v=date%10;                         //求个位

  32.       P2=wei[0];
  33.           P0=duan[z];
  34.           delay(50);  
  35.             P2=wei[1];
  36.       P0=duan[x];
  37.           delay(50);  
  38.              P2=wei[2];
  39.       P0=duan[c];
  40.           delay(50);  
  41.       P2=wei[3];
  42.       P0=duan[v];
  43.           delay(50);  
  44.                                        

  45.        }

  46. /*************************************************************************
  47.                                 主函数        
  48. **************************************************************************/
  49. void ExtInt0() interrupt 0 //中断服务程序
  50. {
  51. dispcount++; //每按一次中断按键,计数加一
  52. if (dispcount==9999) //计数范围0-9999
  53. {dispcount=0;}
  54. }

  55. /*************************************************************************
  56.                                 主函数        
  57. **************************************************************************/
  58. void main()
  59. {  

  60. TCON=0x01; //中断设置
  61. ……………………

  62. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
【Realplay】对射光电传感器 红外对射计数传感器 传感器模块.rar (682.17 KB, 下载次数: 70)

评分

参与人数 1黑币 +4 收起 理由
多德 + 4 很给力!

查看全部评分

回复

使用道具 举报

koaer 发表于 2019-11-8 15:26 | 显示全部楼层
谢谢啦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|单片机论坛 |51黑电子论坛技术交流 QQ 管理员QQ:125739409;技术交流QQ群636986012

Powered by 单片机教程网

快速回复 返回顶部 返回列表