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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機超聲波測距(帶PCB工程和Proteus仿真程序)

  [復制鏈接]
跳轉到指定樓層
樓主
使用HC-SR04超聲波模塊做了個超聲波測距器帶程序、原理圖、PCB和仿真
全部文件見附件
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


單片機超聲波測距仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


主程序如下(程序來自互聯網,本人僅做了部分修改,如有侵權,請聯系刪除)

//宏定義
#define uchar unsigned char
#define uint unsigned int
#define ULint unsigned long int
//溫度零上與零下的標志位
char flag=0;
//超聲波
char flags=0;
//超聲波距離
char flag1s=0;
//計算定時間
uint time=0;
//計算距離
ULint L_=0;
//溫度
uint t_=0;
//顯示模式  0正常  1最小值調整  
uchar mode=0;

//uint Max=490;
uint Min=30;
//按鍵標志
uchar k=0;
//數值有誤
uchar FW=0;
//頭函數
#include <reg52.h>
#include <intrins.h>
#include "BJ_Key.h"                    //報警按鍵
#include "display.h"                         //顯示頭函數
#include "ultrasonic_wave.h"//超聲波頭函數
#include "DS18B20.h"                    //溫度傳感器頭函數


//函數聲明
void delayms(uint ms);
//主函數
void main()
{
        Init_ultrasonic_wave();
        //屏幕初始化
        Init1602();
        //溫度初始化
        tmpchange();
        t_=tmp();
        tmpchange();
        t_=tmp();
        tmpchange();
        t_=tmp();

        //循環顯示
        while(1)
        {
                Key();
                //正常顯示
                if(mode==0)
                {
                        StartModule();//啟動超聲波
                        while(!RX);          //當RX為零時等待
                        TR0=1;                  //開啟計數
                        while(RX);          //當RX為1計數并等待
                        TR0=0;                  //關閉計數
        
                        delayms(20);  //20MS
                        tmpchange();  //溫度轉換
                        t_=tmp();     //度溫度
                        Conut(t_/10); //計算距離
                        if(L_<Min)
                        {
                                Feng_Start();
                        }
                        
                        
                        
                        /*        if(FW=0)
                                Feng_Stop();
                        */
                        Display_1602(t_/10,L_);
                }
                //調整顯示
                else if(mode!=0)
                {
                        //最大最小值
                        Init_MaxMin();
                        while(mode!=0)
                        {
                                
                                Key();
                                /*if(k==1&&mode==1)
                                {
                                        Init_MaxMin();        
                                   write_com(0x8d);//設置位置                                       
                                }
                                */
                                 if(k==1&&mode==1)
                                {
                                        Init_MaxMin();        
                                   write_com(0x89);//設置光標位置        
                                }
                                k=0;
                        }
                        //界面初始化
                        Init1602();
                }
        }
}

void delayms(uint ms)
{
        uchar i=100,j;
        for(;ms;ms--)
        {
                while(--i)
                {
                        j=10;
                        while(--j);
                }
        }
}


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



全部資料51hei下載地址:
超聲波測距.zip (2.85 MB, 下載次數: 431)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

來自 2#
ID:328014 發表于 2021-1-11 02:13 | 只看該作者
134125 發表于 2021-1-11 00:51
請問各位大佬 這種錯誤是怎么回事?應該怎么解決?

第一個錯誤解決方法:http://www.zg4o1577.cn/bbs/dpj-201373-1.html
第2個錯誤,需要升級Proteus到8.8版本才能解決,因為你的版本根本就沒有超聲波這個元件

下圖是我修改后的效果圖:

51hei.png (31.5 KB, 下載次數: 59)

51hei.png

51hei.png (24.86 KB, 下載次數: 72)

51hei.png
回復

使用道具 舉報

板凳
ID:698602 發表于 2020-2-26 16:15 | 只看該作者
請問一下這一段是什么意思呢?
void delayms(uint ms)
{
        uchar i=100,j;
        for(;ms;ms--)
        {
                while(--i)
                {
                        j=10;
                        while(--j);
                }
        }
}
回復

使用道具 舉報

地板
ID:562074 發表于 2020-3-22 18:00 | 只看該作者
感謝大佬
回復

使用道具 舉報

5#
ID:715632 發表于 2020-3-29 15:46 | 只看該作者
大佬們下載下來之后仿真文件protues打不開怎么解決啊
回復

使用道具 舉報

6#
ID:737796 發表于 2020-4-25 16:09 | 只看該作者
感謝大佬,好資料,51黑有你更精彩!!!
回復

使用道具 舉報

7#
ID:756694 發表于 2020-6-14 11:45 | 只看該作者
下載后仿真有溫度顯示,調整距離沒反應是什么情況
回復

使用道具 舉報

8#
ID:769694 發表于 2020-6-25 17:38 | 只看該作者
非常棒,很有參考價值
回復

使用道具 舉報

9#
ID:495287 發表于 2020-6-26 15:17 | 只看該作者
非常好的參考資料,謝謝分享。
回復

使用道具 舉報

10#
ID:876191 發表于 2021-1-11 00:51 | 只看該作者
請問各位大佬 這種錯誤是怎么回事?應該怎么解決?

Y70}8318JC66P6$2YRBUAZ6.png (47.91 KB, 下載次數: 51)

Y70}8318JC66P6$2YRBUAZ6.png
回復

使用道具 舉報

11#
ID:825679 發表于 2021-2-4 20:50 | 只看該作者
感謝大佬分享,收獲頗深
回復

使用道具 舉報

12#
ID:830316 發表于 2021-2-6 09:11 | 只看該作者
2girder 發表于 2020-2-26 16:15
請問一下這一段是什么意思呢?
void delayms(uint ms)
{

延時函數
回復

使用道具 舉報

13#
ID:750686 發表于 2021-2-24 13:17 | 只看該作者
程序不正確運行不了怎么解決大佬
回復

使用道具 舉報

14#
ID:894056 發表于 2021-3-20 09:06 | 只看該作者
大佬,修改了端口燒進了普中89系列的板子和超聲波模塊進行實物仿真,但是不能實現效果,想請問一下,有沒有可能是因為超聲波模塊上的TX,RX沒有分別接在單片機的RX ,TX端?
回復

使用道具 舉報

15#
ID:92810 發表于 2021-5-26 11:38 | 只看該作者
謝謝大佬分享了,下載學習了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧洲性生活视频 | 欧美电影免费观看 | 欧美美女爱爱视频 | 久久亚洲精品国产精品紫薇 | 美女久久 | 欧美国产精品 | 淫片一级国产 | 日韩在线播放视频 | 亚洲精品在线视频 | 午夜影院在线观看免费 | 农村真人裸体丰满少妇毛片 | 亚洲精品久久久久久久久久久久久 | 久久久精彩视频 | 久久成人人人人精品欧 | 黄视频免费观看 | 人人天天操| 久久99国产精品 | 日本免费在线观看视频 | 国产在线网址 | 色网站视频 | 国产农村妇女毛片精品久久麻豆 | 国产三级 | 精品一区欧美 | 超碰在线观看97 | 一区二区三区四区国产 | 毛片网站在线观看视频 | 操久久 | 日本欧美在线视频 | 国产三级精品三级在线观看四季网 | 高清亚洲 | 91看片视频 | 91成人午夜性a一级毛片 | 91综合网| 免费视频99 | 亚洲三区在线观看 | 婷婷成人在线 | 亚洲狠狠 | 91在线色视频 | 亚洲中国字幕 | 99精品视频在线 | 亚洲国产一区在线 |