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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

Proteus仿真51單片機(jī)4路超聲波測距LCD1602顯示程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
原件清單
  
序號(hào)
  
  
編號(hào)
  
  
型號(hào)、規(guī)格
  
  
描述
  
  
數(shù)量
  
  
備注
  
  
1
  
  
R1
  
  
10k
  
  
1/4W電阻
  
  
1
  
  
復(fù)位電阻
  
  
2
  
  
R2
  
  
4.7k
  
  
1/4W電阻
  
  
1
  
  
  
  
3
  
  
W1
  
  
10k
  
  
精密可調(diào)調(diào)電阻
  
  
1
  
  
  
  
4
  
  
BY
  
  
BEEP
  
  
蜂鳴器
  
  
1
  
  
  
  
5
  
  
BG1
  
  
9012
  
  
PNP
  
  
1
  
  
  
  
6
  
  
C1
  
  
470uF/16V
  
  
電解電容
  
  
1
  
  
  
  
7
  
  
C2
  
  
104
  
  
瓷片電容
  
  
1
  
  
  
  
8
  
  
C3
  
  
10uF
  
  
電解電容
  
  
1
  
  
  
  
7
  
  
C4
  
  
22pF
  
  
瓷片電容
  
  
1
  
  
  
  
10
  
  
C5
  
  
22pF
  
  
瓷片電容
  
  
1
  
  
  
  
11
  
  
IC1
  
  
AT89S51
  
AT89S52
  
  
單片機(jī)
  
  
1
  
  AT89C51
  AT89C52
  STC89C52RC
  
  
12
  
  
IC
  
  
DIP40
  
  
40集成電路座
  
  
1
  
  
  
  
13
  
  
Y1
  
  
12MHz
  
  
晶振
  
  
1
  
  
  
  
14
  
  
USB
  
  
USB
  
  
USB接口
  
  
1
  
  
  
  
15
  
  
HC-SR04
  
  
HC-SR04
  
  
超聲波測距模塊
  
  
4
  
  
測量范圍2-450厘米
  
  
16
  
  
D1
  
  
1N4007
  
  
整流二極管
  
  
1
  
  
  
  
17
  
  
ZXZ1
  
  
DG7.62-2P
  
  
接線端子
  
  
1
  
  
  
  
18
  
  
PCB
  
  
9*12厘米
  
  9*12厘米以上洞洞板
  
  
1
  
  
  
  
19
  
  
  
  
1602
  
  
1602液晶屏
  
  
1
  
  
  
  
20
  
  
K1
  
  
  
  
按鍵開關(guān)
  
  
1
  
  
  
  
21
  
  
  
  
DS18B20
  
  
溫度傳感器
  
  
1
  
  
  
  
  
  
  
  
  
  
導(dǎo)線
  
  
  
  
若干
  
  
  
  
  
  
  
  
焊錫絲
  
  
  
  
若干
  
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)




單片機(jī)源程序如下:
  1. #include <REGX52.H>
  2. #include <stdio.h>
  3. #include "LCD.H"
  4. #include "18B20.H"
  5. #include "delay.h"

  6. sbit csb=P1^4;                        // 第一路 Trig
  7. sbit csbint=P1^5;                // 第一路 Echo
  8. sbit csb1=P1^6;                   //  第二路 Trig
  9. sbit csbint1=P1^7;           //  第二路 Echo
  10. sbit csb2=P3^6;                   //  第三路 Trig
  11. sbit csbint2=P3^5;           //  第三路 Echo
  12. sbit csb3=P3^4;                   //  第四路 Trig
  13. sbit csbint3=P3^3;           //  第四路 Echo
  14. sbit k1=P1^0;           //  K1
  15. sbit k2=P1^1;           //  K2
  16. sbit led=P2^7;           //  指示燈


  17. sbit fmq=P3^2;                   //蜂鳴器

  18. unsigned char aa[16]={' ','.',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','.',' ',' ','m'};
  19. unsigned char bb[16]={' ','.',' ',' ','m',' ','.',' ',' ',' ',' ',' ','.',' ',' ','m'};        

  20. unsigned char zf;
  21.                                          
  22. unsigned int dz,k,s,j,bgz,k,s1,s2,s3,s4;
  23. int temp;
  24. float csbc,wdz;


  25. main()
  26. {
  27.         TH0=0;
  28.         TL0=0;
  29.         TMOD=0X11;        //T1,T0為16位定時(shí)器
  30.         EA=0;

  31.          init();
  32.     Init_DS18B20();
  33.     dz=100;                  //報(bào)警定值
  34.         LCD_Write_String(0,0,aa);
  35.         aa[9]=0xdf;
  36.         while(1)
  37.         {
  38.                  temp=ReadTemperature();

  39.                 DelayMs(100);
  40.                 if(temp<0)
  41.                 {
  42.                            temp=-(temp-1);
  43.                            zf=1;
  44.                         aa[12]='-';
  45.                 }
  46.                 else
  47.                 {
  48.                         zf=0;
  49.                         aa[12]=' ';
  50.                 }
  51.                 wdz=0.00000607*temp;   //溫度補(bǔ)償計(jì)算
  52.                 if(zf==0)
  53.                 {                                                                                                                                                                                       
  54.                           csbc=0.03315+wdz;
  55.                 }
  56.                 else csbc=0.03315-wdz;

  57.                 aa[6]=temp/1000+0x30;
  58.                 aa[7]=temp/100%10+0x30;//顯示十位
  59.                 aa[8]=temp%100/10+0x30;//顯示個(gè)位
  60.         if(zf==0)
  61.             {
  62.                         if(temp<1000)
  63.                         {
  64.                                    aa[6]=' ';
  65.                                    if(temp<100)
  66.                                    {
  67.                                       aa[7]=' ';
  68.                                 }
  69.                         }
  70.                 }
  71.                 else
  72.                 {
  73.                         if(temp<1000)
  74.                         {
  75.                                    aa[6]='-';
  76. //                                   aa[12]=' ';
  77.                                    if(temp<100)
  78.                                    {
  79.                                         aa[6]=' ';
  80.                                            aa[7]='-';
  81.                                 }
  82.                         }
  83.                 }

  84. ///////////////////////////////////////////
  85. //                    第一路        測距模塊                         //
  86. ///////////////////////////////////////////
  87.                   csb=0;                                             //啟動(dòng)一次模塊
  88.                   _nop_();
  89.                   _nop_();
  90.                   _nop_();
  91.                   _nop_();
  92.                   _nop_();
  93.                   _nop_();
  94.                   _nop_();
  95.                   _nop_();
  96.                   _nop_();
  97.                   _nop_();
  98.                   _nop_();
  99.                   _nop_();
  100.                   _nop_();
  101.                   _nop_();
  102.                   _nop_();
  103.                   _nop_();
  104.                   _nop_();
  105.                   _nop_();
  106.                   _nop_();
  107.                   _nop_();
  108.                   _nop_();
  109.                   _nop_();
  110.                   _nop_();
  111.                   _nop_();
  112.                   _nop_();
  113.                   csb=1;
  114.                 ET0=1;        //啟動(dòng)計(jì)數(shù)器T0,用以計(jì)時(shí)
  115.                 TR0=1;
  116.                 EA=1;
  117.                 j=50;        //延時(shí)                  
  118.             while(j--)
  119.                 {
  120.                 }
  121.                 csbint=1;
  122.         j=0;
  123.                    while(csbint)                        //判斷接收回路是否收到超聲波的回波
  124.                 {
  125.                         j++;
  126.                         if(j>=2500)                        //如果達(dá)到一定時(shí)間沒有收到回波,則將csbint置零,退出接收回波處理程序
  127.                         csbint=0;
  128.                 }
  129.                 TR0=0;
  130.                 s1=TH0*256+TL0;                        //讀取時(shí)間數(shù)據(jù)
  131.                 TH0=0;
  132.                 TL0=0;
  133.                 csbc=csbc/2;
  134.                 s1=s1*csbc-4;

  135. ///////////////////////////////////////////
  136. //                    第二路        測距模塊                         //
  137. ///////////////////////////////////////////
  138.                   csb1=0;                                             //啟動(dòng)一次模塊
  139.                   _nop_();
  140.                   _nop_();
  141.                   _nop_();
  142.                   _nop_();
  143.                   _nop_();
  144.                   _nop_();
  145.                   _nop_();
  146.                   _nop_();
  147.                   _nop_();
  148.                   _nop_();
  149.                   _nop_();
  150.                   _nop_();
  151.                   _nop_();
  152.                   _nop_();
  153.                   _nop_();
  154.                   _nop_();
  155.                   _nop_();
  156.                   _nop_();
  157.                   _nop_();
  158.                   _nop_();
  159.                   _nop_();
  160.                   _nop_();
  161.                   _nop_();
  162.                   _nop_();
  163.                   _nop_();
  164.                   csb1=1;
  165.                 ET0=1;        //啟動(dòng)計(jì)數(shù)器T0,用以計(jì)時(shí)
  166.                 TR0=1;
  167.                 EA=1;
  168.                 j=50;        //延時(shí)                  
  169.             while(j--)
  170.                 {
  171.                 }
  172.                 csbint1=1;
  173.         j=0;
  174.                    while(csbint1)                        //判斷接收回路是否收到超聲波的回波
  175.                 {
  176.                         j++;
  177.                         if(j>=2500)                        //如果達(dá)到一定時(shí)間沒有收到回波,則將csbint置零,退出接收回波處理程序
  178.                         csbint1=0;
  179.                 }
  180.                 TR0=0;
  181.                 s2=TH0*256+TL0;                        //讀取時(shí)間數(shù)據(jù)
  182.                 TH0=0;
  183.                 TL0=0;
  184.                 s2=s2*csbc-4;

  185. ///////////////////////////////////////////
  186. //                    第三路        測距模塊                         //
  187. ///////////////////////////////////////////

  188.                   csb2=0;                                             //啟動(dòng)一次模塊
  189.                   _nop_();
  190.                   _nop_();
  191.                   _nop_();
  192.                   _nop_();
  193.                   _nop_();
  194.                   _nop_();
  195.                   _nop_();
  196.                   _nop_();
  197.                   _nop_();
  198.                   _nop_();
  199.                   _nop_();
  200.                   _nop_();
  201.                   _nop_();
  202.                   _nop_();
  203.                   _nop_();
  204.                   _nop_();
  205.                   _nop_();
  206.                   _nop_();
  207.                   _nop_();
  208.                   _nop_();
  209.                   _nop_();
  210.                   _nop_();
  211.                   _nop_();
  212.                   _nop_();
  213.                   _nop_();
  214.                   csb2=1;
  215.                 ET0=1;        //啟動(dòng)計(jì)數(shù)器T0,用以計(jì)時(shí)
  216.                 TR0=1;
  217.                 EA=1;
  218.                 j=50;        //延時(shí)                  
  219.             while(j--)
  220.                 {
  221.                 }
  222.                 csbint2=1;
  223.         j=0;
  224.                    while(csbint2)                        //判斷接收回路是否收到超聲波的回波
  225.                 {
  226.                         j++;
  227.                         if(j>=2500)                        //如果達(dá)到一定時(shí)間沒有收到回波,則將csbint置零,退出接收回波處理程序
  228.                         csbint2=0;
  229.                 }
  230.                 TR0=0;
  231.                 s3=TH0*256+TL0;                        //讀取時(shí)間數(shù)據(jù)
  232.                 TH0=0;
  233.                 TL0=0;
  234.                 s3=s3*csbc-4;
  235. ///////////////////////////////////////////
  236. //                    第四路        測距模塊                         //
  237. ///////////////////////////////////////////

  238.                   csb3=0;                                             //啟動(dòng)一次模塊
  239.                   _nop_();
  240.                   _nop_();
  241.                   _nop_();
  242.                   _nop_();
  243.                   _nop_();
  244.                   _nop_();
  245.                   _nop_();
  246.                   _nop_();
  247.                   _nop_();
  248.                   _nop_();
  249.                   _nop_();
  250.                   _nop_();
  251.                   _nop_();
  252.                   _nop_();
  253.                   _nop_();
  254.                   _nop_();
  255.                   _nop_();
  256.                   _nop_();
  257.                   _nop_();
  258.                   _nop_();
  259.                   _nop_();
  260.                   _nop_();
  261.                   _nop_();
  262.                   _nop_();
  263.                   _nop_();
  264.                   csb3=1;
  265.                 ET0=1;        //啟動(dòng)計(jì)數(shù)器T0,用以計(jì)時(shí)
  266.                 TR0=1;
  267.                 EA=1;
  268.                 j=50;        //延時(shí)                  
  269.             while(j--)
  270.                 {
  271.                 }
  272.                 csbint3=1;
  273.         j=0;
  274.                    while(csbint3)                        //判斷接收回路是否收到超聲波的回波
  275.                 {
  276.                         j++;
  277.                         if(j>=2500)                        //如果達(dá)到一定時(shí)間沒有收到回波,則將csbint置零,退出接收回波處理程序
  278.                         csbint2=0;
  279.                 }
  280.                 TR0=0;
  281.                 s4=TH0*256+TL0;                        //讀取時(shí)間數(shù)據(jù)
  282.                 TH0=0;
  283.                 TL0=0;
  284.                 s4=s4*csbc-2;

  285.                 if(s1<5) //測量值小于下限
  286.                 {
  287.                         aa[0]='-';
  288.                         aa[2]='-';
  289.                         aa[3]='-';
  290.                 }
  291.                 else if(s1>200)        //測量值大于上限
  292.                 {
  293.                         aa[0]='C';
  294.                         aa[2]='C';
  295.                         aa[3]='C';
  296.                 }
  297.                 else
  298.                 {
  299.                         aa[0]=s1/100+'0';
  300.                         aa[2]=s1/10%10+'0';
  301.                         aa[3]=s1%10+'0';
  302.                 }

  303.                 if(s2<5) //測量值小于下限
  304.                 {
  305.                         bb[0]='-';
  306.                         bb[2]='-';
  307.                         bb[3]='-';
  308.                 }
  309.                 else if(s2>200)        //測量值大于上限
  310.                 {
  311.                         bb[0]='C';
  312.                         bb[2]='C';
  313.                         bb[3]='C';
  314.                 }
  315.                 else
  316.                 {
  317.                         bb[0]=s2/100+'0';
  318.                         bb[2]=s2/10%10+'0';
  319.                         bb[3]=s2%10+'0';
  320.                 }

  321.                 if(s3<5) //測量值小于下限
  322.                 {
  323.                         bb[11]='-';
  324.                         bb[13]='-';
  325.                         bb[14]='-';
  326.                 }
  327.                 else if(s3>200)        //測量值大于上限
  328.                 {
  329.                         bb[11]='C';
  330.                         bb[13]='C';
  331.                         bb[14]='C';
  332.                 }
  333.                 else
  334.                 {
  335.                         bb[11]=s3/100+'0';
  336.                         bb[13]=s3/10%10+'0';
  337.                         bb[14]=s3%10+'0';
  338.                 }
  339. ///////////////////////////////////////////
  340.                  if(s4<5) //測量值小于下限
  341.                 {
  342.                         aa[11]='-';
  343.                                 aa[12]='.';
  344.                         aa[13]='-';
  345.                         aa[14]='-';
  346.                 }
  347.                 else if(s4>200)        //測量值大于上限
  348.                 {
  349.                         aa[11]='C';
  350.                         aa[12]='.';
  351.                         aa[13]='C';
  352.                         aa[14]='C';
  353.                 }
  354.                 else
  355.                 {
  356.                         aa[11]=s4/100+'0';
  357.                         aa[12]='.';
  358.                         aa[13]=s4/10%10+'0';
  359.                         aa[14]=s4%10+'0';
  360.                 }
  361.             if(k1==0)
  362.                    {
  363. //                           while(k1==0);
  364.                            dz++;
  365.                         if(dz>200)
  366.                            {
  367.                                    dz=200;
  368.                            }
  369.                    }
  370.         if(k2==0)
  371.                 {
  372. //                        while(k2==0);
  373.                         dz--;
  374.                         if(dz<30)
  375.                         {
  376.                                    dz=30;
  377.                         }
  378.                 }
  379.                 bb[6]=dz/100+'0';
  380.                 bb[7]='.';
  381.                 bb[8]=dz/10%10+'0';
  382.                 bb[9]=dz%10+'0';



  383. ///////////////////////////////////////////


  384.             if(s1<s2)
  385.                 {
  386.                    s=s1;
  387.                 }
  388.                 else s=s2;

  389.             if(s<s3)
  390.                 {
  391.                    s=s;
  392.                 }
  393.                 else s=s3;

  394.              if(s<s4)
  395.                 {
  396.                    s=s;
  397.                 }
  398.                 else s=s4;

  399.                 if(s<dz)
  400.                 {
  401.                         bgz=s*5;
  402.                           for (k=0;k<bgz;k++)
  403.                           {
  404.                             DelayUs2x(150);
  405.                             fmq=0;       //BEEP
  406.                                 led=0;
  407.                           }
  408.                 }
  409.                 fmq=1;
  410.                 led=1;
  411.                 LCD_Write_String(0,0,aa);
  412.                 LCD_Write_String(0,1,bb);
  413.         }
  414. }
復(fù)制代碼

keil工程文件
以及Proteus仿真原理圖壓縮至附件
LCD1602顯示的超聲波測距板_四路_按鍵.zip (621.4 KB, 下載次數(shù): 96)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:237863 發(fā)表于 2021-4-20 10:17 | 只看該作者
這種東西就別上傳了,論壇里面太多了
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲二区视频 | 亚洲午夜视频在线观看 | 人人干人人超 | 久久精品91久久久久久再现 | 亚洲欧美一区二区三区在线 | 免费观看一级黄色录像 | 精品久久精品 | 男人的天堂avav | 日韩视频免费看 | 午夜精品一区二区三区三上悠亚 | 日韩色视频 | 麻豆91精品91久久久 | 四虎免费视频 | 精品一区二区三区91 | 亚洲午夜网| 毛片一区二区三区 | 国产一区二区免费 | 黄a网 | 久久最新精品视频 | 亚洲伊人久久综合 | 亚洲精品v | 日韩成人av在线 | 国内精品久久久久久久影视简单 | 欧美男人亚洲天堂 | 国产在线资源 | 国产精品视频网 | 91欧美激情一区二区三区成人 | 在线欧美一区二区 | 日本精品一区二区三区视频 | 日韩在线视频免费观看 | 精品视频在线观看 | 亚洲一页| 91传媒在线观看 | 在线免费观看成人 | 男女啪啪高潮无遮挡免费动态 | 国产成人综合一区二区三区 | 日韩一区在线观看视频 | 成人在线观看欧美 | 毛片av免费在线观看 | 亚洲毛片一区二区 | 一级片在线观看 |