欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
STC89C52單片機+超聲波測距傳感器程序
[打印本頁]
作者:
zyx123
時間:
2023-12-12 15:54
標題:
STC89C52單片機+超聲波測距傳感器程序
超聲波測量距離,并且距離越近蜂鳴器報警的頻率越高
單片機源程序如下:
//宏定義
#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最大值調整 2最小值調整
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_>Max||L_<Min)
{
TR1=1;
}
else
{
Feng=1;
TR1=0;
}
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);//設置位置
}
else if(k==1&&mode==2)
{
Init_MaxMin();
write_com(0x8d+0x40);//設置位置
}
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; //中斷溢出標志
}
//定時器1
void zd3() interrupt 3 //T1中斷用來掃描數碼管和計800MS啟動模塊
{
unsigned int m;
TH1=0xf8;
TL1=0x30; //定時器賦初值2ms
m++; //2ms m加一次
if(m>=(L_+10)) //m的值大于等于距離加10
{
m=0; //m清零
Feng=!Feng; //蜂鳴器取反
}
}
復制代碼
原理圖: 見附件
仿真: 無
代碼:
超聲波測距.zip
(49.02 KB, 下載次數: 34)
2023-12-12 15:49 上傳
點擊文件名下載附件
超聲波測距
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1