【正文】
}/***************************************************//****************寫數(shù)據(jù)函數(shù)*************************/void LCD_wri。 delay_nms(1)。 delay_nms(1)。 delay_nms(1)。 delay_nms(1)。 delay_nms(1)。=0X7F。//set lcd first display address CLEARSCREEN。//set 8 bit data transmission mode LCD_write_mand(0x0c)。//延時(shí)函數(shù)/********************************************//************初始化函數(shù)**********************/void LCD_init(void){ CLEARSCREEN。//顯示字符串函數(shù)void LCD_init(void)。//設(shè)置顯示位置函數(shù)void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat)。//寫入指令函數(shù)void LCD_write_dat(unsigned char dat)。define LCD1602_EN_1 ep=1。define LCD1602_RW_1 rw=1。define LCD1602_RS_1 rs=1。 sbit ep = P3^6。 }void blackline_right() interrupt 2{define CLEARSCREEN LCD_write_mand(0x01)/**************定義接口************************/define LCDIO P0sbit rs = P3^4。sbit flash2 = P3^1。sbit P32 = P3^2。sbit P14 = P1^4。sbit P12 = P1^2。sbit P26 = P2^6。sbit P24 = P2^4。sbit P22 = P2^2。sbit P20 = P2^0。 sbit P10 = P1^0。uchar step_mode。uint speed=0。uint time=0。 //聲明一個(gè)數(shù)組uchar code num_shuzhu[] = {iron_num:1}。 //聲明一個(gè)數(shù)組uchar code time_shuzhu[] = {time: sec }。 //聲明一個(gè)數(shù)組uchar code going_shuzhu[] = {going......}。 extern void check_block()。//檢測(cè)鐵片extern void turn_left_right()。typedef bit BOOL 。s automatic obstacle avoidance, speed control with PMW to slow or fast driving and auto parking, and can automatically record and display time, mileage and speed, automatic track finding. The characteristics of the design lies is in its use as a central AT89S52 chip to control external, external signal acquisition by the LM324 voltage parator able to enter the stability of single high or low to MUC, in the car driving dynamics using the L293 chip has sufficient driving force, for the election LCD1602 displays to increase the display of the design features, has changed the traditional LED shows the limitations of a small amount of information.Key words: AT89S52 electric cars PMW speed infrared sensor Automatic obstacle avoidance LM324 L293 LCD1602附錄一 作品圖作品圖附錄二 程序清單include include define uchar unsigned char define uint unsigned inttypedef unsigned char BYTE。由于自身水平有限,設(shè)計(jì)中一定存在很多不足之處,敬請(qǐng)各位老師批評(píng)指正。但是我將在以后的工作和學(xué)習(xí)中繼續(xù)努力、不斷完善。通過(guò)這次畢業(yè)設(shè)計(jì),使我深刻地認(rèn)識(shí)到學(xué)好專業(yè)知識(shí)的重要性,也理解了理論聯(lián)系實(shí)際的含義,并且檢驗(yàn)了大學(xué)四年的學(xué)習(xí)成果。在這段時(shí)間里,羅老師的指導(dǎo)使我受益非淺。經(jīng)過(guò)適當(dāng)?shù)男薷模鞠到y(tǒng)有多種用途,可廣泛用于距離的測(cè)量,野外的勘探,智能建筑環(huán)境等等?;魻杺鞲衅骶哂性S多優(yōu)點(diǎn),結(jié)構(gòu)牢固,體積小,重量輕,壽命長(zhǎng),安裝方便,功耗小,頻率高(可達(dá)1MHZ),耐震動(dòng),不怕灰塵、油污、水汽及鹽霧等的污染或腐蝕。根據(jù)磁鋼和脈沖數(shù)量就可以計(jì)算轉(zhuǎn)速。本系統(tǒng)采用霍爾傳感器作為車速數(shù)據(jù)的采集,霍爾傳感器一般由霍爾元件和磁鋼組成。如果要在系統(tǒng)中進(jìn)一步增強(qiáng)自動(dòng)調(diào)速的功能,可以引入神經(jīng)網(wǎng)絡(luò)等算法對(duì)直流電機(jī)轉(zhuǎn)速進(jìn)行調(diào)節(jié)和精確的校正,這些算法可以方便地用Visual C++,生成的應(yīng)用程序可以穩(wěn)定地運(yùn)行在Windows上。而且是我們了解設(shè)計(jì)一個(gè)實(shí)際的系統(tǒng)不只是電子控制的問(wèn)題,還涉及到機(jī)械、動(dòng)力等個(gè)方面的知識(shí)。調(diào)試尋光的時(shí)候,需要多次測(cè)量,尋找最佳位置。表3 測(cè)試數(shù)據(jù)表測(cè)試器件比較電壓(V)輸出低電平情況輸出高電平情況黑線(紅外)檢測(cè)白線黑線鐵片(光電)檢測(cè)有鐵無(wú)鐵測(cè)速(霍爾)檢測(cè)有磁無(wú)磁避障(光電)檢測(cè)有障無(wú)障光強(qiáng)(轉(zhuǎn)彎)檢測(cè)有光無(wú)光光強(qiáng)(尋光)檢測(cè)有光無(wú)光光強(qiáng)(停車)檢測(cè)有光無(wú)光 本章小結(jié)從制板開始,由于制板時(shí)腐蝕的時(shí)間把握不好,弄壞了兩塊板,焊接的時(shí)候遵循焊接的原則,一個(gè)一個(gè)焊完后就檢查接通情況,所以全部焊完后整塊板都沒(méi)問(wèn)題。其他的測(cè)試類似這種測(cè)法。接好電路后測(cè)3跟4端的電壓,觀察電壓變化的大小,發(fā)現(xiàn)當(dāng)R1的電阻接近100歐,R2接近500K的時(shí)候,3跟4端的電壓變化最大。如圖21 以紅外檢測(cè)黑線為例。接著對(duì)黑帶檢測(cè)模塊調(diào)試,發(fā)現(xiàn)有時(shí)小車會(huì)跑出黑帶,經(jīng)判斷是因?yàn)榧t外線收發(fā)對(duì)管靈敏度不高,調(diào)整靈敏度后仍然達(dá)不到滿意效果,疑是受環(huán)境光影響,利用塑料套包圍紅外線收發(fā)后問(wèn)題解決。鐵片檢測(cè)依靠接近開關(guān),對(duì)檢測(cè)信號(hào)進(jìn)行處理并實(shí)時(shí)顯示和發(fā)出聲光信息,直到無(wú)異常狀況。加入避障子程序,小車運(yùn)轉(zhuǎn)正常,調(diào)整靈敏度達(dá)最佳效果。如圖20。如不發(fā)光,查看27腳是否為高電平并查看二極管是否接反,28腳是否高電平,接蜂鳴器的三極管是否引腳正確。所以電壓模塊正常使用。 電源模塊調(diào)試接上9V的電池,接入太高的電壓可能使7805工作不穩(wěn)定,且發(fā)熱太高可能燒壞7805,用萬(wàn)用表檢測(cè)7805的2腳的電壓之間的電壓值,正常為910V,在檢測(cè)3腳的電壓,經(jīng)檢測(cè)都正常。 (2)測(cè)試方法 數(shù)字萬(wàn)用表主要用來(lái)測(cè)試分立元件的電阻、壓降、截止/導(dǎo)通狀態(tài)等參數(shù)。可能一次調(diào)試并不能成功,要采用不同的方法進(jìn)行多次調(diào)試。第三步:采用雙氧水加鹽酸的水溶液對(duì)覆銅板進(jìn)行腐蝕,將覆銅板上未涂漆部分的銅皮腐飾掉。 注意受熱要均勻且徹底,否則碳粉不能全部轉(zhuǎn)印到覆銅板上。注意要平整,不能起皺。每個(gè)元件都有相應(yīng)位置,印刷電路圖中元件的安裝位置與原理圖中的元件位置相對(duì)應(yīng)印制電路圖如下圖19所示。從電磁場(chǎng)兼容性、抗干擾能力等方面考慮來(lái)確定元件的布局。接地線應(yīng)盡量構(gòu)成死循環(huán)回路,這樣減少地線電位差。電源線、地線的走向應(yīng)與信號(hào)方向一致。在電路原理圖設(shè)計(jì)時(shí),信號(hào)流程從上到下或從左到右,使用交叉走線應(yīng)盡量少,信號(hào)線應(yīng)盡量短以減小因線路過(guò)長(zhǎng)引起的分布電容、漏感。仿真圖如圖18所示。}}} 本章小結(jié)本章對(duì)程序進(jìn)行了編寫,主要要考慮程序能夠穩(wěn)定執(zhí)行而不掉入死循環(huán),會(huì)不會(huì)重復(fù)定義,對(duì)同一個(gè)時(shí)期同一個(gè)端口會(huì)不會(huì)執(zhí)行對(duì)立的程序,這些就需要先進(jìn)行電路的仿真。LCD_dsp_char( 10,2,0x30+temp)。LCD_dsp_char( 9,2,0x30+temp)。LCD_dsp_char( 8,2,0x30+temp)。LCD_dsp_char( 7,2,0x30+temp)。//speed_shuzhu[] = {speed: cm/sec }。LCD_dsp_char( 10,1,0x30+temp)。LCD_dsp_char( 9,1,0x30+temp)。LCD_dsp_char( 8,1,0x30+temp)。LCD_dsp_char( 7,1,0x30+temp)。//speed_shuzhu[] = {speed: cm/sec }。//顯示字符串函數(shù) delay_ms(600)。delay_ms(200)。temp=(time%10)/1。temp=(time%100)/10。temp=(time%1000)/100。temp=time/1000。// cm/secLCD_dsp_string(0,1,time_shuzhu)。//cmtime=timecount/20。temp1=25*temp1。while(1){CLEARSCREEN。 while(!key_start)。 EX1=0。 if(step_mode==2)break 。delay_ms(100)。temp=(length%10)/1。temp=(length%100)/10。temp=(length%1000)/100。 //聲明一個(gè)數(shù)組temp=length/1000。 }}//////////////////////////////*LCD_dsp_string(0,2,length_shuzhu)。 delay_ms(100)。 flag_start=0。 if(key_start==0) { TR1=0。//顯示字符串函數(shù) break。 CLEARSCREEN。 while(!key_start)。 EX1=1。//顯示字符串函數(shù) while(1){ if(key_start==0) delay_ms(10)。 LCD_init()。 /*中斷觸發(fā)方式為下降沿觸發(fā)*/ EA = 1。 EX1=0。 TR1 = 0。 TH1=(6553650000)/256。 unsigned long temp2=0。}void main() { BYTE i,temp。n++。//if(time_count==20)flash1^=1。//50msTL1=(6553650000)%256。 //include } }}void Timer1(void) interrupt 3{uchar i,j。 _nop_()。 i++)//250*4=1000us { _nop_()。 while(ms) { for(i = 0。j++)。i) for (j=0。 for (i=n。 s ++。}/**********************************************//***************顯示字符串函數(shù)*****************/void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s){ LCD_set_xy( X, Y )。 }/***************************************************//****************顯示一個(gè)字符***********************/void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat){LCD_set_xy( x, y )。else address =0xc0+ x。}/*****************************************************//***************設(shè)置顯示位置**************************/vo