新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一款液晶顯示的超聲波測距板

        一款液晶顯示的超聲波測距板

        作者: 時間:2016-11-30 來源:網絡 收藏
        這是一款液晶顯示超聲波測距板,資料是從網上收集整理的。該測距板顯示屏為3310手機液晶屏,測量范圍是4cm--450cm。單片機用的是51系列單片機,超聲波接收用的是CX20106A。為了使精度盡可能的提高,硬件方面使用了18B20監測溫度,由溫度算出聲速的變化;軟件方面使用了“近距離<--->遠距離”自動調節“盲區時間”進行測量。因為盲區時間設小一點,可以測到較小的距離,但是測遠距離時就極不穩定了;而盲區時間大了則相反;.軟件較正使用的是數據擬合的方式,即測出幾十組數據(儀器測出的矩離和實際矩離),輸入EXCEL里面,畫出XY散點圖。然后再擬合出距離關系曲線。這種方法可以使測量點盡量靠近每一個實際距離點。

        本文引用地址:http://www.104case.com/article/201611/324005.htm




        源程序:

        #include "stdio.h"

        #include "math.h"

        #include "regx52.h"

        #include "binary.h"

        #include "intrins.h"

        #define VOUT P3_7 //脈沖產生端口

        #define DQ P1_0 //ds18b20端口

        /******************系統全局變量***************/

        typedef unsigned char uchar;

        typedef unsigned int uint;

        bit Success; //測量成功標志位

        bit Done; //測量完成標志位

        bit Mode; //測量模式:0--近距離,1---遠距離

        uint nCount;

        uint nResult;

        /******************18B20相關函數及變量***************/

        bit SignedFlag=0; //符號標志位 ,負為1,正為0

        uchar TempInt; //整數部分溫度

        uint TempDot; //小數部分溫度

        void ReadTemperature(void); //在程序中調用此函數

        void Init_DS18B20(void);

        unsigned char ReadOneChar(void);

        void WriteOneChar(unsigned char dat);

        void delayx(unsigned int i);

        #include "18b20.h"

        /******************LCD相關函數******************/

        sbit SCLK = P2^0; // 串行時鐘

        sbit SDIN = P2^1; // 串行數據輸入

        sbit LCD_DC = P2^2; // 數據/命令 選擇端

        sbit LCD_CE = P2^3; // 片選

        sbit LCD_RST = P2^4; // 外部復位

        #include "Nokia5110.c"

        /***********超聲波測量相關函數定義***************/

        void StartInit();

        void Delay_us(uint i); //微秒級延時:T=7+2*(X-1) us

        void StartMeasure();

        void DisplayResult();

        void ConvertCount();

        void Delay_ms(uint x);


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宜宾市| 壶关县| 花莲县| 井冈山市| 淳化县| 滕州市| 额尔古纳市| 杭锦后旗| 沽源县| 宣威市| 赤水市| 瑞丽市| 介休市| 辛集市| 南溪县| 新宁县| 来宾市| 三门峡市| 自贡市| 南城县| 灵璧县| 通许县| 呼玛县| 华坪县| 民勤县| 仁化县| 厦门市| 普兰县| 尉氏县| 紫阳县| 漳浦县| 泸西县| 嵊州市| 千阳县| 昌平区| 滁州市| 定陶县| 邵阳市| 蕉岭县| 巧家县| 兴仁县|