版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、目 錄一、概述1、設(shè)計(jì)目的 12、課題簡介 1 二、系統(tǒng)設(shè)計(jì) 1、總體設(shè)計(jì)方案 2 2、硬件部分簡介 3 (A)AT89c51芯片簡介 3 (B)硬件設(shè)計(jì) 4 3、軟件部分 5 (A)初始化程序6 (B)主程序8 (C)中斷程序9 (D)里程、速度處理程序11 (E)顯示子程序14 (F)延時(shí)子程序16 三、調(diào)試17 1、硬件調(diào)試 17 2、軟件調(diào)試 17 四、操作說明19五、參考文獻(xiàn)20六、 致 謝21七、附錄22 1、元器件清單 22 2、整體原理圖 23 3、完整程序 24 自行車?yán)锍逃?jì)/速度計(jì)的設(shè)計(jì)一、 概述1、 設(shè)計(jì)目的本設(shè)計(jì)采用AT89C51單片機(jī)作控制,利用霍爾元件等器件設(shè)計(jì)一個(gè)
2、可用LED數(shù)碼管顯示當(dāng)前自行車行駛的距離及速度并具有超速報(bào)警功能的自行車?yán)锍?速度表,使其作為自行車的一種輔助工具,讓自行車的功用更強(qiáng)大,給人們帶來更多的方便。2、 課題簡介 自行車被發(fā)明及使用到現(xiàn)在已有兩百多年的歷史,在這兩百年間人類在不斷的嘗試與研發(fā)過程中,自行車發(fā)展的目的也從最早的代步工具轉(zhuǎn)換成休閑娛樂的用途,隨著生活水平的提高,人們希望自行車的功能更強(qiáng)大,而里程計(jì)/速度計(jì)正滿足了這個(gè)需求。現(xiàn)在先進(jìn)的里程/速度計(jì)不僅能顯示實(shí)時(shí)的速度和里程,還顯示時(shí)間,甚至具有測量騎車人的心跳、顯示騎車人熱量消耗等功能。 由于時(shí)間有限,本設(shè)計(jì)完成的功能減為兩個(gè),即測量并通過LED數(shù)碼管進(jìn)行動(dòng)態(tài)顯示當(dāng)前的速
3、度和里程,并在超速時(shí)發(fā)出警報(bào)。 要求達(dá)到的各項(xiàng)指標(biāo)及實(shí)現(xiàn)方法如下:1. 利用霍爾傳感器產(chǎn)生里程數(shù)的脈沖信號(hào)。2. 對脈沖信號(hào)進(jìn)行計(jì)數(shù)。實(shí)現(xiàn):利用單片機(jī)自帶的計(jì)數(shù)器T1對霍爾傳感器脈沖信號(hào)進(jìn)行計(jì)數(shù)。3. 對數(shù)據(jù)進(jìn)行處理,要求用LED顯示里程總數(shù)和即時(shí)速度。實(shí)現(xiàn):利用軟件編程,對數(shù)據(jù)進(jìn)行處理得到需要的數(shù)值。最終實(shí)現(xiàn)目標(biāo):自行車的速度里程表具有里程、速度測試與顯示功能,采用單片機(jī)作控制,顯示電路可顯示里程及速度。 1二、系統(tǒng)設(shè)計(jì)1、總體設(shè)計(jì)方案 采用AT89C51芯片,用霍爾元件將車輪的轉(zhuǎn)速轉(zhuǎn)換成電脈沖,經(jīng)過處理后送入單片機(jī)。里程及速度的測量,是經(jīng)過AT89C51的定時(shí)/計(jì)數(shù)器測出總的脈沖數(shù)和每轉(zhuǎn)一
4、圈的時(shí)間,再經(jīng)過單片機(jī)的計(jì)算得出,計(jì)算結(jié)果通過LED顯示器顯示出來。傳感器是獲取自然或生產(chǎn)領(lǐng)域中信息的關(guān)鍵器件,是現(xiàn)代信息系統(tǒng)和各種設(shè)備不可缺少的信息采集工具。磁傳感器是一種將磁學(xué)量信號(hào)轉(zhuǎn)變?yōu)殡娦盘?hào)的器件或裝置。隨著信息產(chǎn)業(yè)、工業(yè)自動(dòng)化、醫(yī)療儀器等的飛速發(fā)展和計(jì)算機(jī)應(yīng)用的普及,需要大量的傳感器將被測或被控的非電信號(hào)轉(zhuǎn)換成可與計(jì)算機(jī)兼容的電信號(hào)。作為輸入信號(hào),這就給磁傳感器的快速發(fā)展提供了機(jī)遇,形成了磁傳感器的產(chǎn)業(yè)。其中最具代表的磁傳感器就是霍爾傳感器,在自動(dòng)檢測系統(tǒng)中,利用霍爾傳感器測轉(zhuǎn)數(shù)是一種最基本的測量工作。單片機(jī)是本次設(shè)計(jì)的核心部件,它是信號(hào)從采集到輸出的橋梁,而且包括計(jì)算、定時(shí)、信息處
5、理等功能當(dāng)輪子每轉(zhuǎn)一圈,通過開關(guān)型霍爾元件傳感器采集到一個(gè)脈沖信號(hào),并從引腳12即P3.2外部中斷0端輸入,傳感器每獲取一個(gè)脈沖信號(hào)即對系統(tǒng)提供一次計(jì)數(shù)中斷。每次中斷代表車輪轉(zhuǎn)動(dòng)一圈,中斷數(shù)n輪圈的周長為L的乘積為里程值。計(jì)數(shù)器T1計(jì)算每轉(zhuǎn)一圈所用的時(shí)間t,就可以計(jì)算出即時(shí)速度v。當(dāng)里程鍵按下時(shí),里程指示燈亮,LED切換顯示當(dāng)前里程,與當(dāng)速度鍵按下時(shí),速度指示燈亮,LED切換顯示當(dāng)前速度,若自行車超速,系統(tǒng)發(fā)出報(bào)警信號(hào),指示燈閃爍。里程數(shù)據(jù)自動(dòng)記憶,也可用于電動(dòng)自行車、摩托車、汽車等機(jī)動(dòng)車儀表上。設(shè)計(jì)包括硬件、軟件兩部分,硬件電路包括AT89C51單片機(jī)的外圍電路以及LED顯示電路等,這里對硬
6、件部分只做簡單介紹,主要闡述的是軟件部分的設(shè)計(jì),包括數(shù)據(jù)初始化程序的設(shè)計(jì)、主程序的設(shè)計(jì)、處理子程序的設(shè)計(jì)、顯示子程序的設(shè)計(jì);最后針對仿真過程遇到的問題進(jìn)行了具體說明與分析,對本次設(shè)計(jì)進(jìn)行總結(jié)。 22、 硬件部分介紹(A)AT89C51芯片簡介 AT89C51是一種帶4K字節(jié)閃存可編程可擦除的只讀存儲(chǔ)器即為(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。管腳說明:VCC:供電電壓。 GND:接地。 P0口:P0口為一個(gè)8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管
7、腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電
8、阻拉高,且作為輸入。 P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。P3口也可作為AT89C51的一些特殊功能口,如下表所示: P3.0 RXD P3.1 TXD P3.2 /INT0 P3.3 /INT1 P3.4 T0 P3.5 T1 P3.6 /WR P3.7 /RD RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期
9、兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。 3(B)硬件設(shè)計(jì)自行車?yán)锍逃?jì)/速度計(jì)電路原理圖見附錄。本次設(shè)計(jì)信號(hào)的捕獲采用的是霍爾傳感器。 霍爾器件具有許多優(yōu)點(diǎn),它們的結(jié)構(gòu)牢固、體積小、重量輕、壽命長、安裝方便、功耗小、頻率高(可達(dá)1MHz)、耐震動(dòng)、不怕灰塵、油污、水汽及煙霧等的污染或腐蝕?;魻柧€性器件的精度高、線性度好;霍爾開關(guān)器件無觸點(diǎn)、無磨損、輸出波形清晰、無抖動(dòng)、無回跳、位置重復(fù)精度高。取用各種補(bǔ)償和保護(hù)措施的霍爾器件工作溫度范圍寬,可達(dá)55150。XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石
10、晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。由于輸入至內(nèi)部時(shí)鐘信號(hào)要通過一個(gè)二分頻觸發(fā)器,因此對外部時(shí)鐘信號(hào)的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。P0口作為輸出口用于顯示歷程狀態(tài)和速度狀態(tài)。由于P0口沒有上拉電阻,因此作為輸出口時(shí)要加上上拉電阻來驅(qū)動(dòng)LED數(shù)碼管的點(diǎn)亮。接于引腳10即P3.2、RXD的開關(guān)用于控制改變顯示的方式,當(dāng)開關(guān)閉合時(shí),顯示速度;開關(guān)打開時(shí)顯示里程。第12腳即外部中斷0用于對輪子圈數(shù)的計(jì)數(shù)輸入,輪子每轉(zhuǎn)一圈,霍爾傳感器輸出一個(gè)低電平脈沖。第十三腳即外部中斷1用于控制定時(shí)器T1的啟停,當(dāng)輸入為0時(shí)關(guān)閉定時(shí)器。此控制信號(hào)是將輪子圈數(shù)的
11、計(jì)數(shù)脈沖經(jīng)二分頻后形成,這樣,每次定時(shí)器T1的開啟時(shí)間剛好為轉(zhuǎn)一圈的時(shí)間,根據(jù)輪子的周長就可以計(jì)算出自行車的速度。P1.4口和P1.5口用于EEPROM存儲(chǔ)器24C01的存取控制。11腳輸出用于超速時(shí)的報(bào)警,此時(shí)蜂鳴器發(fā)出聲音,同時(shí)LED燈閃爍。LED數(shù)碼管采用四位相連的共陰極數(shù)碼管,片選信號(hào)分別通過三極管接至21-24管腳即P2.0-P2.4口,從而實(shí)現(xiàn)里程和速度的動(dòng)態(tài)顯示。自行車的速度里程表的硬件電路設(shè)計(jì)是基礎(chǔ)部分,它包括信號(hào)的捕獲、放大、整形,單片機(jī)的計(jì)算處理,數(shù)碼管的實(shí)時(shí)顯示和單片機(jī)外圍基本電路的設(shè)計(jì),兩大主要器件就是傳感器和單片機(jī)。 43、 軟件部分 模塊化結(jié)構(gòu)設(shè)計(jì)即是根據(jù)要求和硬件
12、設(shè)計(jì)的結(jié)構(gòu),將整個(gè)系統(tǒng)的功能分成許多小的功能模塊,再根據(jù)這些小的功能模塊進(jìn)行程序編寫的過程。這樣的設(shè)計(jì)方法,使得系統(tǒng)的整個(gè)功能和各部分的功能趨于明朗化。當(dāng)系統(tǒng)出現(xiàn)問題,就可以根據(jù)功能設(shè)置找出問題的根源,從而更快地解決問題。所以說,在整個(gè)設(shè)計(jì)過程中,軟件設(shè)計(jì)必須與硬件設(shè)計(jì)緊密地結(jié)合在一起。軟件設(shè)計(jì)包括初始化程序、主程序、行車過程中里程和速度計(jì)算子程序、延時(shí)子程序、中斷服務(wù)子程序、顯示子程序等。 系統(tǒng)軟件總體流程圖如圖3.1所示 總體設(shè)計(jì)思路:首先進(jìn)行初始化,選擇車輪周長,P3.0是用于里程和速度切換的,低電平為顯示速度,高電平為顯示里程。根據(jù)P3.0的狀態(tài)來決定顯示內(nèi)容,P3.0=1時(shí),轉(zhuǎn)到計(jì)算
13、速度子程序并進(jìn)行顯示;P3.0=0時(shí),轉(zhuǎn)到計(jì)算里程子程序并進(jìn)行顯示。P1.0和P1.1口分別用于顯示里程狀態(tài)和速度狀態(tài)。P1.2、P1.3、P1.6和P1.7口分別用于設(shè)置輪圈的大小,低電平有效。中斷0用于對輪子圈數(shù)的計(jì)數(shù)輸入,輪子每轉(zhuǎn)一圈,霍爾傳感器輸出一個(gè)低電平脈沖。將根據(jù)里程寄存器中的內(nèi)容計(jì)算和判斷出行駛里程數(shù)。中斷1用于控制定時(shí)器T1的啟/停,當(dāng)輸入為0時(shí)關(guān)閉定時(shí)器。此控制信號(hào)是將輪子圈數(shù)的計(jì)數(shù)經(jīng)二分頻后形成。這樣,每次定時(shí)器T1的開啟時(shí)間剛好為轉(zhuǎn)一圈的時(shí)間,根據(jù)輪子的周長就可以計(jì)算出自行車的速度。初始化P3.0=1?計(jì)算里程顯示里程計(jì)算速度顯示速度N開始Y 圖 3.1 系統(tǒng)整體流程圖
14、 5(A)初始化程序初始化程序主要完成以下工作:將T1設(shè)為外部控制定時(shí)器方式;外部中斷0及外部中斷1設(shè)為邊沿觸發(fā)方式;將部分內(nèi)存單元清0;設(shè)置輪子周長;開中斷及定時(shí)器;將EEPROM中的數(shù)據(jù)調(diào)入內(nèi)存。CLEARMEN:MOV TMOD,#90H ; MOV SP,#75H ; SETB PX0 ; SETB IT0 ; SETB IT1 ; CLR A ; MOV 20H,A ; MOV 6CH,A ; MOV 6DH,A ; MOV 70H,A ; MOV 71H,A ; MOV 72H,A ; MOV 73H,A ; MOV 60H,A ; MOV 61H,A ; MOV 62H,A ;
15、MOV 63H,A ; DEC A ; MOV 68H,A ; MOV 69H,A ; MOV 6AH,A ; MOV 6BH,A ; MOV P1,A ;CLEAR1: JB P1.2,KEY1 ; MOV 21H,#0FH LJMP CLEAR2 ;KEY1: JB P1.3,KEY2 ; MOV 21H,#12H LJMP CLEAR2KEY2: JB P1.6,KEY3 ; MOV 21H,#14H LJMP CLEAR2KEY3: JB P1.7,ERR ; 6 MOV 21H,#19HCLEAR2: SETB TR1 ; SETB EA ; SETB EX0 ; SETB ET1
16、; SETB P3.1 ; LCALL VIICREAD ; RETERR: CPL P3.1 ; LCALL DL5S ; LJMP CLEAR1 ;初始化具體過程:首先對P1.2口的內(nèi)容進(jìn)行查詢,若P1.2=0,則說明P1.2口接的按鈕被按下,即選擇第一種車輪周長,同時(shí)將周長存入21H單元內(nèi);若P1.2=1,則第一個(gè)按鈕沒被按下,再對P1.3口的內(nèi)容進(jìn)行查詢,內(nèi)容為0則將其周長值存入21H中,不為0則掃描P1.6,內(nèi)容為0則將其周長值存入21H中,不為0則掃描P1.7,若P1.7為0則將其周長值存入21H中,不為0則說明沒有選擇車輪直徑,此時(shí)開始報(bào)警,并調(diào)用延時(shí)子程序。接著再從P1.2口掃
17、描,如此循環(huán),直到有鍵按下后停止報(bào)警。 7初始化P1.2=1?NP1.3=1?P1.6=1?P1.7=1?出錯(cuò)提示將車圈周長調(diào)入21H開中斷,啟動(dòng)定時(shí)器NNNYYYY開報(bào)警器并延時(shí)關(guān)報(bào)警器圖 3.2 初始化程序流程圖(B)主程序主程序根據(jù)P3.0口的開關(guān)狀態(tài)選擇里程速度顯示。START: LCALL CLEARMEN ;START1: JB P3.0,DISPLAYS ; LCALL DISPLAYV ;START2: SJMP START1 ; 8初始化開始P3.0=1?調(diào)用里程處理子程序Y調(diào)用速度處理子程序N 圖3.3 主程序流程圖(C)用外部中斷0實(shí)現(xiàn)的里程計(jì)數(shù)程序定時(shí)中斷是為滿足定時(shí)或
18、計(jì)數(shù)的需要而設(shè)置的。在單片機(jī)內(nèi)部有兩個(gè)定時(shí)/計(jì)數(shù)器,以對其中的計(jì)數(shù)結(jié)構(gòu)進(jìn)行計(jì)數(shù)的方法,來實(shí)現(xiàn)定時(shí)或計(jì)數(shù)功能。當(dāng)結(jié)構(gòu)發(fā)生計(jì)數(shù)溢出時(shí),即表明定時(shí)時(shí)間或計(jì)數(shù)值已滿,這時(shí)就以計(jì)數(shù)溢出信號(hào)作為中斷請求,去置位一個(gè)溢出標(biāo)志,作為單片機(jī)接受中斷請求的標(biāo)志。這種中斷請求是在單片機(jī)芯片內(nèi)部發(fā)生的,因此無須在芯片上設(shè)置引入端。定時(shí)/計(jì)數(shù)器控制寄存器TCON是8位寄存器,地址為88H,可以位尋址。其高4位用于定時(shí)/計(jì)數(shù)器中斷控制,低4位借給外部中斷,用做中斷標(biāo)志和觸發(fā)方式選擇位。本設(shè)計(jì)采用定時(shí)中斷,對自行車的里程和速度進(jìn)行計(jì)數(shù)。INTEX0: PUSH ACC ; PUSH PSW ; INC 60H ; CLR
19、A ; CJNE A,60H,INTEX0OUT ; INC 61H ; CJNE A,61H,INTEX0OUT ; INC 62H ;INTEX0OUT:LCALL VIICWRITE ; SETB EX1 ; POP PSW ; POP ACC ; 9 RETI ;每轉(zhuǎn)一圈時(shí)間計(jì)數(shù)處理程序,每圈時(shí)間放在68H6BH單元中INTEX1: PUSH ACC ; PUSH PSW ; CLR EX1 ; JNB 00H,INTEX11 ; MOV TL1,#0FFH ; MOV TH1,#0FFH MOV 6CH,#0FFH MOV 6DH,#0FFHINTEX11: MOV 68H,TL1
20、; MOV 69H,TH1 MOV 6AH,6CH MOV 6BH,6DH CLR A ; MOV TL1,A ; MOV TH1,A MOV 6CH,A MOV 6DH,A CLR 00H ; POP PSW ; POP ACC ; RETI ;T1計(jì)數(shù)器中斷服務(wù)程序。INTT1: PUSH ACC ; PUSH PSW ; INC 6CH ; MOV A,6CH ; JNZ INTT11 ; INC 6DH ; MOV A,6DH ; JNZ INTT11 ; SETB 00H ;INTT11: POP PSW ; POP ACC ; RETI ; 10 關(guān)中斷開始現(xiàn)場保護(hù)開中斷中斷處理關(guān)
21、中斷現(xiàn)場恢復(fù)開中斷中斷返回圖 3.4 中斷流程圖(D)里程、速度處理程序里程處理程序外中斷0服務(wù)程序用于對單片機(jī)P3.2口輸入的圈脈沖進(jìn)行計(jì)數(shù),為十六進(jìn)制計(jì)數(shù)器。60H為低位,62H為高位。每次計(jì)數(shù)一次后,對里程數(shù)據(jù)進(jìn)行一次存儲(chǔ)操作。當(dāng)車輪每轉(zhuǎn)一圈,通過霍爾元件將脈沖數(shù)輸入單片機(jī)內(nèi),通過計(jì)數(shù)器計(jì)出脈沖數(shù),再用乘法子程序算出里程數(shù)。SSS: MOV 19H,#64H ; MOV 18H,#00H ; MOV 17H,#00H ; MOV 16H,#00H ; MOV 11H,#00H ; MOV 12H,#00H ; MOV 13H,62H ; MOV 14H,61H ; MOV 15H,60H
22、 ; LCALL DIVST ; 11 LCALL BCDST ; MOV A,25H ; ANL A,#0FH ; MOV 70H,A ; MOV A,25H ; SWAP A ; ANL A,#0FH ; MOV 71H,A ; MOV A,24H ; ANL A,#0FH ; MOV 72H,A ; MOV A,24H ; SWAP A ; ANL A,#0FH ; MOV 73H,A ; RET點(diǎn)亮里程指示燈開始將車圈數(shù)轉(zhuǎn)換成里程顯示里程值返回圖 3.5 里程處理程序流程圖速度處理程序外中斷1服務(wù)程序用于處理輪子轉(zhuǎn)動(dòng)一圈后的計(jì)時(shí)數(shù)據(jù)。當(dāng)標(biāo)志位(00H)為1時(shí),計(jì)數(shù)溢出,放入最大時(shí)間值(
23、為#0FFH);當(dāng)標(biāo)志位為0時(shí),將計(jì)數(shù)單元(TL1、TH1、6CH、6DH)的值放入68H6BH單元。定時(shí)器計(jì)出每轉(zhuǎn)一圈所用的時(shí)間,用自行車車輪的周長除以時(shí)間就得出自行車的速度。VVV: MOV 18H,68H ; MOV 17H,69H ;MOV 16H,6AH ; 12MOV 11H,#00H ;MOV 12H,#00H ;MOV 13H,#36H ;MOV 14H,#0EEH MOV 15H,#80H ;LCALL DIVST ;MOV 14H,#00H ;LCALL BCDST ;MOV A,25H ;ANL A,#0FH ;MOV 70H,A ;MOV A,25H ;SWAP A ;
24、ANL A,#0FH ;MOV 71H,A ;MOV 72H,#00H ;MOV 73H,#00H ;RET ;開始開速度指示燈計(jì)算速度報(bào)警顯示速度NY返回P3.0=1? P3.0=1?22速?圖 3.6速度處理程序流程圖 13(E)顯示子程序采用動(dòng)態(tài)掃描顯示接口電路,動(dòng)態(tài)顯示接口電路是把所有顯示器的8個(gè)筆劃段a-h同名端連在一起,而每一個(gè)顯示器的公共極COM各自獨(dú)立地受I/O線控制。CPU向字段輸出口送出字型碼時(shí),所有顯示器接收到相同的字型碼,但究竟是哪個(gè)顯示器亮,則取決于COM端??梢圆捎梅謺r(shí)的方法,輪流控制各個(gè)顯示器的COM端,使各個(gè)顯示器輪流點(diǎn)亮。在輪流點(diǎn)亮掃描過程中,每位顯示器的點(diǎn)亮
25、時(shí)間是極為短暫的(約1ms),由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位顯示器并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感。本設(shè)計(jì)P2.0、P2.1、P2.2、P2.3信號(hào)一起組成位選通的位選信號(hào),P0.0P0.7信號(hào)一起組成段碼選通的段選信號(hào),通過軟件編程,先把所要顯示的數(shù)據(jù)放入存儲(chǔ)單元,然后把數(shù)據(jù)送入段選通對應(yīng)的地址,再選通某一個(gè)LED,逐步完成四個(gè)LED的顯示。;里程顯示控制程序DISPLAYS:SETB P1.0 ; CLR P1.1 ; SETB P3.7 LCALL SSS ; LCALL DISPLAY ; LJMP STA
26、RT1 ;速度顯示程序DISPLAYV:CLR P1.0 ; SETB P1.1 ; CLR P3.7 LCALL VVV ; MOV A,71H ; SUBB A,#04H ; JNC WARING ; SETB P3.1 ;V1: LCALL DISPLAY ; RET ;DISPLAY: MOV R1,#70H ; MOV R2,#0FEH ;PLAY: MOV A,R2 ; MOV P2,A ; MOV A,R1 ; ANL A,#0FH ; MOV DPTR,#TAB ; MOVC A,A+DPTR ; 14 MOV P0,A ; LCALL DL1MS ; INC R1 ; MOV
27、 A,R2 ; JNB ACC.3,ENDOUT ; RL A ; MOV R2,A ; AJMP PLAY ;ENDOUT: SETB P2.0 ; SETB P2.1 ; SETB P2.2 ; SETB P2.3 ; RET ;共陰極段碼表TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H DB 00H 15開始顯示單元首址取顯示數(shù)據(jù)送段碼到P0口取段碼表首址調(diào)用延時(shí)送位選到P2口4位顯示結(jié)束返回YN修改顯示單元地址求下一位位選碼圖 3.5 顯示程序流程圖(F)延時(shí)子程序;1ms延時(shí)程序 利
28、用循環(huán)實(shí)現(xiàn)延時(shí)DL1MS: MOV R6,#14HDL1: MOV R7,#19HDL2: DJNZ R7,DL2 ; DJNZ R6,DL1 ; RET;出錯(cuò)閃爍利用延時(shí)255msDL5S: MOV R5,#0FFH DL3: LCALL DL1MS ; DJNZ R5,DL3 ; RET 16三、調(diào)試1.硬件調(diào)試硬件調(diào)試時(shí),我們首先檢查了接線,對照電路原理圖,確保準(zhǔn)確無誤。其次是檢查各個(gè)焊點(diǎn)是否有虛焊的情況,檢查無誤后,接通經(jīng)穩(wěn)壓后的5V電源。硬件的修改可在元器件參數(shù)方面調(diào)整,如電阻的阻值等。2.軟件調(diào)試先用KEIL軟件輸入完整的程序,進(jìn)行編譯。首先,新建一個(gè)項(xiàng)目選擇AT89C51,新建一
29、個(gè)文件,將程序輸入,輸完后保存,保存時(shí)需加后綴名.ASM。然后將文件添加到新建的工程下。進(jìn)行檢錯(cuò)和編譯,窗口如圖3.2所示。 圖 3.1 KEIL編譯窗口編譯無誤后即可運(yùn)行,運(yùn)行時(shí)可從Peripherals中調(diào)出輸出口P0P3來觀察輸出情況。運(yùn)行時(shí)窗口如圖3.1所示。 圖 3.2 KEIL運(yùn)行窗口 17接著再使用PROTEUS仿真軟件進(jìn)行仿真。首先新建一個(gè)文件,選擇所需的元件并排列好,根據(jù)電路原理圖進(jìn)行布線。當(dāng)完成原理圖布線后,利用PROTEUS ISIS編輯環(huán)境所提供的電器規(guī)則檢查命令對設(shè)計(jì)進(jìn)行檢查,并根據(jù)系統(tǒng)提供的錯(cuò)誤檢查報(bào)告修改原理圖。直到通過電器規(guī)則檢查為止。然后在KEIL中生成HEX
30、文件,雙擊AT89C51芯片,將完整的程序灌入芯片,單擊左下角的開始箭頭即可開始模擬仿真。在仿真過程中遇到過一些問題,針對這些問題做了些軟件方面的調(diào)整。 剛開始仿真時(shí),P0口是灰色的,數(shù)碼管沒有點(diǎn)亮。經(jīng)檢查是由于P0口內(nèi)部沒有上拉電阻,因此,必須另外加上,上拉電阻一段接P0口,另一端直接接到電源的正集。接上后數(shù)碼管點(diǎn)亮,但顯示的是亂碼經(jīng)過仔細(xì)的檢查,發(fā)現(xiàn)了程序中的錯(cuò)誤,硬件中選用的是共陰極數(shù)碼管,而程序中錯(cuò)用了共陽極的段碼表,從而造成了應(yīng)該點(diǎn)亮的部分沒亮,而不該點(diǎn)亮的部分反而亮了的錯(cuò)誤情況。 18四、操作說明 本設(shè)計(jì)為自行車?yán)锍逃?jì)/速度計(jì),實(shí)現(xiàn)了里程速度計(jì)的基本功能。接通電源后,由于未選擇車輪
31、周長,蜂鳴器報(bào)警提示,同時(shí)LED燈D3閃爍,直到有鍵按下。當(dāng)按下P1.2口所接開關(guān)SW2時(shí)選擇車輪周長1,按下P1.3口所接開關(guān)SW3時(shí)選擇車輪周長2,按下P1.6口所接開關(guān)SW4時(shí)選擇車輪周長3,P1.7口所接開關(guān)SW5時(shí)選擇車輪周長4,選擇周長后,每按下開關(guān)SW6一次表示車輪轉(zhuǎn)了一圈,此時(shí)數(shù)碼管顯示當(dāng)前的里程值,此時(shí)若按下開關(guān)SW7則數(shù)碼管顯示當(dāng)前的速度值,當(dāng)超速時(shí)蜂鳴器報(bào)警。 19五、參考文獻(xiàn)1單片機(jī)原理及應(yīng)用技術(shù) 范力旻 主編 電子工業(yè)出版社2單片機(jī)原理及其接口技術(shù)(第二版) 胡汗才編著 北京大學(xué)出版社351系列單片機(jī)設(shè)計(jì)實(shí)列 樓然苗 李光飛編著 北航出版社4電子器件原理及應(yīng)用 張紅潤
32、 孫悅 劉俊超 科學(xué)出版社5 互聯(lián)網(wǎng) 六、致 謝感謝。 20七、附錄1、元器件清單序號(hào)名稱代號(hào)型號(hào)數(shù)量1芯片U189C5112芯片U3TC402413芯片U2AT24C0114電阻R1,R21K25電阻R3,R4,R7,R8,R9,R10,R11,R12,R134.7K96電阻R25,R26,R278.2K37電阻R15,R16,R17,R18,R19,R20,R21,R221.8K88電阻R24,R633029電容C2,C333pf210電容C110uf111三極管Q1,Q2,Q3,Q4,Q78550512三極管Q5,Q6,Q88050313發(fā)光二極管D1,D2,D35mm紅色314晶振X1
33、12MHZ115四位共陰極數(shù)碼管7SEG-MPX4-CC116蜂鳴器LS1SREAKER117按鍵開關(guān)SW1,SW2,SW3,SW4,SW5,SW6,SW7SW-SPST718PCB板219導(dǎo)線若干 212、 電路原理圖 223、 完整程序VSDA EQU P1.5 VSCL EQU P1.4 SLA EQU 50H NUMBYT EQU 51H MTD EQU 30H MRD EQU 40H SLAW EQU 0A0H SLAR EQU 0A1H DPHH EQU 62H TH1H EQU 6CH TH1HH EQU 6DH;PROGRAM INPUT; ORG 0000H LJMP STA
34、RT ORG 0003H LJMP INTEX0 ORG 000BH RETI ORG 0013H LJMP INTEX1 ORG 001BH LJMP INTT1 ORG 0023H RETI ORG 002BH RETI;PROGRAM CLEAR;上電初始化程序CLEARMEN: MOV TMOD,#90H MOV SP,#75H SETB PX0 SETB IT0 SETB IT1 CLR A MOV 20H,A MOV 6CH,A MOV 6DH,A MOV 70H,A 23 MOV 71H,A MOV 72H,A MOV 73H,A MOV 60H,A MOV 61H,A MOV 62H,A MOV 63H,A DEC A MOV 68H,A MOV 69H,A MOV 6AH,A MOV 6BH,A MOV P1,ACLEAR1: JB P1.2,KEY1 MOV 21H,#0FH LJMP CLEAR2KEY1: JB P1.3,KEY2 MOV 21H,#12H LJMP CLEAR2KEY2: JB P1.6,KEY3 MOV 21H,#14H LJMP CLEAR2KEY3: JB P1.7
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024光通信設(shè)備生產(chǎn)銷售合同
- 《雛鷹農(nóng)牧公司內(nèi)部控制失效問題研究》
- 2024年度IDC機(jī)房帶寬提升服務(wù)合同
- 《血清線粒體融合蛋白-2和乙醛脫氫酶2與慢性心力衰竭的相關(guān)性研究中文》
- 《SG公司目標(biāo)成本管理優(yōu)化研究》
- 《東北三省人口遷移及經(jīng)濟(jì)發(fā)展關(guān)系研究》
- 《糯玉米自交系遺傳多樣性分析》
- 2024年度新能源公交車采購合同
- 熱點(diǎn)04新題型作圖題-2022年高考地理專練(原卷版)
- 2024年寧夏駕??瓦\(yùn)從業(yè)資格證模擬考試題庫
- 建筑施工進(jìn)度管理:合理安排工期確保按時(shí)交付
- 學(xué)校關(guān)于鑄牢中華民族共同體意識(shí)宣傳教育工作的總結(jié)
- 排污單位自行監(jiān)測技術(shù)指南 磚瓦工業(yè)(HJ 1254-2022)
- 食品檢驗(yàn)檢測技術(shù)專業(yè)職業(yè)生涯規(guī)劃書
- 食品40農(nóng)產(chǎn)品加工業(yè)發(fā)展
- 《如何學(xué)好初中數(shù)學(xué)》課件
- 02(111)力學(xué)第二章平面匯交力系與平面力偶系解析
- 粉塵防爆知識(shí)課件
- 女西褲前片結(jié)構(gòu)制圖教案
- 新疆烏魯木齊地區(qū)2024屆生物高一上期末聯(lián)考試題含解析
評論
0/150
提交評論