智能汽車防撞報警器的設(shè)計開發(fā)
3 軟件設(shè)計
為了達到前述儀器的主要功能,程序采用C51的功能模塊逐一實現(xiàn)。程序分為主程序(chret.c)和另外三個模塊文件,即display.c,eraseint.a(chǎn)51,transplant.c。
3.1 主程序
主程序框圖如圖2所示。本文引用地址:http://m.butianyuan.cn/article/197868.htm
本程序?qū)ぷ鬟^程分了8個狀態(tài):準(zhǔn)備狀態(tài)(t0~t1)、發(fā)射超聲波(t1~t2)、不接收信號時間(t2~t3)、等待聲波反射時間(t3~t4)、測反射的個數(shù)(t4~t5)、不計反射波個數(shù),間歇一段時間(t5~t6)、再測波的個數(shù)(t6~t7)、間歇時間(t7~t0)。為測得超聲波收發(fā)時間差t,換算成距離s和判斷是否報警,程序中使用了兩個函數(shù):
一個是void t0Interrupt(void)interTupt:1 using 1,它是t0計時中斷函數(shù),通過switch語句處理由工作過程分成的8種狀態(tài)。
另外一個是函數(shù)void intInterrupt(void)interrupt2 using 2,它處理反射回來的輸入信號,發(fā)生在t3~r4階段,主要是由int1外部中斷來得出時間distanceIn-time,并啟動T1計數(shù)器,它用來計算反射波個數(shù)。
通過以上兩個函數(shù)可獲得t,后面轉(zhuǎn)換成s和判斷是否報警便迎刃而解。Chret.c的函數(shù)組成:
主程序?qū)垢蓴_采取了3個措施(防止誤報警):
(1)t4~t5狀態(tài),給反射回來的波定個窗口,對于高于33.3 Hz或小于11.1 Hz的波不計數(shù);
(2)t6~t7狀態(tài),通過測10 ms來判斷:若是干擾在此時能測到;若是正常反射,此時應(yīng)根本測不到波;
(3)對報警判斷兩次(1.3 s會自動清0一次)。
3.2 串口通信模塊――transplant.c
主要將主AT89C52的程序中chDis準(zhǔn)確無誤傳給顯示部分(位于駕駛室),設(shè)計一個通信協(xié)議,以保證不收亂碼,即在chDis這個數(shù)據(jù)前面添加一個報頭數(shù)據(jù)Head,而后面添加一個檢驗數(shù)據(jù)check,這樣顯示部分就只在Head出現(xiàn)時才接收,且檢驗正確才顯示。由于測t時,程序的時序已經(jīng)固定,在此基礎(chǔ)上進行串口通信,就只能夠采用中斷方式,而不能采用查詢方式,否則將出現(xiàn)“死機”現(xiàn)象。
對于display.c,eraseint.a(chǎn)51這兩個模塊,在主程序中調(diào)用即可,功能單一:一個用來顯示數(shù)據(jù);一個用來執(zhí)行iret指令。
4 結(jié) 語
本文設(shè)計的防撞裝置在結(jié)構(gòu)上采用微電腦技術(shù)和專用芯片設(shè)計,具有結(jié)構(gòu)簡單,小型化的特點,非常適合用于測控系統(tǒng);在軟件設(shè)計上,突出模塊的靈活性,并且C51語言簡潔,大大簡化了編寫程序的工作量。比較現(xiàn)在市場上已有的汽車防撞器,該系統(tǒng)結(jié)構(gòu)緊湊,成本低,可靠性好,通信能力強,能有效地避免汽車相撞事故的發(fā)生,具有一定的市場價值。
評論