標(biāo)題:
STC15單片機(jī)超聲波測距+LCD1602顯示+串口調(diào)試+程序詳細(xì)解釋
[打印本頁]
作者:
遠(yuǎn)小劉
時(shí)間:
2018-10-30 10:10
標(biāo)題:
STC15單片機(jī)超聲波測距+LCD1602顯示+串口調(diào)試+程序詳細(xì)解釋
基于單片機(jī)STC15單片機(jī)的超聲波測距,采用超聲波模塊,
運(yùn)用定時(shí)器計(jì)算波時(shí),
采用串口加以調(diào)試,
運(yùn)用LCD1602顯示
精確0.01m
測量距離在此范圍內(nèi):4m--0.01m
大于4m后,將產(chǎn)生誤差。
詳細(xì)請(qǐng)下載附件
單片機(jī)源程序如下:
#include "super.h"
#include<intrins.h>
#include "stdio.h"
float High_Time=0; //高電平時(shí)間
float Ultrasonic_Distance=0;//超聲波測試的距離
void Delay15us() //@24.000MHz
{
unsigned char i;
_nop_();
_nop_();
i = 87;
while (--i);
}
void Timer0Init(void) //20微秒@24.000MHz
{
AUXR &= 0x7F; //定時(shí)器時(shí)鐘12T模式
TMOD &= 0xF0; //設(shè)置定時(shí)器模式
TL0 = 0x00; //設(shè)置定時(shí)初值
TH0 = 0x00; //設(shè)置定時(shí)初值
TF0 = 0; //清除TF0標(biāo)志
TR0 = 0; //定時(shí)器0開始計(jì)時(shí)
ET0 = 0;
EA = 1; //使能
}
//void Timer1Init(void) //20毫秒@24.000MHz
//{
// AUXR &= 0xBF; //定時(shí)器時(shí)鐘12T模式
// TMOD &= 0x0F; //設(shè)置定時(shí)器模式
// TL1 = 0xC0; //設(shè)置定時(shí)初值
// TH1 = 0x63; //設(shè)置定時(shí)初值
// TF1 = 0; //清除TF1標(biāo)志
// TR1 = 1; //定時(shí)器1開始計(jì)時(shí)
//
// ET1 = 1;
// EA = 1;
//}
//void UartInit(void) //9600bps@24.000MHz
//{
// SCON = 0x50; //8位數(shù)據(jù),可變波特率
// AUXR |= 0x01; //串口1選擇定時(shí)器2為波特率發(fā)生器
// AUXR &= 0xFB; //定時(shí)器2時(shí)鐘為Fosc/12,即12T
// T2L = 0xCC; //設(shè)定定時(shí)初值
// T2H = 0xFF; //設(shè)定定時(shí)初值
// TI=1; //發(fā)送
// RI=0; //接收
// ES=0;
// AUXR |= 0x10; //啟動(dòng)定時(shí)器2
//}
void Ultrasonic_Dispose()//超聲波處理
{
Trig=1;
Delay15us();
Trig=0;
while(!Echo);
TL0=0;
TH0=0;
TR0=1;
while(Echo);
TR0=0;
High_Time=(TH0*256+TL0)/2; //高電平時(shí)間High_time毫秒
Ultrasonic_Distance=High_Time*0.017;//00.0
}
void Ultrasonic_Display()//超聲波顯示處理
{
Ultrasonic_Dispose();//超聲波處理
Ultrasonic_Distance*=10;
string2[4] = (unsigned long)Ultrasonic_Distance/1000+'0';
string2[5] = (unsigned long)Ultrasonic_Distance/100%10+'0';
string2[6] = (unsigned long)Ultrasonic_Distance/10%10+'0';
string2[8] = (unsigned long)Ultrasonic_Distance%10+'0';
LCD_Write_Char(4,1,string2[4]);
LCD_Write_Char(5,1,string2[5]);
LCD_Write_Char(6,1,string2[6]);
LCD_Write_Char(8,1,string2[8]);
printf("%f\n",Ultrasonic_Distance/10);
}
//void Timer1_Rountine(void) interrupt 3
//{
// static unsigned int t;
// t++;
// if(t==25)
// {
// t=0;
// Ultrasonic_Dispose();
// }
//
//}
復(fù)制代碼
#include "main.h"
void main(void)
{
GPIO_Init();//IO初始化
Timer0Init();
// Timer1Init();
// UartInit();
LCD_Init();//1602初始化
while(1)
{
Ultrasonic_Display();//超聲波顯示處理
delayMS(500);
}
}
復(fù)制代碼
全部資料51hei下載地址(提醒:代碼有錯(cuò)誤,大家不要下載):
超聲波測距 串口顯示 詳細(xì)解析.rar
(58.86 KB, 下載次數(shù): 171)
2018-10-30 09:02 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
什么都不會(huì)小白
時(shí)間:
2019-6-4 14:40
代碼有錯(cuò)誤?
作者:
lipengkun
時(shí)間:
2019-8-7 20:22
程序有錯(cuò)誤,審核不合格
作者:
lipengkun
時(shí)間:
2019-8-7 20:23
什么都不會(huì)小白 發(fā)表于 2019-6-4 14:40
代碼有錯(cuò)誤?
有錯(cuò)誤、
作者:
吳亦幾
時(shí)間:
2020-3-28 19:36
代碼好像有問題
作者:
lhqsbz
時(shí)間:
2022-10-24 19:09
不錯(cuò)不錯(cuò),下載下來學(xué)習(xí)一下。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1