找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1914|回復: 3
打印 上一主題 下一主題
收起左側

超聲波lcd1602顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:233672 發(fā)表于 2017-12-23 16:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
僅供大家參考
   超聲波程序.zip (61.16 KB, 下載次數: 15)


#include<reg51.h>
#include<intrins.h>       
#include"lcd.h"
sbit Trig = P2^1;
sbit Echo = P2^0;

unsigned char PuZh[]="Distance:       ";
unsigned char code ASCII[15] =    {'0','1','2','3','4','5','6','7','8','9','.','-','M'};

static unsigned char DisNum = 0; //顯示用指針                                  
       unsigned int  time=0;
           unsigned long S=0;

           bit      flag =0;                 //標志位flag
           unsigned char disbuff[4]           ={ 0,0,0,0,};

void Conut(void)
        {
         time=TH0*256+TL0;         //*256是16位計數器的高8位和低八位之分,恢復成16位數的時候要*256
                                                 //    將字節(jié)轉化成十進制數,比如定時器中裝的是0xabcd,轉化成十進制就是d+c*16+b*16*16+a*16*16*16=43981。
                                                 //    發(fā)現ab*256=(b+a*16)*256=43776,cd=d+c*16=205,43776+205=43981
         TH0=0;
         TL0=0;
       
         S=(time*1.7)/100;     //算出來是CM           其中*0.0172是根據超聲的聲速、單片機的頻率,得出來的一個系數。
         
         if((S>=300)) //超出測量范圍顯示“-”||flag==1
         {         
                  flag=0;
//                  P1 = 0XFD;
                 
                  DisplayOneChar(0, 1, ASCII[11]);
                  DisplayOneChar(1, 1, ASCII[10]);        //顯示個點
                  DisplayOneChar(2, 1, ASCII[11]);
                  DisplayOneChar(3, 1, ASCII[11]);
                  DisplayOneChar(4, 1, ASCII[12]);        //顯示M
         }
         else
         {
//                   P1 = 0X00;
                  disbuff[0]=S%1000/100;
                  disbuff[1]=S%1000%100/10;
                  disbuff[2]=S%1000%10 %10;
                  DisplayOneChar(0, 1, ASCII[disbuff[0]]);
                  DisplayOneChar(1, 1, ASCII[10]);        //顯示點
                  DisplayOneChar(2, 1, ASCII[disbuff[1]]);
                  DisplayOneChar(3, 1, ASCII[disbuff[2]]);
                  DisplayOneChar(4, 1, ASCII[12]);        //顯示M
         }
        }

void zd0() interrupt 1                  //T0中斷用來計數器溢出,超過測距范圍
{
    flag=1;                                                         //中斷溢出標志
}

void  StartModule()                          //啟動模塊
{
          Trig=1;                                             //啟動一次模塊
          
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          Trig=0;
       
}
void delayms(unsigned int ms)
{
        unsigned char i=100,j;
        for(;ms;ms--)
        {
                while(--i)
                {
                        j=10;
                        while(--j);
                }
        }
}

void main(void)
{
         TMOD=0x01;                   //設定時器0為工作方式1,GATE=1;
         TH0=0;
         TL0=0;         
         ET0=1;            //開定時器0中斷
         EA=1;                           //開啟總中斷       

        InitLcd1602();
        LcdShowStr(0,0,PuZh);
        while(1)
        {
                 StartModule();
             while(!Echo);                //當RX為零時等待
             TR0=1;                            //開啟計數
             while(Echo);                        //當RX為1計數并等待
             TR0=0;                                //關閉計數
                       
         Conut();                        //計算
                 delayms(80);
        }
                       
}

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

使用道具 舉報

沙發(fā)
ID:251082 發(fā)表于 2018-1-5 20:22 | 只看該作者
看看行不行
回復

使用道具 舉報

板凳
ID:459923 發(fā)表于 2019-4-20 15:46 | 只看該作者
我能說用這個程序,我的keil直接死機了么
回復

使用道具 舉報

地板
ID:373068 發(fā)表于 2019-4-23 19:59 | 只看該作者
1602管腳沒定義吧。
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表