2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  單片機原理及應(yīng)用 </b></p><p><b>  課程設(shè)計報告</b></p><p>  題 目:交通燈控制系統(tǒng)的設(shè)計 </p><p>  專 業(yè):電子信息工程 </p><p>  年 級: </p

2、><p>  學(xué) 號: </p><p>  學(xué)生姓名: </p><p>  聯(lián)系電話: </p><p>  指導(dǎo)老師: </p><p>  完成日期: 2013

3、年 5 月 17 日</p><p>  交通燈控制系統(tǒng)的設(shè)計</p><p><b>  摘 要</b></p><p>  利用STC89C51,晶振,數(shù)碼管,按鍵等元件,制作一個簡易的程序控制的交通燈,實現(xiàn)對南北東西路口的倒計時控制,同時用ST188與比較器LM393構(gòu)成電路,可以實現(xiàn)對車流量的檢測,本系統(tǒng)實現(xiàn)了通過P2口設(shè)置

4、紅、綠燈點亮?xí)r間的功能。紅綠燈循環(huán)點亮,倒計時剩5秒時黃燈閃爍警示(交通燈信號通過P1口輸出,顯示時間通過P0口輸出至兩位數(shù)碼管)。經(jīng)測試,系統(tǒng)達(dá)到課程設(shè)計的基本要求的要求,具有計周期短、可靠性高、實用性強、操作簡單、維護(hù)方便、擴展功能強等優(yōu)點。</p><p>  關(guān)鍵詞:STC89C51,LM393,ST188,定時器,中斷。</p><p>  ABSTRACT

5、 </p><p>  Using STC8951crystals,digital tube,elements such as buttons, make a simple program control of traffic lights, countdown of no

6、rth-south thing intersection control,at the same time with ST188and comparator LM393 circuit, can realize the traffic detection, this system real- ized through P2 port setting the function of red and green light burning

7、 time; Lit cycle traffic lights, countdown with 5 seconds left yellow lights flashing warning (The traffic light signal through P1 port output, display ti</p><p>  Key Words: STC8951, ST188,LM393,reset

8、circuit, timer, interrupt. </p><p><b>  摘 要I</b></p><p>  ABSTRACTII</p><p>  1設(shè)計要求及方案選擇1</p><p><b>  1.1設(shè)計要求1</b></p><p><

9、b>  1.2方案選擇1</b></p><p>  2理論分析與設(shè)計2</p><p>  2.1交通燈控制系統(tǒng)的總電路的分析及設(shè)計2</p><p>  2.2單片機交通控制系統(tǒng)的基本構(gòu)成及原理設(shè)計4</p><p><b>  3電路設(shè)計6</b></p><p>

10、;  3.1總原理圖電路設(shè)計6</p><p>  3.2最小系統(tǒng)電路設(shè)計9</p><p>  3.3按鍵電路設(shè)計9</p><p>  3.4車流量控制電路設(shè)計9</p><p>  3.5數(shù)碼管顯示電路設(shè)計11</p><p>  3.6紅綠燈顯示電路設(shè)計12</p><p>

11、  3.7軟件的設(shè)計13</p><p><b>  4系統(tǒng)測試14</b></p><p>  4.1調(diào)試所用的基本儀器清單14</p><p>  4.2仿真調(diào)試14</p><p>  4.3硬件電路調(diào)試15</p><p>  4.4測試結(jié)果分析15</p>&l

12、t;p><b>  5總結(jié)16</b></p><p><b>  參考文獻(xiàn)17</b></p><p><b>  附錄18</b></p><p>  1 設(shè)計要求及方案選擇</p><p><b>  1.1設(shè)計要求</b></p&

13、gt;<p><b>  基本要求:</b></p><p>  (1)完成交通燈的基本功能。</p><p>  (2)實現(xiàn)對車流的檢測。</p><p>  (3)所用到的電路板必須有作者的名字和學(xué)號。</p><p> ?。?)設(shè)計在2013年5月30日前完成。</p><p>

14、;<b>  擴展部分:</b></p><p>  (1)交通燈的時間可以設(shè)定(及綠燈、紅燈時間的長短)。</p><p> ?。?)具有應(yīng)急情況。</p><p> ?。?)對車流量進(jìn)行清零。</p><p><b>  1.2方案選擇</b></p><p>  方案一

15、:PLC控制交通燈</p><p>  PLC主要應(yīng)用于強電方面的工業(yè)控制,或者整條流水線的控制。雖然比較穩(wěn)定,但是功耗要大,成本也比較高。</p><p>  方案二:單片機控制交通燈</p><p>  單片機具有結(jié)構(gòu)簡單、編程方便、經(jīng)濟、易于連接等優(yōu)點,特別是其內(nèi)部定時器計數(shù)器、中斷系統(tǒng)資源豐富可對交通燈進(jìn)行精確的控制,有應(yīng)用價值,可擴展功能多,靈活性比較強,

16、線路也非常簡單,成本也是比較低的。</p><p>  由于此次課程設(shè)計是單片機設(shè)計,還有結(jié)合從各方面優(yōu)缺點來看,以及簡便方面,成本方面,和結(jié)構(gòu)、控制方面來看。為了同時滿足課程設(shè)計要求,綜上所述,選擇了方案二,做為本設(shè)計的方案選擇。</p><p>  2 理論分析與設(shè)計</p><p>  2.1交通燈控制系統(tǒng)的總電路的分析及設(shè)計</p><

17、p>  交通燈系統(tǒng)由5個部分構(gòu)成,分別是最小系統(tǒng)電路,按鍵電路,流量控制電路,數(shù)碼管顯示電路,紅綠燈顯示電路。這幾個部分電路結(jié)合起來就是一個完整的交通燈系統(tǒng)電路。</p><p>  設(shè)在十字路口,分為東西向和南北向,在任一時刻只有一個方向通行,另一方向禁行,持續(xù)一定時間,經(jīng)過短暫的過渡時間,將通行禁行方向?qū)Q。其具體狀態(tài)如下圖2-1所示。說明:黑色表示亮,白色表示滅。交通狀態(tài)從狀態(tài)1開始變換,直至狀態(tài)6然

18、后循環(huán)至狀態(tài)1,周而復(fù)始,即如表2-1所示:</p><p>  圖2-1 交通狀態(tài)圖</p><p>  通過具體的路口交通燈狀態(tài)的演示分析我們可以把這四個狀態(tài)歸納如下:</p><p>  東西方向紅燈滅,同時綠燈亮,南北方向黃燈滅,同時紅燈亮,倒計時20秒。此狀態(tài)下,東西向禁止通行,南北向允許通行。</p><p>  東西方向綠燈滅,

19、同時黃燈亮,南北方向紅燈亮,倒計時5秒。此狀態(tài)下,除了已經(jīng)正在通行中的其他所以車輛都需等待狀態(tài)轉(zhuǎn)換。</p><p>  南北方向紅燈滅,同時綠燈亮,東西方向黃燈滅,同時紅燈亮,倒計時20秒。此狀態(tài)下,東西向允許通行,南北向禁止通行。</p><p>  南北方向綠燈滅,同時黃燈亮,東西方向紅燈亮,倒計時5秒。此狀態(tài)下,除了已經(jīng)正在通行中的其他所以車輛都需等待狀態(tài)轉(zhuǎn)換。</p>

20、<p>  下面我們可以用圖表表示燈狀態(tài)和行止?fàn)顟B(tài)的關(guān)系如下表2-1所示:</p><p>  表2-1交通狀態(tài)及紅綠燈狀態(tài)表</p><p>  東西南北四個路口均有紅綠黃3燈和數(shù)碼顯示管2個,在任一個路口,遇紅燈禁止通行,轉(zhuǎn)綠燈允許通行,之后黃燈亮警告行止?fàn)顟B(tài)將變換。狀態(tài)及紅綠燈狀態(tài)如表1所示。說明:0表示滅,1表示亮。</p><p>  本設(shè)計

21、能模擬基本的交通控制系統(tǒng),用紅綠黃燈表示禁行,通行和等待的信號發(fā)生,還能進(jìn)行倒計時顯示,通行時間調(diào)整和緊急處理,對車流量進(jìn)行監(jiān)控,并顯示出來,以及清除流量數(shù)據(jù)等功能。</p><p><b> ?。?)倒計時顯示</b></p><p>  倒計時顯示可以提醒駕駛員在信號燈燈色發(fā)生改變的時間、在“停止”和“通過”兩者間作出合適的選擇。駕駛員和行人普遍都愿意選擇有倒計時

22、顯示的信號控制方式,并且認(rèn)為有倒計時顯示的路口更安全。倒計時顯示是用來減少駕駛員在信號燈色改變</p><p>  的關(guān)鍵時刻做出復(fù)雜判斷的1種方法,它可以提醒駕駛員燈色發(fā)生改變的時間,幫助駕駛員在“停止”和“通過”兩者間作出合適的選擇 。</p><p><b> ?。?)時間的設(shè)置</b></p><p>  本設(shè)計中可通過按鍵對時間進(jìn)行手

23、動設(shè)置,增加了人為的可控性,避免自動故障和意外發(fā)生,并再緊急狀態(tài)下,可設(shè)置所有燈變?yōu)榧t燈,同時數(shù)碼管暫停。</p><p><b>  (3)緊急處理</b></p><p>  交通路口出現(xiàn)緊急狀況在所難免,如特大事件發(fā)生,救護(hù)車等急行車通過等,我們必須盡量允許其暢通無阻,畢竟在這種情況下是分秒必爭的,時時刻刻關(guān)系著公共財產(chǎn)安全,個人生死攸關(guān)等。由此在交通控制中增設(shè)

24、禁停按鍵,就可達(dá)到想此目的。</p><p><b>  (4)流量監(jiān)控</b></p><p>  在交通燈路口處設(shè)置了一個流量監(jiān)控儀器,紅外線監(jiān)控,如果有車輛通過的時候,紅外線就會檢測到,對檢測車輛進(jìn)行計數(shù)。</p><p>  2.2單片機交通控制系統(tǒng)的基本構(gòu)成及原理設(shè)計</p><p>  單片機設(shè)計交通燈控制系

25、統(tǒng),可用單片機直接控制信號燈的狀態(tài)變化,基本上可以指揮交通的具體通行,當(dāng)然,接入數(shù)碼管就可以顯示倒計時以提醒行使者,更具人性化。本系統(tǒng)在此基礎(chǔ)上,加入了緊急情況處理與時間調(diào)整功能。單片機交通控制系統(tǒng)的基本構(gòu)成及原理設(shè)計,系統(tǒng)的總體框圖如下圖2-2所示:</p><p>  圖2-2系統(tǒng)的總體框圖</p><p>  據(jù)此,本設(shè)計系統(tǒng)以單片機為控制核心,連接成最小系統(tǒng),由按鍵設(shè)置模塊產(chǎn)生輸入

26、,信號燈狀態(tài)模塊,數(shù)碼管倒計時模塊模塊接受輸出。系統(tǒng)的總體框圖如上圖2-2所示。</p><p>  單片機上電后,系統(tǒng)進(jìn)入正常工作狀態(tài),執(zhí)行交通燈狀態(tài)顯示控制,同時將時間數(shù)據(jù)倒計時輸入到數(shù)碼管上實時顯示。在此過程中隨時調(diào)用急停按鍵和時間調(diào)節(jié)中斷。當(dāng)復(fù)位鍵按下的時候交通燈控制系統(tǒng)重新開始。</p><p>  車流量監(jiān)控,本設(shè)計的車流量監(jiān)控是通過用紅外線進(jìn)行檢測,如果有人行通過的時候紅外線

27、將會檢測到高低電平,進(jìn)而可以控制單片機的I/O口電平的變化,從而達(dá)到檢測,計數(shù)的效果。計數(shù)之后通過數(shù)碼管顯示出來。</p><p><b>  3 電路設(shè)計</b></p><p>  3.1總原理圖電路設(shè)計</p><p>  STC89C51芯片介紹如下:</p><p>  主控芯片采用STC89C51單片機(其管

28、腳圖如圖3-1所示)。單片機,亦稱單片微型計算機。它是把中央處理器(CPU)、數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM)、輸入/輸出端口(I/0)等主要計算機功能部件都集成在一塊集成電路芯片上的微型計算機。計算機的產(chǎn)生加快了人類改造世界的步伐,但是它畢竟體積大。于是,微型計算機(即單片機)在這種情況下誕生了??v觀生活的各個領(lǐng)域,從導(dǎo)彈的導(dǎo)航裝置,到飛機上各種儀表的控制,從計算機的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,到工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,

29、以及我們生活中廣泛使用的各種智能IC卡、電子 寵物等,這些都離不開單片機。</p><p>  圖3-1 STC89C51引腳圖</p><p>  單片機以體積小、功能全、性價比等諸多優(yōu)點而獨具特色,在工業(yè)控制、尖端武器、通信設(shè)備、家用電器等嵌入式應(yīng)用領(lǐng)域中獨占鰲頭。如果說C語言程序設(shè)計課程設(shè)計的基礎(chǔ)課,那么單片機以其系統(tǒng)硬件構(gòu)架完整、價格低廉、學(xué)生能動手等特點,成為工科學(xué)生硬件設(shè)計基礎(chǔ)

30、課。</p><p>  MCS-51單片機是指由美國INTEL公司(大名鼎鼎的INTEL)生產(chǎn)的一系列單片機的總稱,這一系列單片機包括了好些品種,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的產(chǎn)品,該系列其它單片機都是在8051的基礎(chǔ)上進(jìn)行功能的增、減、改變而來的,所以人們習(xí)慣于用8051來稱呼MCS-51系列單片機。</p><p>  80

31、51單片機包含中央處理器(CPU)、程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、定時/計數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說明:</p><p> ?。?)中央處理器(CPU)</p><p>  中央處理器(CPU)是整個單片機的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個

32、單元系統(tǒng)協(xié)調(diào)的工作,完成運算和控制輸入輸出功能等操作。</p><p> ?。?)數(shù)據(jù)存儲器(RAM)</p><p>  8051內(nèi)部有128個8位用戶數(shù)據(jù)存儲單元和128個專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個,可存放讀寫的數(shù)據(jù),運算的中間結(jié)果或用戶定義的字型表。</p&g

33、t;<p> ?。?)程序存儲器(內(nèi)部ROM)</p><p>  程序存儲器用于存放程序和固定不變的常數(shù)等。通常采用只讀存儲器,且其又多種類型,在89系列單片機中全部采用閃存。STC89C51內(nèi)部配置了4KB閃存。定時/計數(shù)器用于實現(xiàn)定時和計數(shù)功能。STC89C5共有2個16位定時/計數(shù)器。</p><p>  (4)并行輸入輸出(I/O)口</p><

34、p>  8051共有4組8位I/O口(P0、 P1、P2或P3),用于對外部數(shù)據(jù)的傳輸。每個口都由1個鎖存器和一個驅(qū)動器組成。它們主要用于實現(xiàn)與外部設(shè)備中數(shù)據(jù)的并行輸入與輸出,有些I/O口還有其他功能。</p><p><b> ?。?)全雙工串行口</b></p><p>  8951內(nèi)置一個全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作

35、異步通信收發(fā)器,也可以當(dāng)同步移位器使用。</p><p><b> ?。?)時鐘電路</b></p><p>  時鐘電路的作用是產(chǎn)生單片機工作所需要的時鐘脈沖序列。</p><p><b> ?。?)中斷系統(tǒng)</b></p><p>  中斷系統(tǒng)的作用主要是對外部或內(nèi)部的終端請求進(jìn)行管理與處理。S

36、TC89C5共有5個中斷源,其中又2個外部中斷源和3個內(nèi)部中斷源。</p><p><b> ?。?)定時/計數(shù)器</b></p><p>  8051有兩個16位的可編程定時/計數(shù)器,以實現(xiàn)定時或計數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。</p><p>  此設(shè)計的總原理圖如下圖3-2所示:</p><p>  3-2交通燈總原

37、理圖</p><p>  3.2最小系統(tǒng)電路設(shè)計</p><p>  單片機最小系統(tǒng)的設(shè)計,由晶振電路和復(fù)位電路構(gòu)成,晶振電路,采用12M的晶振和2個30p的電容組成,復(fù)位電路由,1k電阻,4.7k電阻和22u電容和一個按鍵構(gòu)成。電路圖如下圖3-3所示:</p><p>  圖3-3復(fù)位電路與晶振部分電路圖</p><p><b>

38、  3.3按鍵電路設(shè)計</b></p><p>  本設(shè)計設(shè)計了多個按鍵,其中包括有,流量監(jiān)控按鍵,調(diào)節(jié)紅綠燈時間加減按鍵,應(yīng)急按鍵和調(diào)節(jié)設(shè)置按鍵,車流量清零按鍵,流量顯示關(guān)閉并鎖存按鍵。這幾個部分組成,其按鍵對應(yīng)到I/O如下圖3-4所示:</p><p>  圖3-4按鍵電路及I/O分配部分電路圖</p><p>  3.4車流量控制電路設(shè)計</

39、p><p>  要實現(xiàn)對車流量監(jiān)控,需要在外部電路中加多一個能過通過改變對單片機I/O的高低電平控制的電路模塊。此模塊主要是由ST188紅外線發(fā)送接收和一個比較器LM393以及一個非門74LS04組成。</p><p>  ST188的引腳圖實物如下圖3-5所示,其中A-K為紅外發(fā)射管,C_E為紅外接收管。</p><p>  圖3-5 ST188的引腳圖實物</

40、p><p>  ST188的工作原理是:當(dāng)沒有物體反射紅外線時,ce之間截止,無電流流過,輸出電壓為電源電壓,高電平。當(dāng)有物體反射紅外線時,be飽和導(dǎo)通ce也就導(dǎo)通了,輸出端就相當(dāng)于接地。輸出電壓為低電平。</p><p>  LM393是由兩個獨立的,高精度電壓比較器組成的集成電路,失調(diào)電壓低,最大為2mv。她專為獲取寬電壓范圍、單電源供電而設(shè)計,也可以雙電源供電,而且不論電壓大小,電源的電

41、流都很低,他有一個特性:即使是單電源供電,比較器的共模輸入電壓范圍接近地電平。LM393主要特點如下:</p><p> ?。?)工作電源電壓范圍寬,單電源、雙電源均可工作,單電源。</p><p> ?。?)消耗電流小,Icc=0.8mA。</p><p> ?。?)輸入失調(diào)電壓小,VIO=±2mV。</p><p> ?。?)共

42、模輸入電壓范圍寬,Vic=0~Vcc-1.5V。</p><p> ?。?)輸出與TTL,DTL,MOS,CMOS 等兼容。</p><p> ?。?)輸出可以用開路集電極連接“或”門。</p><p>  所以結(jié)合ST188與LM393一起來應(yīng)用的流量監(jiān)控總原理圖如下3-6所示</p><p>  圖3-6流量監(jiān)控模塊原理圖</p&g

43、t;<p>  其中D1是一個發(fā)光二極管,當(dāng)有電平變化的時候D1會亮滅,當(dāng)沒有電平變化的時候D1會一直亮著,電阻R3是限流作用保護(hù)發(fā)光二極管,R1的電阻取值100,R2電阻取值為10k,R4為一個可調(diào)電阻,可調(diào)電阻輸出的電壓為基準(zhǔn)電壓,通過控制此電壓可以調(diào)節(jié)ST188紅外線的靈敏度,從而可以達(dá)到輸出高低電平控制,進(jìn)而可以達(dá)到檢測是否有車流量通此處路段。</p><p>  3.5數(shù)碼管顯示電路設(shè)計&

44、lt;/p><p>  數(shù)碼管顯示電路,通過P0口和P2口的控制輸出,其中P0口要加多上拉電阻才能使用,由于其內(nèi)部無上拉電阻,作為I/O用時候要加上拉電阻。P0口作為顯示倒計時的輸出端口控制2個2位的數(shù)碼管,其中還需要用到P3.7,P3.6,P3.5,P3.4來進(jìn)行控制位選。J2是東西顯示數(shù)碼管,J5是南北顯示數(shù)碼管,REDCC是流量顯示數(shù)碼管,P2口接流量顯示數(shù)據(jù)。電路接線圖如下3-7所示:</p>

45、<p>  圖3-7 數(shù)碼管顯示部分電路</p><p>  3.6紅綠燈顯示電路設(shè)計</p><p>  紅綠燈電路設(shè)計主要是由12盞燈進(jìn)行控制,東西6轉(zhuǎn)盞燈,南北6盞燈,分別由單片機的6個I/O進(jìn)行控制。電路圖如3-8所示:</p><p>  圖3-8紅綠燈部分電路圖</p><p><b>  3.7軟件的設(shè)計&l

46、t;/b></p><p>  全部控制程序?qū)嶋H上分為若干模塊:按鍵設(shè)置處理程序,狀態(tài)燈控制程序,LED顯示程序緊停程序,中斷服務(wù)子程序,紅綠燈時間調(diào)整程序等。</p><p>  整個軟件程序方面主要分兩大部分:主程序部分和中斷處理程序。流程圖如圖3-9所示。</p><p><b>  圖3-9程序流程圖</b></p>

47、<p>  該智能交通燈控制系統(tǒng)的軟件設(shè)計采用的是順序執(zhí)行并反復(fù)循環(huán)的方法。智能交通燈控制系統(tǒng)在正常工作的情況下,每20s(時間可以自行設(shè)定)循環(huán)變化一次。每個循環(huán)周期在還剩5s時,正在通行路口的黃燈同時點亮并開始閃爍,以提醒路人上的行人及車輛,交通燈即將發(fā)生變化。在此期間若中斷按鍵按下則轉(zhuǎn)入中斷服務(wù)子程序進(jìn)行相關(guān)操作。</p><p><b>  4 系統(tǒng)測試</b></

48、p><p>  4.1調(diào)試所用的基本儀器清單</p><p>  萬用表,5v電源,杜邦線,電烙鐵,數(shù)據(jù)下載串口,仿真軟件,keli軟件。</p><p><b>  4.2仿真調(diào)試</b></p><p>  經(jīng)過仿真測試,此系統(tǒng)的交通燈能夠進(jìn)行正常運轉(zhuǎn),仿真電路圖如下4-1所示:</p><p>

49、  圖4-1仿真軟件系統(tǒng)圖</p><p>  通過仿真軟件測試,最后加載程序進(jìn)去,各項指標(biāo)均到達(dá)了預(yù)期的效果,各項功能都是可以實現(xiàn)的,可以對流量進(jìn)行監(jiān)控,在此次仿真用按鍵代替流量。</p><p><b>  4.3硬件電路調(diào)試</b></p><p>  通過仿真軟件調(diào)試成功之后,我開始做硬件電路出來調(diào)試,硬件電路,剛剛開始做出來的時候,我

50、用萬用表對電路進(jìn)行檢測,是否有段路現(xiàn)象,檢測完畢后,我開始用杜邦線對電路進(jìn)行連接,通過下載數(shù)據(jù)串口把程序下載在單片機中。測試過程中,與仿真軟件里面有些差別,就是數(shù)據(jù)的變得太快了,最終我分析程序,終于解決了問題,程序重新下載進(jìn)去后,交通燈系統(tǒng)能過正常運行。</p><p><b>  4.4測試結(jié)果分析</b></p><p>  測試過程是個艱難的過程,硬件電路布是什

51、么問題,問題是程序的編寫部分,一開始問題是很多的。剛剛開始的時候,下載程序到單片機中的時候,交通燈是無法正常運行的,倒計時和紅綠燈的不能協(xié)調(diào)工作的,要么是時間不對應(yīng),要么就是紅綠燈出錯。這次測試過程中我遇到比較麻煩的問題就是流量監(jiān)控部分地方。我在編寫程序的時候是通過外部中斷1來控制的,在這里我先是用按鍵代替,有低電平是,流量監(jiān)控數(shù)碼管計數(shù)器加1,該過程中必須要與定時器同步,如果不同步的話,當(dāng)流量計算時候,倒計時的時間將會出現(xiàn)閃動。如何能

52、過達(dá)到同步效果,我是通過在定時器中加多一個變量aa,aa的取值也是關(guān)鍵的,aa太小將會出現(xiàn)對按鍵抖動,流量監(jiān)控將不會準(zhǔn)確,比如說,當(dāng)只有一個人通過時候,卻把數(shù)計成2個,這就是aa這個變量參數(shù)作用。下面對aa,當(dāng)有一次電平變化時候?qū)?yīng)計數(shù)值與aa的關(guān)系,(aa數(shù)值1表示延遲50ms)這個調(diào)試的分析數(shù)據(jù)如下表4-1所示:</p><p>  表4-1參數(shù)變量與流量計數(shù)值的關(guān)系</p><p>

53、  所以最終調(diào)試選取aa的值為15的時候是比較合適的,此時計數(shù)是比較準(zhǔn)確的。</p><p>  調(diào)試過程中要實現(xiàn)倒計時,剛剛開始的時候我把程序?qū)戇M(jìn)去的時候并不是倒計時而是亂的時間出現(xiàn),后來我認(rèn)真查看了數(shù)碼顯示表,應(yīng)該把原來的0到9的數(shù)碼表順序做相應(yīng)的調(diào)整才能夠達(dá)到倒計時,或者我把程序做相應(yīng)修改就可以正常工作了。</p><p>  在增加附件功能的時候,要達(dá)到設(shè)置暫停的效果,就必須在進(jìn)入

54、中斷后馬上關(guān)總中斷,才能過把定時器關(guān)掉去實行中斷中的程序。</p><p><b>  5總結(jié)</b></p><p>  此次課程設(shè)計我一共花了差不多兩周的時間,其中差不多有一周時間里面我是在重新學(xué)習(xí)關(guān)于單片機的知識的。此次課程設(shè)計難的地方就是對程序的編寫難,很多地方都不怎么懂,所以我是看了蠻多的視頻之后才開始編寫程序的。在編寫的過程中運用到了蠻多老師以前講的知識,

55、中斷,定時器,延遲程序,函數(shù)聲明,位聲明等,很的新東西。同時經(jīng)過兩周的學(xué)習(xí)我也學(xué)會了不少東西。</p><p>  在焊接過程中,我學(xué)會應(yīng)先合理的布局,并認(rèn)真檢查每個元器件,確保無誤后再焊接。還有,不能急于求成,要焊接一個模塊,檢查一個模塊,免得整個版子焊完后再在一大堆線中檢查,這樣不僅效率低且耗時。自然,我也學(xué)會如何去發(fā)現(xiàn)問題與解決問題的一些方法。在做流量監(jiān)控模塊的時候我做了好幾塊板都不成功剛剛開始,后來我慢慢

56、查找相關(guān)資料,發(fā)現(xiàn)單獨的st188是無法輸出可以驅(qū)動單片機的I/O電平變化的,需要加多一個比較器才可以,終于我經(jīng)過改進(jìn)電路圖,最后終于實現(xiàn)了功能,到達(dá)了老師的要求。</p><p>  至于軟件設(shè)計與調(diào)試,我覺得它主要考驗?zāi)愕乃季S邏輯能力及你對指令的熟悉程度。可以說再整個軟件設(shè)計過程中,我不僅學(xué)會了延時的兩種方法,即軟件延時和硬件延時,還掌握數(shù)碼管的兩種顯示方式(即動態(tài)顯示與靜態(tài)顯示)及其如何選擇。當(dāng)然,通過幾次

57、反復(fù)調(diào)試過程,使得我對C程序指令有了更深刻的理解。此次課程設(shè)計過程我還掌握了一下幾點:</p><p> ?。?)掌握了電子系統(tǒng)設(shè)計的流程,熟悉了各種硬件電路以及軟件編程方法。</p><p>  (2)理解了最單片機的各部分組成及特性。</p><p>  (3)學(xué)會了利用Keil對c語言進(jìn)行編譯過程.更進(jìn)一步加深了對PROTEUS仿真軟件的學(xué)習(xí)。</p&g

58、t;<p>  這次課程設(shè)計,我經(jīng)過自己的努力和通過老師指導(dǎo)和同學(xué)的指點,最后終于把它完成了,我同時也學(xué)會了更多,比如中斷,數(shù)碼管動態(tài)顯示,計數(shù)器等。在不懂的地方我們要虛心向別人請教,只有這樣我們才能夠?qū)W會更多,豐富我自己的知識。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 余發(fā)山,王福忠.單片機原理及應(yīng)用技術(shù) [M].徐州

59、:中國礦業(yè)大學(xué)出版社,2008. </p><p>  [2] 蔡振江.單片機原理及應(yīng)用[M].北京:電子工業(yè)出版社,2007.</p><p>  [3] 吳黎明.單片機原理及應(yīng)用技術(shù)[M].北京:科學(xué)出版社,2003.</p><p>  [4] 劉樂善.微型計算機接口技術(shù)及應(yīng)用[M].北京: 華中科技大學(xué)出版社,2004.</p><p&g

60、t;  [5] 李伯成.基于MCS-51單片機的嵌入式系統(tǒng)的設(shè)計[M].北京:電子工業(yè)出版社,2004.</p><p>  [6] 吳黎明, 王桂棠, 洪添勝.單片機原理及應(yīng)用技術(shù)[ M ] .北京: 科學(xué)出版社,2005.</p><p><b>  附錄</b></p><p><b>  交通燈系統(tǒng)總原理圖</b>

61、</p><p>  源程序 </p><p>  #include<reg52.h></p><p>  #defineuchar unsigned char</p><p>  #defineuint unsigned int</p><p>  /*****定義控制位

62、**********************/</p><p>  /*****定義數(shù)碼管端口********/</p><p>  sbit EW_LED2=P3^7;//EW_LED2控制位 個位</p><p>  sbit EW_LED1=P3^6;//EW_LED1控制位 十位</p><p>  sbit

63、 SN_LED2=P3^5;//SN_LED2控制位 個位</p><p>  sbit SN_LED1=P3^4;//SN_LED1控制位 十位</p><p>  sbit SN_Yellow=P1^6;//南北黃燈</p><p>  sbit EW_Yellow=P1^2;//東西黃燈</p><p&g

64、t;  sbit EW_Red=P1^3;//東西紅燈</p><p>  sbit SN_Red=P1^7;//南北紅燈</p><p>  sbit SN_GREEN=P1^5;/南北綠燈</p><p>  sbit EW_GREEN=P1^1; //東西綠燈</p><p>  /**************功能鍵

65、*************/</p><p>  sbit butt_guanbijishi=P1^4;//無人時候監(jiān)控關(guān)閉顯示并鎖存有人時候自動啟動</p><p>  sbit butt_add=P3^0;//加時間按鈕</p><p>  sbit butt_clern=P1^0;//監(jiān)控流量清零加時間按鈕</p><

66、p>  sbit butt_reduce=P3^1;//減時間按鈕 </p><p>  sbit butt_stop=P3^2;//緊急停止按鈕</p><p>  /*************黃燈閃爍***********/</p><p>  bit Flag_SN_Yellow; //南北黃燈標(biāo)志位</p><p

67、>  bit Flag_EW_Yellow;//東西黃燈標(biāo)志位</p><p>  char Time_EW;//東西方向倒計時</p><p>  char Time_SN;//南北方向倒計時</p><p>  uchar EW=20,SN=15;</p><p>  uchar EWL=4,SNL=4; //程序初始化

68、賦值,正常模式 ,進(jìn)入中斷,改變時間,加或減此數(shù)據(jù)不在有效</p><p>  uchar EW1=20;</p><p>  uchar SN1=15;</p><p>  uchar EWL1=4;</p><p>  uchar SNL1=4;//用于存放修改值的變量 ,進(jìn)入中斷,改變時間,加或減此數(shù)據(jù)不在有效</p>

69、<p>  uchar code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰極</p><p>  //0x3f ,0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d,0x07, 0x7f,0x6f //共陽極</p><p>  uchar code DS

70、Y_CODE[]={0x6f,0x7f,0x07,0x7d,0x6d,0x66,0x4f,0x5b,0x06,0x3f};//流量顯示數(shù)</p><p>  uchar tount=99;aa;//變量,aa用來對流量監(jiān)控的去抖動</p><p>  void init() //初始化</p><p><b>  {</b><

71、/p><p>  IT1=1;//INT0脈沖觸發(fā)</p><p>  TMOD=0x01;//定時器工作于方式1</p><p>  TH0=(65536-50000)/256;//定時器賦初值 每次50ms</p><p>  TL0=(65536-50000)%256;</p><p>  EA=1; //CPU

72、開中斷總允許</p><p>  ET0=1;//開定時中斷</p><p>  EX1=1;//開外部INT1中斷</p><p>  EX0=1; //開外部INT0中斷</p><p>  TR0=1;//啟動定時</p><p>  P2=0x0;//一開始流量關(guān)閉,無人通行</p><p

73、><b>  }</b></p><p>  /**********************延時子程序************************/</p><p>  voidDelay(uchar z)</p><p><b>  {</b></p><p><b>  

74、uint x,y;</b></p><p>  for(x=z;x>0;x--)</p><p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p>  /*****************顯示子函數(shù)*************************

75、*///數(shù)碼管為共陰極,低電平有效</p><p>  voidDisplay(void)</p><p><b>  {</b></p><p>  char h,l;//定義中間變量,東西方向</p><p>  h=Time_EW/10;//十位數(shù)</p><p>  l=

76、Time_EW%10; //個位9-0;</p><p>  P0=table[l]; //輸送個位數(shù)</p><p>  EW_LED2=0; //打開位選個位</p><p>  Delay(1); //延時,</p><p>  EW_LED2=1; //關(guān)閉</p><p>  P0=table[h

77、]; //輸送十位數(shù)</p><p>  EW_LED1=0; //打開十位位選</p><p>  Delay(1); //</p><p>  EW_LED1=1; //關(guān)閉十位選</p><p>  h=Time_SN/10; // 檢測十位數(shù)位多少2-0南北方向</p><p>  l=Time_SN%

78、10;// 檢測個位數(shù)為多少9-0;</p><p>  P0=table[l]; //輸送個位值</p><p>  SN_LED2=0; //打開位選個位</p><p>  Delay(2); // 延時</p><p>  SN_LED2=1;//關(guān)閉</p><p>  P0=table

79、[h];//輸送十位2-0</p><p>  SN_LED1=0; // 打開十位位選</p><p>  Delay(2);//延時</p><p>  SN_LED1=1;//關(guān)閉十位位選</p><p><b>  } </b></p><p>  /********

80、**************外部1中斷服務(wù)程序************************/</p><p>  void ex1() interrupt 2</p><p><b>  {</b></p><p>  EX1=0; //先關(guān)閉中斷,計數(shù)器計數(shù)一下先,后面再開,去抖</p><p>  P2

81、=DSY_CODE[tount%10]; //流量監(jiān)控 tount開始=9</p><p>  tount=tount-1; //由于定義的數(shù)是 【10】={9876543210}</p><p><b>  aa=0;</b></p><p><b>  }</b></p><p>  

82、/**********************外部0中斷服務(wù)程序**優(yōu)先級**********************/</p><p>  void ex0() interrupt 0</p><p><b>  {</b></p><p><b>  uchar i; </b></p><p>

83、;  i=P1 ; //保存紅綠黃燈的狀態(tài)</p><p>  P1=0x77;//東南西北全部亮紅燈;</p><p>  EA=0;//關(guān)總中斷</p><p>  Delay(1000);</p><p>  while(1) //沒有檢測到按鍵一直掃描</p><p><b>  {</b&

84、gt;</p><p>  if(butt_add==0) //時間加 </p><p><b>  { </b></p><p>  Delay(500); </p><p>  Time_EW++; //加1</p><p>  Time_SN++; //加1</

85、p><p>  if(Time_EW>=100) </p><p>  { </p><p>  Time_EW=99; Time_SN=94; </p><p><b>  } </b></p><p>  EW1=Time_EW,SN1=Time_SN, E

86、WL1=4,SNL1=4;//進(jìn)入中斷重新給初值 </p><p><b>  } </b></p><p>  if(butt_reduce==0) //進(jìn)入中斷減時間 </p><p><b>  { </b></p><p>  Delay(500);

87、//延遲按鈕時間 </p><p>  Time_EW-- ; </p><p>  Time_SN--; //按一次,調(diào)時間減1 </p><p>  if(Time_EW<=10) //最低可以調(diào)到10秒東西 </p><p>  { </p>&

88、lt;p>  Time_EW=10; Time_SN=5; //南北最低5秒 </p><p><b>  } </b></p><p>  EW1=Time_EW,SN1=Time_SN,EWL1=4,SNL1=4;//進(jìn)入中斷重新給初值,實現(xiàn)存儲記憶功能</p><p><b>  } </b

89、></p><p>  if(butt_stop==0)//當(dāng)再次檢測到低電平時候離開中斷服務(wù)程序</p><p><b>  { </b></p><p>  Delay(500);break; //延時去抖</p><p><b>  }</b></p><p>

90、  Display();//顯示暫停時候的時間 </p><p><b>  }</b></p><p>  EA=1;//開總中斷</p><p>  P1=i;//中斷結(jié)束讀取還原紅綠燈的狀態(tài)-</p><p><b>  }</b></p><p>  /*

91、*********************T0中斷服務(wù)程序****方式1 ************優(yōu)先級2***/</p><p>  void timer0(void)interrupt 1 </p><p><b>  {</b></p><p>  uchar count;</p><p>  TH0=(65536

92、-50000)/256;TL0=(65536-50000)%256;</p><p>  count++;aa++;</p><p>  if(count==5)//閃動0.25秒先亮</p><p><b>  {</b></p><p>  if(Flag_SN_Yellow==1) //測試南北黃燈標(biāo)

93、志位</p><p>  {SN_Yellow=~SN_Yellow;}//SN_Yellow初始值位0</p><p>  if(Flag_EW_Yellow==1) //測試東西黃燈標(biāo)志位</p><p>  {EW_Yellow=~EW_Yellow;} //EW_Yellow初始值位0</p><p><b>  }&

94、lt;/b></p><p>  if(count==10)</p><p><b>  {</b></p><p>  Time_EW--; //東西亮0.5秒</p><p>  Time_SN--; //南北亮0.5秒</p><p>  if(Flag_SN

95、_Yellow==1)//測試南北黃燈標(biāo)志位</p><p>  {SN_Yellow=~SN_Yellow;}</p><p>  if(Flag_EW_Yellow==1)//測試東西黃燈標(biāo)志位</p><p>  {EW_Yellow=~EW_Yellow;}///再滅</p><p>  count=0;//閃動0.

96、25秒</p><p>  }</p><p>  if(butt_clern==0)</p><p><b>  { </b></p><p>  tount=99; //重新裝值,起到清零的效果</p><p>  P2=DSY_CODE[tount%10]; tount

97、=tount-1;</p><p><b>  }</b></p><p>  if(butt_guanbijishi==0)</p><p>  { P2=0x00;}</p><p>  if(aa==15)//重新開中斷</p><p>  {EX1=1;aa=0;</p>&

98、lt;p><b>  }</b></p><p><b>  }</b></p><p>  void zhuangtai()</p><p><b>  {</b></p><p><b>  while(1)</b></p><

99、;p>  { </p><p>  /*******S1狀態(tài)******** 東西紅燈20秒 ,南北綠燈15秒, **/</p><p>  Flag_EW_Yellow=0; //EW關(guān)黃燈顯示信號</p><p>  Time_EW=EW;Time_SN=SN;//第一次賦</p><p>  

100、while(Time_SN>=0) //倒計時大于等于0秒時候</p><p><b>  {</b></p><p>  P1=0xd7; //南北通行,東西紅燈 11010111南北綠燈通行15東西紅燈15秒</p><p>  Display();</p><p><b>  }</b&

101、gt;</p><p>  /*******S2狀態(tài)*****南北黃燈閃5秒*****/</p><p>  Time_SN=SNL; //重裝5秒,進(jìn)行倒計時 ,0-4</p><p>  SN_GREEN=1; //關(guān)綠燈</p><p>  SN_Red=1; //東西紅燈還亮5秒,一共亮了20秒</

102、p><p>  while(Time_SN>=0) //此時是黃燈時間</p><p>  {Flag_SN_Yellow=1;//南北開黃燈信號位</p><p>  EW_Red=0; //南北黃燈亮,等待停止信號,東西紅燈</p><p>  Display();</p><p><b>

103、;  }</b></p><p>  /***********賦值**********/</p><p>  EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1;</p><p>  /*******S3狀態(tài)*** 南北紅燈20秒 ,東西綠燈15秒*******/</p><p>  Flag_SN_Yellow=0;

104、 //SN關(guān)黃燈顯示信號</p><p>  Time_EW=SN;Time_SN=EW;</p><p>  while(Time_EW>=0)</p><p>  {P1=0x7d; //開始對紅綠燈賦值,東西通行,南北紅燈</p><p>  Display(); }</p><p>  /******

105、*S4狀態(tài)*****東西黃燈閃5秒*****/</p><p>  Time_EW=EWL;//重新裝5秒進(jìn)行倒計時 0-4</p><p>  EW_Red=1; //關(guān)紅燈</p><p>  EW_GREEN=1;///關(guān)綠燈 </p><p>  while(Time_EW>=0)</p><p>&l

106、t;b>  {</b></p><p>  Flag_EW_Yellow=1; //EN開黃燈信號位</p><p>  SN_Red=0;//EW黃燈閃爍亮,等待停止信號,SN紅燈</p><p>  Display();</p><p><b>  }</b></p><p&g

107、t;  /***********賦值**********/</p><p>  EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*********************主程序**

108、********************/</p><p>  voidmain()</p><p><b>  { </b></p><p><b>  init();</b></p><p>  zhuangtai();</p><p><b>  }<

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論