找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13764|回复: 35
打印 上一主题 下一主题
收起左侧

GP2D12传感器,来进行激光,红外线测距仿真 含单片机数模转换程序

  [复制链接]
跳转到指定楼层
楼主
ID:262 发表于 2016-8-15 13:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 heicad 于 2016-8-15 13:55 编辑

用GP2D12传感器,来进行激光,红外线测距,用51单片机,ADC0809进行数模转换

自己亲手做的,亲测可用.

附:PROTEUS仿真电路文件,KEIL C 语言源代码,
  1. #include <reg52.h>
  2. #include <intrins.h> //包含NOP空指令函数_nop_
  3. #include<stdio.h>
  4. typedef unsigned char BYTE;
  5. typedef unsigned int WORD;
  6. typedef bit BOOL;

  7. #define uchar unsigned char
  8. #define uint  unsigned int

  9. sbit eoc=P3^0;
  10. sbit oe =P3^1;
  11. sbit st =P3^2;

  12. sbit clk=P3^6;

  13. sbit rs=P0^7;
  14. sbit rw=P0^6;
  15. sbit ep=P0^5;

  16. uchar code table[]="0123456789";


  17. uchar code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x0,0x0};//数码管共阴级显示0~9

  18. uint ad_0809,a1,a2,a3;
  19. uchar out;



  20. void delaynms(uint x);
  21. void display();
  22. void ad0809();


  23. void delayms(uint x)
  24. {
  25.         uint i,j;
  26.         for(i=x;i>0;i--)
  27.                 for(j=110;j>0;j--);
  28. }

  29. void delay (int m)
  30. {
  31. unsigned char i,j;
  32. for (i=0;i<m;i++)
  33. for (j=0;j<253;j++);
  34. }

  35. BOOL lcd_bz()
  36. {
  37.   BOOL result;
  38.   rs=0;           // 读忙信号
  39.   rw=1;
  40.   ep=1;
  41.   _nop_();
  42.   _nop_();
  43.   _nop_();
  44.   _nop_();
  45.   result = (BOOL)(P2&0x80);
  46.   ep=0;
  47.   result ;
  48. }

  49. lcd_wcmd (BYTE cmd)
  50. {
  51.   while (lcd_bz());
  52.   rs=0;
  53.   rw=0;
  54.   ep=0;
  55.   _nop_();
  56.   _nop_();
  57.   P2=cmd ;
  58.   _nop_();
  59.   _nop_();
  60.   _nop_();
  61.   _nop_();
  62.   ep=1;
  63.   _nop_();
  64.   _nop_();
  65.   _nop_();
  66.   _nop_();
  67.   ep=0;
  68. }

  69. lcd_pos (BYTE pos)
  70. {
  71.   lcd_wcmd (pos|0x80);
  72. }

  73. lcd_wdat (BYTE dat)
  74. {
  75.    while (lcd_bz());
  76.   rs=1;
  77.   rw=0;
  78.   ep=0;
  79.   _nop_();
  80.   _nop_();
  81.   P2=dat ;
  82.   _nop_();
  83.   _nop_();
  84.   _nop_();
  85.   _nop_();
  86.   ep=1;
  87.   _nop_();
  88.   _nop_();
  89.   _nop_();
  90.   _nop_();
  91.   ep=0;
  92. }

  93. lcd_init ()
  94. {
  95.   lcd_wcmd (0x38);
  96.   delay (1);
  97.   lcd_wcmd (0x0c);
  98.   delay (1);
  99.   lcd_wcmd (0x06);
  100.   delay (1);
  101.   lcd_wcmd (0x01);
  102.   delay (1);
  103. }

  104. void main()
  105. {
  106.   lcd_init ();
  107.   delay (10);

  108.                    
  109. TMOD=0X01;
  110. TH0=(65536-2)/256;
  111. TL0=(65536-2)%256;
  112. EA=1;
  113. ET0=1;
  114. TR0=1;

  115. while(1)
  116. {
  117.   ad0809();
  118.   ad_0809=out;
  119.   display();

  120.     lcd_pos (7);
  121.   lcd_wdat(table[a1]);

  122.    lcd_pos (8);
  123. lcd_wdat(table[a2]);

  124.     lcd_pos (9);
  125. lcd_wdat(table[a3]);



  126.   }
  127. }

  128. void T0_time()interrupt 1
  129. {
  130. TH0=(65536-2)/256;
  131. TL0=(65536-2)%256;
  132. clk=~clk;

  133. }

  134. void delaynms(uint x)       
  135. {
  136. while(x-->0)
  137.        
  138.         {
  139.           unsigned char k;
  140.           for(k=10;k>0;k--);
  141.         }
  142. }


  143. void display()
  144. {
  145.   a1=(ad_0809*49/25)/100;  //the highest bit
  146.   a2=(ad_0809*49/25)/10%10;
  147.   a3=(ad_0809*49/25)%100%10;
  148. }



  149. void ad0809()
  150. {

  151.   P1=0xff;//input
  152.   oe=0;
  153.   st=0;
  154.   st=1;//清0
  155.   st=0;//启动
  156.   delaynms(1);
  157.   while(!eoc);           //eoc等于零的话,在这里等待直到eoc=1,结束循环,向下执行
  158.   oe=1;
  159.   out=P1;
  160.   oe=0;
  161. }


复制代码





adc0809 1602YL可用版01.zip

99.36 KB, 下载次数: 362, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶3 踩
回复

使用道具 举报

沙发
ID:154583 发表于 2016-12-14 08:54 | 只看该作者
很想要呀
回复

使用道具 举报

板凳
ID:154736 发表于 2016-12-14 16:28 | 只看该作者
非常实用哦,谢谢
回复

使用道具 举报

地板
ID:130231 发表于 2017-3-29 23:05 | 只看该作者
实用,感谢你的分享
回复

使用道具 举报

5#
ID:184636 发表于 2017-3-30 11:48 | 只看该作者
大神,有问题啊
回复

使用道具 举报

6#
ID:216338 发表于 2017-7-1 17:16 | 只看该作者
用红外测会动的小球怎么破?
回复

使用道具 举报

7#
ID:82765 发表于 2017-7-1 17:38 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

8#
ID:223290 发表于 2017-7-29 21:26 | 只看该作者
正好学习要用
回复

使用道具 举报

9#
ID:232569 发表于 2017-9-12 10:10 | 只看该作者
66666666666利害了
回复

使用道具 举报

10#
ID:232569 发表于 2017-9-12 10:11 | 只看该作者
厉害了我的歌 给个通过
回复

使用道具 举报

11#
ID:233124 发表于 2017-9-27 14:55 来自手机 | 只看该作者
本帖最后由 duanxin 于 2017-9-27 19:24 编辑

可以加入报警模块吗?而且有警告,怎么修改呀,说的什么逻辑冲突
回复

使用道具 举报

12#
ID:197994 发表于 2018-4-22 20:35 | 只看该作者

本帖最后由 duanxin 于 2017-9-27 19:24 编辑


可以加入报警模块吗?
回复

使用道具 举报

13#
ID:334678 发表于 2018-5-23 16:58 | 只看该作者
Philoming 发表于 2018-4-22 20:35
本帖最后由 duanxin 于 2017-9-27 19:24 编辑

你也是做激光防撞报警系统的毕设嘛,感觉和我想问的一样耶
回复

使用道具 举报

14#
ID:342159 发表于 2018-6-2 20:23 | 只看该作者
为什么资料里的adc0809和proteus里的不一样
回复

使用道具 举报

15#
ID:348688 发表于 2018-6-10 19:45 | 只看该作者
学校正在学习单片机 正好用的到 谢谢楼主分享
回复

使用道具 举报

16#
ID:388262 发表于 2018-8-20 19:17 | 只看该作者
谢谢 楼主 分享 楼主NB
回复

使用道具 举报

17#
ID:399840 发表于 2018-9-19 09:46 | 只看该作者
正需要,借鉴一下
回复

使用道具 举报

18#
ID:312858 发表于 2018-10-20 16:08 | 只看该作者
zqy181818 发表于 2017-3-29 23:05
实用,感谢你的分享

有32单片机的吗
回复

使用道具 举报

19#
ID:491840 发表于 2019-3-16 09:51 | 只看该作者
小白来学习学习了
回复

使用道具 举报

20#
ID:427609 发表于 2019-4-10 00:49 | 只看该作者
谢谢分享谢谢分享
回复

使用道具 举报

21#
ID:503064 发表于 2019-4-11 14:22 来自手机 | 只看该作者
谢谢楼主分享,楼主辛苦了
回复

使用道具 举报

22#
ID:525590 发表于 2019-5-1 15:22 | 只看该作者
非常感谢
回复

使用道具 举报

23#
ID:525729 发表于 2019-5-1 20:44 来自手机 | 只看该作者
楼主,我怎么仿真不出数据啊?
回复

使用道具 举报

24#
ID:541448 发表于 2019-5-18 15:48 | 只看该作者
很实用呀
回复

使用道具 举报

25#
ID:578827 发表于 2019-7-7 11:03 | 只看该作者
三个测距的话是不是就可以直接三遍重复一下
回复

使用道具 举报

26#
ID:235332 发表于 2019-11-26 10:40 | 只看该作者
液晶显示的数据和GP2D12的数据不一样啊
回复

使用道具 举报

27#
ID:644311 发表于 2019-12-11 10:13 来自手机 | 只看该作者
有文件吗
回复

使用道具 举报

28#
ID:661292 发表于 2019-12-11 12:07 来自手机 | 只看该作者
感谢大佬分享
回复

使用道具 举报

29#
ID:667036 发表于 2019-12-18 10:51 | 只看该作者
文件可以用吗?
回复

使用道具 举报

30#
ID:715612 发表于 2020-3-29 21:14 | 只看该作者
液晶显示器显示的是什么
回复

使用道具 举报

31#
ID:700634 发表于 2020-4-6 20:08 | 只看该作者
这个显示的是电压值吧
回复

使用道具 举报

32#
ID:723330 发表于 2020-4-7 20:59 来自手机 | 只看该作者
谢谢分享
回复

使用道具 举报

33#
ID:582255 发表于 2020-4-23 22:28 | 只看该作者
楼主厉害,向你学习
回复

使用道具 举报

34#
ID:751876 发表于 2020-5-14 17:33 | 只看该作者
???这不就是把传感器的输出电压显示在液晶屏上吗???
回复

使用道具 举报

35#
ID:767460 发表于 2020-6-4 16:49 | 只看该作者
怎么打开啊
回复

使用道具 举报

36#
ID:1018524 发表于 2022-4-28 18:15 | 只看该作者
这个要怎么调试,一打开显示066,然后LCD就不显示数值了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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