資源簡介
實現的功能包括:
(1)兩個按鍵用于設置距離閾值,以10cm為一檔,對于閾值進行;
(2)超聲測距模塊SFR04用于測量距離,并將數據發送至單片機。
(3)距離閾值和距離信息用LCD1602顯示。
(3)當距離低于閾值時,報警模塊以5kHz頻率發出警報;當距離低于閾值+10cm時,報警模塊以1kHz頻率發出警報;當距離大于等于閾值+10cm時,報警模塊不發出聲音。

代碼片段和文件信息
#include
#include
sbit?LED0=P2^0;
sbit?LED1=P2^1;
sbit?speak=P1^7;
sbit?key_up=P1^0;
sbit?key_dn=P1^1;
sbit?TRIG=P3^7;
sbit?ECHO=P3^2;
sbit?LCD_E=P2^5;
sbit?LCD_RW=P2^6;
sbit?LCD_RS=P2^7;
unsigned?int?Set=40;//距離值單位cm
unsigned?int?Now;
unsigned?int?count_T0=0count_1msmiao=0;
unsigned?int?High_Time;
unsigned?char?flag;
unsigned?char?code?word1[]=“Set=??????????cm“;//0--15
unsigned?char?code?word2[]=“Now=??????????cm“;//0--15
unsigned?char?code?word3[]=“0123456789“;
void?lcd_write_com(unsigned?char?com);
void?lcd_write_data(unsigned?char?dat);
void?lcdInit();
void?display_LCD(unsigned?char?hangunsigned?char?lieunsigned?dat);
void?Timer0_Init();
void?delayms(unsigned?char?t);
void?scan_key();
unsigned?int?WAVE();
void?display_string();
void?Timer_delay(unsigned?int?BS);
void?Speak();
void?main()
{
unsigned?char?baishige;
lcdInit();
display_string();//顯示開始的字母
while(1)
{
scan_key();
if((Set/100%10)!=0)
{
??display_LCD(06word3[Set/100%10]);
??delayms(1);
}
display_LCD(07word3[Set/10%10]);
delayms(1);
????display_LCD(08word3[Set%10]);
delayms(1);
????High_Time=WAVE();//超聲波
//Now=(int)(High_Time*1.72)/100;
Now=(int)(High_Time*0.0175);
Speak();
bai=Now/100%10;
shi=Now/10%10;
ge=Now%10;
if(bai!=0)
{
????display_LCD(16word3[bai]);
??delayms(1);
}
display_LCD(17word3[shi]);
delayms(1);
display_LCD(18word3[ge]);
delayms(1);
}
}
/*——————————蜂鳴器發聲————————*/
void?Speak()
{
???if(Now ??{
??speak=0;
Timer_delay(1);
}
??else?if(Now<(Set+10))
{
??speak=0;
Timer_delay(5);
}
else
{
??speak=1;
}
}
//*————————————定時器T1延時————————————*/
void?Timer_delay(unsigned?int?BS)//T1延時0.5ms
{
??unsigned?int?k;
??for(k=0;k {
??TH1=(65536-100)/256;
??TL1=(65536-100)%256;
????while(TF1==0);
TF1=0;
}
}
//*——————顯示開始的字母————————————*/
void?display_string()
{
unsigned?mn;
???for(m=0;m<16;m++)
{
????display_LCD(0mword1[m]);
delayms(1);
}
for(n=0;n<16;n++)
{
????display_LCD(1nword2[n]);
delayms(1);
}
}
/*——————————————超聲波計算時間————————————*/
unsigned?int?WAVE()
{
??unsigned?int?result;
??unsigned?char?p;
????TRIG=0;
_nop_();//1微秒
TRIG=1;
??for(p=0;p<10;p++);//大于10us
TRIG=0;
while(ECHO==0);//等高電平來
????Timer0_Init();//開始計時記高電平時間即超聲波發射--返回時間
while(ECHO)
{
?if((TH0>0x8c)||?(TH0==0x8c&&TL0>0xa0))break;
}
TR0=0;
//18us=18000ms=4650H??;100us--18ms有效????超過36ms無效?36ms=8cA0
?if((TH0<0x46)||?(TH0==0x46&&TL0<=0x50))
?{
???result=(TH0<<8)+TL0;
?return?result;
?}
else?return?0;
}
/*——————————————LCD初始化————————————*/
void?lcdInit()
{
??lcd_write_com(0x38);//字符為5*7點陣
lcd_write_com(0x0c);?//顯示開?光標關?閃爍關
lcd_write_com(0x06);//寫入數據后光標右移一位?顯示屏不動
lcd_write_com(0x01);//清屏
lcd_write_com(0x80);//設置數據指針起點
}
/**———————————LCD寫命令———————
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2020-07-11?16:56??項目二-倒車雷達控制系統設計(CSDN)\
?????目錄???????????0??2020-06-30?22:35??項目二-倒車雷達控制系統設計(CSDN)\寫程序\
?????文件???????14614??2020-06-13?14:40??項目二-倒車雷達控制系統設計(CSDN)\寫程序\6.13-14點39-bilibili.docx
?????文件?????????162??2020-06-14?16:19??項目二-倒車雷達控制系統設計(CSDN)\寫程序\~$13-14點39-bilibili.docx
?????目錄???????????0??2020-06-30?22:39??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\
?????文件????????6324??2020-06-14?16:18??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\6.14-16點18-只有數字有問題.txt
?????目錄???????????0??2020-06-30?22:36??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\Listings\
?????文件????????9763??2020-06-30?22:36??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\Listings\紅外-定時器.lst
?????文件???????16145??2020-06-30?22:36??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\Listings\紅外-定時器中斷.m51
?????文件?????????114??2020-06-13?14:15??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\main.h
?????目錄???????????0??2020-06-30?22:36??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\ob
?????文件???????13494??2020-06-30?22:36??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\ob
?????文件???????12164??2020-06-30?22:36??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\ob
?????文件????????1095??2020-06-30?22:36??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\ob
?????文件????????4500??2020-06-30?22:36??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\ob
?????文件?????????102??2020-06-30?22:36??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\ob
?????文件????????4458??2020-06-23?08:58??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\修改了定時器初值-蜂鳴器頻率改正-6月23-7點32.txt
?????文件????????7202??2020-06-15?11:42??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\最終.txt
?????文件????????5371??2020-06-22?20:44??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\最終程序美化版.txt
?????文件????????4711??2020-06-23?08:51??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\紅外-定時器.c
?????文件???????88999??2020-06-30?22:35??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\紅外-定時器中斷.uvgui.Dell
?????文件????????9342??2020-06-22?12:27??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\紅外-定時器中斷.uvopt
?????文件???????88996??2020-06-30?22:39??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\超聲波測距.uvgui.Dell
?????文件????????5064??2020-06-30?22:36??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\超聲波測距.uvopt
?????文件???????13923??2020-06-30?22:35??項目二-倒車雷達控制系統設計(CSDN)\寫程序\定時器中斷\超聲波測距.uvproj
?????目錄???????????0??2020-06-30?22:35??項目二-倒車雷達控制系統設計(CSDN)\寫程序\紅外通信部分\
?????目錄???????????0??2020-06-30?22:35??項目二-倒車雷達控制系統設計(CSDN)\寫程序\紅外通信部分\Listings\
?????文件????????3758??2020-06-11?14:42??項目二-倒車雷達控制系統設計(CSDN)\寫程序\紅外通信部分\Listings\紅外通信-1.lst
?????文件????????6026??2020-06-11?14:42??項目二-倒車雷達控制系統設計(CSDN)\寫程序\紅外通信部分\Listings\紅外通信-1.m51
?????目錄???????????0??2020-06-30?22:35??項目二-倒車雷達控制系統設計(CSDN)\寫程序\紅外通信部分\ob
?????文件????????3171??2020-06-11?14:42??項目二-倒車雷達控制系統設計(CSDN)\寫程序\紅外通信部分\ob
............此處省略21個文件信息
評論
共有 條評論