標(biāo)題: GP2D12紅外測(cè)距傳感器 單片機(jī)程序及PROTEUS仿真 實(shí)測(cè)可用 [打印本頁(yè)]

作者: heicad    時(shí)間: 2016-8-15 13:44
標(biāo)題: GP2D12紅外測(cè)距傳感器 單片機(jī)程序及PROTEUS仿真 實(shí)測(cè)可用
GP2D12紅外測(cè)距傳感器的PROTEUS仿真原理圖如下:





GP2D12紅外測(cè)距傳感器的單片機(jī)程序:
  1. #include"reg52.h"
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. sbit cs = P3^2;
  6. long int read=0;
  7. sbit wela = P2^7;
  8. sbit dula = P2^6;
  9. sbit lcden=P3^4;
  10. sbit lcdrs=P3^5;

  11. uchar bai,shi,ge,num;

  12. uchar table[] ="123456789";

  13. void delayms(uint z)
  14. {
  15.         uint x,y;
  16.         for(x=z;x>0;x--)
  17.                 for(y=110;y>0;y-- );
  18. }

  19. void write_com(uchar com)
  20. {        
  21.         lcdrs=0;
  22.         P0=com;
  23.         delayms(5);
  24.         lcden=1;
  25.         delayms(5);
  26.         lcden=0;
  27. }

  28. void write_data(uchar date)
  29. {
  30.         lcdrs=1;
  31.         P0=date;
  32.         delayms(5);
  33.         lcden=1;
  34.         delayms(5);
  35.         lcden=0;
  36. }

  37. void init()
  38. {
  39.         dula=0;
  40.         wela=0;
  41.         lcden=0;
  42.         write_com(0x38);
  43.         write_com(0x0c);
  44.         write_com(0x06);
  45.         write_com(0x01);
  46. }
  47. void delay(uint a)           //  a 個(gè)1us延時(shí)
  48. {
  49.         for(;a > 0;a --)
  50.         _nop_();_nop_();
  51. }

  52. void T0_time() interrupt 1
  53. {
  54.         cs = 0;
  55.         RD = 0;
  56.         read = P1;
  57.         INT0 = 1;
  58. }
  59. uint adc0804()
  60. {
  61. TMOD=0X01;
  62. TH0=(65536-45872)/256;
  63. TL0=(65536-45872)/256;
  64. EA=1;
  65. ET0=1;
  66. TR0=1;

  67.         INT0 = 1;
  68.         cs = 0;
  69.         WR = 0;
  70.         delay(255);
  71.         cs = 1;
  72.         WR = 1;
  73.         delay(200);               
  74.         read = read * 196 /100;
  75.         return read;
  76.         
  77. }

  78. void math(uint x)
  79. {
  80.         bai = x / 100;
  81.         shi = x /10 % 10;
  82.         ge = x % 10;
  83. }/*
  84. void display()
  85. {         
  86.          
  87.         math(adc0804());
  88.         
  89.         dula=1;
  90.         P0 = table[bai+10];
  91.         dula=0;
  92.         P0=0xff;

  93.         wela = 1;
  94.         P0 = 0xfe;
  95.         wela=0;
  96.         delay(7000000);

  97.                
  98.         dula=1;
  99.         P0 = table[shi];
  100.         dula=0;
  101.         P0=0xff;

  102.         wela = 1;
  103.         P0 = 0xfd;
  104.         wela=0;
  105.         delay(7000000);

  106.                
  107.         dula=1;
  108.         P0 = table[ge];
  109.         dula=0;
  110.         P0=0xff;

  111.         wela = 1;
  112.         P0 = 0xfb;
  113.         wela=0;
  114.         delay(7000000);
  115.         
  116. }

  117.    */

  118. void main()
  119. {
  120.     cs=0;
  121.                 init();           


  122.                    while(1)
  123.                 {
  124.                

  125.             math(adc0804());
  126.                

  127.                 write_com(0x80+5);
  128.         
  129.                 write_data(table[bai]);
  130.                 write_data(table[shi]);
  131.                 write_data(table[ge]);
  132.                         delayms(500);
  133.                
  134.                 }
  135.         
  136. }
復(fù)制代碼



注意仿真工程只能用Proteus7.5這個(gè)版本,其他版本均無(wú)法仿真,必須要Proteus7.5才能用,如果你沒(méi)有安裝此版本的話就不必下載了
Keil代碼與Proteus7.5仿真下載: GP2D12仿真文件.zip (165.48 KB, 下載次數(shù): 419)

作者: 李12117    時(shí)間: 2017-5-3 23:02
仿真時(shí)說(shuō)沒(méi)找到gp2d12這個(gè)元件怎么辦?

作者: bingo大幅度    時(shí)間: 2017-8-22 10:06
仿真上LCD1602顯示的167是1.67V,GP2D12顯示的54是54cm嗎?
作者: 1229330235    時(shí)間: 2017-10-16 19:40
好資料,51黑有你更精彩!!!
作者: jxdianqi    時(shí)間: 2017-10-19 09:58
下載學(xué)習(xí),謝謝分享
作者: 風(fēng)流有何罪    時(shí)間: 2018-4-18 11:31
學(xué)習(xí)了,謝謝分享
作者: luo1084036180    時(shí)間: 2018-12-17 19:57
學(xué)習(xí)了,謝謝分享
作者: 畢鈺    時(shí)間: 2019-6-21 22:46
學(xué)習(xí)學(xué)習(xí)
作者: x3050421831    時(shí)間: 2019-10-16 18:32
紅外測(cè)距傳感器與STC89C52怎么鏈接
作者: 小叔叔    時(shí)間: 2019-11-18 09:18
怎么進(jìn)行操作,數(shù)碼管燈不亮
作者: evilshadow    時(shí)間: 2021-12-9 11:19
你好,我下載了你的GP2D12仿真文件,怎么不能仿真啊,是因?yàn)闆](méi)有l(wèi)cd的程序文件嗎?
作者: heicad    時(shí)間: 2021-12-24 04:42
李12117 發(fā)表于 2017-5-3 23:02
仿真時(shí)說(shuō)沒(méi)找到gp2d12這個(gè)元件怎么辦?

樓主說(shuō)了,這個(gè)文件只能用Proteus7.5打開(kāi)才可以,其他版本都仿真,我測(cè)試也是這樣的,其他版本打開(kāi) 1602都是無(wú)顯示,下圖是用Proteus7.5打開(kāi)的效果

51hei.gif (103.18 KB, 下載次數(shù): 41)

51hei.gif

作者: heicad    時(shí)間: 2021-12-24 04:47
小叔叔 發(fā)表于 2019-11-18 09:18
怎么進(jìn)行操作,數(shù)碼管燈不亮

這個(gè)是用LCD1602來(lái)顯示的




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1