|
二、功能說明
1、采用三個(gè)超聲波測距,速度快,精度高,精度1毫米。
2、按鍵設(shè)置設(shè)置報(bào)警距離,上限和下限。
3、LCD1602液晶顯示。
4、結(jié)構(gòu)簡潔,穩(wěn)固,高效。
本系統(tǒng)采用USB電源供電,提供電源線,可以插到電腦、手機(jī)充電器、充電寶上供電,十分方便。
三、按鍵說明
系統(tǒng)三個(gè)按鍵,從左往右風(fēng)別是,設(shè)置切換、加、減。
視頻演示:
0.jpg (49.61 KB, 下載次數(shù): 40)
下載附件
2018-9-18 02:07 上傳
制作出來的實(shí)物圖如下:
萬用板1.jpg (329.36 KB, 下載次數(shù): 42)
下載附件
2018-9-18 02:06 上傳
萬用板有字.jpg (152.81 KB, 下載次數(shù): 35)
下載附件
2018-9-18 02:06 上傳
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.jpg (104.67 KB, 下載次數(shù): 36)
下載附件
2018-9-18 02:06 上傳
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png (35.18 KB, 下載次數(shù): 35)
下載附件
2018-9-18 02:07 上傳
0.jpg (44.42 KB, 下載次數(shù): 27)
下載附件
2018-9-18 02:05 上傳
0.png (20.54 KB, 下載次數(shù): 40)
下載附件
2018-9-18 02:07 上傳
元件清單:
0.png (22.28 KB, 下載次數(shù): 31)
下載附件
2018-9-18 02:05 上傳
單片機(jī)源程序如下:
- #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;
- 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;
- //延時(shí)函數(shù)
- 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; //設(shè)T0為方式1,GATE=1;
- TH0=0;
- TL0=0;
- TH1=0xf8; //2MS定時(shí)
- TL1=0x30;
- ET0=1; //允許T0中斷
- ET1=1; //允許T1中斷
- TR1=1; //開啟定時(shí)器
- 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); //當(dāng)RX為零時(shí)等待
- TR0=1; //開啟計(jì)數(shù)
- while(RX1); //當(dāng)RX為1計(jì)數(shù)并等待
- TR0=0; //關(guān)閉計(jì)數(shù)
- Conut();
- S1=S;
- Delay_ms(10);
- /////////////////////////////
- while(!RX2); //當(dāng)RX為零時(shí)等待
- TR0=1; //開啟計(jì)數(shù)
- while(RX2); //當(dāng)RX為1計(jì)數(shù)并等待
- TR0=0; //關(guān)閉計(jì)數(shù)
- Conut();
- S2=S;
- Delay_ms(10);
- /////////////////////////////
- while(!RX3); //當(dāng)RX為零時(shí)等待
- TR0=1; //開啟計(jì)數(shù)
- while(RX3); //當(dāng)RX為1計(jì)數(shù)并等待
- TR0=0; //關(guān)閉計(jì)數(shù)
- 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(!KEY1)
- {
- Delay_ms(10);
- if(!KEY1)
- {
- KEY_flag++;
- ISP_ERASE(0x2c00); //注意:字節(jié)編程時(shí)必須要先要擦除整個(gè)扇區(qū)
- 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中斷用來計(jì)數(shù)器溢出,超過測距范圍
- {
- flag=1; //中斷溢出標(biāo)志
- }
- /********************************************************/
- 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;
- }
- }
復(fù)制代碼
0.png (55.74 KB, 下載次數(shù): 38)
下載附件
2018-9-18 02:09 上傳
所有資料51hei提供下載:
66-基于51單片機(jī)超聲波三方向測距系統(tǒng)LCD1602資料 (1).rar
(7.63 MB, 下載次數(shù): 103)
2018-9-17 17:06 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|