工業(yè)順序控制及顯示設(shè)計(jì) 單片機(jī)課程設(shè)計(jì)報(bào)告
《工業(yè)順序控制及顯示設(shè)計(jì) 單片機(jī)課程設(shè)計(jì)報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《工業(yè)順序控制及顯示設(shè)計(jì) 單片機(jī)課程設(shè)計(jì)報(bào)告(32頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 《單片機(jī)及控制系統(tǒng)》 課程設(shè)計(jì)報(bào)告 題 目: 工業(yè)順序控制及顯示設(shè)計(jì) 院 (系): 機(jī)電與自動(dòng)化學(xué)院 專業(yè)班級(jí): 電氣工程及其自動(dòng)化11XX班 學(xué)生姓名: 科 比 學(xué) 號(hào): 20111131*** 指導(dǎo)教師: 梅秋燕 2014年06月15日至2014年06月28日 華中科技大學(xué)武昌分校 《單片機(jī)及控制系統(tǒng)》課程設(shè)計(jì)
2、任務(wù)書(shū) 一、設(shè)計(jì)題目 工業(yè)順序控制及顯示設(shè)計(jì) 二、設(shè)計(jì)主要內(nèi)容 (1)掌握51單片機(jī)在工業(yè)順序控制中的應(yīng)用,學(xué)習(xí)單片機(jī)的控制程序的設(shè)計(jì)及中斷程序的編程應(yīng)用。 (2)用七只發(fā)光二極模擬工業(yè)控制中的7道工序,高電平點(diǎn)亮,每道工序用定時(shí)器進(jìn)行工序間的順序轉(zhuǎn)換。 (3)與此同時(shí)運(yùn)用動(dòng)態(tài)掃描和定時(shí)器1在數(shù)碼管上顯示出從765432開(kāi)始以1/10秒的速度遞減至765398,并保持顯示此數(shù)。 (4)按規(guī)范撰寫(xiě)課程設(shè)計(jì)說(shuō)明書(shū),包括硬件和軟件設(shè)計(jì)。 三、原始資料 (1) 單片機(jī)接口 8051 P1.0-P1.6控制工業(yè)生產(chǎn)的七道工序,現(xiàn)模擬控制七只發(fā)光二極管的點(diǎn)亮,高電平點(diǎn)亮。設(shè)定每
3、道工序時(shí)間轉(zhuǎn)換為延時(shí), ?P3.4為開(kāi)工啟動(dòng)開(kāi)關(guān),高電平啟動(dòng)。P3.3為外部故障輸入模擬開(kāi)關(guān),低電平報(bào)警,P1.7為報(bào)警聲音輸出。設(shè)定7道工序只有一位輸出。? (2) LCD顯示電路 LCD顯示電路 LCD顯示電路,由U33的74HC245驅(qū)動(dòng),以顯示電平狀態(tài)。高電平為“1”狀態(tài),點(diǎn)亮發(fā)光二極管。 (3) 主程序和中斷程序流程圖 (4)數(shù)碼管顯示電路 顯示電路結(jié)構(gòu)圖 八段數(shù)碼管顯示電路由8155的PB0、PB1經(jīng)74LS164“串轉(zhuǎn)并”后輸出得到。6位位碼由8155 的PA0口輸出,經(jīng)uA2003反向驅(qū)動(dòng)后,選
4、擇相應(yīng)顯示位。74LS164是串行輸入并行輸出轉(zhuǎn)換電路,串行輸入的數(shù)據(jù)位由8155的PB0控制,時(shí)鐘位由8155的PB1控制輸出。 寫(xiě)程序時(shí),只要向數(shù)據(jù)位地址輸出數(shù)據(jù),然后向時(shí)鐘位地址輸出一高一低兩個(gè)電平就可以將數(shù)據(jù)位置到74LS164中,并且實(shí)現(xiàn)移位。向顯示位選通地址輸出高電平就可以點(diǎn)亮相應(yīng)的顯示位。 數(shù)碼管數(shù)字代碼表 四、要求的設(shè)計(jì)成果 (1)根據(jù)控制要求,進(jìn)行控制系統(tǒng)硬件電路設(shè)計(jì)。 (2)控制及顯示程序設(shè)計(jì)。 (3)利用實(shí)驗(yàn)室設(shè)備進(jìn)行模擬調(diào)試。 (4)編寫(xiě)《單片機(jī)及控制系統(tǒng)》報(bào)告,課程設(shè)計(jì)報(bào)告內(nèi)容包括: ① 設(shè)計(jì)方案、課程設(shè)計(jì)過(guò)程和設(shè)計(jì)思想、方法
5、、原理。 ② 繪制系統(tǒng)的原理圖(可用繪圖軟件也可手繪)。 ③ 單片機(jī)控制程序,有程序說(shuō)明。 ④ 參考資料、參考書(shū)及參考手冊(cè)。 ⑤其他需要說(shuō)明的問(wèn)題,例如操作說(shuō)明、程序的調(diào)試過(guò)程、遇到的問(wèn)題及解決方法、對(duì)課程設(shè)計(jì)的認(rèn)識(shí)和建議等。 ⑥《單片機(jī)及控制系統(tǒng)》報(bào)告可以手寫(xiě),也可以用電腦編排打印,報(bào)告格式按照《華中科技大學(xué)武昌分校課程設(shè)計(jì)管理辦法》執(zhí)行。課程設(shè)計(jì)報(bào)告要求內(nèi)容正確完整,圖表清晰,敘述簡(jiǎn)明,語(yǔ)句通順,字?jǐn)?shù)不得少于2000漢字。 ⑦課程設(shè)計(jì)報(bào)告按封面、任務(wù)書(shū)、設(shè)計(jì)說(shuō)明書(shū)、圖紙、實(shí)物照片貼頁(yè)(實(shí)物照片貼在A4復(fù)印紙上)、成績(jī)?cè)u(píng)定表的順序裝訂。 五、進(jìn)程安排 內(nèi)容 時(shí)間 下達(dá)課
6、程設(shè)計(jì)任務(wù)書(shū)。講解課程設(shè)計(jì)的任務(wù)與要求、進(jìn)度安排、指導(dǎo)時(shí)間、注意事項(xiàng)、提供參考資料。學(xué)生到實(shí)驗(yàn)室熟悉設(shè)備。 1天 搜集資料、方案論證、初步設(shè)計(jì)。 1天 系統(tǒng)設(shè)計(jì)、繪制系統(tǒng)控制原理圖及軟件編程。 2天 利用實(shí)驗(yàn)室設(shè)備完成控制系統(tǒng)的硬件接線工作,運(yùn)行控制程序,進(jìn)行運(yùn)行調(diào)試。 3天 方案優(yōu)化、總結(jié)完善、整理資料、撰寫(xiě)課程設(shè)計(jì)報(bào)告 2天 答辯、課程設(shè)計(jì)總結(jié)。 1天 共計(jì) 10天(2周) 六、主要參考資料 [1] 李廣弟.單片機(jī)基礎(chǔ).北京:北京航空航天大學(xué),2009. [2] 李群芳.微型計(jì)算機(jī)與接口技術(shù).北京:電子工業(yè)出版社,2012. [3] 單片機(jī)綜合仿真實(shí)驗(yàn)
7、系統(tǒng)Keil C實(shí)驗(yàn)指導(dǎo)書(shū).深圳:深圳市雷邁特科技有限公司,2012. [4] 沈慶陽(yáng).8051單片機(jī)實(shí)踐與應(yīng)用.機(jī)電一體化系統(tǒng)設(shè)計(jì).北京:化學(xué)工業(yè)出版社,2009. [5] 朱定華.單片微機(jī)原理與應(yīng)用.北京:清華大學(xué)出版社,2006. 指導(dǎo)教師(簽名): 20 年 月 日 目 錄 1.課程設(shè)計(jì)任務(wù)及要求 2 1.1設(shè)計(jì)目的 2 1.2控制要求
8、 2 1.3系統(tǒng)總體方案設(shè)計(jì) 2 2.控制系統(tǒng)原理分析 4 2.1硬件部分分析 4 2.1.1 89C51單片機(jī)引腳圖及引腳功能介紹 4 2.1.2顯示系統(tǒng)工作原理 5 2.2軟件設(shè)計(jì)流程圖 8 3.程序分析 10 3.1順序控制程序 10 3.2數(shù)碼管顯示程序 11 4.運(yùn)行調(diào)試 14 4.1軟件調(diào)試過(guò)程 14 4.2安裝調(diào)試及方法 16 4.3 結(jié)果分析 17 5.總結(jié) 18 6.參考文獻(xiàn) 19 7.附錄 20 附錄1 程序清單 20 附錄2實(shí)物照片(現(xiàn)場(chǎng)接線及調(diào)試顯示照片) 24 1.課程設(shè)計(jì)任務(wù)及要求
9、 1.1設(shè)計(jì)目的 (1)加強(qiáng)對(duì)單片機(jī)和C語(yǔ)言的認(rèn)識(shí),充分掌握和理解設(shè)計(jì)各部分 的工作原理、設(shè)計(jì)過(guò)程、選擇芯片器件、模塊化編程等多項(xiàng)知識(shí)。? (2)用單片機(jī)模擬實(shí)現(xiàn)具體應(yīng)用,使個(gè)人設(shè)計(jì)能夠真正使用。? (3)把理論知識(shí)與實(shí)踐相結(jié)合,充分發(fā)揮個(gè)人能力,并在實(shí)踐中鍛煉。? (4)提高利用已學(xué)知識(shí)分析和解決問(wèn)題的能力。? (5)提高實(shí)踐動(dòng)手能力。 1.2控制要求 (1)用七只發(fā)光二極模擬工業(yè)控制中的7道工序,高電平點(diǎn)亮,每道工序用定時(shí)器進(jìn)行工序間的順序轉(zhuǎn)換。 (2)與此同時(shí)運(yùn)用動(dòng)態(tài)掃描和定時(shí)器1在數(shù)碼管上顯示出從765432開(kāi)始以1/10秒的速度遞減至765398,并保持顯示此數(shù)
10、。 1.3系統(tǒng)總體方案設(shè)計(jì) 設(shè)計(jì)主要內(nèi)容: (1)掌握51單片機(jī)在工業(yè)順序控制中的應(yīng)用,學(xué)習(xí)單片機(jī)的控制程序的設(shè)計(jì)及中斷程序的編程應(yīng)用。 (2)用七只發(fā)光二極模擬工業(yè)控制中的7道工序,高電平點(diǎn)亮,每道工序用定時(shí)器進(jìn)行工序間的順序轉(zhuǎn)換。 (3)與此同時(shí)運(yùn)用動(dòng)態(tài)掃描和定時(shí)器1在數(shù)碼管上顯示出從765432開(kāi)始以1/10秒的速度遞減至765398,并保持顯示此數(shù)。 (4)按規(guī)范撰寫(xiě)課程設(shè)計(jì)說(shuō)明書(shū),包括硬件和軟件設(shè)計(jì)。(1)根據(jù)控制要求,進(jìn)行控制系統(tǒng)硬件電路設(shè)計(jì)。 (2)控制及顯示程序設(shè)計(jì)。 (3)利用實(shí)驗(yàn)室設(shè)備進(jìn)行模擬調(diào)試。
11、 (4)編寫(xiě)《單片機(jī)原理及應(yīng)用課程設(shè)計(jì)》報(bào)告,課程設(shè)計(jì)報(bào)告內(nèi)容包括: 設(shè)計(jì)主要流程: (1)設(shè)計(jì)方案、課程設(shè)計(jì)過(guò)程和設(shè)計(jì)思想、方法、原理。 (2)繪制系統(tǒng)的原理圖(可用繪圖軟件也可手繪)。 (3)單片機(jī)控制程序,有程序說(shuō)明。 (4)參考資料、參考書(shū)及參考手冊(cè)。 (5)其他需要說(shuō)明的問(wèn)題,例如操作說(shuō)明、程序的調(diào)試過(guò)程、遇到的問(wèn)題及解決方法、對(duì)課程設(shè)計(jì)的認(rèn)識(shí)和建議等。 (6)《單片機(jī)原理及應(yīng)用課程設(shè)計(jì)》報(bào)告可以手寫(xiě),也可以用電腦編排打印,報(bào)告格式按照《華中科技大學(xué)武昌分校課程設(shè)計(jì)管理辦法》執(zhí)行。課程設(shè)計(jì)報(bào)告要求內(nèi)容正確完整,圖表清晰
12、,敘述簡(jiǎn)明,語(yǔ)句通順,字?jǐn)?shù)不得少于2000漢字。 (7)課程設(shè)計(jì)報(bào)告按封面、任務(wù)書(shū)、設(shè)計(jì)說(shuō)明書(shū)、圖紙、實(shí)物照片貼頁(yè)(實(shí)物照片貼在A4復(fù)印紙上)、成績(jī)?cè)u(píng)定表的順序裝訂。 設(shè)計(jì)主要流程圖如下圖。 圖1-1 課程設(shè)計(jì)總流 9 2.控制系統(tǒng)原理分析 2.1硬件部分分析 2.1.1 89C51單片機(jī)引腳圖及引腳功能介紹 本次實(shí)習(xí)的中斷功能就是基于89C51單片機(jī)的基礎(chǔ)上實(shí)現(xiàn)的,首先來(lái)簡(jiǎn)單認(rèn)識(shí)一下,它的引腳如圖2-1所示: 圖2-1 89C51引腳示意圖 單片機(jī)89C51的39個(gè)引腳大致可分為4類(lèi):電源、時(shí)鐘、控制和I/O引腳。 1.電源: (1)
13、VCC:芯片電源,接+5V; (2)VSS:接地端; 2.時(shí)鐘: XTAL1、XTAL2 :晶體振蕩電路反相輸入端和輸出端。 3.控制線:控制線共有4根, (1)ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖 ALE功能:用來(lái)鎖存P0口送出的低8位地址 PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。 (2) PSEN:外ROM讀選通信號(hào)。 (3)RST/VPD:復(fù)位/備用電源。 RST(Reset)功能:復(fù)位信號(hào)輸入端。 VPD功能:在Vcc掉電情況下,接備用電源。 (4)EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。
14、 EA功能:內(nèi)外ROM選擇端。 Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。 4.I/O線 89C51共有4個(gè)8位并行I/O端口:P0、P1、P2、P3口,共32個(gè)引腳。 P3口還具有第二功能,用于特殊信號(hào)輸入輸出和控制信號(hào)(屬控制總線)。 2.1.2顯示系統(tǒng)工作原理 LED顯示電路: 圖2-2 LCD顯示電路 LCD顯示電路,由U33的74HC245驅(qū)動(dòng),以顯示電平狀態(tài)。高電平為“1”狀態(tài),點(diǎn)亮發(fā)光二極管。對(duì)于74HC245,實(shí)物圖如下 圖2-3
15、74HC24實(shí)物圖 圖2-4 74LS245結(jié)構(gòu)圖 引腳定義: 第1腳DIR,為輸入輸出端口轉(zhuǎn)換用,DIR=“1”高電平時(shí)信號(hào)由“A”端輸入“B”端輸出,DIR=“0”低電平時(shí)信號(hào)由“B”端輸入“A”端輸出。 第2~9腳“A”信號(hào)輸入輸出端,A0=B0,A7=B7,A0與B0是一組,如果DIR=“1”O(jiān)E=“0”則A1輸入B1輸出,其它類(lèi)同。如果DIR=“0”O(jiān)E=“0”則B1輸入A1輸出,其它類(lèi)同。 第11~18腳“B”信號(hào)輸入輸出端,功能與“A”端一樣,不再描述。 第19腳OE,若該腳為“1”A/B端的信號(hào)將不導(dǎo)通,只有為“0
16、”時(shí)A/B端才被啟用,該腳也就是起到開(kāi)關(guān)的作用。 第10腳GND,電源地。 第20腳VCC,電源正極。 圖2-5 顯示電路結(jié)構(gòu)圖 八段數(shù)碼管顯示電路由8155的PB0、PB1經(jīng)74LS164“串轉(zhuǎn)并”后輸出得到。6位位碼由8155 的PA0口輸出,經(jīng)uA2003反向驅(qū)動(dòng)后,選擇相應(yīng)顯示位。74LS164是串行輸入并行輸出轉(zhuǎn)換電路,串行輸入的數(shù)據(jù)位由8155的PB0控制,時(shí)鐘位由8155的PB1控制輸出。 寫(xiě)程序時(shí),只要向數(shù)據(jù)位地址輸出數(shù)據(jù),然后向時(shí)鐘位地址輸出一高一低兩個(gè)電平就可以將數(shù)據(jù)位置到74LS16
17、4中,并且實(shí)現(xiàn)移位。向顯示位選通地址輸出高電平就可以點(diǎn)亮相應(yīng)的顯示位。 圖2-6 74LS164引腳結(jié)構(gòu)圖 引腳信息: 符號(hào) 引腳 說(shuō)明 DSA 1 數(shù)據(jù)輸入 DSB 2 數(shù)據(jù)輸入 Q0~Q3 3~6 輸出 GND 7 地 (0 V) CP 8 時(shí)鐘輸入(低電平到高電平邊沿觸發(fā)) /M/R 9 中央復(fù)位輸入(低電平有效) Q4~Q7 10~13 輸出 VCC 14 正電源 功能概述: 74LS164是8位邊沿觸發(fā)式移位寄存器,串行輸入數(shù)據(jù),然后并行輸出
18、。數(shù)據(jù)通過(guò)兩個(gè)輸入端(DSA 或 DSB)之一串行輸入;任一輸入端可以用作高電平使能端,控制另一輸入端的數(shù)據(jù)輸入。兩個(gè)輸入端或者連接在一起,或者把不用的輸入端接高電平,一定不要懸空。時(shí)鐘 (CP) 每次由低變高時(shí),數(shù)據(jù)右移一位,輸入到 Q0, Q0 是兩個(gè)數(shù)據(jù)輸入端(DSA和 DSB)的邏輯與,它將上升時(shí)鐘沿之前保持一個(gè)建立時(shí)間的長(zhǎng)度。主復(fù)位 (MR) 輸入端上的一個(gè)低電平將使其它所有輸入端都無(wú)效,非同步地清除寄存器,強(qiáng)制所有的輸出為低電平。 字段碼: 圖2-7 數(shù)碼管數(shù)字代碼表 2.2軟件設(shè)計(jì)流程圖 圖
19、2-8 設(shè)計(jì)流程圖 P1口的P1.0~P1.6接七只發(fā)光二極管,P1.7接報(bào)警器,P3.4接開(kāi)工啟動(dòng)開(kāi)關(guān),P3.2接外部故障輸入模擬開(kāi)關(guān)。 主程序流程圖:當(dāng)程序啟動(dòng),開(kāi)啟中斷,并使P1、P3口初始化,當(dāng)給start開(kāi)始信號(hào)即P3.4得電時(shí),運(yùn)行主程序中使發(fā)光二極管得電的程序,從L0至L7,按順序每次只點(diǎn)亮一只二極管,并延時(shí)一段時(shí)間,然后點(diǎn)亮下一只二極管,當(dāng)?shù)谄咧欢O管得電延時(shí)完成后,程序跳轉(zhuǎn)到工序1開(kāi)始的地方,按此規(guī)律從工序1到工序7依次循環(huán)進(jìn)行下去。 中斷服務(wù)子程序:當(dāng)外部故障輸入模擬開(kāi)關(guān)即P3.3得電時(shí),運(yùn)行中斷子程序,先使P1=0x00即關(guān)閉輸出保護(hù)現(xiàn)場(chǎng),spe
20、ak=1使報(bào)警器報(bào)警。然后判斷故障情況,如果故障清除,則恢復(fù)現(xiàn)場(chǎng)跳出中斷子程序回到主程序;如果故障沒(méi)有清除,則報(bào)警器繼續(xù)報(bào)警直至故障清除。 3.程序分析 3.1順序控制程序 #include "reg51.h" #define WORD unsigned int #define BYTE unsigned char sbit Speak=P1^7; P1.7對(duì)應(yīng)報(bào)警開(kāi)關(guān),用P1.7對(duì)應(yīng)的得電信號(hào)來(lái)改變是否故障 sbit Start = P3^4; 定義P3口的P3.4為啟動(dòng)開(kāi)關(guān) sbi
21、t test = P1^0; /*定義變量,報(bào)警P1.7;啟動(dòng)P3.4;外部故障開(kāi)關(guān)P3.3*/ void delay(WORD time) { WORD i; for(i=0;i<=time;i++); } /*延時(shí)中斷程序*/ void ErroBl (void) interrupt 2 using 1 { P1=0X00; { Speak=1; delay(200); Speak=0; delay(100); } }
22、 /*外部故障中斷報(bào)警程序,循環(huán)報(bào)警*/ void main() 主函數(shù) { IE=0x84; IP=0x04; PSW=0x00; /*輔助繼電器賦值,允許外部中斷;INT1(------)優(yōu)先級(jí)別最高*/ while(1) 循環(huán) { if(Start==1) /*啟動(dòng)信號(hào)*/ { P1=0X01; /*工序一*/給P1口賦值為00000001,即工序1對(duì)應(yīng)的燈得電,燈亮。
23、 delay(6000); /*工序一延時(shí)*/采用延時(shí)程序,是得電信號(hào)延時(shí),即燈亮延時(shí)6000后滅。 其他燈的亮滅只是對(duì)賦值進(jìn)行更改,來(lái)達(dá)到讓7個(gè)燈互相交替亮滅。 程序分析說(shuō)明: P3.4為開(kāi)工啟動(dòng)開(kāi)關(guān),高電平啟動(dòng)。在主程序中P1 = 0xff表示高電平有效啟動(dòng);IT0 = 0;表示Enable EX0,外部中斷INT0低電平有效;EX0 = 1;表示中斷標(biāo)志位為1時(shí),允許INT0中斷;EA = 1;表示中斷總控制開(kāi)關(guān),為1時(shí)CPU允許中斷;在while語(yǔ)句中,P1 = 0xfe;表示從右第一個(gè)燈亮;Delay(1000);表示延時(shí)1S;往后以此類(lèi)
24、推。但是在Delay(1000);表示進(jìn)入延時(shí)函數(shù)調(diào)用。其中while (cnt-- !=0)表示從1000往下減1。
3.2數(shù)碼管顯示程序
顯示設(shè)計(jì)程序是在八段數(shù)碼顯示設(shè)計(jì)程序的基礎(chǔ)上加以修改得到的。按要求高三位是固定不變的,只需要變化低三位。在低三位遞減到指定數(shù)據(jù)時(shí),保持固定不變。
#include
25、64 XBYTE[0xe102]/* 段控制口(接164時(shí)鐘位) */ #define DAT164 XBYTE[0xe102] /* 段控制口(接164數(shù)據(jù)位) */ #define IN XBYTE[0xe103] /* 鍵盤(pán)讀入口 */ unsigned char LEDBuf[LEDLen]; /* 顯示緩沖 */ code unsigned char LEDMAP[] = { /* 八段管顯示碼 */ 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x3
26、9, 0x5e, 0x79, 0x71 }; void Delay(unsigned char CNT) /*延時(shí)中斷程序*/ { unsigned char i; while (CNT-- !=0) for (i=100; i !=0; i--); } 如何保證最后停在7654398,在前面建立一個(gè)無(wú)限循環(huán)程序,當(dāng)滿足一定條件是跳入該程序就能保證顯示數(shù)碼管把持不變,下面是該程序。 void display() /*按要求最后顯示765398,并用無(wú)限循環(huán)保持不變*/ { while(1) { unsigned ch
27、ar j; LEDBuf[0] = LEDMAP[(7) & 0x0f]; /*六個(gè)八段數(shù)碼管依次賦值*/ LEDBuf[1] = LEDMAP[(6) & 0x0f]; LEDBuf[2] = LEDMAP[(5) & 0x0f]; LEDBuf[3] = LEDMAP[(3) & 0x0f]; LEDBuf[4] = LEDMAP[(9) & 0x0f]; LEDBuf[5] = LEDMAP[(8) & 0x0f]; for(j=0; j<30; j++) /*延時(shí)*/ Display
28、LED(); /*顯示上面賦值數(shù)據(jù)*/ } } 如何讓數(shù)碼管由765432逐漸遞減到7654398,下面是主函數(shù)的編寫(xiě),循環(huán)的編寫(xiě),來(lái)滿足要求。 void main() 主函數(shù) { unsigned char i=2; unsigned char m; unsigned char j; unsigned char n=3; unsigned char k=4; /*定義變量*/ CAddr = mode; while(1) { LEDBu
29、f[0] = LEDMAP[(m+7) & 0x0f]; /*八段數(shù)碼管依次賦值*/ LEDBuf[1] = LEDMAP[(m+6) & 0x0f]; LEDBuf[2] = LEDMAP[(m+5) & 0x0f]; LEDBuf[3] = LEDMAP[(k) & 0x0f]; i--; /*個(gè)位逐漸減1*/ LEDBuf[4] = LEDMAP[(n) & 0x0f]; /*十位八段數(shù)碼管賦值*/ if(i==0)
30、 /*當(dāng)個(gè)位減小為0時(shí),十位減1。同時(shí)給個(gè){ 位賦值9*/ n--; i=9; } LEDBuf[5] = LEDMAP[(i) & 0x0f]; if(n==0&&i==1) { /*當(dāng)十位個(gè)位同時(shí)減小到0時(shí),百位減1; k--; 同時(shí)給個(gè)位和十位賦值9*/ i=9; n=9; } for(j=0; j<30; j++)
31、 DisplayLED(); /* 顯示該次循環(huán)所得數(shù)據(jù) */ if(k==3&&i==8) /*當(dāng)減小到765398時(shí),進(jìn)去子程序display無(wú)限循環(huán)顯示 display(); 765398*/ } } 4.運(yùn)行調(diào)試 4.1軟件調(diào)試過(guò)程 點(diǎn)開(kāi)軟件,進(jìn)入程序編譯系統(tǒng)。點(diǎn)擊菜單欄“項(xiàng)目”,選擇下拉框里面的“新項(xiàng)目”。如下圖4-1所示。 圖 4-1 新建項(xiàng)目 新建項(xiàng)目是要選擇“Atmel”下拉
32、框中的“AT89C51”然后點(diǎn)擊確定。如下圖 圖4-2 目標(biāo)選擇設(shè)備 新建項(xiàng)目之后,需要點(diǎn)擊“新建一個(gè)文件”在項(xiàng)目目錄下新建程序編譯文件。之后點(diǎn)擊保存,需要注意的是保存時(shí)文檔名稱后面要加“.c”。如下圖。 圖4-3 新建程序編譯文件 文件建好之后,就可以開(kāi)始編寫(xiě)程序了。編寫(xiě)程序時(shí)注意減少不必要的編寫(xiě)錯(cuò)誤,注意語(yǔ)句后面的分號(hào)是否需要;每個(gè)程序段的前大括號(hào)和后大括號(hào)相對(duì)應(yīng)。這樣在編譯過(guò)程中能減少很多工作。 添加文件到組,編寫(xiě)程序完成后。右鍵單擊源代碼
33、組1。選擇添加文件到組“源代碼組1”,出現(xiàn)如圖所示對(duì)話框,選擇剛建立的編譯程序文件到源代碼組1,完成添加。 圖 4-4 編譯重建目標(biāo)文 編寫(xiě)完程序添加到組之后開(kāi)始調(diào)試,首先檢查程序是否有錯(cuò)誤,單擊“編譯當(dāng)前文件”,如果輸出窗口中顯示沒(méi)有錯(cuò)誤,那么接著單擊“重建所有目標(biāo)文件”;如果編譯過(guò)程中出現(xiàn)錯(cuò)誤,那么需要按照輸出窗口中提示的錯(cuò)誤改正之后再重建文件。 圖 4-5 設(shè)置調(diào)試接口 重建目標(biāo)文件之后需要先設(shè)置好通訊借口,計(jì)算機(jī)需要與硬件設(shè)備向通訊,需要設(shè)置合理的通訊方式。本調(diào)試中使用(U):Keil Mon
34、itor-51 driver,保護(hù)接口選擇Com3,波特率選用38400,其他默認(rèn)。 圖 4-6 啟動(dòng)調(diào)試 通訊方式選擇后啟動(dòng)調(diào)試,單擊菜單欄中“啟動(dòng)/停止調(diào)試(D)”開(kāi)始調(diào)試。然后可選擇運(yùn)行到指定位置來(lái)檢驗(yàn)程序是否能正常運(yùn)行。一直檢查無(wú)誤后,可直接點(diǎn)擊“運(yùn)行”觀察實(shí)驗(yàn)現(xiàn)象。 4.2安裝調(diào)試及方法 (1)P3.4連K1,P3.3連K2,P1.0—P1.6分別連到L1—L7,P1.7連SIN(電子音響輸入端)。 (2)K1開(kāi)關(guān)撥在上面,K2撥在上面。 (3)用連續(xù)方式從起始地址0580H開(kāi)始運(yùn)行程序(輸入0580后按EXEC鍵),此
35、時(shí)應(yīng)在等待開(kāi)工狀態(tài)。 (4)K1撥至下面(顯低電平),各道工序應(yīng)正常運(yùn)行。 (5)K2撥至下面(低電平),應(yīng)有聲音報(bào)警(人為設(shè)置故障)。 (6)K2撥至上面(高電平),即排除故障,程序應(yīng)從剛才報(bào)警的那道工序繼續(xù)執(zhí)行。 4.3 結(jié)果分析 實(shí)驗(yàn)中延時(shí)的時(shí)間的計(jì)算為DELAY1t=20*125*200*12*2/12000000=1S;?分別代表的含義為:20、125、200是循環(huán)的次數(shù)相乘,12代表一個(gè)指令周期為12個(gè)機(jī)器周期,2代表該指令周期為雙指令周期,12000000表示晶振的頻率,也是機(jī)器周期。? 在實(shí)驗(yàn)中可以觀察到VL1~VL7依次按照1~7秒間隔循環(huán)亮起。在故障出現(xiàn)時(shí)能
36、夠保護(hù)現(xiàn)場(chǎng),待故障消除后從現(xiàn)場(chǎng)又開(kāi)始循環(huán)。 數(shù)碼管上顯示出從765432開(kāi)始以1/10秒的速度遞減至765398,并保持顯示此數(shù)。 5.總結(jié) 通過(guò)本課程設(shè)計(jì),我們大家對(duì)單片機(jī)的工作原理以及運(yùn)用要求有了更進(jìn)一步的了解,對(duì)我們的動(dòng)手能力,編程能力都有很大的幫助。這次課程設(shè)計(jì)的控制要求有兩個(gè),一個(gè)是用七只發(fā)光二極管模擬工業(yè)控制中的7道工序,高電平點(diǎn)亮,每道工序用定時(shí)器進(jìn)行工序間的順序轉(zhuǎn)換。另一個(gè)是在第一個(gè)的基礎(chǔ)上運(yùn)用動(dòng)態(tài)掃描和定時(shí)器1在數(shù)碼管上顯示出從765432開(kāi)始以1/10秒的速度遞減至765398,并保持顯示此數(shù)。我們首先收集
37、了大量的資料,查找有關(guān)集成芯片和器件的文獻(xiàn),只有對(duì)各種元器件有了充分的了解之后我們?cè)趯?shí)際的操作才會(huì)更快。 在完成第一個(gè)發(fā)光二極管的控制要求時(shí),程序全部正確在走,硬件連接也全部正確,但是燈卻一直是全亮的,搞不懂怎么回事。把老師請(qǐng)來(lái)了才知道,是我們?cè)O(shè)置的燈的閃光時(shí)間太短,就是說(shuō)燈是按照要求在點(diǎn)亮,但是由于點(diǎn)亮的速度太快,肉眼分辨不出它是否熄滅過(guò),看起來(lái)就像一直在亮??梢?jiàn)如果不對(duì)整個(gè)設(shè)計(jì)的每一個(gè)細(xì)節(jié)都了解的清清楚楚的話,哪怕你做對(duì)了,你都搞不懂這是怎么回事。這告訴我們,以后無(wú)論在工作還是在生活中,都要認(rèn)真對(duì)待每一個(gè)細(xì)節(jié),不能得過(guò)且過(guò),不求甚解。 在編程方面一直是我的弱項(xiàng),好多程序我都搞不明白,這
38、個(gè)時(shí)候我都會(huì)盡量去問(wèn)同學(xué),在課程設(shè)計(jì)的過(guò)程中,同學(xué)之間的相互幫助是相當(dāng)重要的,有時(shí)自己的一個(gè)坎半天都過(guò)不去,但是說(shuō)不定同學(xué)的一個(gè)點(diǎn)撥,我們就通了。所以,我們要學(xué)會(huì)團(tuán)結(jié)協(xié)作,這樣,才會(huì)事半功倍。這次的課程設(shè)計(jì)教會(huì)我們的不止是專業(yè)知識(shí),在生活道理上也教會(huì)了很多,讓我們終生受益。 6.參考文獻(xiàn) [1] 李廣弟.單片機(jī)基礎(chǔ).北京:北京航空航天大學(xué),2009. [2] 李群芳.微型計(jì)算機(jī)與接口技術(shù).北京:電子工業(yè)出版社,2012. [3] 單片機(jī)綜合仿真實(shí)驗(yàn)系統(tǒng)Keil C實(shí)驗(yàn)指導(dǎo)書(shū).深圳:深圳市雷邁特科技有限公司,2012. [4] 沈慶陽(yáng).8051單片機(jī)實(shí)踐
39、與應(yīng)用.機(jī)電一體化系統(tǒng)設(shè)計(jì).北京:化學(xué)工業(yè)出版社,2009.
[5] 朱定華.單片微機(jī)原理與應(yīng)用.北京:清華大學(xué)出版社,2006.
7.附錄
附錄1 程序清單
工業(yè)順控
#include
40、0 EX0 = 1; EA = 1; while(!start); while(1){ P1 = 0xfe; Delay(1000); P1 = 0xfd; Delay(1000); P1 = 0xfb; Delay(1000); P1 = 0xf7; Delay(1000); P1 = 0xef; Delay(1000); P1 = 0xdf; Delay(1000); P1 = 0xbf; Delay(1000); } } void
41、 Delay(unsigned int cnt)
{
unsigned char i;
while (cnt-- !=0)
for (i=100; i !=0; i--);
}
void int0() interrupt 0
{
EA = 0;
for(bellcnt = 0;bellcnt<20;bellcnt++)
{
bell = 1;
Delay(2);
bell = 0;
Delay(2);
}
EA = 1;
}
數(shù)碼管顯示程序
#include
42、n 6 #define mode 0x03; #define CAddr XBYTE[0xe100]/* 控制字地址 */ #define OUTBIT XBYTE[0xe101]/* 位控制口 */ #define CLK164 XBYTE[0xe102]/* 段控制口(接164時(shí)鐘位) */ #define DAT164 XBYTE[0xe102] /* 段控制口(接164數(shù)據(jù)位) */ #define IN XBYTE[0xe103] /* 鍵盤(pán)讀入口 */ unsigned char LEDBuf[LEDLen]; /* 顯示緩沖 */ code unsi
43、gned char LEDMAP[] = { /* 八段管顯示碼 */ 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 }; void Delay(unsigned char CNT) { unsigned char i; while (CNT-- !=0) for (i=100; i !=0; i--); } void DisplayLED() { unsigned char i, j; uns
44、igned char Pos; unsigned char LED; Pos = 0x20; /* 從左邊開(kāi)始顯示 */ for (i = 0; i < LEDLen; i++) { OUTBIT = 0; /* 關(guān)所有八段管 */ LED = LEDBuf[i]; for (j = 0; j < 8; j++) { /*送164*/ if (LED & 0x80) DAT164 = 1; else DAT164 = 0; CLK164 = CLK164|0x02; CLK164 = CLK16
45、4&0xfd; LED <<= 1; } OUTBIT = Pos; /* 顯示一位八段管 */ Delay(1); Pos >>= 1; /* 顯示下一位 */ } OUTBIT = 0; /* 關(guān)所有八段管 */ } void display() { while(1) { unsigned char j; LEDBuf[0] = LEDMAP[(7) & 0x0f]; LEDBuf[1] = LEDMAP[(6) & 0x0f]; LEDBuf[2
46、] = LEDMAP[(5) & 0x0f]; LEDBuf[3] = LEDMAP[(3) & 0x0f]; LEDBuf[4] = LEDMAP[(9) & 0x0f]; LEDBuf[5] = LEDMAP[(8) & 0x0f]; for(j=0; j<30; j++) DisplayLED(); /* 延時(shí) */ } } void main() { unsigned char i=2; unsigned char m; unsigned char j; unsigned char n=3
47、; unsigned char k=4; CAddr = mode; while(1) { LEDBuf[0] = LEDMAP[(m+7) & 0x0f]; LEDBuf[1] = LEDMAP[(m+6) & 0x0f]; LEDBuf[2] = LEDMAP[(m+5) & 0x0f]; LEDBuf[3] = LEDMAP[(k) & 0x0f]; i--; LEDBuf[4] = LEDMAP[(n) & 0x0f]; if(i==0) { n--; i=9;
48、 } LEDBuf[5] = LEDMAP[(i) & 0x0f]; if(n==0&&i==1) { k--; i=9; n=9; } for(j=0; j<30; j++) DisplayLED(); /* 延時(shí) */ if(k==3&&i==8) display(); } } 附錄2實(shí)物照片(現(xiàn)場(chǎng)接線及調(diào)試顯示照片) 課程設(shè)計(jì)成績(jī)?cè)u(píng)定表 成 績(jī) 評(píng) 定 項(xiàng) 目 比例 得 分 平時(shí)成績(jī)(百分制記分) 30% 業(yè)務(wù)考核成績(jī)(百分制記分) 70% 總評(píng)成績(jī)(百分制記分) 100% 評(píng)定等級(jí) 優(yōu) 良 中 及格 不及格 指導(dǎo)教師(簽名): 20 年 月 日
- 溫馨提示:
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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案