基于單片機(jī)與VB汽車尾燈設(shè)計(jì)報(bào)告樣本_第1頁(yè)
基于單片機(jī)與VB汽車尾燈設(shè)計(jì)報(bào)告樣本_第2頁(yè)
基于單片機(jī)與VB汽車尾燈設(shè)計(jì)報(bào)告樣本_第3頁(yè)
基于單片機(jī)與VB汽車尾燈設(shè)計(jì)報(bào)告樣本_第4頁(yè)
基于單片機(jī)與VB汽車尾燈設(shè)計(jì)報(bào)告樣本_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

課程設(shè)計(jì)(論文)設(shè)計(jì)課題:基于單片機(jī)汽車尾燈控制學(xué)校院系:海南師范大學(xué)物電學(xué)院專業(yè):10電子一班學(xué)生姓名:學(xué)號(hào):指引教師:摘要本次課題是基于單片機(jī)汽車尾燈控制器,該設(shè)計(jì)課題重要由STC89C52RC單片機(jī)為核心展開汽車尾燈控制電路設(shè)計(jì)辦法,用發(fā)光二極管模仿汽車尾燈,可以用VB上位機(jī)界面和按鍵開關(guān)作為轉(zhuǎn)彎等控制信號(hào),,并且把信息顯示在LCD1602上。在VB6.0環(huán)境下,上位機(jī)運(yùn)用MSCOMM通信控件與單片機(jī)之間串口通信實(shí)現(xiàn)上位機(jī)控制汽車尾燈。設(shè)計(jì)電路能較好綜合運(yùn)用咱們所學(xué)習(xí)到單片機(jī)、C語(yǔ)言、VB上位機(jī)編程,熟悉電子電路設(shè)計(jì)基本辦法。核心詞:STC89C52RC;發(fā)光二極管;單片機(jī);C語(yǔ)言;VB上位機(jī);MSCOMM控件引言 3一·設(shè)計(jì)任務(wù) 31.1任務(wù)闡明 31.2任務(wù)分析 3二·設(shè)計(jì)方案選取及論證 42.1方案一:采用555定期器等構(gòu)成汽車尾燈電路 42.2方案二:由STC89C52RC及其外圍電路構(gòu)成汽車尾燈控制器 42.3方案比較和選取 42.4系統(tǒng)框圖 5三·系統(tǒng)硬件原理簡(jiǎn)介 73.1單片機(jī)STC89C52RC簡(jiǎn)介 73.2LCD1602液晶屏簡(jiǎn)介 83.3 系統(tǒng)構(gòu)造原理圖、器件選取 93.4硬件電路總原理圖 143.5硬件設(shè)計(jì)原理及狀態(tài)圖 14四.程序流程 154.1下位機(jī)軟件程序 154.1.1鍵盤掃程序設(shè)計(jì)流程圖 154.2.1顯示程序設(shè)計(jì)流程圖 174.2VB上位機(jī)界面設(shè)計(jì) 184.2.1設(shè)計(jì)方案原理與設(shè)計(jì)特點(diǎn)分析 18五·仿真圖實(shí)物調(diào)試 205.1仿真圖 205.2實(shí)物圖 21六·課設(shè)總結(jié) 21參照文獻(xiàn) 22附錄一 23引言汽車作為當(dāng)代交通工具已經(jīng)大量進(jìn)入人們生活,隨著電子技術(shù)發(fā)展,對(duì)于汽車控制電路也已經(jīng)從過(guò)去全人工開關(guān)控制發(fā)展到了智能化控制。汽車尾燈控制器是隨著汽車智能化技術(shù)發(fā)展而迅速發(fā)展起來(lái),汽車尾燈普通基于微解決器硬件電路構(gòu)造構(gòu)成,而正由于硬件電路局限性,不能隨意更改電路功能和性能,且可靠性得不到保證,因而對(duì)汽車尾燈控制系統(tǒng)發(fā)展帶來(lái)局限性,難以滿足當(dāng)代智能化規(guī)定。本次設(shè)計(jì)是基于單片機(jī)汽車尾燈控制器,用發(fā)光二極管模仿汽車尾燈,用VB上位機(jī)和按鍵開關(guān)作為汽車轉(zhuǎn)彎等控制信號(hào),實(shí)現(xiàn)汽車尾燈智能化控制。一·設(shè)計(jì)任務(wù)1.1任務(wù)闡明本次課題重要是以STC89C52RC為核心單片機(jī)控制電路,它重要模仿了汽車尾燈系統(tǒng)正常行駛、轉(zhuǎn)彎、剎車、倒車、夜間行駛等狀態(tài)下發(fā)光狀況,實(shí)現(xiàn)了汽車尾燈控制智能化。1.2任務(wù)分析設(shè)計(jì)一種基于單片機(jī)汽車尾燈控制器,其詳細(xì)設(shè)計(jì)規(guī)定如下:1)汽車白天正常行駛時(shí)批示燈全滅;

2)汽車右(左)轉(zhuǎn)彎時(shí),先后最右(左)邊和右(左)側(cè)那個(gè)批示燈亮并閃爍;3)汽車暫時(shí)剎車時(shí)車尾燈所有亮;

4)汽車倒車時(shí)尾燈中間4個(gè)批示燈亮;

5)汽車夜間行駛時(shí),車前燈全亮,尾燈兩邊各中間燈亮;6)可通過(guò)串口連接PC控制車尾燈(自己發(fā)揮某些);二·設(shè)計(jì)方案選取及論證2.1方案一:采用555定期器等構(gòu)成汽車尾燈電路采用譯碼器74LS138、計(jì)數(shù)器74LS161、脈沖產(chǎn)生器555、開光控制電路、顯示驅(qū)動(dòng)電路、發(fā)光二極管以及各種邏輯元件等構(gòu)成汽車尾燈控制電路。由于汽車左右轉(zhuǎn)彎時(shí),四個(gè)批示燈循環(huán)點(diǎn)亮,因此用四進(jìn)制計(jì)數(shù)器控制譯碼器電路順序輸出低電平,從而控制尾燈按規(guī)定點(diǎn)亮,達(dá)到模仿汽車轉(zhuǎn)彎、剎車、正常行駛等狀態(tài)。由于行車時(shí)都是開關(guān)控制,因此每一種開關(guān)都應(yīng)當(dāng)有一種消除機(jī)械振動(dòng)裝置,可以用基本SR觸發(fā)器來(lái)實(shí)現(xiàn)。2.2方案二:由STC89C52RC及其外圍電路構(gòu)成汽車尾燈控制器 STC89C52RC是一種低功耗、高性能CMOS8位微控制器,具備8K在系統(tǒng)可編程Flash存儲(chǔ)器。 本次單片機(jī)控制系統(tǒng)以STC89C52RC為控制器,鍵盤為輸入信號(hào),由于STC89C52RC自身功能強(qiáng)大,汽車轉(zhuǎn)彎燈驅(qū)動(dòng)用單片機(jī)驅(qū)動(dòng)功能來(lái)完畢。使得單片機(jī)功能得到了充分運(yùn)用;并且顯示電路從并行I/O口輸出,由限流電阻和發(fā)光二極管構(gòu)成,低電平使發(fā)光二極管導(dǎo)通,顯示出相應(yīng)信號(hào)燈亮滅狀況,實(shí)現(xiàn)了左轉(zhuǎn)、右轉(zhuǎn)、剎車、應(yīng)急燈各種狀態(tài)下控制效果。2.3方案比較和選取方案一中,要使用各種控制電路,實(shí)現(xiàn)辦法繁雜且不靈活,成本高,搭建好電路后調(diào)試起來(lái)不以便,不可以任意定義各種狀態(tài),電路可靠性以及可擴(kuò)展性不高,且與本次課題所規(guī)定運(yùn)用知識(shí)相悖,因而不適當(dāng)使用此方案。方案二中,以單片機(jī)為核心,而單片機(jī)編程比較直接,且可重復(fù)擦除修改,硬件電路搭建以便簡(jiǎn)樸。搭建好電路后通過(guò)STC89C52RC來(lái)編寫程序,控制LED亮滅,大大簡(jiǎn)化了系統(tǒng)構(gòu)造,減少材料成本,提高系統(tǒng)先進(jìn)性和可靠性,能實(shí)現(xiàn)控制器智能化。由于采用此種辦法開發(fā)系統(tǒng)其升級(jí)和改進(jìn)較為以便,因而本次課題選用方案二。采用串口連接筆記本電腦,通過(guò)VB上位機(jī)控制LED亮滅,實(shí)現(xiàn)真正意義上智能化控制。發(fā)光二極管顯示電路STC89C52RC2.4系統(tǒng)框圖發(fā)光二極管顯示電路STC89C52RC時(shí)鐘電路時(shí)鐘電路1602液晶屏顯示電路1602液晶屏顯示電路復(fù)位電路復(fù)位電路PC電腦上位機(jī)按鍵電路串口電路MAX232PC電腦上位機(jī)按鍵電路串口電路MAX232圖2.4.1系統(tǒng)構(gòu)造框圖 整個(gè)系統(tǒng)涉及電源電路、時(shí)鐘電路、復(fù)位電路、按鍵電路、發(fā)光二極管顯示電路、液晶屏顯示電路、串口電路、單片機(jī)、PC上位機(jī)等。其中重要由按鍵電路和PC上位機(jī)發(fā)出控制信號(hào),由顯示電路顯示信號(hào)詳細(xì)狀態(tài)。三·系統(tǒng)硬件原理簡(jiǎn)介3.1單片機(jī)STC89C52RC簡(jiǎn)介圖3.1.1STC89C52RC引腳圖(1)STC89C52RC某些引腳功能簡(jiǎn)介:1、VCC:STC89C52RC電源正端輸入,接+5V。2、VSS:電源地端。3、XTAL1:?jiǎn)涡酒到y(tǒng)時(shí)鐘反相放大器輸入端。4、XTAL2:系統(tǒng)時(shí)鐘反相放大器輸出端,普通在設(shè)計(jì)上只要在XTAL1和XTAL2上接上一只石英振蕩晶體系統(tǒng)就可以動(dòng)作了,此外可以在兩引腳與地之間加入一20PF小電容,可以使系統(tǒng)更穩(wěn)定,避免噪聲干擾而死機(jī)。5、RESET:STC89C52RC重置引腳,高電平動(dòng)作,當(dāng)要對(duì)晶片重置時(shí),只要對(duì)此引腳電平提高至高電平并保持兩個(gè)機(jī)器周期以上時(shí)間,AT89S51便能完畢系統(tǒng)重置各項(xiàng)動(dòng)作,使得內(nèi)部特殊功能寄存器之內(nèi)容均被設(shè)成已知狀態(tài),并且至地址0000H處開始讀入程序代碼而執(zhí)行程序。3.2LCD1602液晶屏簡(jiǎn)介1602LCD重要技術(shù)參數(shù):顯示容量:16×2個(gè)字符芯片工作電壓:4.5—5.5V工作電流:2.0mA(5.0V)模塊最佳工作電壓:5.0V字符尺寸:2.95×4.35(W×H)mm引腳功能闡明:1602LCD采用原則14腳(無(wú)背光)或16腳(帶背光)接口,各引腳接口闡明如表10-13所示:編號(hào)符號(hào)引腳闡明編號(hào)符號(hào)引腳闡明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選取12D5數(shù)據(jù)5R/W讀/寫選取13D6數(shù)據(jù)6E使能信號(hào)14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極表10-13:引腳接口闡明表第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示屏對(duì)比度調(diào)節(jié)端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一種10K電位器調(diào)節(jié)對(duì)比度。第4腳:RS為寄存器選取,高電平時(shí)選取數(shù)據(jù)寄存器、低電平時(shí)選取指令寄存器。第5腳:R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。系統(tǒng)構(gòu)造原理圖、器件選取(1)電源電路圖3.3 電源電路可以給單片機(jī)提供工作所需電源,有批示燈提示,燈亮?xí)r表達(dá)提供正常工作電壓。(2)時(shí)鐘電路 圖3.3.2 時(shí)鐘電路中使用12M晶振,為單片機(jī)提供系統(tǒng)時(shí)鐘。(3)復(fù)位電路圖3.3 復(fù)位電路是單片機(jī)能上電復(fù)位,當(dāng)程序混亂跑飛時(shí)可以通過(guò)按鍵手動(dòng)復(fù)位。(4)按鍵電路圖3.3 按鍵電路可以通過(guò)按鍵來(lái)模仿汽車轉(zhuǎn)彎、剎車、應(yīng)急等各種狀態(tài),控制LED和液晶屏顯示。(5)發(fā)光二極管顯示電路圖3.3 發(fā)光二極管可以模仿汽車車燈,顯示各種控制信號(hào)效果。(6)液晶屏顯示電路圖3.3液晶屏顯示電路可以直觀顯示出汽車行進(jìn)狀態(tài),增長(zhǎng)尾燈系統(tǒng)可視性。(7)串口電路為了使單片機(jī)內(nèi)電平與計(jì)算機(jī)電平同樣需要運(yùn)用電平轉(zhuǎn)換,MAX232芯片是專為RS232原則串口設(shè)計(jì)單電源點(diǎn)平轉(zhuǎn)換芯片。其特點(diǎn)如下:1)符合所有RS232技術(shù)原則;2)只需要單一+5V電源供電;3)片載電荷泵具備升壓、電壓極性反轉(zhuǎn)能力,可以產(chǎn)生+10V和-10V電壓;4)功耗低,典型供電電流5mA;5)內(nèi)部集成2個(gè)RS-232C驅(qū)動(dòng)器;6)高集成度,片外最低只需4個(gè)電容即可工作;7)連接方式如圖5所示。圖5串口連接3.4硬件電路總原理圖圖3.4.1總原理圖 硬件總原理分解如3.3.1~3.3.6各圖所示,完整實(shí)現(xiàn)了汽車尾燈控制,用按鍵模仿控制信號(hào),用發(fā)光二極管和液晶屏顯示狀態(tài),達(dá)到所有指標(biāo)。3.5硬件設(shè)計(jì)原理及狀態(tài)圖本次由按鍵作為控制信號(hào),發(fā)光二極管模仿汽車尾燈,狀態(tài)表如下所示:駕駛操作輸出信號(hào)LED1LED2LED3LED4LED5LED6LED7LED8左轉(zhuǎn)滅滅閃爍滅滅滅滅滅右轉(zhuǎn)滅滅滅閃爍滅滅滅滅剎車亮亮亮亮亮亮亮亮正常行駛亮亮滅滅亮亮滅滅夜間行駛亮亮滅滅滅滅亮亮倒車行駛滅滅滅滅亮亮亮亮 本次課題重要以STC89C52RC為核心展開汽車尾燈控制器,通過(guò)原理仿真以及實(shí)物制作,完整實(shí)現(xiàn)了汽車尾燈智能化控制效果,相比此前用數(shù)字邏輯電路原理打成汽車尾燈更以便、更簡(jiǎn)樸。制作出實(shí)物板有6個(gè)控制狀態(tài)按鍵,可以搭配起來(lái)控制6種汽車行駛狀態(tài),完美模仿了汽車尾燈控制系統(tǒng),完畢本次課題所有指標(biāo)。四.程序流程4.1下位機(jī)軟件程序4.1.1鍵盤掃程序設(shè)計(jì)流程圖鍵掃程序過(guò)程為:開始時(shí),先判斷與否有鍵閉合,無(wú)鍵閉合時(shí),返回繼續(xù)判斷,有鍵閉合時(shí),先去抖動(dòng),然后擬定與否有鍵按下,若無(wú)鍵按下,則返回繼續(xù)判斷與否有鍵閉合,若有鍵按下,則判斷鍵號(hào),然后釋放,若釋放按鍵完畢,則返回,若沒有釋放按鍵,則返回繼續(xù)釋放。其流程圖如圖所示。軟件設(shè)計(jì)思路,程序開始后進(jìn)入初始化,然后掃描鍵盤等待有鍵按下。如果沒有鍵按下則始終掃描,如果有鍵按下,則判斷是哪個(gè)鍵,如果為1鍵,則正常行駛;為2鍵,則右轉(zhuǎn);為3鍵,則左車;為4鍵,則應(yīng)急狀態(tài);為5鍵,則倒車行駛;為6鍵,則夜間行駛。YYN開始有鍵閉合否?去抖動(dòng)確有鍵按下判斷按鍵釋放LED狀態(tài)返回YNYN圖4.3.1軟件流程圖4.2.1顯示程序設(shè)計(jì)流程圖NNYN與否返回LCD初始化顯示漢ACSII碼顯示開始顯示字符相應(yīng)功能設(shè)立送地址送數(shù)據(jù)NN相應(yīng)功能設(shè)立送行地址和列地址送數(shù)據(jù)與否YY圖4.2.1顯示程序流程圖顯示程序過(guò)程為:顯示開始時(shí),先進(jìn)行LCD初始化,判斷與否顯示中文或ACSII碼或圖形,若不顯示,則返回,若顯示是中文或ACSII碼,則進(jìn)行相應(yīng)功能設(shè)立,然后送地址和數(shù)據(jù),再判斷與否顯示完,顯示完則返回,沒有顯示完則繼續(xù)送地址,若顯示是圖形,則先進(jìn)行相應(yīng)功能設(shè)立,再送行地址和列地址,然后送數(shù)據(jù),最后判斷與否顯示完,顯示完則返回,沒有顯示完則繼續(xù)送行地址和列地址。其流程圖如圖7所示。(1)在編寫液晶屏顯示程序時(shí),發(fā)現(xiàn)液晶屏只能瞬間顯示狀態(tài),而不能保持,因而在液晶顯示程序后要加上一種延時(shí),使液晶屏可以保持狀態(tài); (2)要使發(fā)光二極管閃爍可以通過(guò)指令讓其取反,但是在編寫程序時(shí),只能取反一次,一次可以使用一種while函數(shù),當(dāng)沒有按鍵時(shí)候發(fā)光二極管始終取反,且在程序里加上恰當(dāng)延時(shí); (3)在使發(fā)光二極管閃爍時(shí),如果前一種狀態(tài)中正在使用改二極管,則切換狀態(tài)后,每個(gè)燈管閃爍時(shí)間不同步,因而在讓其閃爍之前先令所有二極管保持同一種狀態(tài);4.2VB上位機(jī)界面設(shè)計(jì)4.2.1設(shè)計(jì)方案原理與設(shè)計(jì)特點(diǎn)分析(1)IO控制系統(tǒng)原理框圖:?jiǎn)纹瑱C(jī)上位機(jī)控制軟件單片機(jī)上位機(jī)控制軟件 發(fā)送數(shù)據(jù)將PC機(jī)和單片機(jī)通過(guò)RS232連接,通過(guò)上位機(jī)軟件可以向單片機(jī)發(fā)送數(shù)據(jù)來(lái)測(cè)試兩者通訊狀態(tài),同步單片機(jī)也可以向上位機(jī)軟件返回?cái)?shù)據(jù),以顯示當(dāng)前通信狀態(tài)與否正常。以及用上位機(jī)軟件控制單片機(jī)上批示燈工作。從而實(shí)現(xiàn)簡(jiǎn)樸IO控制系統(tǒng)。(2)上位機(jī)軟件(3)通信合同本通信系統(tǒng)使用了一種簡(jiǎn)樸通信合同,就是每當(dāng)向單片機(jī)發(fā)送一種特定字符串時(shí),單片機(jī)在接受到字符串時(shí)會(huì)向上位機(jī)軟件反饋一條信息,來(lái)表白上位機(jī)軟件和硬件與否正常通信,制定通信合同時(shí)需要指定端標(biāo)語(yǔ),核心代碼如下:MSComm1.CommPort=“”MSComm1.InputMode=“”MSComm1.RThreshold=“”MSComm1.SThreshold=“”MSComm1.Settings=""MSComm1.PortOpen=“”VB上位機(jī)界面通過(guò)合同控制車燈智能開關(guān)。五·仿真圖實(shí)物調(diào)試5.1仿真圖5.2實(shí)物圖6課設(shè)總結(jié)本次課設(shè)作品重要元件為STC89C52RC,在其控制下保證了系統(tǒng)正常工作,達(dá)到模仿汽車尾燈控制效果,實(shí)現(xiàn)汽車尾燈智能化控制。兩周課程設(shè)計(jì),相較于之前所選修各種實(shí)驗(yàn)課程,本次更增長(zhǎng)了自己動(dòng)手實(shí)踐能力。理論與實(shí)踐還是有一定差距,在理論上不論多精準(zhǔn)數(shù)據(jù),一旦用于實(shí)際中,就不得不考慮其儀器,器件誤差,以及自己操作上能力。并且,在課設(shè)過(guò)程中添加了自己思考,該選取如何電阻、電容,想要修改最后輸出,應(yīng)當(dāng)在什么地方做變化。雖然是某些很基本東西,但僅僅是書上理論學(xué)習(xí),會(huì)讓人對(duì)知識(shí)遺忘得比較快,相反,通過(guò)自己動(dòng)手實(shí)踐過(guò)東西,會(huì)更加記憶深刻??粗约撼晒χ谱鞒鰜?lái)電路板覺得很有成就感。通過(guò)這次課設(shè)教我還學(xué)會(huì)諸多關(guān)于電子產(chǎn)品知識(shí)。進(jìn)一步結(jié)識(shí)了咱們現(xiàn)實(shí)生活電子產(chǎn)品,理解和掌握了某些簡(jiǎn)樸電子元件運(yùn)用,大大擴(kuò)展了咱們知識(shí)面。提高了自己后來(lái)在學(xué)習(xí)生活中自己動(dòng)手能力。給咱們很大啟發(fā),很有助于咱們將來(lái)學(xué)習(xí)生活和工作。在查閱資料中,獲得了許多額外知識(shí),開拓視野。在原理圖設(shè)計(jì)、使用proteus仿真、使用Altium繪制、實(shí)物制作、板子調(diào)試等整個(gè)過(guò)程中加強(qiáng)了咱們分析問(wèn)題和解決問(wèn)題能力,深刻體味到實(shí)踐是檢查真理唯一原則這一道理。綜上所述,這次課設(shè),讓咱們受益匪淺。參照文獻(xiàn)[1]李廣弟,朱月秀,王秀山.單片機(jī)基本[M].北京:航空航天大學(xué)出版社,.[2]康華光,陳大欽.電子技術(shù)基本模仿某些[M].武漢:高等教誨出版社,1998.[3]謝自美.電子線路設(shè)計(jì)·實(shí)驗(yàn)·測(cè)試(第二版).武漢:華中理工出版社,.[4]戴佳.51單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例精講[M].電子工業(yè)出版社,.[5]徐愛鈞,彭秀華。KeilCx51V7.0單片機(jī)高檔語(yǔ)言編程與μVision2應(yīng)用實(shí)踐[M].北京:電子工業(yè)出版社,.附錄一單片機(jī)源程序:#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineunitunsignedintsbitKEY1=P1^0;sbitKEY2=P1^1;sbitKEY3=P1^2;sbitKEY4=P1^3;sbitKEY5=P1^4;sbitKEY6=P1^5;sbitLED1=P2^0;sbitLED2=P2^1;sbitLED3=P2^2;sbitLED4=P2^3;sbitLED5=P2^4;sbitLED6=P2^5;sbitLED7=P2^6;sbitLED8=P2^7; sbitLCD_RS=P3^4;sbitLCD_RW=P3^5;sbitLCD_EN=P3^6;voiddelay(unitt);voiddelay1(intms);#definedelayNOP();{_nop_();_nop_();_nop_();_nop_();};voiddelay(unitt) //延時(shí)程序; {uniti,j;for(i=0;i<t;i++)for(j=0;j<120;j++);}/**********************************************************/voiddelay1(intms){unsignedchary;while(ms--){for(y=0;y<250;y++){_nop_();_nop_();_nop_();_nop_();}}}ucharcodecdis1[]={"Daytime"};ucharcodecdis2[]={"stop"};ucharcodecdis3[]={"left"};ucharcodecdis4[]={"right"};ucharcodecdis5[]={"Astern"};ucharcodecdis6[]={"night"};ucharcodecdis7[]={"happyeveryday"};//ucharcodecdis11[]={"Daytime"};//ucharcodecdis21[]={"stop"};//ucharcodecdis31[]={"left"};//ucharcodecdis41[]={"right"};//ucharcodecdis51[]={"Astern"};//ucharcodecdis61[]={"night"};ucharcodecdis71[]={"MyControl"};/*******************************************************************//**//*檢查L(zhǎng)CD忙狀態(tài)*//*lcd_busy為1時(shí),忙,等待。lcd-busy為0時(shí),閑,可寫指令與數(shù)據(jù)。*//**//*******************************************************************/bitlcd_busy(){bitresult;LCD_RS=0;LCD_RW=1;LCD_EN=1;delayNOP();result=(bit)(P0&0x80);LCD_EN=0;return(result);}/*******************************************************************//**//*寫指令數(shù)據(jù)到LCD*//*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。*//**//*******************************************************************/voidlcd_wcmd(ucharcmd){while(lcd_busy());LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();P0=cmd;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;}/*******************************************************************//**//*寫顯示數(shù)據(jù)到LCD*//*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。*//**//*******************************************************************/voidlcd_wdat(uchardat){while(lcd_busy());LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;}/*******************************************************************//**//*LCD初始化設(shè)定*//**//*******************************************************************/voidlcd_init(){delay1(15);lcd_wcmd(0x38);//16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)delay1(5);lcd_wcmd(0x38);delay1(5);lcd_wcmd(0x38);delay1(5);lcd_wcmd(0x0c);//顯示開,關(guān)光標(biāo)delay1(5);lcd_wcmd(0x06);//移動(dòng)光標(biāo)delay1(5);lcd_wcmd(0x01);//清除LCD顯示內(nèi)容delay1(5);}/*******************************************************************//**//*設(shè)定顯示位置*//**//*******************************************************************/voidlcd_pos(ucharpos){lcd_wcmd(pos|0x80);//數(shù)據(jù)指針=80+地址變量}/*******************************************************************/voidinitUART(void)//串口必要作如下初始化,才干正常工作。{TMOD=0x20;//M1=1,M0=0定期器1工作方式2(定期常數(shù)重裝,8位)SCON=0x50;//SM0=0,SM1=1,REN=1串口工作方式1,容許接受TH1=0xfd;//晶振11.0592時(shí),波特率9600TL1=0xfd;//TL1計(jì)數(shù),溢出后,TH1值送入TL1EA=1;//開總中斷ES=1;//容許串口中斷TR1=1;//啟動(dòng)定期器1}voidmain(void){ucharm;P1=0x00;P2=0xff;P0=0;delay1(10);//延時(shí)lcd_init();//初始化LCDlcd_pos(0);//設(shè)立顯示位置為第一行第1個(gè)字符for(m=0;m<16;m++)lcd_wdat(cdis7[m]); initUART();//lcd_pos(0x40);//設(shè)立顯示位置為第二行第1個(gè)字符//for(m=0;m<16;m++)//lcd_wdat(cdis2[m]);while(1){lcd_pos(0);//設(shè)立顯示位置為第一行第1個(gè)字符for(m=0;m<16;m++)lcd_wdat(cdis7[m]);//白天正常行駛批示燈全滅if(KEY1==1){delay(10);if(KEY1==1){P2=0xff;lcd_pos(0x40);for(m=0;m<16;m++)lcd_wdat(cdis1[m]);}}//汽車右轉(zhuǎn);亮并且閃if(KEY2==1){delay(10);if(KEY2==1){ P2=0xff;while(1){LED3=~LED3;delay(100);lcd_pos(0x40);for(m=0;m<16;m++)lcd_wdat(cdis4[m]);if(KEY4==1||KEY3==1||KEY1==1||KEY5==1||KEY6==1)break;} }}//汽車左轉(zhuǎn);亮并且閃if(KEY3==1){delay(10);if(KEY3==1){P2=0xff;while(1){LED4=~LED4;delay(100);lcd_pos(0x40);for(m=0;m<16;m++)lcd_wdat(cdis3[m]);if(KEY4==1||KEY2==1||KEY1==1||KEY5==1||KEY6==1) break;} }}//汽車暫時(shí)剎車所有亮if(KEY4==1){delay(10);if(KEY4==1){P2=0x00;lcd_pos(0x40);for(m=0;m<16;m++)lcd_wdat(cdis2[m]);}}//汽車倒車;中間四個(gè)燈亮if(KEY5==1){delay(10);if(KEY5==1){P2=0xff;delay(1);LED5=0;LED6=0;LED7=0;LED8=0; LED1=0; LED2=0;lcd_pos(0x40);for(m=0;m<16;m++)lcd_wdat(cdis5[m]);}}//汽車夜間行駛車前燈全亮。尾燈兩邊中間燈亮if(KEY6==1){delay(10);if(KEY6==1){P2=0xff;delay(1);LED1=0;LED2=0;LED5=0;LED6=0;lcd_pos(0x40);for(m=0;m<16;m++)lcd_wdat(cdis6[m]); } }}}voidUARTinterrupt(void)interrupt4{ucharm;lcd_pos(0);//設(shè)立顯示位置為第一行第1個(gè)字符for(m=0;m<16;m++)lcd_wdat(cdis71[m]);if(RI){RI=0;while(1){if(SBUF=='1') //單引號(hào)內(nèi)表達(dá)ASCII碼//白天正常行駛批示燈全滅{P2=0xff;lcd_pos(0x40);for(m=0;m<16;m++)lcd_wdat(cdis1[m]);if(SBUF=='2'||SBUF=='3'||SBUF=='4'||SBUF=='5'||SBUF=='6'||KEY4==1||KEY3==1||KEY1==1||KEY5==1||KEY6==1||KEY2==1)break;}elseif(SBUF=='2')//汽車右轉(zhuǎn);亮并且閃 {if(SBUF=='1'||SBUF=='3'||SBUF=='4'||SBUF=='5'||SBUF=='6'||KEY4==1||KEY3==1||KEY1==1||KEY5==1||KEY6==1||KEY2==1) while(1);{P2=0xff;delay(100); P2=0xfb; delay(100); lcd_pos(0x40);for(m=0;m<16;m++)lcd_wdat(cdis4[m]);// break; } break;}elseif(SBUF=='3')//汽車左轉(zhuǎn);亮并且閃 {if(SBUF=='1'||SBUF=='2'||SBUF=='4'||SBUF=='5'||SBUF=='6'||KEY4==1||KEY3==1||KEY1==1||KEY5==1||KEY6==1||KEY2==1) while(1);{P2=0xff;delay(100); P2=0xf7; delay(100); lcd_pos(0x40);for(m=0;m<16;m++)lcd_wdat(cdis3[m]);// break; } break;}elseif(SBUF=='4') //汽車暫時(shí)剎車所有亮{P2=0x00; lcd_pos(0x40);for(m=0;m<16;m++) lcd_wdat(cdis2[m]); if(SBUF=='1'||SBUF=='3'||SBUF=='2'||SBUF=='5'||SBUF=='6'||KEY4==1||KEY3==1||KEY1==1||KEY5==1||KEY6==1||KEY2==1) break;} elseif(SBUF=='5') //汽車倒車;中間四個(gè)燈亮{P2=0xff; delay(1);LED5=0;LED6=0;LED7=0;LED8=0; LED1=0; LED2=0;lcd_pos(0x40);for(m=0;m<16;m++) lcd_wdat(cdis5[m]);if(SBUF=='1'||SBUF=='3'||SBUF=='4'||SBUF=='2'||SBUF=='6'||KEY4==1||KEY3==1||KEY1==1||KEY5==1||KEY6==1||KEY2==1) break;} elseif(SBUF=='6') //汽車夜間行駛車前燈全亮。尾燈兩邊中間燈亮{P2=0xff;delay(1);LED1=0;LED2=0;LED5=0;LED6=0;lcd_pos(0x40);for(m=0;m<16;m++)lcd_wdat(cdis6[m]);if(SBUF=='1'||SBUF=='3'||SBUF=='4'||SBUF=='5'||SBUF=='2'||KEY4==1||KEY3==1||KEY1==1||KEY5==1||KEY6==1||KEY2==1) break;} elseTI=0;}} }Vb上位機(jī)程序PrivateSubCheck3_Click()IfMSComm1.PortOpen=TrueThenIfCheck3.Value=1ThenCheck1.Caption="尾燈控制"ElseCheck3.Caption="按鍵控制"EndIfElseMsgBox"請(qǐng)打開串口"""EndIfEndSubPrivateSubCommand1_Click()MSComm1.Output="1"Check1.Value=0Check2.Value=0Shape2.FillColor=vbRedShape3.FillColor=vbBlackShape4.FillColor=vbBlackShape5.FillColor=vbBlackShape6.FillColor=vbBlackShape7.FillColor=vbBlackEndSubPrivateSubCommand10_Click()EndEndSubPrivateSubCommand2_Click()MSComm1.Output="6"Check1.Value=0Check2.Value=0Shape7.FillColor=vbRedShape3.FillColor=vbBlackShape4.FillColor=vbBlackShape5.FillColor=vbBlackShape6.FillColor=vbBlackShape2.FillColor=vbBlackEndSubPrivateSubCommand3_Click()Check1.Value=1Check2.Value=0Shape3.FillColor=vbRedShape2.FillColor=vbBlackShape4.FillColor=vbBlackShape5.FillColor=vbBlackShape6.FillColor=vbBlackShape7.FillColor=vbBlackE

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論