版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1.1. 設(shè)計(jì)思路設(shè)計(jì)思路 .2 1.1 電源模塊.2 1.2 顯示模塊.3 1.3 花樣燈模塊.3 2 單片機(jī)花樣燈與數(shù)碼顯示系統(tǒng)總體設(shè)計(jì)單片機(jī)花樣燈與數(shù)碼顯示系統(tǒng)總體設(shè)計(jì) .3 2.1 三個(gè)模塊的闡述 2.2 單片機(jī)花樣燈與數(shù)碼顯示控制系統(tǒng)的通行方案設(shè)計(jì).3 2.3 單片機(jī)花樣燈與數(shù)碼顯示控制系統(tǒng)的功能要求.4 2.4 單片機(jī)花樣燈與數(shù)碼顯示控制系統(tǒng)的基本構(gòu)成及原理.5 3 3 花樣燈與數(shù)碼顯示系統(tǒng)的硬件設(shè)計(jì)花樣燈與數(shù)碼顯示系統(tǒng)的硬件設(shè)計(jì) .5 3.1 AT89C51AT89C51 單片機(jī)簡(jiǎn)介.5 3.1.1 AT89C51單片機(jī)的主要特性.6 3.1.2 主要引腳功能.6 3.2 系統(tǒng)硬
2、件總電路構(gòu)成及原理.9 3.2.1系統(tǒng)硬件電路構(gòu)成.9 3.2.2系統(tǒng)工作原理.9 4 系統(tǒng)軟件程序的設(shè)計(jì)系統(tǒng)軟件程序的設(shè)計(jì) .12 4.1 程序主體設(shè)計(jì)流程.12 4.2 理論基礎(chǔ)知識(shí).13 4.2.1數(shù)組及while、switch等語句.13 4.2.2軟件延時(shí)原理.14 4.3 程序模塊設(shè)計(jì).14 4.3.1花樣燈的設(shè)計(jì).14 4.3.2 LED數(shù)碼管顯示.15 4.4 系統(tǒng)軟件調(diào)試.18 4.4.1 proteus仿真.18 4.4.2keil 仿真.18 參考文獻(xiàn)參考文獻(xiàn).17 設(shè)計(jì)心得體會(huì)設(shè)計(jì)心得體會(huì).18 附錄附錄19 基于單片機(jī)的花樣流水燈及其數(shù)碼顯示技術(shù) 摘要:自計(jì)算機(jī)問世以
3、來,單片機(jī)技術(shù)在社會(huì)各領(lǐng)域中得到了廣泛的應(yīng) 用。在流水燈控制系統(tǒng)中,單片機(jī)更是取代了由齒輪調(diào)節(jié)延遲時(shí)間的舊式市 發(fā)展速度,成為日后此系統(tǒng)中的核心部分。由于單片機(jī)具有一些突出的優(yōu)點(diǎn): 體積小、重量輕、電源單一、功耗低;功能強(qiáng)、價(jià)格低;數(shù)據(jù)大都在單片機(jī) 內(nèi)部傳送,運(yùn)行速度快、抗干擾能力強(qiáng)、可靠性高,所以單片機(jī)被廣泛的應(yīng) 用于測(cè)控系統(tǒng)、數(shù)據(jù)采集、智能儀器儀表、機(jī)電一體化產(chǎn)品、智能接口、計(jì) 算機(jī)通信以及單片機(jī)的多級(jí)系統(tǒng)等領(lǐng)域。本文主要講的是單片機(jī),課題名稱 為多按鍵花樣流水燈,它使我們學(xué)會(huì)了如何使用單片機(jī)控制我們?nèi)粘I钪?的多設(shè)備設(shè)施的應(yīng)用。通過本課題的設(shè)計(jì)以后,使我了解到了單片機(jī)的許多 方面的應(yīng)用
4、。 關(guān)鍵詞:花樣燈 單片機(jī) 數(shù)碼管 1.1. 設(shè)計(jì)思路設(shè)計(jì)思路 (1)為了使設(shè)計(jì)具有更強(qiáng)的針對(duì)性和實(shí)用性,使用單片機(jī)設(shè)計(jì)的控制 方案,基于 AT89C51 的單片機(jī)設(shè)計(jì)方案。 (2)確定系統(tǒng)控制的總體設(shè)計(jì),包括流水燈變化方案設(shè)計(jì)以及系統(tǒng)應(yīng) 擁有的各項(xiàng)功能,在這里,本設(shè)計(jì)除了有流水燈狀態(tài)控制能實(shí)現(xiàn)基本的變化 功能,還增加了數(shù)碼管顯示提示。 (3)設(shè)計(jì)分為 3 個(gè)模塊,分別為電源模塊,數(shù)碼顯示模塊,花樣燈模 塊,并對(duì) 3 個(gè)模塊進(jìn)行充分的校正和完善。 (4)進(jìn)行軟件系統(tǒng)的設(shè)計(jì),對(duì)于本系統(tǒng),本組采用單片機(jī) C 語言編寫, 對(duì)單片機(jī)內(nèi)部結(jié)構(gòu)和工作情況做了充足的研究,了解延時(shí)原理,總體上完成 了軟件的編
5、寫。 2 花樣流水燈與數(shù)碼顯示系統(tǒng)總體設(shè)計(jì)花樣流水燈與數(shù)碼顯示系統(tǒng)總體設(shè)計(jì) 2.12.1 三個(gè)模塊的闡述三個(gè)模塊的闡述 2.1.1 電源模塊 電源提供的方案 為使模塊穩(wěn)定工作,須有可靠電源。因此考慮了兩種電源方案: 方案一:采用獨(dú)立的穩(wěn)壓電源。此方案的優(yōu)點(diǎn)是穩(wěn)定可靠,且有各種成熟 電路可供選用;缺點(diǎn)是各模塊都采用獨(dú)立電源,會(huì)使系統(tǒng)復(fù)雜,且可能影響 電路電平。 方案二:采用單片機(jī)控制模塊提供電源。改方案的優(yōu)點(diǎn)是系統(tǒng)簡(jiǎn)明扼要, 節(jié)約成本;缺點(diǎn)是輸出功率不高。 綜上所述,我選擇第二種方案。 電源模塊仿真效果圖 1-1 2.1.2 顯示模塊 數(shù)碼管顯示方案 該系統(tǒng)要求完成計(jì)數(shù)功能?;谏鲜鲈?,我考慮
6、了二種方案: 方案一:采用數(shù)碼管顯示。這種方案只顯示有限的符號(hào)和數(shù)碼字符,簡(jiǎn)單, 方便。 方案二:采用點(diǎn)陣式 LED 顯示。這種方案雖然功能強(qiáng)大,并可方便的顯示各 種英文字符,漢字,圖形等,但實(shí)現(xiàn)復(fù)雜,且須完成大量的軟件工作。 綜上所述,我選擇第一種方案。 數(shù)碼管顯示模塊仿真圖 1-2: 2.1.3 花樣燈模塊: 本方案采用 3 種變化形式,且 3 種方式依次按順序變化,采用 8 個(gè) LED 燈作為一個(gè)系統(tǒng)。 花樣燈仿真效果圖 1-3: 圖 1-1 圖 1-2 圖 1-3 2.22.2 單片機(jī)花樣流水燈與數(shù)碼顯示系統(tǒng)的通行方案設(shè)計(jì)單片機(jī)花樣流水燈與數(shù)碼顯示系統(tǒng)的通行方案設(shè)計(jì) 1)系統(tǒng)采用 8
7、個(gè) LED 燈,一個(gè)數(shù)碼顯示器,及電源。 2)流水燈有 3 種變化方式。 第一種:LED 燈由 L1-L8 逐個(gè)變亮; 第二種;L1,L8 亮,接著 L2,L7 亮,再接下來 L3,L6 亮,然后 L4,L5 亮, 再這樣反循環(huán)一次。 第三種;L1,L3,L5,L7,L2,L4,L6,L8 依次亮。 且三種方式按順序執(zhí)行,成花樣流水燈狀。 3)方式 1.2 數(shù)碼顯示管是用來記錄亮燈的個(gè)數(shù),方式 3 是用來記錄哪 一個(gè)燈亮。 4)具體的數(shù)據(jù)及其顯示如表 2-1 所示。 2.32.3 單片機(jī)花樣燈與數(shù)碼顯示系統(tǒng)的功能要求單片機(jī)花樣燈與數(shù)碼顯示系統(tǒng)的功能要求 系統(tǒng)要滿足穩(wěn)定,準(zhǔn)確,快速的三個(gè)基本要求
8、。 1)穩(wěn)定:就是基本上實(shí)現(xiàn)了方案設(shè)計(jì)思路上的變化樣式,并且不會(huì)出現(xiàn)錯(cuò) 誤和紊亂。 2)準(zhǔn)確; 即系統(tǒng)的偏差接近可允許范圍之內(nèi),方可認(rèn)為準(zhǔn)確。 3)快速:顧名思義,就是系統(tǒng)的運(yùn)行速度可以調(diào)整,并且不會(huì)影響到系統(tǒng) 的其他性能指標(biāo)即可。 2.42.4 單片機(jī)花樣燈與數(shù)碼顯示系統(tǒng)的基本構(gòu)成及原理單片機(jī)花樣燈與數(shù)碼顯示系統(tǒng)的基本構(gòu)成及原理 單片機(jī)設(shè)計(jì)流水燈控制系統(tǒng),可用單片機(jī)直接控制流水燈的狀態(tài)變化,不同 的程序控制不同的變化狀態(tài),本次僅僅分為 3 種形式變化,當(dāng)然還可以有更 多的變化。 據(jù)此,本設(shè)計(jì)系統(tǒng)以單片機(jī)為控制核心,連接成最小系統(tǒng),由按鍵設(shè)置 模塊產(chǎn)生輸入,流水燈模塊,數(shù)碼管顯示模塊接受輸出。
9、系統(tǒng)的總體框圖如 上 1-4 所示。 單片機(jī)最小系統(tǒng) 外圍接口電路 LED 數(shù)碼管顯示 LED 流水燈 按鍵 控制電路 圖 1-4 系統(tǒng)的總體框圖 L1L2L3L4L5L6L7L8數(shù)碼管計(jì)數(shù)碼管計(jì) 數(shù)數(shù) 100000001 110000002 111000003 111100004 111110005 111111006 111111107 方式方式 1 111111118 10000012 110000114 110001116 111111118 111111118 111001116 110000114 方式方式 2 100000012 100000001 001000003 00001
10、0005 000000107 010000002 000100004 000001006 000000018 方式方式 3 表表 2- 1 表表 2-1 3 3 花樣燈與數(shù)碼顯示系統(tǒng)的硬件設(shè)計(jì)花樣燈與數(shù)碼顯示系統(tǒng)的硬件設(shè)計(jì) 3.13.1 AT89C51AT89C51 單片機(jī)簡(jiǎn)介單片機(jī)簡(jiǎn)介 AT89C51 是一種帶 4K 字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能 CMOS8 位微處理器,俗稱單片機(jī)。AT89C2051 是一種帶 2K 字節(jié)閃爍可編程可 擦除只讀存儲(chǔ)器的單片機(jī)。單
11、片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除 100 次。 該器件采用 ATMEL 高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的 MCS-51 指令集和輸出管腳相兼容。由于將多功能 8 位 CPU 和閃爍存儲(chǔ)器組合在單個(gè) 芯片中,ATMEL 的 AT89C51 是一種高效微控制器,AT89C2051 是它的一種精 簡(jiǎn)版本。AT89C 單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的 方案。 3.1.1 AT89C51 單片機(jī)的主要特性 與 MCS-51 兼容 ,4K 字節(jié)可編程閃爍存儲(chǔ)器 ,壽命:1000 寫/擦循環(huán), 數(shù)據(jù)保留時(shí)間:10 年,全靜態(tài)工作:0Hz-24Hz,三級(jí)程序存儲(chǔ)器鎖定, 12
12、8*8 位內(nèi)部 RAM,32 可編程 I/O 線,兩個(gè) 16 位定時(shí)器/計(jì)數(shù)器,5 個(gè)中斷 源(兩個(gè)外部中斷源和 3 個(gè)內(nèi)部中斷源) ,可編程串行通道,低功耗的閑 置和掉電模式,片內(nèi)振蕩器和時(shí)鐘電路。 定時(shí)器原理 定時(shí)器工作的基本原理其實(shí)就是給初值,讓它不斷加 1 直至減完為模值, 這個(gè)初值是送到 TH 和 TL 中的。它是以加法記數(shù)的,并能從全 1 到全 0 時(shí) 自動(dòng)產(chǎn)生溢出中斷請(qǐng)求。因此,我們可以把計(jì)數(shù)器記滿為零所需的計(jì)數(shù)值, 即所要求的計(jì)數(shù)值設(shè)定為 C,把計(jì)數(shù)初值設(shè)定為 TC 可得到如下計(jì)算通式: TC=M-C 式中,M 為計(jì)數(shù)器模值。計(jì)數(shù)值并不是目的,目的是時(shí)間值,設(shè)計(jì) 1 次 的時(shí)間
13、,即定時(shí)器計(jì)數(shù)脈沖的周期為 T0,它是單片機(jī)系統(tǒng)主頻周期的 12 倍, 設(shè)要求的時(shí)間值為 T,則有 C=TT0。計(jì)算通式變?yōu)椋?T=(MTC)T0 模值和計(jì)數(shù)器工作方式有關(guān)。在方式 0 時(shí) M 為 8192;在方式 1 時(shí) M 的 值為 65536;在方式 2 和 3 為 256。就此可以算出各種方式的最大延時(shí)。如 單片機(jī)的主脈沖頻率為 12MHZ,經(jīng)過 12 分頻后,若采用方式最大延時(shí)只 有 8.129 毫秒,采用方式最大延時(shí)也只有 65.536 毫秒。這就是為什么掃描 周期為 50ms 的原因, 若使用軟件則會(huì)耽擱程序流程,顯然不可行。相反,時(shí)間計(jì)時(shí)方面卻不 可能只用計(jì)數(shù)器,因?yàn)轱@然秒鐘已
14、經(jīng)超過了計(jì)數(shù)器的最大定時(shí)間,所以我 們還必須采用定時(shí)器和軟件相結(jié)合的辦法才能解決這個(gè)問題。 圖 3 AT89C51 系列單片機(jī)的內(nèi)部結(jié)構(gòu)示意圖 3.1.2 主要引腳功能 圖 4 AT89C51 引腳圖 VCC:電源電壓 GND:接地 P0 口:P0 口是一組 8 位雙向 I0 口。P0 口即可作地址數(shù)據(jù)總線使用,又可以作 為通用的 I/O 口使用。當(dāng) CPU 訪問片外存儲(chǔ)器時(shí),P0 口分時(shí)先作低 8 位地址總線,后作 雙向數(shù)據(jù)總線,此時(shí),P0 口就不能再作 I/O 口使用了。在訪問期間激活要使用上拉電阻。 P1 口:Pl 是一個(gè)帶內(nèi)部上拉電阻的 8 準(zhǔn)位雙向 IO 口,P1 作為通用的 I/O
15、 口使 用。 P2 口:P2 是一個(gè)帶有內(nèi)部上拉電阻的 8 位準(zhǔn)雙向 IO 口,P2 即可作為通用的 I/O 口使用,也可以作為片外存儲(chǔ)器的高 8 位地址總線,與 P0 口配合,組成 16 位片外存 儲(chǔ)器單元地址。 P3 口:P3 口是一組帶有內(nèi)部上拉電阻的 8 位準(zhǔn)雙向 I0 口。P3 口除了作為通 用的 I/O 口使用之外,每個(gè)引腳還具有第二功能,具體分配如表 2 表 2 具有第二功能的 P3 口引腳 端口引腳第二功能: P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外中斷 0) P3.3 / INT1(外中斷 1) P3.4 T0(定時(shí)計(jì)數(shù)器 0
16、外部輸入) P3.5 T1(定時(shí)計(jì)數(shù)器 1 外部輸入) P3.6 / WR(外部數(shù)據(jù)存儲(chǔ)器寫選通) P3.7/ RD 外部數(shù)據(jù)存儲(chǔ)器讀選通) RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST 引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單 片機(jī)復(fù)位。WDT 溢出將使該引腳輸出高電平,設(shè)置 SFR AUXR 的 DISRT0 位(地址 8EH)可打開或關(guān)閉該功能。DISRT0 位缺省為 RESET 輸出高電平打開狀態(tài)。 ALEError!:當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸 出脈沖用于鎖存地址的低 8 位字節(jié)。即使不訪問外部存儲(chǔ)器,ALE 仍以時(shí)鐘振蕩頻率的 16 輸出固定的正脈沖信號(hào),
17、因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每 當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè) ALE 脈沖。對(duì) F1ash 存儲(chǔ)器編程期間,該引腳還用 于輸入編程脈沖(PROG)。如有必要,可通過對(duì)特殊功能寄存器(SFR)區(qū)中的 8EH 單元的 D0 位置位,可禁止 ALE 操作。該位置位后,只有一條 M0VX 和 M0VC 指令 ALE 才會(huì)被激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置 ALE 無 效。 Error!程序儲(chǔ)存允許(Error!)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng) AT89S51 由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次Error!有效,即輸出兩個(gè)脈沖。
18、 當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,沒有兩次有效的Error!信號(hào)。 Error!VPP:外部訪問允許。欲使 CPU 僅訪問外部程序存儲(chǔ)器(地址為 0000HFFFFH),EA 端必須保持低電平(接地)。需注意的是:如果加密位 LB1 被編 程,復(fù)位時(shí)內(nèi)部會(huì)鎖存 EA 端狀態(tài)。如 EA 端為高電平(接 VCC 端),CPU 則執(zhí)行內(nèi)部 程序存儲(chǔ)器中的指令。F1ash 存儲(chǔ)器編程時(shí),該引腳加上+12V 的編程電壓 Vcc。 XTAL1:振蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端。 3.2 系統(tǒng)硬件總電路構(gòu)成及原理系統(tǒng)硬件總電路構(gòu)成及原理 實(shí)現(xiàn)本設(shè)計(jì)要求的具體功能,可以選用 AT89C51 單片機(jī)及外圍器件構(gòu)
19、成最小控制系統(tǒng),8 個(gè)發(fā)光二極管分成 3 種變化方式,數(shù)碼顯示管進(jìn)行計(jì)數(shù)。 3.2.1 系統(tǒng)硬件電路構(gòu)成 本系統(tǒng)以單片機(jī)為核心,系統(tǒng)硬件電路由狀態(tài)燈,數(shù)碼管顯示,按鍵, 組成。其具體的硬件電路總圖如圖 1-5 所示。 實(shí)物圖如 1-6 所示。 3.2.2 系統(tǒng)工作原理 先對(duì)系統(tǒng)進(jìn)行初始化,之后再調(diào)用子程序入單片機(jī)內(nèi)。分別控制循環(huán)彩燈 及其數(shù)碼管顯示模塊。(以上兩個(gè)模塊及其工作方式都已經(jīng)在上面提到)之 后就是對(duì)程序的無限循環(huán)了,達(dá)到 3 種方式不停循環(huán)的目的,可以實(shí)現(xiàn)手動(dòng) 關(guān)閉。 圖 1-5 基于單片機(jī)的流水燈控制系統(tǒng)電路圖 圖圖 1-61-6,硬件結(jié)構(gòu),硬件結(jié)構(gòu) 4 4 系統(tǒng)軟件程序的設(shè)計(jì)系統(tǒng)
20、軟件程序的設(shè)計(jì) 4.1 程序主體設(shè)計(jì)流程程序主體設(shè)計(jì)流程 全部控制程序?qū)嶋H上分為若干模塊:鍵盤設(shè)置處理程序,狀態(tài)燈控制程 序,LED 顯示程序緊停程序等。 整個(gè)軟件程序、流程圖如圖 1-7 所示。 開始 初始化 調(diào)用子程序 循環(huán)彩燈 數(shù)碼管顯示 無限循環(huán) 手動(dòng)關(guān)閉 4.24.2 理論基礎(chǔ)知識(shí)理論基礎(chǔ)知識(shí) 4.2.1 數(shù)組及 while,switch,等語句 數(shù)組:所謂數(shù)組,就是相同數(shù)據(jù)類型的元素按一定順序排列的集合,就是把 有限個(gè)類型相同的變量用一個(gè)名字命名,然后用編號(hào)區(qū)分他們的變量的集合, 這個(gè)名字稱為數(shù)組名,編號(hào)稱為下標(biāo)。組成數(shù)組的各個(gè)變量稱為數(shù)組的分量, 也稱為數(shù)組的元素,有時(shí)也稱為下標(biāo)
21、變量。數(shù)組是在程序設(shè)計(jì)中,為了處理 方便, 把具有相同類型的若干變量按有序的形式組織起來的一種形式。這 些按序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組。 While 語句: while 語句格式為: while(表達(dá)式) 語句;/*循環(huán)體*/ 這里的表達(dá)式是循環(huán)能否繼續(xù)下去的條件,而語句是循環(huán)體。只要表達(dá)式為真,則執(zhí)行循環(huán)體內(nèi)語句。 否則終止循環(huán),執(zhí)行循環(huán)體外語句。 switch 語句 switch 語句格式為: switch(表達(dá)式) case 常量表達(dá)式 1: 語句 1 case 常量表達(dá)式 2: 語句 2 . . . case 常量表達(dá)式 n: 語句 n default: 語句 n+1 說明 s
22、witch 后面的括號(hào)內(nèi)的表達(dá)式,ANSI 標(biāo)準(zhǔn)允許為任何類型. 當(dāng)表達(dá)式與某一個(gè) case 后面的常量表達(dá)式相等時(shí),就執(zhí)行 case 后面的語句,若沒有匹配,則執(zhí)行 default 后面的語句. 每一個(gè) case 的常量表達(dá)式的值須互不相同,否則便會(huì)出現(xiàn)矛盾. 各個(gè) case 和 default 的出現(xiàn)次序不影響結(jié)果. 執(zhí)行完一個(gè) case 語句,流程就轉(zhuǎn)移到下一個(gè) case 并繼續(xù)執(zhí)行.因此在 case 的分支后,加 break 語句來 跳出 switch 語句. 4.2.2 軟件延時(shí)原理 單片機(jī)因具有體積小、功能強(qiáng)、成本低以及便于實(shí)現(xiàn)分布式控制而有非常 廣泛的應(yīng)用領(lǐng)域1。單片機(jī)開發(fā)者在編
23、制各種應(yīng)用程序時(shí)經(jīng)常會(huì)遇到實(shí)現(xiàn) 精確延時(shí)的問題,比如按鍵去抖、數(shù)據(jù)傳輸?shù)炔僮鞫家诔绦蛑胁迦胍欢位?幾段延時(shí),時(shí)間從幾十微秒到幾秒。有時(shí)還要求有很高的精度,如使用單總 線芯片 DS18B20 時(shí),允許誤差范圍在十幾微秒以內(nèi)2,否則,芯片無法工 作。用 51 匯編語言寫程序時(shí),這種問題很容易得到解決,而目前開發(fā)嵌入 式系統(tǒng)軟件的主流工具為 C 語言,用 C51 寫延時(shí)程序時(shí)需要一些技巧3。 因此,在多年單片機(jī)開發(fā)經(jīng)驗(yàn)的基礎(chǔ)上,介紹幾種實(shí)用的編制精確延時(shí)程序 和計(jì)算程序執(zhí)行時(shí)間的方法。 實(shí)現(xiàn)延時(shí)通常有兩種方法:一種是硬件延時(shí),要用到定時(shí)器/計(jì)數(shù)器,這 種方法可以提高 CPU 的工作效率,也能做到精
24、確延時(shí);另一種是軟件延時(shí), 這種方法主要采用循環(huán)體進(jìn)行。 單片機(jī)系統(tǒng)一般常選用 11.059 2 MHz、12 MHz 或 6 MHz 晶振。第一 種更容易產(chǎn)生各種標(biāo)準(zhǔn)的波特率,后兩種的一個(gè)機(jī)器周期分別為 1 s 和 2 s,便于精確延時(shí)。本程序中假設(shè)使用頻率為 12 MHz 的晶振。最長(zhǎng)的延 時(shí)時(shí)間可達(dá) 216=65 536 s。若定時(shí)器工作在方式 2,則可實(shí)現(xiàn)極短時(shí)間的 精確延時(shí);如使用其他定時(shí)方式,則要考慮重裝定時(shí)初值的時(shí)間(重裝定時(shí) 器初值占用 2 個(gè)機(jī)器周期)。 在實(shí)際應(yīng)用中,定時(shí)常采用中斷方式,如進(jìn)行適當(dāng)?shù)难h(huán)可實(shí)現(xiàn)幾秒 甚至更長(zhǎng)時(shí)間的延時(shí)。使用定時(shí)器/計(jì)數(shù)器延時(shí)從程序的執(zhí)行效率和
25、穩(wěn)定性兩 方面考慮都是最佳的方案。但應(yīng)該注意,C51 編寫的中斷服務(wù)程序編譯后會(huì) 自動(dòng)加上 PUSH ACC、PUSH PSW、POP PSW 和 POP ACC 語句,執(zhí)行時(shí)占 用了 4 個(gè)機(jī)器周期;如程序中還有計(jì)數(shù)值加 1 語句,則又會(huì)占用 1 個(gè)機(jī)器周 期。這些語句所消耗的時(shí)間在計(jì)算定時(shí)初值時(shí)要考慮進(jìn)去,從初值中減去以 達(dá)到最小誤差的目的。 4.3 程序模塊的設(shè)計(jì)程序模塊的設(shè)計(jì) 4.3.1 花樣燈的設(shè)計(jì) case 0:P2=0 x10;P0=tableNUMled_point; case 1:P2=0 x20;P0=tableNUMled_point; case 2:P2=0 x40;P
26、0=tableNUMled_point; case 3:P2=0 x80;P0=tableNUMled_point; case 4:P2=0 x10;P0=tableNUMled_point; case 5:P2=0 x20;P0=tableNUMled_point; case 6:P2=0 x40;P0=tableNUMled_point; case 7:P2=0 x80;P0=tableNUMled_point; case 8:P2=0 x10;P0=tableNUMled_point; case 9:P2=0 x20;P0=tableNUMled_point; case 10:P2=0
27、x40;P0=tableNUMled_point; case 11:P2=0 x80;P0=tableNUMled_point; case 12:P2=0 x10;P0=tableNUMled_point; case 13:P2=0 x20;P0=tableNUMled_point; case 14:P2=0 x40;P0=tableNUMled_point; case 15:P2=0 x80;P0=tableNUMled_point; case 16:P2=0 x10;P0=tableNUMled_point; case 17:P2=0 x20;P0=tableNUMled_point; c
28、ase 18:P2=0 x40;P0=tableNUMled_point; case 19:P2=0 x80;P0=tableNUMled_point; case 20:P2=0 x10;P0=tableNUMled_point; case 21:P2=0 x20;P0=tableNUMled_point; case 22:P2=0 x40;P0=tableNUMled_point; case 23:P2=0 x80;P0=tableNUMled_point; 4.3.2LED 數(shù)碼管顯示 case 0:P1=tableLEDled_point;break; case 1:P1=tableLE
29、Dled_point;break; case 2:P1=tableLEDled_point;break; case 3:P1=tableLEDled_point;break; case 4:P1=tableLEDled_point;break; case 5:P1=tableLEDled_point;break; case 6:P1=tableLEDled_point;break; case 7:P1=tableLEDled_point;break; case 8:P1=tableLEDled_point;break; case 9:P1=tableLEDled_point;break; ca
30、se 10:P1=tableLEDled_point;break; case 11:P1=tableLEDled_point;break; case 12:P1=tableLEDled_point;break; case 13:P1=tableLEDled_point;break; case 14:P1=tableLEDled_point;break; case 15:P1=tableLEDled_point;break; case 16:P1=tableLEDled_point;break; case 17:P1=tableLEDled_point;break; case 18:P1=tab
31、leLEDled_point;break; case 19:P1=tableLEDled_point;break; case 20:P1=tableLEDled_point;break; case 21:P1=tableLEDled_point;break; case 22:P1=tableLEDled_point;break; case 23:P1=tableLEDled_point;break; 4.4 系統(tǒng)軟件調(diào)試系統(tǒng)軟件調(diào)試 4.4.1 proteus 仿真器 仿真的概念其實(shí)使用非常廣,最終的含義就是使用可控的手段來模仿真實(shí)的情況。 單片機(jī)系統(tǒng)開發(fā)中的仿真包括軟件仿真和硬件仿真。 軟件
32、仿真這種方法主要是使用計(jì)算機(jī)軟件來模擬實(shí)際的單片機(jī)運(yùn)行,因此仿真與硬件 無關(guān)的系統(tǒng)具有一定的優(yōu)點(diǎn)。用戶不需要搭建硬件電路就可以對(duì)程序進(jìn)行驗(yàn)證,特別適 合于偏重算法的程序。軟件仿真的缺點(diǎn)是無法完全仿真與硬件相關(guān)的部分,因此最終還 要通過硬件仿真來完成最后的設(shè)計(jì); 硬件仿真使用附加的硬件來替代用戶系統(tǒng)的單片機(jī)并完成單片機(jī)全部或大部分的功 能。使用了附加硬件后用戶就可以對(duì)程序的運(yùn)行進(jìn)行控制,例如單步、全速、查看資源 斷點(diǎn)等。 系統(tǒng)的軟件調(diào)試借助于 proteus 仿真器,在進(jìn)行系統(tǒng)軟件的連續(xù)調(diào)試之前要先進(jìn)行軟 件的初調(diào),就是要使各個(gè)子程序模塊運(yùn)行正確,程序的運(yùn)行流程正確。軟件調(diào)試主要分 以下幾個(gè)步驟
33、進(jìn)行: 功能子程序的調(diào)試。能子程序的調(diào)試包括運(yùn)算、采樣、數(shù)字濾波以及 PID 運(yùn)算等子程 序的調(diào)試。在調(diào)試功能子程序時(shí),許多參數(shù)都是未知的,要根據(jù)其所需的條件,給出 假定的數(shù)據(jù),使其運(yùn)行,如果能完成預(yù)定的處理功能或與手工計(jì)算的結(jié)果相符,就說 明該子程序己調(diào)試通過。調(diào)試時(shí)由小到大,由里到外。例如,調(diào)試 PID 算法子程序時(shí), 先調(diào)通其包含的各個(gè)運(yùn)算子程序和參數(shù)處理子程序,然后將它們連起來進(jìn)行通調(diào)。通 調(diào)時(shí),也是假定一些數(shù)據(jù)、參數(shù)和初始條件,然后運(yùn)行程序。當(dāng)運(yùn)算結(jié)果與手工計(jì)算 的結(jié)果相同時(shí),該算法子程序則調(diào)試完成,反之,就要進(jìn)行相應(yīng)的修改。其它子程序 的調(diào)試同理; 程序流程的調(diào)試。序流程的調(diào)試主要
34、是查看程序運(yùn)行的步驟是否正確,在某時(shí)刻程序 運(yùn)行所處的位置是否正確,是否能正確運(yùn)行各個(gè)中斷服務(wù)程序。在調(diào)試過程中,先將 PID 算法子程序屏蔽,輸出可控硅導(dǎo)通時(shí)間用一個(gè)固定的常數(shù)代替,在各個(gè)中斷服務(wù) 子程序設(shè)置斷點(diǎn),然后運(yùn)行程序,查看程序是否能運(yùn)行到所有的斷點(diǎn),若所有斷點(diǎn)都 能運(yùn)行到,則程序流程基本正確。去掉所有斷點(diǎn),再一次運(yùn)行程序,查看可控硅狀態(tài), 從而判斷程序流程正確,反之,若程序流程不正確,做相應(yīng)的修改后,重新調(diào)試; 功能程序與算法程序的通調(diào)。完成整個(gè)程序流程的調(diào)試后,將 PID 等算法子程序加入, 在算法子程序前或后設(shè)置斷點(diǎn),運(yùn)行整個(gè)程序。當(dāng)程序在斷點(diǎn)處暫停時(shí),查看 PID 計(jì)算 的控
35、制量與手工計(jì)算的值是否相同。多運(yùn)行幾次,若每次的結(jié)果都正確,則說明程序各 個(gè)部分互相沒有矛盾,反之,則說明算法子程序和其它子程序之間有影響,需要做相應(yīng) 的修改后重新調(diào)。 4.4.2 集成開發(fā)環(huán)境 KEIL KEIL IDE Vision2 集成開發(fā)環(huán)境主要由以下部分組成: u Vision2 IDE。ision2 IDE 包括:一個(gè)工程管理器,一個(gè)功能豐富并有交互式錯(cuò)誤提示 的編輯器選項(xiàng)設(shè)置生成工具,以及在線幫助。使用 vision2 創(chuàng)建源文件并組成應(yīng)用工程 加以管理。vision2 可以自動(dòng)完成編譯匯編鏈接程序的操作; C51 編譯器和 A51 匯編器。Vision2 IDE 創(chuàng)建的源文件
36、可以被 C51 編譯器或 A51 匯編器 處理生成可重定位的 object 文件。KEIL C51 編譯器遵照 ANSI C 語言標(biāo)準(zhǔn)支持 C 語言 的所有標(biāo)準(zhǔn)特性,另外還增加了幾個(gè)可以直接支持 80C51 結(jié)構(gòu)的特性。KEIL A51 宏 匯編器支持 80C51 及其派生系列的所有指令集; LIB51 庫管理器。B51 庫管理器可以從由匯編器和編譯器創(chuàng)建的目標(biāo)文件建立目標(biāo)庫, 這些庫是按規(guī)定格式排列的目標(biāo)模塊,可在以后被鏈接器所使用當(dāng)鏈接器處理一個(gè)庫 時(shí)僅僅使用了庫中程序使用了的目標(biāo)模塊而不是全部加以引用; BL51 鏈接器定位器。L51 鏈接器使用從庫中提取出來的目標(biāo)模塊和由編譯器匯編器生
37、成 的目標(biāo)模塊創(chuàng)建一個(gè)絕對(duì)地址目標(biāo)模塊,絕對(duì)地址目標(biāo)文件或模塊包括不可重定位的 代碼和數(shù)據(jù)所有的代碼和數(shù)據(jù)都被固定在具體的存儲(chǔ)器單元中。 利用 KEIL 開發(fā)和調(diào)試系統(tǒng)軟件流程大致如下: 啟動(dòng) Vision2,進(jìn)入 KEIL 軟件的集成開發(fā)環(huán)境; 利用 KEIL 內(nèi)置的文本編輯器進(jìn)行程序源文件的編輯,因?yàn)?KEIL 集成的文本編輯器對(duì)中 文支持不是很好,可以選擇其他的編輯器(本文使用的文本編輯器是 Ultraedit32), Vision2 能夠自動(dòng)識(shí)別外部改變了的源文件; 建立工程,指定針對(duì)哪種單片機(jī)進(jìn)行開發(fā),指定對(duì)源程序的編譯、鏈接參數(shù),指定調(diào)試 方式(本文采用外部硬件仿真器仿真調(diào)試的方式
38、,即使 TKS 仿真器仿真),然后對(duì)工程進(jìn) 行相關(guān)設(shè)置; 設(shè)置好工程后即可進(jìn)行編譯、鏈接。連接仿真器對(duì)軟件進(jìn)行調(diào)試。也可以生成下載到單 片機(jī)存儲(chǔ)器上的 HEX 文件。 系統(tǒng)軟件調(diào)試 系統(tǒng)的軟件調(diào)試借助于 proteus 仿真器,在進(jìn)行系統(tǒng)軟件的連續(xù)調(diào)試之前要先進(jìn)行軟 件的初調(diào),就是要使各個(gè)子程序模塊運(yùn)行正確,程序的運(yùn)行流程正確。軟件調(diào)試主要分 以下幾個(gè)步驟進(jìn)行: 功能子程序的調(diào)試。能子程序的調(diào)試包括運(yùn)算、采樣、數(shù)字濾波以及 PID 運(yùn)算等子程 序的調(diào)試。在調(diào)試功能子程序時(shí),許多參數(shù)都是未知的,要根據(jù)其所需的條件,給出 假定的數(shù)據(jù),使其運(yùn)行,如果能完成預(yù)定的處理功能或與手工計(jì)算的結(jié)果相符,就說
39、明該子程序己調(diào)試通過。調(diào)試時(shí)由小到大,由里到外。例如,調(diào)試 PID 算法子程序時(shí), 先調(diào)通其包含的各個(gè)運(yùn)算子程序和參數(shù)處理子程序,然后將它們連起來進(jìn)行通調(diào)。通 調(diào)時(shí),也是假定一些數(shù)據(jù)、參數(shù)和初始條件,然后運(yùn)行程序。當(dāng)運(yùn)算結(jié)果與手工計(jì)算 的結(jié)果相同時(shí),該算法子程序則調(diào)試完成,反之,就要進(jìn)行相應(yīng)的修改。其它子程序 的調(diào)試同理; 程序流程的調(diào)試。序流程的調(diào)試主要是查看程序運(yùn)行的步驟是否正確,在某時(shí)刻程序 運(yùn)行所處的位置是否正確,是否能正確運(yùn)行各個(gè)中斷服務(wù)程序。在調(diào)試過程中,先將 PID 算法子程序屏蔽,輸出可控硅導(dǎo)通時(shí)間用一個(gè)固定的常數(shù)代替,在各個(gè)中斷服務(wù) 子程序設(shè)置斷點(diǎn),然后運(yùn)行程序,查看程序是否
40、能運(yùn)行到所有的斷點(diǎn),若所有斷點(diǎn)都 能運(yùn)行到,則程序流程基本正確。去掉所有斷點(diǎn),再一次運(yùn)行程序,查看可控硅狀態(tài), 從而判斷程序流程正確,反之,若程序流程不正確,做相應(yīng)的修改后,重新調(diào)試; 功能程序與算法程序的通調(diào)。完成整個(gè)程序流程的調(diào)試后,將 PID 等算法子程序加入, 在算法子程序前或后設(shè)置斷點(diǎn),運(yùn)行整個(gè)程序。當(dāng)程序在斷點(diǎn)處暫停時(shí),查看 PID 計(jì) 算的控制量與手工計(jì)算的值是否相同。多運(yùn)行幾次,若每次的結(jié)果都正確,則說明程 序各個(gè)部分互相沒有矛盾,反之,則說明算法子程序和其它子程序之間有影響,需要 做相應(yīng)的修改后重新調(diào)。 參考文獻(xiàn): l邊海龍,孫永奎 . 單片機(jī)開發(fā)與典型工程項(xiàng)目實(shí)例詳解J.電
41、子工業(yè)出版 社, 2008,(10):143-160. 2張?chǎng)危A臻,陳書謙. 單片機(jī)原理及應(yīng)用 J.電子工業(yè)出版社, 2008(5). 3黃智偉 .凌陽單片機(jī)課程設(shè)計(jì)指導(dǎo)J. 北京航空航天大學(xué)出版社, 2007, 4余錫存 曹國華 .單片機(jī)原理及接口技術(shù)M.陜西 :西安電子科技大學(xué)出版 社,2000.7 5雷麗文 等.微機(jī)原理與接口技術(shù)M.北京:電子工業(yè)出版社,1997.2 6柴鈺.單片機(jī)原理和應(yīng)用M.西安電子科技大學(xué)出版社. 7張靖武.單片機(jī)系統(tǒng)的 PROTUSE 設(shè)計(jì)和仿真M.電子工業(yè)出版社.2007. 8唐 工.51 單片機(jī)工程應(yīng)用實(shí)例M. 設(shè)計(jì)心得體會(huì) 經(jīng)過兩周的努力工作,終于完成了
42、自己的單片機(jī)課程設(shè)計(jì)。雖說忙碌了點(diǎn),但我覺 得這樣的生活充實(shí)且有成就感,當(dāng)然,也獲益匪淺。 在焊接過程中,我學(xué)會(huì)應(yīng)先合理的布局,并認(rèn)真檢查每個(gè)元器件,確保無誤后再焊 接。還有,不能急于求成,要焊接一個(gè)模塊,檢查一個(gè)模塊,免得整個(gè)版子焊完后再在 一大堆線中檢查,這樣不僅效率低且耗時(shí)。自然,我也學(xué)會(huì)如何去發(fā)現(xiàn)問題與解決問題 的一些方法。 至于軟件設(shè)計(jì)與調(diào)試,我覺得它主要考驗(yàn)?zāi)愕乃季S邏輯能力及你對(duì)指令的熟悉程度。 可以說再整個(gè)軟件設(shè)計(jì)過程中,我不僅學(xué)會(huì)了延時(shí)的兩種方法,即軟件延時(shí)和硬件延時(shí), 還掌握數(shù)碼管的兩種顯示方式(即動(dòng)態(tài)顯示與靜態(tài)顯示)及其如何選擇。當(dāng)然,通過幾 次反復(fù)調(diào)試過程,使得我對(duì)匯編指令有了更深刻的理解。 在整個(gè)課程設(shè)計(jì)過程我還掌握了一下幾點(diǎn): (1)掌握了電子系統(tǒng)設(shè)計(jì)的流程,熟悉了各種硬件電路以及軟件編程方法。 (2)理解了最單片機(jī)的各部分組成及特性。 (3)熟練使用了各種計(jì)算機(jī)輔助設(shè)計(jì)工具完成設(shè)計(jì),充分掌握了這些
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)資健康管理辦法
- 企事業(yè)單位綠化養(yǎng)護(hù)項(xiàng)目招標(biāo)
- 通信工程商品混凝土施工合同
- 兒童節(jié)目制片合作協(xié)議
- 珠寶共享租賃協(xié)議-時(shí)尚活動(dòng)
- 短期技術(shù)研發(fā)聘用合同
- 網(wǎng)絡(luò)安全服務(wù)招標(biāo)申請(qǐng)
- 汽車制造業(yè)裝卸規(guī)范
- 2025廚師承包餐廳合同
- 市政工程人員文明施工承諾書
- 2023-2024學(xué)年山東省泰安市高一下學(xué)期7月期末考試物理試題(解析版)
- 基于認(rèn)知行為療法的藥物干預(yù)研究
- 舞蹈鑒賞學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 市政工程單位、分部、分項(xiàng)工程劃分方案
- 期末檢測(cè)(試題)-2024-2025學(xué)年三年級(jí)上冊(cè)數(shù)學(xué)人教版
- 康復(fù)醫(yī)學(xué)治療技術(shù)士考試歷年真題
- 2024國家開放大學(xué)電大《藥理學(xué)》機(jī)考終結(jié)性5套真題題庫及答案2-百度文
- JGJ/T 241-2011人工砂混凝土應(yīng)用技術(shù)規(guī)程
- 短視頻拍攝合作協(xié)議范本
- 2024海南省圖書館公開招聘財(cái)政定額補(bǔ)貼人員15人(一)(高頻重點(diǎn)提升專題訓(xùn)練)共500題附帶答案詳解
- 2024年越南板式降膜蒸發(fā)器行業(yè)現(xiàn)狀及前景分析2024-2030
評(píng)論
0/150
提交評(píng)論