




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、電子與信息工程學院課 程 設 計 報 告2021 2021學年 第 2 學期課程名稱: 單片機課程設計 班 級: 學 號: 姓 名: 指導教師: 2021年 03月1、 目的實習是在教師指導下,學生運用所學理論知識及實驗方法解決實際問題的一種實踐活動,通過這些活動培養學生分析問題和解決問題的能力。具體表現在構造一個控制系統框架的能力;檢索和閱讀文獻資料的能力;綜合運用所學專業知識使之對所設計系統具有獨立調試的能力和故障處理的能力;繪圖能力;計算機運用能力;邏輯思維能力與形象思維能力;文字及口頭表達的能力;撰寫實習報告的能力2、 內容和要求任務1:交通燈(1)根本要求:以單片機為核心設計一個完整
2、的交通燈模擬系統。所謂模擬就是以每組有綠,紅,黃色3支共兩組發光二極管表示交通信號燈,數碼管2只共兩組以遞減的方式表示各色信號燈的時間。在雙干線路口上,交通信號燈的變化是定時的。假定: 放行線,綠燈亮放行25秒,黃燈亮警告5秒,然后紅燈亮禁止。 禁止線,紅燈亮禁止30 秒,然后綠燈亮放行。使兩條路線交替地成為放行線和禁止線,就可以實現定時交通控制。假定以P1口線接6支發光二極管即交通信號燈,因為電路中有反相器的關系,所以口線輸出高電平那么“信號燈熄滅,口線輸出低電平那么“信號燈“亮。(2)進階要求一:在根本要求的根底上,要求紅綠燈時間可通過按鍵設置,例如紅燈60秒,綠燈52秒,黃燈8秒。提示:
3、時間設置一定是要遵循以下規律:紅燈時間綠燈時間黃燈時間;任務2:秒表3過程如實際程序開發、電子制作,詳細說明有關原理、開發過程、調試過程、結果一交通燈芯片介紹SST89E58RD:是8位FLASH FLEX51系列單片機。FLASH FLEX51是在高級FLASH CMOS半導體工藝下設計和生產出來的單片機產品之一。單片機有40K片內FLASH EEPROM程序存儲器,它利用SST的超級FLASH專利技術,這些都是SST的領先技術。超級FLASH存儲器被分為兩個獨立的程序存儲器塊,根本FLASH Block0占用32K字節片內程序存儲空間,二級FLASH Block1占用8K字節的片內程序存儲
4、器空間;8K字節的二級FLASH塊能被映射到32K字節低地址空間它也能從程序計數器中被隱藏掉而用做一個獨立的類似EEPROM的數據存儲器。其具有以下特點:兼容80C51系列,內置超級FLASH存儲器的單片機;工作電壓Vdd=4.55.5;1K*8的內部RAM256Bytes+768Bytes,可以放心使用C語言編程等。8155:Intel8155是可編程RAM/IO芯片,為40腳雙列直插式封裝。有256*8位靜態RAM,2個8位和1個6位可編程并行I/O接口,以及1個14位可編程定時器/計數器??芍迸cMCS-51單片機相接,是MCS-51單片機應用系統中應用最多的芯片之一其內部結構圖和引腳圖如
5、圖1所示圖1在交通燈系統中,四位數碼管是用來顯示交通燈倒計時時間的,一路顯示放行線時間,一路顯示禁止線時間四位數碼管的電路如圖2:圖2四位八段數碼管,屬共陰逆序,高電平有效,所以不帶小數點的0-f的段碼如下:0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH;PROTEUS 仿真圖如圖3:圖3四位數碼管的顯示使用了并行擴展芯片8155,8155與單片機SST89E58RD的接口如圖4圖48155的高8位數據地址線與單片機的P0口相連,CE與AD15相連,IO/M與AD8相連數碼管的八位段選與PB口相連
6、,四位位選與PA口相連。用C語言初始化8155和顯示程序如下:#define PA8155 XBYTE0x7101#define PB8155 XBYTE0x7102#define COM8155 XBYTE0x7100COM8155=0x03;2發光二極管模塊用兩組分別為紅黃綠共六盞LED燈來模擬實際的交通信號燈,時間上遵循紅燈時間等于綠燈時間加黃燈時間。LED燈是低電平有效,硬件電路圖如圖5所示:圖5LED的控制是在定時器0的中斷中實現的,每一秒時間到后,會根據實時時間current_time與紅黃綠時間比擬,來確定相應的兩盞燈亮,程序如下所示: if(current_time<gr
7、een)/主綠燈和從紅燈時間 Allocate(green-current_time)*100+green+yellow-current_time); P1=0xf3; else if(current_time<green+yellow)/主黃從紅 Allocate(green+yellow-current_time)*100+green+yellow-current_time); P1=0xf5; else if(current_time<green*2+yellow)/主紅從綠 Allocate(2*green+2*yellow-current_time)*100+green*
8、2+yellow-current_time); P1=0xde; else / 主紅從黃 Allocate(2*green+2*yellow-current_time)*100+2*green+2*yellow-current_time); P1=0xee;3.進階一的實現即實現交通燈時間的自由修改在程序運行的過程中,要實現綠燈和黃燈時間的修改,我們需要使用一個外部中斷,在中斷中實現要修改的燈的顏色,選定顏色后,再掃描兩個IO口來實現時間的加減具體是掃描硬件電路如圖6所示:圖6中斷程序如下所示:void Ex0() interrupt 0 EA=0;if(!inte0)delay(500);i
9、f(!inte0)traffic_mode+;if(traffic_mode>2) traffic_mode=0;EA=1;4.程序流程圖如下:開始初始化1S到?進入定時器中斷0LED及數碼管顯示Traffic_mode=1?狀態1按鍵處理按鍵是否按下狀態2Traffic_mode=2?主流程圖K1按下進入修改選擇狀態進入加狀態K3按下進入減狀態K4按下返回按鍵流程圖二秒表秒表的要求是數碼管顯示模塊見一中“數碼管顯示模塊,此處略;程序主流程圖如下:開始初始化復位鍵?暫停暫停鍵?顯示時間結束 秒表主流程圖三將兩個程序合并將兩個程序合并需要用一個變量來判斷,我們選擇掃描P1.7口來設定變量的
10、值,然后在中斷和主函數中用變量的值來選擇執行的程序段程序流程圖如下:開始初始化執行交通燈功能Mode=2?執行秒表功能Mode =1?四合并后的程序如下:#include<reg51.h> /頭文件#include<absacc.h>#include <intrins.h>#include<math.h>#define PA8155 XBYTE0x7101 /數碼管位選地址#define PB8155 XBYTE0x7102 /數碼管段選地址#define COM8155 XBYTE0x7100unsignedcharcode Table16=0
11、X0FC,0X60,0X0DA,0X0F2,0X66,0X0B6,0X0BE,0X0E0,0X0FE,0X0F6;unsigned char Buf4=0,0,0,0;/數據緩沖區sbit BTN=P17;sbit inte0=P32;sbit add=P34;sbit minus=P35;unsigned int mode=1; unsigned int traffic_count=0; /交通燈變量unsigned int traffic_mode=0;unsigned int current_time=0;unsigned int green=25;unsigned int yellow
12、=5;unsigned int time_count=0; /秒表變量unsigned int time=0;unsigned int reset; /復位標志位bit i=0; /啟停標志位void delay(unsigned int t)/延遲函數 while(t-);void DISP_LED(unsigned char *Bufptr)/ 數碼管顯示 unsigned char disi;unsigned char BitCT=0X10; for(disi=0;disi<4;disi+) PA8155=BitCT; PB8155=Table*Bufptr+(disi=1 &am
13、p;& mode=2); BitCT=BitCT<<1;/左移一位delay(500); void Allocate(unsigned int a)/ 數據分配 Buf3=a/1000; Buf2=a%1000/100; Buf1=a%100/10; Buf0=a%10;unsigned char ChKey(bit Key)/ 鍵值掃描函數 if(Key=0) delay(20000); if(Key=0) return 1; void Testmode()/鍵值掃描函數 if(ChKey(BTN)=1) mode+; if(mode=3) mode=1; Allocat
14、e(mode*10); unsigned char scankey (unsigned char sec)/加減實現函數 if(!add) delay(20000); sec+; if(!minus) delay(20000); sec-; return sec;void Ex0() interrupt 0 /外部中斷0if(mode=1) /EA=0; if(!inte0) delay(2500); if(!inte0) traffic_mode+; if(traffic_mode=3) traffic_mode=0; /EA=1; else if(mode=2) reset=1;void
15、timer0() interrupt 1 /定時器0中斷 if(mode=1) traffic_count+; if(traffic_count=20) traffic_count=0; current_time=(current_time+1)%(2*yellow+2*green); if(current_time<green) Allocate(green-current_time)*100+green+yellow-current_time); P1=0xf3; else if(current_time<green+yellow) Allocate(green+yellow-
16、current_time)*100+green+yellow-current_time); P1=0xf5; else if(current_time<green*2+yellow) Allocate(2*green+2*yellow-current_time)*100+green*2+yellow-current_time); P1=0xde; else Allocate(2*green+2*yellow-current_time)*100+2*green+2*yellow-current_time); P1=0xee; else if(mode=2) time_count+; if(
17、time_count=2) time_count=0; time+; Allocate(time); TH0=0x4b; TL0=0x40;void Ex1() interrupt 2 /外部中斷1 if(mode=2) i=i;void main() TMOD=0x01; TH0=0x4b; TL0=0x40; IP=0x01; EA=1; ET0=1; EX0=1; IT0=1; EX1=1; IT1=1; COM8155=0x03; TR0=1; Allocate(green*100+green+yellow);while(1) while(mode=1)/交通燈 Testmode();
18、 switch(traffic_mode) case 1: yellow=scankey(yellow); Allocate(yellow*100); break; case 2: green=scankey(green); Allocate(green); break; DISP_LED(Buf); while(mode=2) /秒表 Testmode(); if(i=1) TR0=1; else TR0=0; if(reset=1) /當接收到復位信號后令各緩沖區清零,同時停止計時 time=0; reset=0; i=0; TR0=0; Allocate(0); DISP_LED(Buf);五完整的硬件電路圖圖7秒表的實現是在上圖的根本上去掉LED局部,在獨立按鍵控制模塊換成下面的圖8圖81.通過這次實現我熟悉了51單片機C語言程序的編寫和單片機設計仿真工具PROTEUS的使用。用C編寫程序比匯編更符合人們的思考習慣,開發者可以擺脫與硬件無必要的接觸,更專心的考慮功能和算法而不是考慮一些細節問題,這樣就減少了開發和調試的時間。C語言具有良好的程序結構,適用于模塊化程序設計,因此采用C語言設計單片機應用系統程序時,首先要盡可能地采用結構化的程序設計方法,將功能模塊化,由不同的模塊完成不同的功能;PROTEUS不僅是模擬
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 太湖創意職業技術學院《東方管理學》2023-2024學年第二學期期末試卷
- 2025關于城鎮醫療服務合同范本
- 2025至2031年中國大空間智能主動滅火裝置行業投資前景及策略咨詢研究報告
- 山西教育主題館施工方案
- 2025至2031年中國PS印刷版行業投資前景及策略咨詢研究報告
- 2025至2030年中國附油封型直線運動球軸承數據監測研究報告
- 2025至2030年中國跳接線數據監測研究報告
- 春季婚宴預訂方案范本
- 鋼結構外墻維修施工方案
- 拆除混凝土硬化施工方案
- 反恐防暴器械與戰術應用講解
- 2024年防范電信網絡詐騙知識題庫及答案(共100題)
- 第47 屆世界技能大賽商品展示技術項目技術文件
- (中級技能操作考核)消防設施操作員考試題庫(全真題版)
- 南京工業大學《民法》2022-2023學年第一學期期末試卷
- DB11∕T 1796-2020 文物建筑三維信息采集技術規程
- 【工程法規】王欣 教材精講班課件 38-第6章-6.3-施工單位安全生產責任制度
- 四年級數學下冊 第1講 平移、旋轉和軸對稱學生版(知識梳理+典例分析+舉一反三+階梯訓練)(蘇教版)
- 部編人教版二年級下學期語文期中綜合復習強化練習題〔有答案〕
- 2024北京海淀區初三一模物理試題及參考答案
- 2024年高等教育法學類自考-00229證據法學考試近5年真題附答案
評論
0/150
提交評論