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

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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4503|回復(fù): 8
收起左側(cè)

超聲波測(cè)速模塊

[復(fù)制鏈接]
ID:386391 發(fā)表于 2018-8-29 14:06 | 顯示全部樓層 |閱讀模式
#include <reg52.h>
#include <string.h>
/************************************位定義************************************/
sbit echo  = P2^0;                //回聲接收端口
sbit trig = P2^1;                //超聲觸發(fā)端口

sbit wei1=P2^4;
sbit wei2=P2^5;
sbit wei3=P2^6;
sbit wei4=P2^7;
/************************************宏定義************************************/
#define dula P0                //段選信號(hào)的鎖存器控制
#define uchar unsigned char
#define uint unsigned int
/********************************定義變量和數(shù)組********************************/
long int distance=0;               //距離變量
uchar count;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
                        0x87,0xff,0xef,0x71};

unsigned char SendData[32] = {0x00};  //發(fā)送數(shù)據(jù)包
/******************************************************************************/
/* 函數(shù)名稱  : delay                                                      */
/* 函數(shù)描述  : 延時(shí)函數(shù)                                               */
/* 輸入?yún)?shù)  : 延時(shí)時(shí)間(ms)                                        */
/* 返回值    : 無(wú)                                                             */
/******************************************************************************/
void delay(unsigned int xms)                               
{
        unsigned int i,j;
        for(i=xms;i>0;i--)                      //i=xms即延時(shí)約xms毫秒
                for(j=112;j>0;j--);
}
/******************************************************************************/
/* 函數(shù)名稱  : display                                                      */
/* 函數(shù)描述  : 數(shù)碼管顯示函數(shù)                                               */
/* 輸入?yún)?shù)  : 測(cè)試距離值的十倍                                        */
/* 返回值    : 無(wú)                                                             */
/******************************************************************************/
void display(long int num)                        //顯示程序
{
   uchar qian,bai,shi,ge;
   if((num>5000)||(num == 0))
   {
           qian=15;//距離值上為百位
           bai=15;
           shi=10;
           ge=15;
   }
   else
   {
           qian=num/1000;//距離值上為百位
           bai=(num/100)%10;//距離值上為十位
           shi=(num/10)%10;//距離值上為個(gè)位,并且顯示時(shí)需要加小數(shù)點(diǎn)
           ge=num%10;//距離值上為小數(shù)位,并已經(jīng)四舍五入
   }
   wei1=1;                //顯示千位
   wei2=0;
   wei3=0;
   wei4=0;
   P0=table[qian];
   delay(2);

   wei1=0;                //顯示百位
   wei2=1;
   wei3=0;
   wei4=0;
   P0=table[bai];
   delay(2);

   wei1=0;                //顯示十位
   wei2=0;
   wei3=1;
   wei4=0;
   P0=table1[shi];
   delay(2);

   wei1=0;                //顯示個(gè)位
   wei2=0;
   wei3=0;
   wei4=1;
   P0=table[ge];
   delay(2);

}
/******************************************************************************/
/* 函數(shù)名稱  : Init_timer2                                                       */
/* 函數(shù)描述  : 初始化單片機(jī)函數(shù)                                               */
/* 輸入?yún)?shù)  : 無(wú)                                                             */
/* 參數(shù)描述  : 無(wú)                                                             */
/* 返回值    : 無(wú)                                                             */
/******************************************************************************/
void Init_timer0(void)
{
        TMOD |= 0x01;          //定時(shí)器0初始化,設(shè)置為16位自動(dòng)重裝模式
        TL0 = 0x66;
        TH0 = 0xfc;              //1ms
    ET0 = 1;              //開(kāi)定時(shí)器2
        EA = 1;                      //總中斷使能
}
/******************************************************************************/
/* 函數(shù)名稱  : Init_Parameter                                                 */
/* 函數(shù)描述  : 初始化參數(shù)和IO口函數(shù)                                           */
/* 輸入?yún)?shù)  : 無(wú)                                                             */
/* 參數(shù)描述  : 無(wú)                                                             */
/* 返回值    : 無(wú)                                                             */
/******************************************************************************/
void Init_Parameter(void)
{
         echo = 0;
         trig = 0;
         count = 0;
         distance = 0;
}
/******************************************************************************/
/* 函數(shù)名稱  : Trig_SuperSonic                                                */
/* 函數(shù)描述  : 發(fā)出聲波函數(shù)                                                   */
/* 輸入?yún)?shù)  : 無(wú)                                                             */
/* 參數(shù)描述  : 無(wú)                                                             */
/* 返回值    : 無(wú)                                                             */
/******************************************************************************/
void Trig_SuperSonic(void)//出發(fā)聲波
{
         trig = 1;
         delay(1);
         trig = 0;
}
/******************************************************************************/
/* 函數(shù)名稱  : Measure_Distance                                               */
/* 函數(shù)描述  : 計(jì)算距離函數(shù)                                                   */
/* 輸入?yún)?shù)  : 無(wú)                                                             */
/* 參數(shù)描述  : 無(wú)                                                             */
/* 返回值    : 無(wú)                                                             */
/******************************************************************************/
void Measure_Distance(void)
{
        uchar l;
        uint h,y;
        TR0 = 1;
        while(echo)
    {
        ;
    }       
        TR0 = 0;
        l = TL0;
        h = TH0;
        y = (h << 8) + l;
        y = y - 0xfc66;//us部分
        distance = y + 1000 * count;//計(jì)算總時(shí)間 (us)
        TL0 = 0x66;
        TH0 = 0xfc;
        delay(30);
        distance = 0.17 * distance;//
}
/******************************************************************************/
/* 函數(shù)名稱  : init_com                                                           */
/* 函數(shù)描述  : 串口初始化函數(shù)                                                         */
/* 輸入?yún)?shù)  : 無(wú)                                                             */
/* 參數(shù)描述  : 無(wú)                                                             */
/* 返回值    : 無(wú)                                                             */
/******************************************************************************/
void init_com(void)
{
        EA=1;        //開(kāi)總中斷
        ES=1;        //允許串口中斷
        ET1=1;        //允許定時(shí)器T1的中斷
        TMOD|=0x20;   //定時(shí)器T1,在方式2中斷產(chǎn)生波特率
        PCON=0x00;   //SMOD=0
        SCON=0x50;   // 方式1 由定時(shí)器控制
        TH1=0xfd;    //波特率設(shè)置為9600
        TL1=0xfd;
        TR1=1;       //開(kāi)定時(shí)器T1運(yùn)行控制?

}

/******************************************************************************/
/* 函數(shù)名稱  : PutString                                                           */
/* 函數(shù)描述  : 串口發(fā)送函數(shù)                                                         */
/* 輸入?yún)?shù)  : 數(shù)組                                                             */
/* 參數(shù)描述  : char類型字符串                                                             */
/* 返回值    : 無(wú)                                                             */
/******************************************************************************/
void PutString(unsigned char *TXStr)  
{               
        ES=0;     
        while(*TXStr!=0)
        {                     
          SBUF=*TXStr;
          while(TI==0);
          TI=0;   
          TXStr++;
        }
        ES=1;
}

/******************************************************************************/
/* 函數(shù)名稱  : main                                                           */
/* 函數(shù)描述  : 主函數(shù)                                                         */
/* 輸入?yún)?shù)  : 無(wú)                                                             */
/* 參數(shù)描述  : 無(wú)                                                             */
/* 返回值    : 無(wú)                                                             */
/******************************************************************************/                                       
void main(void)
{
        uchar a;       
        init_com();
        Init_timer0();
        Init_Parameter();
        while(1)
        {
                Trig_SuperSonic();         //觸發(fā)超聲波發(fā)射
                while(echo == 0)          //等待回聲
                {
                         ;
                }
                Measure_Distance();        //計(jì)算脈寬并轉(zhuǎn)換為距離
                for(a=100;a>0;a--)
                {          
                        display(distance);
                }
                //組裝發(fā)送超聲波到上位機(jī)
                memset(SendData, 0x00, sizeof(SendData));
                memcpy(SendData, "$51,CSB", sizeof("$51,CSB"));
       
                SendData[7] = distance / 1000 + '0';
                SendData[8] = distance % 1000 / 100 + '0';
                SendData[9] = distance % 100 / 10  + '0';
                SendData[10] = '.';
                SendData[11] = distance % 10 + '0';
                SendData[12] = '#';
                SendData[13] = 0x00;
                PutString(SendData);
       


                Init_Parameter();          // 參數(shù)重新初始化
         }       
}
/******************************************************************************/
/* 函數(shù)名稱  : timer0                                                         */
/* 函數(shù)描述  : T0中斷處理函數(shù)                                                 */
/* 輸入?yún)?shù)  : 無(wú)                                                             */
/* 參數(shù)描述  : 無(wú)                                                             */
/* 返回值    : 無(wú)                                                             */
/******************************************************************************/
void timer0 (void) interrupt 1
{
        TF0 = 0;
        TL0 = 0x66;
        TH0 = 0xfc;
        count++;
        if(count == 18)//超聲波回聲脈寬最多18ms
        {
                TR0 =0;
                TL0 = 0x66;
                TH0 = 0xfc;
                count = 0;
        }
}
/******************************************************************************/


回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2018-8-29 17:30 | 顯示全部樓層
補(bǔ)全原理圖或者詳細(xì)說(shuō)明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報(bào)

ID:386391 發(fā)表于 2018-8-31 15:55 | 顯示全部樓層
這是超聲波測(cè)距的原理圖
超聲波模塊原理圖.jpg
回復(fù)

使用道具 舉報(bào)

ID:437724 發(fā)表于 2019-4-14 21:02 | 顯示全部樓層
請(qǐng)問(wèn)stc11如何燒錄程序
回復(fù)

使用道具 舉報(bào)

ID:517235 發(fā)表于 2019-5-4 18:20 | 顯示全部樓層
有沒(méi)有直接連接雷達(dá)進(jìn)行測(cè)速的原理圖
回復(fù)

使用道具 舉報(bào)

ID:527906 發(fā)表于 2019-5-6 20:29 | 顯示全部樓層
1546485047 發(fā)表于 2019-4-14 21:02
請(qǐng)問(wèn)stc11如何燒錄程序

STC單片機(jī)系列和STC59C51類似的。現(xiàn)在關(guān)鍵是應(yīng)該燒錄什么程序。。
回復(fù)

使用道具 舉報(bào)

ID:527906 發(fā)表于 2019-5-6 20:32 | 顯示全部樓層
想問(wèn)問(wèn)樓主,這個(gè)原理圖中的STC11內(nèi)燒錄的程序是什么。我是用51作為外部控制的,這個(gè)STC11是超聲波模塊的一部分。但是我不知道應(yīng)該給這個(gè)單片機(jī)燒什么程序進(jìn)去。
回復(fù)

使用道具 舉報(bào)

ID:433256 發(fā)表于 2019-6-17 08:56 | 顯示全部樓層
請(qǐng)問(wèn)Init_Parameter這個(gè)是初始化什么的呢?超聲波傳感器碼?
回復(fù)

使用道具 舉報(bào)

ID:687974 發(fā)表于 2020-1-24 11:35 | 顯示全部樓層
樓主有沒(méi)有加lcd的仿真電路圖
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久久久 | 国产精品一区二区在线 | 999在线精品| av在线黄 | 久久99精品视频 | 狠狠的干| 亚洲国产成人精 | 精品国产一区二区三区久久久久久 | 中文字幕在线欧美 | 亚洲视频手机在线 | 免费一区二区 | 久热精品在线 | 午夜亚洲 | 综合自拍| 日本高清中文字幕 | 激情91| 美女爽到呻吟久久久久 | 亚洲乱码一区二区三区在线观看 | 国产一区二区三区免费 | 精品国产91乱码一区二区三区 | 国产精品久久久久久影院8一贰佰 | 国产精品久久久久久久三级 | 激情一区二区三区 | 毛片.com| 视频一区在线 | 成人在线观看网站 | 国产精品96久久久久久 | 国产91丝袜在线18 | 成人影院网站ww555久久精品 | 一区二区三区精品视频 | 亚洲精品一二三区 | 黄色国产在线视频 | 99re国产精品| 56pao在线| 黄网站在线观看 | 91精品国产一区二区三区蜜臀 | 国产一级在线 | 久久亚洲精品国产精品紫薇 | 日韩一区中文字幕 | 亚洲久在线 | 亚洲欧美在线观看 |