欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機三路超聲波測距源碼
[打印本頁]
作者:
jinhong-
時間:
2022-5-8 19:18
標題:
單片機三路超聲波測距源碼
這三路超聲波測距的源代碼
單片機源程序如下:
#include<reg52.h>
#include <intrins.h>
#include "LCD1602.h"
#include "STCEEPROM.h"
sbit RX1 = P3^4;
sbit RX2 = P3^5;
sbit RX3 = P3^6;
sbit TX = P3^7;
sbit LED = P2^1;
sbit SPEAK = P2^0;
sbit KEY1 = P1^3;
sbit KEY2 = P1^4;
sbit KEY3 = P1^5;
sbit RST=P2^5; /*1腳*/
sbit CS=P2^7; /*11*/
sbit SCL=P2^3; /*10*/
sbit SDA=P2^6; /*12*/
sbit VBUSY=P2^4; //忙等待
void display(void);
unsigned char en_flag=0;
void delay100us(void) //100US延時子程序
{
unsigned char j;
for(j=50;j>0;j--);
}
void delay1ms(unsigned char count) //1MS延時子程序
{
unsigned char i,j,k;
for(k=count;k>0;k--)
for(i=2;i>0;i--)
for(j=248;j>0;j--);
}
void Send_threelines(unsigned char addr) //三線發碼子程序
{
unsigned char i;
RST=0;
delay1ms(5);
RST=1;
delay1ms(17); /* 17ms*/
CS=0;
delay1ms(2);
for(i=0;i<8;i++)
{SCL=0;
if(addr & 1)SDA=1;
else SDA=0;
addr>>=1;
delay100us(); /* 100us */
SCL=1;
delay100us();
}
CS=1;
delay1ms(30);
while(VBUSY == 0); //忙等待
}
unsigned int time=0;
unsigned int timer=0;
unsigned int S=0,S1=0,S2=0,S3=0;
unsigned int SET_H=100,SET_L=10;
bit flag =0;
unsigned char Table[3]={0};
unsigned char KEY_flag=0;
//延時函數
void Delay_ms(int jj)
{
int ii;
while(jj--)
for(ii=0;ii<116;ii++);
}
void Conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.87)/100; //算出來是CM
if((S>=700)||flag==1) //超出測量范圍顯示“-”
{
flag=0;
}
}
void main(void)
{
LCD1602_init();//液晶初始化
//////////////////////0123456789ABCDEF
LCD1602_Disp_ZF(0x80," : : ",16);
//0123456789ABCDEF
LCD1602_Disp_ZF(0x80+0X40,"Set H: L: ",16);
TMOD=0x11; //設T0為方式1,GATE=1;
TH0=0;
TL0=0;
TH1=0xf8; //2MS定時
TL1=0x30;
ET0=1; //允許T0中斷
ET1=1; //允許T1中斷
TR1=1; //開啟定時器
EA=1; //開啟總中斷
EA=0;
SET_H = ISP_READ(0x2c00)*256+ISP_READ(0x2c01);
SET_L = ISP_READ(0x2c02)*256+ISP_READ(0x2c03);
EA=1;
while(1)
{
while(!RX1); //當RX為零時等待
TR0=1; //開啟計數
while(RX1); //當RX為1計數并等待
TR0=0; //關閉計數
Conut();
S1=S;
Delay_ms(10);
/////////////////////////////
while(!RX2); //當RX為零時等待
TR0=1; //開啟計數
while(RX2); //當RX為1計數并等待
TR0=0; //關閉計數
Conut();
S2=S;
Delay_ms(10);
/////////////////////////////
while(!RX3); //當RX為零時等待
TR0=1; //開啟計數
while(RX3); //當RX為1計數并等待
TR0=0; //關閉計數
Conut();
S3=S;
Delay_ms(10);
/////////////////////////////////////
Table[0]= S1/100+0X30;
Table[1]= S1%100/10+0X30;
Table[2]= S1%10+0X30;
LCD1602_Disp_ZF(0x80,Table,3);
Table[0]= S2/100+0X30;
Table[1]= S2%100/10+0X30;
Table[2]= S2%10+0X30;
LCD1602_Disp_ZF(0x86,Table,3);
Table[0]= S3/100+0X30;
Table[1]= S3%100/10+0X30;
Table[2]= S3%10+0X30;
LCD1602_Disp_ZF(0x8C,Table,3);
/////////////////////////////////
if((S1>SET_H||S1<SET_L)||(S2>SET_H||S2<SET_L)||(S3>SET_H||S3<SET_L))
{
P2 = 0X00;
}
else
P2 = 0XFF;
if((S1<SET_L)||(S2<SET_L)||(S3<SET_L))
{
SPEAK=0;
}
else
SPEAK=1;
if((S1<SET_H&&S1>SET_L)||(S2<SET_H&&S2>SET_L)||(S3<SET_H&&S3>SET_L))
{
Send_threelines(0);
}
if(!KEY1)
{
Delay_ms(10);
if(!KEY1)
{
KEY_flag++;
ISP_ERASE(0x2c00); //注意:字節編程時必須要先要擦除整個扇區
ISP_PROGRAM(0x2c00, SET_H/256);
ISP_PROGRAM(0x2c01, SET_H);
ISP_PROGRAM(0x2c02, SET_L/256);
ISP_PROGRAM(0x2c03, SET_L);
}
while(!KEY1);
}
if(!KEY2)
{
Delay_ms(10);
if(!KEY2)
{
if(KEY_flag%2==0)SET_H++;
if(KEY_flag%2==1)SET_L++;
}
}
if(!KEY3)
{
Delay_ms(10);
if(!KEY3)
{
if(KEY_flag%2==0)SET_H--;
if(KEY_flag%2==1)SET_L--;
}
}
Table[0]= SET_H/100+0X30;
Table[1]= SET_H%100/10+0X30;
Table[2]= SET_H%10+0X30;
LCD1602_Disp_ZF(0x86+0x40,Table,3);
Table[0]= SET_L/100+0X30;
Table[1]= SET_L%100/10+0X30;
Table[2]= SET_L%10+0X30;
LCD1602_Disp_ZF(0x8C+0x40,Table,3);
}
}
/********************************************************/
void zd0() interrupt 1 //T0中斷用來計數器溢出,超過測距范圍
{
flag=1; //中斷溢出標志
}
/********************************************************/
void zd3() interrupt 3
{
TH1=0xf8;
TL1=0x30;
timer++;
if(timer>=100)
{
timer=0;
TX=1; //200MS 啟動一次模塊
_nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_();
_nop_(); _nop_();_nop_();
_nop_(); _nop_(); _nop_();
TX=0;
}
}
復制代碼
Keil代碼下載:
3路超聲波 語音.rar
(65.59 KB, 下載次數: 22)
2022-5-8 19:16 上傳
點擊文件名下載附件
代碼
下載積分: 黑幣 -5
作者:
herui2128
時間:
2022-6-21 09:56
謝謝分享,正在做2路超聲波項目,正好需要學習
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1