久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: GP2D12傳感器,來進行激光,紅外線測距仿真 含單片機數模轉換程序 [打印本頁]

作者: heicad    時間: 2016-8-15 13:53
標題: GP2D12傳感器,來進行激光,紅外線測距仿真 含單片機數模轉換程序
本帖最后由 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, 下載次數: 368, 下載積分: 黑幣 -5


作者: 1560233113    時間: 2016-12-14 08:54
很想要呀
作者: 陳建圩    時間: 2016-12-14 16:28
非常實用哦,謝謝
作者: zqy181818    時間: 2017-3-29 23:05
實用,感謝你的分享
作者: 趙鐸    時間: 2017-3-30 11:48
大神,有問題啊
作者: 2592174953    時間: 2017-7-1 17:16
用紅外測會動的小球怎么破?

作者: cjjcjj1    時間: 2017-7-1 17:38
提示: 作者被禁止或刪除 內容自動屏蔽
作者: bingo大幅度    時間: 2017-7-29 21:26
正好學習要用
作者: zui123    時間: 2017-9-12 10:10
66666666666利害了
作者: zui123    時間: 2017-9-12 10:11
厲害了我的歌 給個通過
作者: duanxin    時間: 2017-9-27 14:55
本帖最后由 duanxin 于 2017-9-27 19:24 編輯

可以加入報警模塊嗎?而且有警告,怎么修改呀,說的什么邏輯沖突
作者: Philoming    時間: 2018-4-22 20:35

本帖最后由 duanxin 于 2017-9-27 19:24 編輯


可以加入報警模塊嗎?
作者: okk醬    時間: 2018-5-23 16:58
Philoming 發表于 2018-4-22 20:35
本帖最后由 duanxin 于 2017-9-27 19:24 編輯

你也是做激光防撞報警系統的畢設嘛,感覺和我想問的一樣耶
作者: lhe    時間: 2018-6-2 20:23
為什么資料里的adc0809和proteus里的不一樣
作者: zxj0709    時間: 2018-6-10 19:45
學校正在學習單片機 正好用的到 謝謝樓主分享
作者: 沒人性    時間: 2018-8-20 19:17
謝謝 樓主 分享 樓主NB
作者: xiaosusama    時間: 2018-9-19 09:46
正需要,借鑒一下
作者: 錢錢錢強強    時間: 2018-10-20 16:08
zqy181818 發表于 2017-3-29 23:05
實用,感謝你的分享

有32單片機的嗎
作者: cucucun    時間: 2019-3-16 09:51
小白來學習學習了
作者: 175的大V    時間: 2019-4-10 00:49
謝謝分享謝謝分享
作者: 153227095    時間: 2019-4-11 14:22
謝謝樓主分享,樓主辛苦了
作者: wyk554    時間: 2019-5-1 15:22
非常感謝
作者: 天翊    時間: 2019-5-1 20:44
樓主,我怎么仿真不出數據啊?
作者: 小周周zxz    時間: 2019-5-18 15:48
很實用呀
作者: prettygirl    時間: 2019-7-7 11:03
三個測距的話是不是就可以直接三遍重復一下
作者: life_陽子    時間: 2019-11-26 10:40
液晶顯示的數據和GP2D12的數據不一樣啊
作者: 嘿,波西    時間: 2019-12-11 10:13
有文件嗎
作者: baixiaosheng    時間: 2019-12-11 12:07
感謝大佬分享
作者: BC-Adas    時間: 2019-12-18 10:51
文件可以用嗎?
作者: 584053658    時間: 2020-3-29 21:14
液晶顯示器顯示的是什么

作者: 妾勸君丶莫笑    時間: 2020-4-6 20:08
這個顯示的是電壓值吧
作者: qinjin    時間: 2020-4-7 20:59
謝謝分享
作者: aktuan007    時間: 2020-4-23 22:28
樓主厲害,向你學習
作者: chest    時間: 2020-5-14 17:33
???這不就是把傳感器的輸出電壓顯示在液晶屏上嗎???
作者: jhy1396    時間: 2020-6-4 16:49
怎么打開啊

作者: ymq124    時間: 2022-4-28 18:15
這個要怎么調試,一打開顯示066,然后LCD就不顯示數值了




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩精品视频在线免费观看 | 国产理论视频 | 亚洲激情五月 | 91狠狠操| 国精产品99永久一区一区 | 亚洲一区二区三区在线 | 欧美一区二区三区的 | 午夜国产在线观看 | 中文字幕亚洲一区 | 国产专区在线播放 | www一区| 国产精品99精品久久免费 | 午夜激情视频在线观看 | 乳大翘臀1v1h糙汉 | 国产一区在线播放 | 亚洲视频在线视频 | 综合网久久 | 国产精品美女在线 | 夜夜操狠狠操 | 91福利网 | 黄色小视频免费观看 | 亚洲视频在线一区 | 中文一区二区 | 成人免费网站 | 激情综合网站 | 看一级黄色片 | 麻豆中文字幕 | 国产黄色免费网站 | 久久久青草| 麻豆成人91精品二区三区 | 黄网站视频 | 91性视频| 911精品国产一区二区在线 | 青青草国产成人av片免费 | 精品少妇v888av | 久久国产亚洲 | 在线观看免费黄色 | 国产亚洲在线 | 99热1| 色婷婷免费视频 | 久久综合热 |