找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 19230|回復(fù): 12
打印 上一主題 下一主題
收起左側(cè)

GP2D12紅外測(cè)距傳感器 單片機(jī)程序及PROTEUS仿真 實(shí)測(cè)可用

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:262 發(fā)表于 2016-8-15 13:44 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
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è)版本,其他版本均無法仿真,必須要Proteus7.5才能用,如果你沒有安裝此版本的話就不必下載了
Keil代碼與Proteus7.5仿真下載: GP2D12仿真文件.zip (165.48 KB, 下載次數(shù): 419)

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
zzwk123456 + 5 很給力!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏8 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

來自 2#
ID:262 發(fā)表于 2021-12-24 04:42 | 只看該作者
李12117 發(fā)表于 2017-5-3 23:02
仿真時(shí)說沒找到gp2d12這個(gè)元件怎么辦?

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

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

51hei.gif
回復(fù)

使用道具 舉報(bào)

板凳
ID:196291 發(fā)表于 2017-5-3 23:02 | 只看該作者
仿真時(shí)說沒找到gp2d12這個(gè)元件怎么辦?
回復(fù)

使用道具 舉報(bào)

地板
ID:223290 發(fā)表于 2017-8-22 10:06 | 只看該作者
仿真上LCD1602顯示的167是1.67V,GP2D12顯示的54是54cm嗎?
回復(fù)

使用道具 舉報(bào)

5#
ID:240017 發(fā)表于 2017-10-16 19:40 來自觸屏版 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

6#
ID:196311 發(fā)表于 2017-10-19 09:58 | 只看該作者
下載學(xué)習(xí),謝謝分享
回復(fù)

使用道具 舉報(bào)

7#
ID:310742 發(fā)表于 2018-4-18 11:31 | 只看該作者
學(xué)習(xí)了,謝謝分享
回復(fù)

使用道具 舉報(bào)

8#
ID:269851 發(fā)表于 2018-12-17 19:57 | 只看該作者
學(xué)習(xí)了,謝謝分享
回復(fù)

使用道具 舉報(bào)

9#
ID:352562 發(fā)表于 2019-6-21 22:46 | 只看該作者
學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

10#
ID:625195 發(fā)表于 2019-10-16 18:32 來自觸屏版 | 只看該作者
紅外測(cè)距傳感器與STC89C52怎么鏈接
回復(fù)

使用道具 舉報(bào)

11#
ID:643554 發(fā)表于 2019-11-18 09:18 來自觸屏版 | 只看該作者
怎么進(jìn)行操作,數(shù)碼管燈不亮
回復(fù)

使用道具 舉報(bào)

12#
ID:987987 發(fā)表于 2021-12-9 11:19 | 只看該作者
你好,我下載了你的GP2D12仿真文件,怎么不能仿真啊,是因?yàn)闆]有l(wèi)cd的程序文件嗎?
回復(fù)

使用道具 舉報(bào)

13#
ID:262 發(fā)表于 2021-12-24 04:47 | 只看該作者
小叔叔 發(fā)表于 2019-11-18 09:18
怎么進(jìn)行操作,數(shù)碼管燈不亮

這個(gè)是用LCD1602來顯示的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表