【正文】
實(shí)驗(yàn)論文的整個(gè) 制作過程的確不容易,現(xiàn)在回想一下那段時(shí)日,有艱辛的一面,亦有喜悅的一面,但整個(gè)過程總結(jié)來說還是蠻充實(shí)的,畢竟在整個(gè)設(shè)計(jì)的過程中,自己又對已經(jīng)學(xué)過的專業(yè)課知識梳理了一下,而且對于實(shí)際的應(yīng)用和需求也參考了各個(gè)方面的資料,所以整個(gè)設(shè)計(jì)過程下來,自己整體的專業(yè)知識水平又進(jìn)行了一次升華。通過實(shí)驗(yàn)驗(yàn)證了系統(tǒng)的可行 性 ,能滿足設(shè)計(jì)要求,達(dá)到設(shè)計(jì)的指標(biāo),實(shí)現(xiàn)對自行車?yán)锍?/速度的計(jì)算功能,并用 LED 顯示, 當(dāng)車輪轉(zhuǎn)動(dòng),小磁片滑過霍爾元件時(shí),霍爾元件輸出一脈沖,可根據(jù)車輪周長計(jì)算里程,選擇不同的車輪周長,里程數(shù)的變化有所不同;當(dāng)按下開關(guān),顯示速度時(shí), LED 會(huì)根據(jù)轉(zhuǎn)速的不同顯示不同的數(shù)字 。 本設(shè)計(jì)主要分為硬件部分和軟件部分,硬件部分著重考慮硬件電路的簡單性,故盡可能簡化硬件電路,節(jié)省線路板的空間,達(dá)到硬件電路最優(yōu)化設(shè)計(jì)。 顯示子程序流程圖如圖 44所示。在輪流點(diǎn)亮掃描過程中,每位顯示器的點(diǎn)亮?xí)r間是極為短暫的(約 1ms),由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位顯示器并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感。 CPU 向字段輸出口送出字型碼時(shí),所有顯示器接收到相同的字型碼, 但究竟是哪個(gè)顯示器亮,則取決于 COM端。里程處理子程序流程圖如圖 43 所示。每次計(jì)數(shù)一次后,對里程數(shù)據(jù)進(jìn)行一次存儲 操作。 23 圖 42中斷子程序流程圖 里程計(jì)算子程序 外部中斷 0 服務(wù)程序用于對單片機(jī) 口輸入的圈數(shù)脈沖進(jìn)行計(jì)數(shù),為十六進(jìn)制計(jì)數(shù)器。本設(shè)計(jì)采用定時(shí)中斷,對自行車的里程和速度進(jìn)行計(jì)數(shù)。 定時(shí) /計(jì)數(shù)器控制寄存器 TCON 是 8 位寄存器,地址為 88H,可以位尋址。當(dāng)結(jié)構(gòu)發(fā)生計(jì)數(shù)溢出時(shí),即表明定時(shí)時(shí)間或計(jì)數(shù)值已滿,這時(shí)就以計(jì)數(shù)溢出信號作為中斷請求,去置位一個(gè)溢出標(biāo)志,作為單片機(jī)接受中斷請求的標(biāo)志。清計(jì)算標(biāo)志 JMP LOOP 中斷子程序設(shè)計(jì) 定時(shí)中斷是為滿足定時(shí)或計(jì)數(shù)的需要而設(shè)置的。去掉低 4 位 SWAP A 。最高位 MOV A,R4 。影響資源: PSW、 A、 R2~ R7 堆棧需求: 2字 節(jié) MOV A,R4 MOV R6,A MOV A,R5 MOV R7,A 。出口信息:轉(zhuǎn)換后的三字節(jié)BCD碼整數(shù)在 R R R5中。入口條件:待轉(zhuǎn)換的雙字節(jié)十六進(jìn)制整數(shù)在 R R7中。是否送完? AJMP SLP1 SN1: MOV SBUF,R3 SLP2: JBC TI,SN2 AJMP SLP2 SN2: MOV SBUF,R4 SLP3: JBC TI,SN3 AJMP SLP3 SN3: MOV SBUF,R5 SLP4: JBC TI,SN4 AJMP SLP4 SN4: 。影響資源: PSW、 A、 B、 R2~ R7 堆棧需求: 2字節(jié) MOV R2,SpCoun MOV R3,SpCoun+1 21 MOV R6,0 MOV R7,5 。出口信息:乘積在 R R R R5 中。入口條件:被乘數(shù)在 R R3中,乘數(shù)在 R R7 中。如果未要求計(jì)算,轉(zhuǎn)本身循環(huán) 。定時(shí)器 T1工作于方式 1,定時(shí)器 0 工作方式 1, 計(jì)數(shù)器 MOV TH1,HIGH(655363686) MOV TL1,LOW(655363686) SETB TR1 SETB ET1 。設(shè)置堆棧 MOV P1,0FFH MOV P0,0FFH MOV P2,0FFH 。消隱碼 ORG 0000H AJMP START ORG 1BH JMP TIMER1 。 顯示時(shí)的計(jì)數(shù)器 SpCalc bit 00h 。顯示緩沖區(qū) 從 5AH 開始 SecCoun EQU 58H SpCoun EQU 56H 。其程序流程如圖 41 所示。此控制信號是將輪子圈數(shù)的計(jì)數(shù)經(jīng)二分頻后形成。將根據(jù)里程寄存器中的內(nèi)容計(jì)算和判斷出行駛里程數(shù)。 是用于里程和速度切換的,低電平為顯示速度,高電平為顯示里程。 和 口分別用于顯示里程狀態(tài)和速度狀態(tài)。另外,在主程序模塊中還需要設(shè)置啟動(dòng) /清除標(biāo)志寄存器、里程寄存器、速度寄存器,并對它們進(jìn)行初始化。由于要實(shí)現(xiàn)很多功能,所以采用模塊化設(shè)計(jì),下面就其主要部分分別加以分析。所以說,在整個(gè)設(shè)計(jì)過程中,軟件設(shè)計(jì)必須與硬件設(shè)計(jì)緊密地結(jié)合在一起。這樣的設(shè)計(jì)方法,使得系統(tǒng)的整個(gè)功能和各部分的功能趨于明朗化。所謂軟件設(shè)計(jì)就是把軟件需求變換成軟件的具體設(shè)計(jì)方案(即模塊結(jié)構(gòu))的過程。 圖 315 七 (八 )段 LED顯示器 本設(shè)計(jì) 、 、 、 信號一起組成位選通的位選信號, ~ 信號一起組成段碼選通的段選信號,通過軟件編 程,先把所要顯示的數(shù)據(jù)放入存儲單元,然后把數(shù)據(jù)送入段選通對應(yīng)的地址,再選通某一個(gè) LED,逐步完成四個(gè) LED 的顯示。也就是說我們可以采用分時(shí)的方法,輪流控制各個(gè)顯示器的 COM 端,使各個(gè)顯示器輪流點(diǎn)亮。本系統(tǒng)采用動(dòng)態(tài)掃描顯示接口電路,動(dòng)態(tài)顯示接口電路是把所有顯示器的 8個(gè)筆劃段 ah同名端連在一起,而每一個(gè)顯示器的公共極 COM 各自獨(dú)立地受 I/O 線控制。本次設(shè)計(jì)采用共陰極接法。 LED 顯示器有兩種不同的形式:一種是發(fā)光二極管的陽極都連在一起的,稱之為共陽極 LED 顯示器;另一種是發(fā)光二極管的陰極都連在一起的,稱之為共陰極 LED 顯示器。八段 LED 顯示器由 8 個(gè)發(fā)光二極管組成。在單片機(jī)系統(tǒng)中,通常用 LED 數(shù)碼顯示器來顯示各種數(shù)字或符號。 AT89C52RSTC1+5R9R822uF 圖 314 按鍵復(fù)位電路 工作原理:通電瞬間, RC 電路充電, RST 引腳出現(xiàn)高電平,只要 RST 端保持 24ms 以上高電平,就能使單片機(jī)有效地復(fù)位。按下按鈕,則直接把 +5V 加到了 RET/VPD 端從而 復(fù)位稱為手動(dòng)復(fù)位。單片機(jī)復(fù)位通過按動(dòng)按鈕產(chǎn)生高電平復(fù)位稱手動(dòng)復(fù)位。只有當(dāng) RET 由高電平變成低電平以后,89C52 才從 0000H 地址開始執(zhí)行程序。在 89C52 的時(shí)鐘電路工作后,只要在 RET引腳上出現(xiàn)兩個(gè)機(jī)器 周期以上的高電平時(shí),單片機(jī)內(nèi)部則初始復(fù)位。 復(fù)位電路的設(shè)計(jì) AT89C52 單片機(jī)的復(fù)位輸入引腳 RET 為 AT89C52 提供了初始化的手段。此外,如果單片機(jī)有串行通信,則應(yīng)該選擇振蕩頻率除以串行通信頻率可以除盡的晶體。對外接電容的值雖然沒有嚴(yán)格的要求,但電容的大小會(huì)影響振蕩器的高低、振蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。單片機(jī)內(nèi)部時(shí)鐘方式的振蕩電路如圖 313 所示。 單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,該高增益反相放大器的輸入為芯片引腳 XTAL1,輸出端為引腳 XTAL2。 常用的時(shí)鐘電路有兩種方式,一種是內(nèi)部時(shí)鐘方式,另一種為外部時(shí)鐘方式。因此,時(shí)鐘頻率直接影響單片機(jī)的速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。經(jīng) 74LS74 二分頻后的信號輸入到 1INT ,內(nèi)部定時(shí)計(jì)數(shù)器測得每轉(zhuǎn)一圈所用的時(shí)間,通過計(jì)算即可得里程值和即時(shí)速度。分頻前后對比圖如圖 312 所示。 15 圖 311 74LS74引腳圖 在本題目中 74LS74 芯片起分頻的作用。由于其狀態(tài)的更新發(fā)生在 CP脈沖的邊沿故又稱之為上升沿觸發(fā)的邊沿觸發(fā)器, D 觸發(fā)器的狀態(tài)只取決于時(shí)針到來前 D端的狀態(tài)。 圖 310 74LS244邏輯圖 74LS74 是 D 觸發(fā)器的一種 ,它是一個(gè)具有記憶功能的二進(jìn)制信息存儲器件,是構(gòu)成多種時(shí)序電路的最基本邏輯單元。其邏輯圖如圖 310 所示,可以看出 74LS244 由 2 組組成、每組由四路輸入、輸出構(gòu)成。 14 1 2 3 4 5 6ABCD654321DCBAT i t l eN um be r R e vi s i onS i z eBD a t e : 31 M a y 20 09 S he e t of F i l e : E : \畢業(yè)設(shè)計(jì) 單片機(jī)測速 \ t a ng l e i .dd b D r a w n B y :R S T / V ppP ( R X D )P ( T X D )X T A L 1X T A L 2P ( I N T 0)P ( I N T 1)P ( T 0)P ( T 1)P GNDP ( A I N 0)P ( A I N 1)P P P P P P V C C1234567891011121314151617181920A T 89 C 20 51A01A22A33V s s4S D L5S C L6WC7V C C8A T 24 C 02 K KV c c 圖 39 AT24CO2與單片機(jī)的接口電路 74LS74 芯片 本次設(shè)計(jì)中的采用驅(qū)動(dòng)數(shù)碼管的芯片為 74LS244, 74LS244 為三態(tài)輸出的八位緩沖器和線驅(qū)動(dòng)器,若單片 機(jī)輸出口直接接顯示部分電路,則電流太小,會(huì)導(dǎo)致顯示部分不能正常工作。當(dāng)顯示里程時(shí),單片機(jī)首先向 AT24C02 發(fā)送讀信號,然后確認(rèn)后,單片機(jī)從 AT24C02 內(nèi)部的地址向單片機(jī)的讀出單元字節(jié)讀出數(shù)據(jù),供顯示所用。單片機(jī)計(jì)算出來的里程數(shù)據(jù)通過 SDA、 SCL 向 AT24C02 輸