




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 2010 2011 學(xué)年 第 2 學(xué)期 單片機應(yīng)用系統(tǒng)設(shè)計與制作課程設(shè)計報告 教學(xué)院(部) 電氣與電子信息工程學(xué)院 教 研 室 電氣自動化 指 導(dǎo) 教 師 課程設(shè)計時 間 2011.5.302011.6.10 課程設(shè)計班 級 電氣自動化技術(shù)2009(*)班 學(xué) 號 2009* 姓 名 張 * * 單片機應(yīng)用系統(tǒng)設(shè)計與制作 課程設(shè)計成績評定表課程設(shè)計題目:籃球計時記分器課程設(shè)計答辯或質(zhì)疑記錄:1、2、成績評定依據(jù):成績評定依據(jù):課程設(shè)計考勤情況(20):課程設(shè)計答辯情況(30):完成設(shè)計任務(wù)及報告規(guī)范性(50):最終評定成績(以優(yōu)、良、中、及格、不及格評定) 指導(dǎo)教師簽字: 2011 年 6
2、月 20 日摘 要籃球計時計分器以單片機為核心,由計時器、計分器、綜合控制器等組成。系統(tǒng)采用模塊化設(shè)計,主體分為計時顯示模塊、計分顯示模塊、定時報警、按鍵控制鍵盤模塊。每個模塊的程序結(jié)構(gòu)簡單、任務(wù)明確,易于編寫、調(diào)試和修改。編程后利用keil軟件來進(jìn)行編譯,再將生成的hex文件裝入芯片中,采用proteus軟件仿真,檢驗功能是否能夠正常實現(xiàn),本設(shè)計中系統(tǒng)硬件電路主要由以下幾個部分組成:單片機at89c52、計時電路、計分電路、報警電路和按鍵開關(guān)。該系統(tǒng)具有賽程定時設(shè)置、賽程時間暫停、及時刷新甲乙雙方的成績以及賽后成績暫存等功能。關(guān)鍵詞:單片機,計時,計分,顯示器,接口abstract time
3、 basketball scoring device as the core of scm includes the timer, scoring devices, integrated controller and other components.this system is used of the modular design, in which the main display module is divided into time display module, scoring display module, timing alarm module, and key control
4、keyboard module. program structure of each module is simple and clear. so it is easy to write, debug and modify. after programming, firstly we can use keil software to compile and then generate the hex file into the chip. secondly we use the proteus software simulation to test whether the normal fun
5、ction to achieve. the design of hardware circuit mainly consists of the five components, including at89c52, timing circuit, scoring circuit, alarm circuit and key switch circuit.the system has many features,such as setting the schedule time, scheduling time to pause, refreshing result of both partie
6、s timely, storing temporarily results after the match and so on.key words:microcontroller, timing, scoring, display, interface目 錄一、設(shè)計目的及要求···························
7、······· 3二、方案論證 ······································· 3三、元件及其功能簡介
8、83;······························· 5四、電路方案設(shè)計·················
9、;···················12五、編程及仿真·····························
10、183;········16六、心得與總結(jié) ····································· 20附表一、程序清單·
11、;····································21參考文獻(xiàn)·············
12、;································34課程設(shè)計報告一、設(shè)計目的及要求1、設(shè)計目的通過本次基于c51系列籃球計時計分器的設(shè)計,可以了解、熟悉有關(guān)單片機開發(fā)設(shè)計的過程,并加深對單片機的理解和應(yīng)用以及掌握單片機與外圍接口的一些方法和技巧,這主要表現(xiàn)在以下
13、一些方面:(1) 籃球賽計時計分系統(tǒng)包含了8051系列單片機的最小應(yīng)用系統(tǒng)的構(gòu)成,同時在此基礎(chǔ)上擴展了一些使用性強的外圍接口。(2) 可以了解到led顯示器的結(jié)構(gòu)、工作原理以及這種顯示器的接口實例與具體連接與編程方法。(3) 怎樣利用串行口來擴展顯示接口等。2、設(shè)計要求(1)能記錄整個賽程的比賽時間,并能修改比賽時間、暫停比賽時間;(2)能隨時刷新甲、乙兩隊在整個比賽中的比分;(3)比賽時間和24秒結(jié)束,能發(fā)出報警提示。二、方案論證1、單片機的選型方案一:51單片機雖然51單片機是8位的,采用總線結(jié)構(gòu),但具有編程控制簡單、接口簡單、工作可靠、價格經(jīng)濟、能耗少、容易實現(xiàn)系統(tǒng)小型化。方案二:61單
14、片機61單片機是在51的基礎(chǔ)上擴展起來的,它是16位非總線結(jié)構(gòu)的,支持16位硬件乘法,還有專門的乘法指令,現(xiàn)在應(yīng)用非常廣泛。由于本系統(tǒng)結(jié)構(gòu)簡單,用51單片機就足夠?qū)崿F(xiàn)其功能,因此本系統(tǒng)采用51單片機來實現(xiàn)。2、計時、計分方案方案一:采用計時芯片針對計算機系統(tǒng)對即使芯片的要求,各大芯片廠家退出了鍵時鐘、倒時鐘、正時鐘各種芯片,可采用自動控制計時芯片,通過觸發(fā)控制電路使計時器自動地計時,達(dá)到預(yù)定時間后,芯片重新開始計時(實現(xiàn)倒計時功能);也可以觸發(fā)控制電路使計時器不計時,達(dá)到預(yù)定時間后芯片重新開始計時(實現(xiàn)暫停功能),不需要程序干預(yù)。計算機可以通過中斷或查詢方式讀取計數(shù)器數(shù)據(jù),實現(xiàn)計時的暫停的功能
15、,并進(jìn)行顯示,計時功能的時間就無需占用cpu的時間,程序簡單,控制精度高,因此在工業(yè)控制系統(tǒng)中多采用這一類專用芯片實現(xiàn)計時功能。方案二:軟件控制利用mcs51內(nèi)部的定時/計數(shù)器進(jìn)行中斷定時,配合軟件延時實現(xiàn)計時。該方案節(jié)省硬件成本。方案二可以綜合運用定時器/計數(shù)器、中斷以及程序設(shè)計的知識,更適合做課程設(shè)計使用,因此本系統(tǒng)采用軟件方案來實現(xiàn)計時。3、數(shù)碼管顯示方式點亮led顯示器有兩種方式:一是靜態(tài)顯示;二是動態(tài)顯示。方案一:靜態(tài)顯示靜態(tài)顯示,就是每一個顯示器都要占用單獨的具有鎖存功能的i/o接口,用于筆劃段字形代碼。這樣單片機只要把要顯示的字形代碼發(fā)送到接口電路,就不用管它了,直到要顯示新的數(shù)
16、據(jù)時,再發(fā)送新的字形碼,因此,使用這種方法單片機中cpu的開銷小。這種電路的優(yōu)點在于:在同一時間可以顯示不同的字符;但缺點就是占用端口資源較多。從圖可以看出,每位led顯示器需要單獨占用8根端口線。方案二:動態(tài)顯示動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp "的同名端連在一起,另外為每個數(shù)碼管的公共極com增加位元選通控制電路,位元選通由各自獨立的i/o線控制,當(dāng)單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位元選通com端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位元就顯示出
17、字形,沒有選通的數(shù)碼管就不會亮。 透過分時輪流控制各個led數(shù)碼管的com端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位元數(shù)碼管的點亮?xí)r間為12ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極體的余輝效應(yīng),盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示資料,不會有閃爍感。 由于動態(tài)顯示和靜態(tài)顯示的顯示效果是一樣的,動態(tài)顯示能夠節(jié)省大量的i/o埠,而且功耗更低。所以在本系統(tǒng)中選用動態(tài)顯示 靜態(tài)顯示圖 動態(tài)顯示圖4、系統(tǒng)結(jié)構(gòu)方框圖本系統(tǒng)的核心控制元件是單片機at89c52,在它的基礎(chǔ)上加上一些輸入控制和輸出顯示模塊,來實現(xiàn)調(diào)整和顯示籃球
18、比賽時的時間和分?jǐn)?shù)的設(shè)置。三、元件及其功能簡介1、單片機at89c52、單片機at89c52簡介 at89c52是一個低電壓,高性能cmos 8位單片機,片內(nèi)含8k bytes的可反復(fù)擦寫的flash只讀程序存儲器和256 bytes的隨機存取數(shù)據(jù)存儲器(ram),器件采用atmel公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)mcs-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和flash存儲單元,at89c52單片機在電子行業(yè)中有著廣泛的應(yīng)用。 at89c52為8 位通用微處理器,采用工業(yè)標(biāo)準(zhǔn)的c51內(nèi)核,在內(nèi)部功能及管腳排布上與通用的8xc52 相同,其主要用于會聚調(diào)整時的功能控制。功能包括對會
19、聚主ic 內(nèi)部寄存器、數(shù)據(jù)ram及外部接口等功能部件的初始化,會聚調(diào)整控制,會聚測試圖控制,紅外遙控信號ir的接收解碼及與主板cpu通信等。、基本功能特性1、兼容mcs51指令系統(tǒng) 2、8k可反復(fù)擦寫(大于1000次)flash rom; 3、32個雙向i/o口; 4、256x8bit內(nèi)部ram; 5、3個16位可編程定時/計數(shù)器中斷; 6、時鐘頻率0-24mhz; 7、2個串行中斷,可編程uart串行通道; 8、2個外部中斷源,共8個中斷源; 9、2個讀寫中斷口線,3級加密位; 10、低功耗空閑和掉電模式,軟件設(shè)置睡眠和喚醒功能; 11、有pdip、pqfp、tqfp及plcc等幾種封裝形式
20、,以適應(yīng)不同產(chǎn)品的需求。、主要管腳及接口xtal1(19 腳)和xtal2(18 腳)為振蕩器輸入輸出端口,外接12mhz 晶振。rst/vpd(9 腳)為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。vcc(40 腳)和vss(20 腳)為供電端口,分別接+5v電源的正負(fù)端。p0p3 為可編程通用i/o 腳,其功能用途由軟件定義,在本設(shè)計中,p0 端口(3239 腳)被定義為n1 功能控制端口,分別與n1的相應(yīng)功能管腳相連接,13 腳定義為ir輸入端,10 腳和11腳定義為i2c總線控制端口,分別連接n1的sdas(18腳)和scls(19腳)端口,12 腳、27 腳及28 腳定義為握手信號功能
21、端口,連接主板cpu 的相應(yīng)功能端,用于當(dāng)前制式的檢測及會聚調(diào)整狀態(tài)進(jìn)入的控制功能。p0 口:p0 口是一組8 位漏極開路型雙向i/o 口, 也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能吸收電流的方式驅(qū)動8 個ttl邏輯門電路,對端口p0 寫“1”時,可作為高阻抗輸入端用。 在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8 位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在flash 編程時,p0 口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要求外接上拉電阻。p1 口:p1 是一個帶內(nèi)部上拉電阻的8 位雙向i/o 口, p1 的輸出緩沖級可驅(qū)動(吸收或輸出電流)4
22、個ttl 邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(iil)。 與at89c51 不同之處是,p1.0 和p1.1 還可分別作為定時/計數(shù)器2 的外部計數(shù)輸入(p1.0/t2)和輸入(p1.1/t2ex), flash 編程和程序校驗期間,p1 接收低8 位地址。p1.0和p1.1的第二功能引腳號功能特性p1.0t2,時鐘輸出p1.1t2ex(定時/計數(shù)器2)p2 口:p2 是一個帶有內(nèi)部上拉電阻的8 位雙向i/o 口,p2 的輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個ttl 邏輯
23、門電路。對端口p2 寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(iil)。 在訪問外部程序存儲器或16 位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行movx dptr 指令)時,p2 口送出高8 位地址數(shù)據(jù)。在訪問8 位地址的外部數(shù)據(jù)存儲器(如執(zhí)行movx ri 指令)時,p2 口輸出p2 鎖存器的內(nèi)容。 flash 編程或校驗時,p2亦接收高位地址和一些控制信號。p3 口:p3 口是一組帶有內(nèi)部上拉電阻的8 位雙向i/o 口。p3 口輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個ttl 邏輯門電路。對p3 口寫入“
24、1”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的p3 口將用上拉電阻輸出電流(iil)。p3 口除了作為一般的i/o 口線外,更重要的用途是它的第二功能。p3口第二功能端口引腳第二功能p3.0rxd(串行輸入口)p3.1txd(串行輸出口)p3.2/int0(外部中斷0)p3.3/int1(外部中斷1)p3.4t0(記時器0外部輸入)p3.5 t1(記時器1外部輸入)p3.6/wr(外部數(shù)據(jù)存儲器寫選通)p3.7 /rd(外部數(shù)據(jù)存儲器讀選通)rst:復(fù)位輸入。當(dāng)振蕩器工作時,rst引腳出現(xiàn)兩個機器周期以上高電平將使單片機復(fù)位。ale/prog:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲
25、器時,ale(地址鎖存允許)輸出脈沖用于鎖存地址的低8 位字節(jié)。一般情況下,ale 仍以時鐘振蕩頻率的1/6 輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ale 脈沖。 對flash 存儲器編程期間,該引腳還用于輸入編程脈沖(prog)。 如有必要,可通過對特殊功能寄存器(sfr)區(qū)中的8eh 單元的d0 位置位,可禁止ale 操作。該位置位后,只有一條movx 和movc指令才能將ale 激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應(yīng)設(shè)置ale禁止位無效。psen:程序儲存允許(psen)輸出是外部程序存儲器的讀選通信號,當(dāng)
26、at89c52 由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次psen 有效,即輸出兩個脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次psen信號。xtal1:振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。 xtal2:振蕩器反相放大器的輸出端。、中斷at89c52 共有6 個中斷向量:兩個外中斷(int0 和int1),3 個定時器中斷(定時器0、1、2)和串行口中斷。這些中斷源可通過分別設(shè)置專用寄存器ie 的置位或清0 來控制每一個中斷的允許或禁止。ie 也有一個總禁止位ea,它能控制所有中斷的允許或禁止。定時器2 的中斷是由t2con 中的tf2 和exf2 邏輯或產(chǎn)生的,當(dāng)轉(zhuǎn)向中
27、斷服務(wù)程序時,這些標(biāo)志位不能被硬件清除,事實上,服務(wù)程序需確定是tf2 或exf2 產(chǎn)生中斷,而由軟件清除中斷標(biāo)志位。定時器0 和定時器1 的標(biāo)志位tf0 和tf1 在定時器溢出那個機器周期的s5p2 狀態(tài)置位,而會在下一個機器周期才查詢到該中斷標(biāo)志。然而,定時器2 的標(biāo)志位tf2 在定時器溢出的那個機器周期的s2p2 狀態(tài)置位,并在同一個機器周期內(nèi)查詢到該標(biāo)志。、flash存儲器的編程at89c52單片機內(nèi)部有8k字節(jié)的flash perom,這個flash 存儲陣列出廠時已處于擦除狀態(tài)(即所有存儲單元的內(nèi)容均為ffh),用戶隨時可對其進(jìn)行編程。編程接口可接收高電壓(+12v)或低電壓(vc
28、c)的允許編程信號。低電壓編程模式適合于用戶在線編程系統(tǒng),而高電壓編程模式可與通用eprom 編程器兼容。at89c52 單片機中,有些屬于低電壓編程方式,而有些則是高電壓編程方式,用戶可從芯片上的型號和讀取芯片內(nèi)的簽名字節(jié)獲得該信息。at89c52 的程序存儲器陣列是采用字節(jié)寫入方式編程的,每次寫入一個字節(jié),要對整個芯片內(nèi)的perom 程序存儲器寫入一個非空字節(jié),必須使用片擦除的方式將整個存儲器的內(nèi)容清除。2、報警器、報警器的分類蜂鳴器有兩類3大品種。一類是壓電式,一類是電磁式,電磁式又有兩大品種,鐵振膜式和動圈式,二者原理一樣只是結(jié)構(gòu)不同。所有蜂鳴器都有兩種類型:純蜂鳴器和帶驅(qū)動的蜂鳴器,
29、蜂鳴器都是用音頻信號驅(qū)動的,都是交流驅(qū)動。、報警器工作原理電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、震動膜片以及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號通過電磁線圈,使得電磁線圈產(chǎn)生了一個磁場。振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發(fā)聲。3、芯片74hc154、簡介:4線16線譯碼器,可以實現(xiàn)地址的擴展。、引腳說明1-11 13-17 :輸出端。12 :gnd電源地18-19 :使能輸入端、低電平有效20-23 :地址輸入端24 :vcc電源正4、respack8 接在51單片機的p0口,因為p0口內(nèi)部沒有上拉電阻,不能輸出高電平,所以要接上拉電阻。排阻就是好多電阻連在一起,他們有
30、一個公共端1端為公共端接vcc或地。5、led數(shù)碼管 led顯示器又稱為數(shù)碼管,led顯示器由8個發(fā)光二極管組成。中7個長條形的發(fā)光管排列成“日”字形,另一個點形的發(fā)光管在顯示器的右下角作為顯示小數(shù)點用,它能顯示各種數(shù)字及部份英文字母。led顯示器有兩種不同的形式:一種是8個發(fā)光二極管的陽極都連在一起的,稱之為共陽極led顯示器;另一種是8個發(fā)光二極管的陰極都連在一起的,稱之為共陰極led顯示器。如圖所示。本設(shè)計采用的是共陰極數(shù)碼管顯示。7段led數(shù)碼管共陰極與共陽極led顯示器共陽極與共陰極led顯示器顯示數(shù)字、字母與顯示代碼之間的對應(yīng)關(guān)系:顯示字符共陰極段碼共陽極段碼顯示字符共陰極段碼共陽
31、極段碼03fhc087fh80h106hf996fh90h25bha4a77h88h34fhb0b7ch83h466h99hc39hc656dh92hd5eha1h67dh82he79h86h707hf8f71h8eh四、電路方案設(shè)計1、功能控制電路該控制電路可以實現(xiàn)籃球比賽的節(jié)數(shù)、時間、24秒復(fù)位、比賽暫停、兩隊的分?jǐn)?shù)加減等功能的設(shè)置。采用7個復(fù)位開關(guān)一端共地,另一端接入與門,再連接到單片機的13號腳(p3.3/int1口),實現(xiàn)外部中斷1請求。、賽程時間設(shè)置在計時電路中,“修改移位開關(guān)”和“紅隊加、減分開關(guān)”共同用來設(shè)置比賽的節(jié)次、剩余時間等。比如:比賽時間為第一小節(jié)剩余10分鐘,則通過按
32、“修改移位開關(guān)”,使數(shù)碼管1進(jìn)入修改模式,再按“紅隊加、減分開關(guān)”鍵,設(shè)定本場比賽的小節(jié)數(shù),使數(shù)碼管1顯示“1”即可;繼續(xù)按動“修改移位開關(guān)”可以使其他的數(shù)碼管進(jìn)入修改模式,按以上方法修改即可。當(dāng)比賽結(jié)束時,如果由于一些特殊原因需要增加比賽時間,這時增加比賽時間同樣由以上方法來設(shè)置。、賽程時間啟動暫停設(shè)置當(dāng)時間設(shè)置完成后,這時,如果裁判吹響開始的哨聲時,則應(yīng)立即按下按“暫停/啟動”鍵,表示賽程開始,計時顯示則開始倒計時,在此過程中24秒也開始倒計,在24秒倒計到06秒時,蜂鳴器發(fā)出警報,報警燈開始閃爍,如果24秒倒計為00前,沒有被復(fù)位(有人24秒進(jìn)攻違例),則比賽自動暫停。如果無進(jìn)攻違例,則
33、需要記分人員手動復(fù)位24秒(按控制鍵盤中的“復(fù)位”開關(guān)即可)。比賽暫停后,需要按“暫停/啟動”鍵來激活時間倒計。、比分刷新控制由于在比賽中,甲、乙兩隊的比分是不斷在變化的,所以需要設(shè)置比分刷新控制裝置;此部分功能由計分電路中的所示的按鍵開關(guān)“紅隊加分”、“紅隊減分”、“藍(lán)隊加分”、“藍(lán)隊減分”來完成的。2、時鐘產(chǎn)生方式采用內(nèi)部時鐘方式(在單片機的xtal1和xtal2引腳外接晶振即可),途中,電容器c1和c2的作用是穩(wěn)定頻率和快速起振。3、復(fù)位電路該電路采用:按鍵與上電復(fù)位 上電復(fù)位要求接通電源后,單片機自動實現(xiàn)復(fù)位操作。上電瞬間rst引腳獲得高電平,隨著電容c3的充電,rst引腳的高電平將逐
34、漸下降。rst引腳的高電平只要能保持足夠的時間(兩個機械周期),單片機就可以進(jìn)行復(fù)位操作。按下復(fù)位開關(guān)時,短接電容c3,使rst引腳瞬間得到高電平也可實現(xiàn)復(fù)位功能。4、 顯示電路顯示電路是由數(shù)碼管組成的,主要用來顯示籃球比賽過程中的節(jié)次、24秒、比賽剩余時間、兩隊分?jǐn)?shù)。在此電路中,單片機的p1口用于控制4位led的段選碼:p2口的p2.0p2.3用于控制4位led位選碼。由于所有的段選碼連在一起,所以同一瞬間只能顯示同一種字符。但如果要顯示不同字符,則要由位選碼來控制,系統(tǒng)通過74hc154來擴展p2.0p2.3端子來實現(xiàn)at89c52對數(shù)碼管的選碼。(如果led為共陰極則p2.0p2.3輸出
35、為高電平,如果led為共陽極則p2.0p2.3輸出為低電平。)顯示電路的主電路圖如下: 5、電路總圖綜上所述,結(jié)合以上各個電路,加上適當(dāng)?shù)慕M件,即可得到籃球比賽計時計分器的總設(shè)計圖:五、編程與仿真1、keil軟件的應(yīng)用利用keil軟件,編寫程序,并進(jìn)行調(diào)試,調(diào)試結(jié)果出現(xiàn)0個錯誤時,即可生成hex文件(部分程序流程圖如下)。計時程序部分流程圖:按下調(diào)時開關(guān)立即數(shù)00h取出,le輸出高電平經(jīng)過p1.0發(fā)送代碼,然后將le清零開放定時中斷啟動定時器,t0開始定時定時中斷初始化調(diào)用定時中斷程序記分程序部分流程圖:按下計分鍵輸出低電平,外部中斷產(chǎn)生調(diào)用中斷程序串行數(shù)據(jù)輸出移位脈沖輸出顯示數(shù)據(jù),兩隊相應(yīng)比
36、分變化串行口發(fā)送完畢,標(biāo)志清零程序流程圖:hex文件的生成方式:在所建工程上右鍵下拉菜單中點擊options for targettarget1點擊輸出選項卡勾中創(chuàng)建hex文件(如下圖)確定運行。即可再所建工程的文件夾下找到hex文件2、proteus的應(yīng)用按照原理圖搭建防真電路圖,加載hex文件運行即可。hex文件加載方式:雙擊仿真電路圖中的at89c52單片機單擊program file項后面的文件夾圖標(biāo)選中剛剛建立的hex文件確定(如下圖所示)確定3、進(jìn)行電路仿真以上準(zhǔn)備工作全部完成后就可以進(jìn)行電路仿真啦,單擊開始進(jìn)行仿真。運行效果圖如下:六、 心得與總結(jié) 在本次設(shè)計中,我通過基于典型單
37、片機at89c52的設(shè)計和應(yīng)用,對于單片機工作原理,功能有了宏觀的了解,并對單片機匯編程序的應(yīng)用有了新的、進(jìn)一步的認(rèn)識。在設(shè)計的過程中,我發(fā)現(xiàn)很多的問題,給我的感覺就是下手很難,很不順手,看似很簡單的電路,要動手把它給設(shè)計出來,是很難的一件事,主要原因是我們沒有經(jīng)常動手設(shè)計過電路。另外單片機系統(tǒng)的知識似懂非懂,而且很多知識當(dāng)時弄明白了,現(xiàn)在要用的時候又不記得,造成我用了大量的時間去查閱各種資料和程序命令,因此整個過程時間安排不合理。由于設(shè)計的計劃沒有安排好,設(shè)計的時間極為倉促,尤其是在仿真調(diào)試的過程中出現(xiàn)了很大的問題。另外資料的查找也是一大難題,這就要求我們在以后的學(xué)習(xí)中,應(yīng)該注意到這一點,更
38、重要的是我們要學(xué)會把從書本中學(xué)到的知識和實際的電路聯(lián)系起來,這不論是對我們以后的就業(yè)還是學(xué)習(xí),都會起到很大的促進(jìn)和幫助。本次設(shè)計測試結(jié)果以及不足之處:計時電路可完成倒計時、暫停、繼續(xù)等功能,在比賽時間到后可進(jìn)行報警。記分電路工作正常,可完成對比分的刷新與暫存。但在測試過程中發(fā)現(xiàn),在比賽上半場時間到后,不能進(jìn)行比分的交換。進(jìn)行分析后得出結(jié)論如下:系統(tǒng)電路部分設(shè)計沒有原則性的錯誤,基本達(dá)到本次課程設(shè)計的要求。附表一程序編程清單:#include <regx52.h>#define uchar unsigned char #define uint unsigned int #define
39、 th_value 0xb1#define tl_value 0xe0/定時器工作于方式1,每20ms產(chǎn)生一個中斷sbit speak=p37;sbit ext=p32;sbit led=p34;/*bcd碼字*/uchar code bcd=0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f;/*09數(shù)字顯示*/uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;uchar munite;/比賽
40、剩余分位數(shù)uchar second;/比賽剩余秒位數(shù)uchar part;/當(dāng)前比賽的節(jié)次uchar s24;/24秒標(biāo)志uchar red_mark;/紅隊得分uchar blue_mark;/藍(lán)隊得分uchar key_move;/設(shè)置位移動uchar key_red_add;/紅隊得分增加1uchar key_red_mul;/紅隊得分減少1uchar key_blue_add;/藍(lán)隊得分增加1uchar key_blue_mul;/藍(lán)隊得分減少1uchar key_pause;/暫停uchar key_reset;/24秒復(fù)位及進(jìn)入下一節(jié)復(fù)位uchar time_tick1,time_
41、tick2;uchar station;/狀態(tài)標(biāo)志位uchar flag;/跳亮標(biāo)志位uchar talk1,talk2,num,num1;/報警信號標(biāo)志/*函數(shù)聲明*/void init();void init_timer();void init_extra();uchar key_scan();void scanf(uchar p,uchar tw,uchar m,uchar s,uchar r,uchar b);void scanf1(uchar p,uchar r,uchar b);void scanf2(uchar tw,uchar r,uchar b);void scanf3(uc
42、har m,uchar r,uchar b);void scanf4(uchar s,uchar r,uchar b);void play24();void playstop1();void playstop2();/*延時程序,t=1時,延時1ms*/void delay(uchar t)int i,j;for(j=0;j<t;j+) for(i=0;i<110;i+);/*主程序*/void main()init();init_timer();init_extra();/初始化while(1)if(station=0)/狀態(tài)0:比賽狀態(tài)scanf(part,s24,munite
43、,second,red_mark,blue_mark);if(time_tick1=50)time_tick1=0;if(second=0)/時間計數(shù)if(munite=0)if(part>=4)talk2=1;/終場報警操作tr0=0;/關(guān)閉定時器中斷0tr1=1;elsetalk2=1;/小節(jié)結(jié)束報警tr1=1;tr0=0;elsemunite-;second=59;elsesecond-;if(s24=0)/24秒計數(shù)tr0=0;elseif(s24<2)talk2=1;tr1=1;tr0=0;key_pause=0;else if(s24<8)talk1=1;tr1=
44、1;s24-;/6秒提醒if(second=0&&munite=0)/操作進(jìn)入下一節(jié)比賽if(key_reset=1)s24=0x18;part+;key_reset=0;if(part=10)talk2=1;/比賽太久,報警if(part<5)/判斷是否為加時賽,不是,延長12分鐘munite=0x0c;second=0x00;else/加時賽,延長5分鐘munite=0x05;second=0x00;if(second!=0|munite!=0)/操作24秒復(fù)位if(key_reset=1)if(second<0x18&&munite=0)/當(dāng)比
45、賽剩余時間少于24秒時,ss4為當(dāng)前剩余時間key_reset=0;s24=second;else/當(dāng)時間大于24秒時,s24復(fù)位為24秒key_reset=0;s24=0x18;if(key_red_add=1)/紅隊得分操作加key_red_add=0;if(red_mark<0xff)red_mark+;if(key_red_mul=1)/紅隊得分操作減key_red_mul=0;if(red_mark>0)red_mark-;if(key_blue_add=1)/藍(lán)隊得分操作加key_blue_add=0;if(blue_mark<0xff)blue_mark+;if
46、(key_blue_mul=1)/藍(lán)隊得分操作減key_blue_mul=0;if(blue_mark>0)blue_mark-;if(station=1)/比賽節(jié)次操作tr1=1;flag=0;while(station=1)if(flag=0)scanf1(part,red_mark,blue_mark);if(flag=1)scanf(part,s24,munite,second,red_mark,blue_mark); if(key_red_add=1)/比賽節(jié)次操作加key_red_add=0;if(part<0x09)part+;if(key_red_mul=1)/比賽
47、節(jié)次操作減key_red_mul=0;if(part>1)part-;if(station!=1)tr1=0;flag=0;if(station=2)/24秒操作tr1=1;flag=0;while(station=2)if(flag=0)scanf2(s24,red_mark,blue_mark);if(flag=1)scanf(part,s24,munite,second,red_mark,blue_mark); if(key_red_add=1)/24秒操作加.max=24key_red_add=0;if(s24<0x18)s24+;if(key_red_mul=1)/24秒
48、操作減key_red_mul=0;if(s24>0)s24-;if(station!=2)tr1=0;flag=0;if(station=3)/計時分操作tr1=1;flag=0;while(station=3)if(flag=0)scanf3(munite,red_mark,blue_mark);if(flag=1)scanf(part,s24,munite,second,red_mark,blue_mark); if(key_red_add=1)/分操作加,max=60key_red_add=0;if(munite<0x3c)munite+;if(key_red_mul=1)/
49、分操作減key_red_mul=0;if(munite>0)munite-;if(station!=3)tr1=0;flag=0;if(station=4)/計時秒操作tr1=1;flag=0;while(station=4)if(flag=0)scanf4(second,red_mark,blue_mark);if(flag=1)scanf(part,s24,munite,second,red_mark,blue_mark); if(key_red_add=1)/秒操作加,max=60key_red_add=0;if(second<0x3c)second+;if(key_red_
50、mul=1)/秒操作減key_red_mul=0;if(second>0)second-;if(station!=4)tr1=0;flag=0;/*初始化*/void init()munite=0x01;second=0x00;red_mark=0x00;blue_mark=0x00;part=0x01;s24=0x18;station=0x00;key_pause=0;key_move=0x00;key_red_add=0x00;key_red_mul=0x00;key_blue_add=0x00;key_blue_mul=0x00;key_reset=0x00;flag=0x00;/
51、*定時器0初始化*/void init_timer()tmod=0x11;th0=th_value;tl0=tl_value;th1=th_value;tl1=tl_value;et0=1;et1=1;time_tick1=0;time_tick2=0;/*外部中斷源初始化*/void init_extra()ex0=1;ex1=1;it0=1;it1=1;ea=1;/*定時器0*/void timer0()interrupt 1time_tick1+;th0=th_value;tl0=tl_value;/*定時器1*/void timer1()interrupt 3ea=0;th1=th_value;tl1=tl_value;time_tick2+;if(time_tick2=50)led=led;time_tick2=0x00;if(flag=0)flag=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園大班下學(xué)期期末教學(xué)工作總結(jié)匯報范文兩篇
- 鄭州城市職業(yè)學(xué)院《基礎(chǔ)西班牙語(II)》2023-2024學(xué)年第一學(xué)期期末試卷
- 武漢科技職業(yè)學(xué)院《劇作基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年制造業(yè)數(shù)字化供應(yīng)鏈協(xié)同智能物流技術(shù)應(yīng)用研究報告
- 城鄉(xiāng)教育均衡策略-洞察及研究
- 虛擬化平臺下安全意識培訓(xùn)資源優(yōu)化-洞察及研究
- 小學(xué)夏天活動方案
- 小學(xué)雙學(xué)活動方案
- 定襄民俗活動方案
- 家裝公司成功活動方案
- 關(guān)節(jié)僵硬護(hù)理查房
- 國開2023秋《現(xiàn)-代-管-理-專-題》北京-第四次作業(yè)參考答案
- 長城招聘的心理測評答案
- 云災(zāi)備與數(shù)據(jù)恢復(fù)策略
- 中小學(xué)食堂工作從業(yè)人員安全培訓(xùn)會議記錄(40學(xué)時全)
- 國開《工程經(jīng)濟與管理》形考任務(wù)1-12試題及答案
- 幼兒園玩教具明細(xì)表
- 普速《鐵路技術(shù)管理規(guī)程》普速鐵路部分
- 風(fēng)控部合同審核流程
- SA8000全套控制程序文件
- 畢業(yè)50周年同學(xué)聚會邀請函匯編4篇
評論
0/150
提交評論