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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  單片機(jī)課程設(shè)計(jì)報(bào)告書(shū)</p><p> 課題名稱(chēng)基于單片機(jī)的交通燈設(shè)計(jì)</p><p><b>  目 錄</b></p><p>  一、緒言 …………………………………………………………………………… 1</p><p> ?。ㄒ唬?設(shè)計(jì)任務(wù)………………………………………………………………

2、 3</p><p> ?。ǘ?交通信號(hào)燈控制方案選擇…………………………………………… 3</p><p>  二、系統(tǒng)設(shè)計(jì) ……………………………………………………………………… 4</p><p> ?。ㄒ唬?硬件電路設(shè)計(jì)………………………………………………………… 4</p><p> ?。ǘ?程序流程圖…………………………………

3、………………………… 4</p><p>  (三) 匯編語(yǔ)言程序設(shè)計(jì)…………………………………………………… 4</p><p>  三、交通信號(hào)燈控制器仿真 ……………………………………………………… 5</p><p> ?。ㄒ唬?系統(tǒng)仿真 ………………………………………………………………5</p><p>  (二) 工作原理分析……

4、…………………………………………………… 5</p><p>  結(jié) 束 語(yǔ) …………………………………………………………………………… 6</p><p>  參考文獻(xiàn)………………………………………………………………………………8</p><p><b>  一、緒 言</b></p><p><b> ?。?/p>

5、一)設(shè)計(jì)任務(wù)</b></p><p>  1、交通信號(hào)燈的起源</p><p>  1968年,聯(lián)合國(guó)《道路交通和道路標(biāo)志信號(hào)協(xié)定》對(duì)各種信號(hào)燈的含義作了規(guī)定。綠燈是通行信號(hào),面對(duì)綠燈的車(chē)輛可以直行,左轉(zhuǎn)彎和右轉(zhuǎn)彎,除非另一種標(biāo)志禁止某一種轉(zhuǎn)向。左右轉(zhuǎn)彎車(chē)輛都必須讓合法地正在路口內(nèi)行駛的車(chē)輛和過(guò)人行橫道的行人優(yōu)先通行。紅燈是禁行信號(hào),面對(duì)紅燈的車(chē)輛必須在交叉路口的停車(chē)線后停車(chē)。

6、黃燈是警告信號(hào),面對(duì)黃燈的車(chē)輛不能越過(guò)停車(chē)線,但車(chē)輛已十分接近停車(chē)線而不能安全停車(chē)時(shí)可以進(jìn)入交叉路口。</p><p>  2、本次設(shè)計(jì)要實(shí)現(xiàn)的目標(biāo) </p><p>  通過(guò)對(duì)早期交通燈發(fā)展現(xiàn)狀,結(jié)合自己本次設(shè)計(jì)的課題,本次設(shè)計(jì)任務(wù)要完成的目標(biāo)是:</p><p>  利用一片AT89C51單片機(jī),8255并行通用接口芯片一片,74LS07兩片,MAX692‘看門(mén)

7、狗’一片,共陰極的七段數(shù)碼管兩個(gè)雙向晶閘管若干,7805三端穩(wěn)壓電源一個(gè),紅、黃、綠交通燈各兩個(gè),開(kāi)關(guān)鍵盤(pán)實(shí)現(xiàn)東西南北路口交通控制。</p><p> ?。ǘ?交通信號(hào)燈控制方案選擇</p><p>  1、交通信號(hào)燈的控制方案論證</p><p>  東西、南北兩干道交于一個(gè)十字路口,各干道有一組紅、黃、綠三色的指示燈,指揮車(chē)輛和行人安全通行。紅燈亮禁止通行,綠

8、燈亮允許通行。黃燈亮提示人們注意紅、綠燈的狀態(tài)即將切換,且黃燈燃亮?xí)r間為東西、南北兩干道的公共停車(chē)時(shí)間。設(shè)東西道比南北道的車(chē)流量大,指示燈燃亮的方案如表2。</p><p><b>  表二說(shuō)明:</b></p><p> ?。?)當(dāng)東西方向?yàn)榧t燈,此道車(chē)輛禁止通行,東西道行人可通過(guò);南北道為綠燈,此道車(chē)輛通過(guò),行人禁止通行。時(shí)間為60秒。</p>&l

9、t;p> ?。?)黃燈閃爍5秒,警示車(chē)輛和行人紅、綠燈的狀態(tài)即將切換。 </p><p> ?。?)當(dāng)東西方向?yàn)榫G燈,此道車(chē)輛通行;南北方向?yàn)榧t燈,南北道車(chē)輛禁止通過(guò),行人通行。時(shí)間為80秒。 東西方向車(chē)流大 通行時(shí)間長(zhǎng)。</p><p>  (4)這樣如上表的時(shí)間和紅、綠、黃出現(xiàn)的順序依次出現(xiàn)這樣行人和車(chē)輛就能安全暢通的通行。</p><p> 

10、 2、單片機(jī)的控制方案論證</p><p>  根據(jù)設(shè)計(jì)任務(wù)書(shū)中的設(shè)計(jì)要求,可選用Atmel公司的89系列單片機(jī),用AT89C8031來(lái)完成本次設(shè)計(jì)??刂品桨溉缦拢?lt;/p><p><b>  圖6 </b></p><p><b>  二、系統(tǒng)設(shè)計(jì)</b></p><p><b>

11、  (一)硬件電路設(shè)計(jì)</b></p><p>  1、交通信號(hào)燈控制電路圖</p><p>  8051單片機(jī)控制交通信號(hào)燈并實(shí)現(xiàn)實(shí)時(shí)顯示倒計(jì)時(shí)。單片機(jī)控制交通信號(hào)燈的電路原理如圖2-1所示。</p><p>  圖2-1 交通信號(hào)燈控制線路圖</p><p> ?。?)開(kāi)關(guān)鍵盤(pán)輸入交通燈初始時(shí)間,通過(guò)8051單片機(jī)P1輸入到系

12、統(tǒng)。</p><p> ?。?)由8051單片機(jī)定時(shí)器每秒鐘通過(guò)P0口向8255的數(shù)據(jù)口送信息,由8255的PA 口顯示紅、綠、黃燈的燃亮情況;由8255的PC口顯示每個(gè)燈的燃亮?xí)r間。</p><p> ?。?)8051通過(guò) 設(shè)置 各個(gè)信號(hào)等的燃亮?xí)r間、通過(guò)8031設(shè)置,綠、紅時(shí)間分別為60秒、80秒循環(huán)由8051的 P0口向8255的數(shù)據(jù)口輸出。</p><p>

13、;  (4)通過(guò)8051單片機(jī)的P3.0位來(lái)控制系統(tǒng)是工作或設(shè)置初值,當(dāng).牌位0就對(duì)系統(tǒng)進(jìn)行初始化,為1系統(tǒng)就開(kāi)始工作。</p><p> ?。?)紅燈倒計(jì)時(shí)時(shí)間,當(dāng)有車(chē)輛闖紅燈時(shí),啟動(dòng)蜂鳴器進(jìn)行報(bào)警,3S后然后恢復(fù)正常。</p><p> ?。?)增加每次綠燈時(shí)間車(chē)流量檢測(cè)的功能,并且通過(guò)查詢(xún)P2.0端口的電平是否為低,開(kāi)關(guān)按下為低電平,雙位數(shù)碼管顯示車(chē)流量,直到下一次綠燈時(shí)間重新記入。

14、</p><p>  (7)綠燈時(shí)間倒計(jì)時(shí)完畢,重新循環(huán)。</p><p><b>  2、主要元器件選擇</b></p><p>  主要元器件選用型號(hào)和數(shù)量如表2-1所示:</p><p>  表2-1 主要元器件清單</p><p><b> ?。ǘ?程序流程圖</b&g

15、t;</p><p><b>  1、延時(shí)模塊</b></p><p>  延時(shí)方法可以有兩種一中是利用MCS-51內(nèi)部定時(shí)器才生溢出中斷來(lái)確定1秒的時(shí)間,另一種是采用軟延時(shí)的方法。</p><p><b>  軟件延時(shí)</b></p><p>  MCS-51的工作頻率為2-12MHZ,我們選用的

16、8031單片機(jī)的工作頻率為6MHZ。機(jī)器周期與主頻有關(guān),機(jī)器周期是主頻的12倍,所以一個(gè)機(jī)器周期的時(shí)間為12*(1/6M)=2us。我們可以知道具體每條指令的周期數(shù),這樣我們就可以通過(guò)指令的執(zhí)行條數(shù)來(lái)確定1秒的時(shí)間。</p><p>  具體的延時(shí)程序分析:</p><p>  DELAY:MOV R4,#08H 延時(shí)1秒子程序</p><p>  DE2:L

17、CALL DELAY1 </p><p>  DJNZ R4,DE2</p><p><b>  RET</b></p><p>  DELAY1:MOV R6,#0 延時(shí)125ms 子程序</p><p><b>  MOV R5,#0</b></p><p>  

18、DE1: DJNZ R5,$</p><p>  DJNZ R6,DE1</p><p><b>  RET</b></p><p>  MOV Rn,#DATA 字節(jié)數(shù)數(shù)為2 機(jī)器周期數(shù)為1</p><p>  所以此指令的執(zhí)行時(shí)間為2ms </p><p>  DELAY1

19、為一個(gè)雙重循壞 循環(huán)次數(shù)為256*256=65536 所以延時(shí)時(shí)間=65536*2=131072us 約為125us </p><p>  DELAY R4設(shè)置的初值為8 主延時(shí)程序循環(huán)8次,所以125us*8= 1秒</p><p>  由于單片機(jī)的運(yùn)行速度很快其他的指令執(zhí)行時(shí)間可以忽略不計(jì)。</p><p><b>  硬件延時(shí)</b>

20、</p><p> ?。?)計(jì)數(shù)器初值計(jì)算</p><p>  定時(shí)器工作時(shí)必須給計(jì)數(shù)器送計(jì)數(shù)器初值,這個(gè)值是送到TH和TL中的。他是以加法記數(shù)的,并能從全1到全0時(shí)自動(dòng)產(chǎn)生溢出中斷請(qǐng)求。因此,我們可以把計(jì)數(shù)器記滿為零所需的計(jì)數(shù)值設(shè)定為C和計(jì)數(shù)初值設(shè)定為T(mén)C 可得到如下計(jì)算通式:</p><p><b>  TC=M-C</b></p&g

21、t;<p>  式中,M為計(jì)數(shù)器摸值,該值和計(jì)數(shù)器工作方式有關(guān)。在方式0時(shí)M為213 ;在方式1時(shí)M的值為216;在方式2和3為28</p><p><b> ?。?) 計(jì)算公式</b></p><p>  T=(M-TC)T計(jì)數(shù)</p><p>  或TC=M-T/T計(jì)數(shù)</p><p>  T計(jì)數(shù)是單片

22、機(jī)時(shí)鐘周期TCLK的12倍;TC為定時(shí)初值</p><p>  如單片機(jī)的主脈沖頻率為TCLK12MHZ ,經(jīng)過(guò)12分頻</p><p>  方式0   TMAX=213 *1微秒=8.192毫秒</p><p>  方式1   TMAX=216?。蔽⒚耄?5.536毫秒</p><p>  顯然1秒鐘已經(jīng)超過(guò)了計(jì)數(shù)器的最大定時(shí)間,所以我們

23、只有采用定時(shí)器和軟件相結(jié)合的辦法才能解決這個(gè)問(wèn)題.</p><p> ?。?) 相應(yīng)程序代碼</p><p><b>  主程序</b></p><p>  定時(shí)器需定時(shí)50毫秒,故T0工作于方式1。初值:TC=M-T/ T計(jì)數(shù)=216-50ms/1us=15536=3CBOH</p><p><b>  O

24、RG 1000H</b></p><p>  START: MOV TMOD, #01H ; 令T0為定時(shí)器方式1</p><p>  MOV TH0, #3CH ;裝入定時(shí)器初值</p><p>  MOV TL0, #BOH;</p><p>  MOV IE, #82H ;

25、開(kāi)T0中斷</p><p>  SEBT TR0;啟動(dòng)T0計(jì)數(shù)器</p><p>  MOV RO,#14H;軟件計(jì)數(shù)器賦初值</p><p>  LOOP:SJMP ;等待中斷</p><p>  3、中斷服務(wù)程序流程圖</p><p> ?。?)緊急狀態(tài)時(shí),采用中斷方式,通過(guò)按鈕,使單片機(jī)執(zhí)行中斷

26、服務(wù)程序,讓干線紅燈、支線紅燈同時(shí)亮。調(diào)整放行時(shí)間時(shí),也采用中斷方式,通過(guò)按鈕,使單片機(jī)執(zhí)行中斷服務(wù)程序,讓放行時(shí)間延長(zhǎng)或縮短。中斷服務(wù)程序流程圖如下:</p><p>  ORG 000BH</p><p>  AJMP BRTO</p><p>  ORG 00BH</p><p>  BRTO:DJNZ R0,NEXT<

27、/p><p>  AJMP TIME ; 跳轉(zhuǎn)到時(shí)間及信號(hào)燈顯示子程序 </p><p>  DJNZ:MOV R0,#14H;恢復(fù)R0值</p><p>  MOV TH0, #3CH ;重裝入定時(shí)器初值</p><p>  MOV TL0, #BOH;</p><p>  MOV

28、IE, #82H </p><p><b>  RET1</b></p><p><b>  END</b></p><p>  4、時(shí)間及信號(hào)燈的顯示</p><p><b>  (1)顯示原理:</b></p><p>  當(dāng)定時(shí)器定時(shí)為1秒,時(shí)程序

29、跳轉(zhuǎn)到時(shí)間顯示及信號(hào)燈顯示子程序,它將依次顯示信號(hào)燈時(shí)間 ,同時(shí)一直顯示信號(hào)燈的顏色,這時(shí)在返回定時(shí)子程序定時(shí)一秒,在顯示黃燈的下一個(gè)時(shí)間,這樣依次把所有的燈色的時(shí)間顯示完后在重新給時(shí)間計(jì)數(shù)器賦初值 ,重新進(jìn)入循環(huán)。 </p><p> ?。?)8255PA口輸出信號(hào)接信號(hào)燈:</p><p>  由于發(fā)光二極管為共陽(yáng)極接法,輸出端口為低電平,對(duì)應(yīng)的二極管發(fā)光,所以可以用置位方法點(diǎn)亮紅

30、,綠,黃發(fā)光二極管。</p><p>  (3) 8255輸出信號(hào)與數(shù)碼管的連接:</p><p>  LED 燈的顯示原理:通過(guò)同名管腳上所加電平的高低來(lái)控制發(fā)光二極管是否點(diǎn)量而顯示不同的字形如 SP,g,f,e,d,c,b,a 管角上加上7FH所以?。樱猩蠟椋胺?,不亮其余為TTL高電平,全亮則顯示為8</p><p><b>  采用共陰級(jí)連接:<

31、;/b></p><p>  其中 PC0\PB0-a,</p><p>  PC1\PB1-b, </p><p>  PC2\PB2-c,</p><p>  PC3\PB3-d,</p><p>  PC4\PB4-e, </p><p>  PC5\PB5-f,</p&

32、gt;<p><b>  PC6\PB6-g</b></p><p>  PC7\PB7 -SP接地</p><p>  表 3 驅(qū)動(dòng)代碼表</p><p> ?。?) 8255與8051的連接:</p><p>  用8051的P0 口的 p0.7 連接8255的片選信號(hào)cs 我們用8031的地址采用

33、全譯碼方式,當(dāng)p0.7 =0 時(shí)片選有效, 其他無(wú)效, p0.1 p0.1 用于選擇8255端口</p><p>  P0.7 p0.6 p0.5 p0.4 p0.3 p0.2 P0.1 P0.0</p><p>  A7 A6 A5 A4 A3 A2 A1 A0</p><p>  1 X X X X

34、 X 0 0 00H為8255 的PA口</p><p>  1 X X X X X 0 1 01H 為8255的PB口</p><p>  1 X X X X X 1 0 02H 為8255的PC口</p><p>  1 X X X

35、 X X 1 1 03H 為8255的控制口</p><p>  由于8051是分時(shí)對(duì)8255和儲(chǔ)存器進(jìn)行訪問(wèn)所以8051的P0口不會(huì)發(fā)生沖突</p><p><b>  流程圖如圖所示</b></p><p><b>  圖8</b></p><p> ?。ㄈ?匯編語(yǔ)言程

36、序設(shè)計(jì)</p><p>  ORG 0000H ;主程序的入口地址</p><p>  LJMP MAIN ;跳轉(zhuǎn)到主程序的開(kāi)始處</p><p>  ORG 0003H ;外部中斷0的中斷程序入口地址 </p><p>  ORG 000BH ;定時(shí)器0的中斷程序入口地址<

37、;/p><p>  LJMP T0_INT ;跳轉(zhuǎn)到中斷服務(wù)程序處</p><p>  ORG 0013H ;外部中斷1的中斷程序入口地址 </p><p>  MAIN : MOV SP,#50H</p><p>  MOV IE,#8EH ;CPU開(kāi)中斷,允許T0中斷,T1中斷和外部中斷1中

38、斷</p><p>  MOV TMOD,#51H ;設(shè)置T1為計(jì)數(shù)方式,T0為定時(shí)方式,且都工作于模式1</p><p>  MOV TH1,#00H ;T1計(jì)數(shù)器清零</p><p>  MOV TL1,#00H</p><p>  SETB TR1 ;啟動(dòng)T1計(jì)時(shí)器</p><p&

39、gt;  SETB EX1 ;允許INT1中斷</p><p>  SETB IT1 ;選擇邊沿觸發(fā)方式</p><p>  MOV DPTR ,#0003H</p><p>  MOV A, #80H ;給8255賦初值,8255工作于方式0</p><p>  MOVX @DPTR, A<

40、;/p><p>  //ST0:MOV P3 ,#0F0H</p><p>  AGAIN: JB P3.1,N0 ;判斷是否要設(shè)定東西方向紅綠燈時(shí)間的初值,若P3.1為1 則跳轉(zhuǎn)</p><p>  MOV A,P1 </p><p>  JB P1.7,RED ;判斷P1.7是否為1,若為1則設(shè)定紅燈時(shí)間,否則設(shè)

41、定綠燈時(shí)間 </p><p>  MOV R0,#00H ;R0清零</p><p>  MOV R0,A ;存入東西方向綠燈初始時(shí)間</p><p><b>  MOV R3,A</b></p><p>  LCALL DISP1</p><p>  LCALL

42、DELAY</p><p>  AJMP AGAIN</p><p>  RED: MOV A,P1</p><p>  ANL A,#7FH ;P1.7置0</p><p>  MOV R7,#00H ;R7清零</p><p>  MOV R7,A ;存入東西方向紅燈初始時(shí)間&l

43、t;/p><p><b>  MOV R3,A</b></p><p>  LCALL DISP1</p><p>  LCALL DELAY</p><p>  AJMP AGAIN</p><p>  -------------------------------------------</

44、p><p>  N0: SETB TR0 ;啟動(dòng)T0計(jì)時(shí)器</p><p>  MOV 76H,R7 ;紅燈時(shí)間存入76H</p><p>  N00: MOV A,76H ;東西方向禁止,南北方向通行</p><p>  MOV R3,A </p><p&g

45、t;  MOV DPTR,#0000H ;置8255A口,東西方向紅燈亮,南北方向綠燈亮</p><p>  MOV A,#0DDH</p><p>  MOVX @DPTR, A</p><p>  N01: JB P2.0,B0</p><p>  N02: SETB P3.0</p><p>  CJN

46、E R3,#00H,N01 ;比較R3中的值是否為0,不為0轉(zhuǎn)到當(dāng)前指令處執(zhí)行</p><p>  ;------黃燈閃爍5秒程序------</p><p>  N1: SETB P3.0</p><p>  MOV R3,#05H</p><p>  MOV DPTR,#0000H ;置8255A口,東西,南北方向黃燈亮<

47、/p><p>  MOV A,#0D4H</p><p>  MOVX @DPTR,A</p><p>  N11: MOV R4,#00H</p><p>  N12: CJNE R4,#7DH,$ ;黃燈持續(xù)亮0.5秒</p><p>  N13: MOV DPTR,#0000H ; 置8255A

48、口,南北方向黃燈滅</p><p>  MOV A,#0DDH</p><p>  MOVX @DPTR,A</p><p>  N14: MOV R4,#00H</p><p>  CJNE R4,#7DH,$ ;黃燈持續(xù)滅0.5秒</p><p>  CJNE R3,#00H,N1 ;閃爍時(shí)間達(dá)5秒則

49、退出</p><p>  ------------------------------------------------------------</p><p>  N2: MOV R7,#00H</p><p>  MOV A,R0 ;東西通行,南北禁止</p><p><b>  MOV R3,A</b>

50、</p><p>  MOV DPTR,#0000H ; 置8255A口,東西方向綠燈亮,南北方向紅燈亮</p><p>  MOV A,#0EBH</p><p>  MOVX @DPTR,A</p><p>  N21: JB P2.0,T03</p><p>  N22: CJNE R3,#00H,N21

51、</p><p>  ;------黃燈閃爍5秒程序------</p><p>  N3: MOV R3,#05H</p><p>  MOV DPTR,#0000H ;置8255A口,東西,南北方向黃燈亮</p><p>  MOV A,#0E2H</p><p>  MOVX @DPTR,A</

52、p><p>  N31: MOV R4,#00H</p><p>  CJNE R4,#7DH,$ ;黃燈持續(xù)亮0.5秒</p><p>  N32: MOV DPTR,#0000H ; 置8255A口,南北方向黃燈滅</p><p>  MOV A,#0EBH</p><p>  MOVX @DPTR,

53、A</p><p>  N33: MOV R4,#00H</p><p>  CJNE R4,#7DH,$ ;黃燈持續(xù)滅0.5秒</p><p>  CJNE R3,#00H,N3 ;閃爍時(shí)間達(dá)5秒則退出</p><p><b>  SJMP N00</b></p><p>  -

54、-----闖紅燈報(bào)警程序------</p><p>  B0: MOV R2,#03H ;報(bào)警持續(xù)時(shí)間3秒</p><p>  B01: MOV A,R3</p><p>  JZ N1 ;若倒計(jì)時(shí)完畢,不再報(bào)警</p><p>  CLR P3.0 ;報(bào)警 </p

55、><p>  CJNE R2,#00H,B01 ;判斷3秒是否結(jié)束</p><p><b>  SJMP N02</b></p><p>  ------1秒延時(shí)子程序-------</p><p>  N7: RETI</p><p>  T0_INT:MOV TL0,#9AH

56、 ;給定時(shí)器T0送定時(shí)10ms的初值</p><p>  MOV TH0,#0F1H </p><p><b>  INC R4</b></p><p><b>  INC R5</b></p><p>  CJNE R5,#0FAH,T01 ;判斷延時(shí)是否夠一秒,不夠則調(diào)用顯示子程序<

57、;/p><p>  MOV R5,#00H ;R5清零</p><p>  DEC R3 ;倒計(jì)時(shí)初值減一</p><p>  DEC R2 ;報(bào)警初值減一</p><p>  T01: ACALL DISP ;調(diào)用顯示子程序</p><p>

58、;  RETI ;中斷返回</p><p>  ------顯示子程序------</p><p>  DISP: JNB P2.4,T02</p><p>  DISP1: MOV B,#0AH</p><p>  MOV A,R3 ;R3中值二轉(zhuǎn)十顯示轉(zhuǎn)換</p><

59、p><b>  DIV AB</b></p><p><b>  MOV 79H,A</b></p><p><b>  MOV 7AH,B</b></p><p>  DIS: MOV A,79H ;顯示十位</p><p>  MOV DPTR

60、,#TAB</p><p>  MOVC A,@A+DPTR</p><p>  MOV DPTR,#0002H</p><p>  MOVX @DPTR,A</p><p>  MOV DPTR,#0001H</p><p>  MOV A,#0F7H</p><p>  MOVX @DPTR

61、,A</p><p>  LCALL DELAY</p><p>  DS2: MOV A,7AH ;顯示個(gè)位</p><p>  MOV DPTR,#TAB </p><p>  MOVC A,@A+DPTR</p><p>  MOV DPTR,#0002H</p><

62、p>  MOVX @DPTR,A</p><p>  MOV DPTR,#0001H</p><p>  MOV A,#0FBH</p><p>  MOVX @DPTR,A</p><p><b>  RET</b></p><p>  ------東西方向車(chē)流量檢測(cè)程序------<

63、;/p><p>  T03: MOV A,R3</p><p>  SUBB A,#00H ;若綠燈倒計(jì)時(shí)完畢,不再檢測(cè)車(chē)流量</p><p>  JZ N3 </p><p>  JB P2.0,T03</p><p>  INC R7

64、 </p><p>  CJNE R7,#64H,E1 </p><p>  MOV R7,#00H ;中斷到100次則清零</p><p>  E1: SJMP N22</p><p>  ------東西方向車(chē)流量顯示程序------</p><p>  T02: MOV

65、B,#0AH</p><p>  MOV A,R7 ;R7中值二轉(zhuǎn)十顯示轉(zhuǎn)換</p><p><b>  DIV AB</b></p><p><b>  MOV 79H,A</b></p><p><b>  MOV 7AH,B</b>&l

66、t;/p><p>  DIS3: MOV A,79H ;顯示十位</p><p>  MOV DPTR,#TAB</p><p>  MOVC A,@A+DPTR</p><p>  MOV DPTR,#0002H</p><p>  MOVX @DPTR,A</p><p>

67、  MOV DPTR,#0001H</p><p>  MOV A,#0F7H</p><p>  MOVX @DPTR,A</p><p>  LCALL DELAY</p><p>  DS4: MOV A,7AH ;顯示個(gè)位</p><p>  MOV DPTR,#TAB </p&g

68、t;<p>  MOVC A,@A+DPTR</p><p>  MOV DPTR,#0002H</p><p>  MOVX @DPTR,A</p><p>  MOV DPTR,#0001H</p><p>  MOV A,#0FBH</p><p>  MOVX @DPTR,A</p>

69、<p><b>  LJMP N7</b></p><p>  ------延時(shí)4MS子程序----------</p><p>  DELAY: MOV R1,#0AH</p><p>  LOOP: MOV R6,#64H</p><p><b>  NOP</b></p

70、><p>  LOOP1: DJNZ R6,LOOP1</p><p>  DJNZ R1,LOOP</p><p>  RET </p><p>  ------字符表------</p><p>  TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

71、</p><p><b>  END</b></p><p><b> ?。ㄋ模〤程序設(shè)計(jì)</b></p><p>  #include <reg51.h></p><p>  #include <stdio.h></p><p>  #define

72、uchar unsigned char</p><p>  #define uint unsigned int</p><p><b>  uchar h;</b></p><p><b>  uint r=0;</b></p><p><b>  uint s;<

73、/b></p><p>  uchar code dis[]={</p><p>  0Xc0,/*0*/</p><p>  0Xf9,/*1*/</p><p>  0Xa4,/*2*/</p><p>  0Xb0,/*3*/</p><p>  0X99,/*4*/</p&

74、gt;<p>  0X92,/*5*/</p><p>  0X82,/*6*/</p><p>  0Xf8,/*7*/</p><p>  0X80,/*8*/</p><p>  0X90,/*9*/</p><p>  0Xff,/*NULL*/</p><p><b

75、>  };</b></p><p>  void delay(uint c)</p><p><b>  {</b></p><p><b>  uint i,j;</b></p><p>  for(i=0;i<c;i++)</p><p>  fo

76、r(j=0;j<100;j++);</p><p><b>  }</b></p><p>  //interrupt 1</p><p>  void t0(void) interrupt 0 using 1</p><p><b>  {</b></p><p>&

77、lt;b>  delay(2);</b></p><p>  if(INT0==0)</p><p><b>  {</b></p><p><b>  r++;</b></p><p><b>  if(r==2)</b></p><p&

78、gt;<b>  {</b></p><p><b>  r=0;</b></p><p><b>  }</b></p><p><b>  r%=2;</b></p><p><b>  if(r==0)</b></p>

79、;<p><b>  {</b></p><p><b>  P0=0xeb;</b></p><p><b>  P1=0x00;</b></p><p><b>  P2=0xff;</b></p><p><b>  }whi

80、le(1)</b></p><p><b>  {</b></p><p>  if(INT0==0|INT1==0|T0==0)</p><p><b>  {</b></p><p><b>  delay(2);</b></p><p>

81、;  if(INT0==0|INT1==0|T0==0)</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  };</b></p><p><b>  }</b></p>&l

82、t;p><b>  }</b></p><p>  //interrupt 2</p><p>  void t1(void) interrupt 2 using 1</p><p><b>  {</b></p><p><b>  delay(2);</b></

83、p><p>  if(INT1==0)</p><p><b>  {</b></p><p><b>  r++;</b></p><p><b>  if(r==2)</b></p><p><b>  {</b></p>

84、;<p><b>  r=0;</b></p><p><b>  }</b></p><p><b>  r%=2;</b></p><p><b>  if(r==0)</b></p><p><b>  {</b>

85、</p><p><b>  P0=0xdd;</b></p><p><b>  P1=0x00;</b></p><p><b>  P2=0xff;</b></p><p><b>  }while(1)</b></p><p&g

86、t;<b>  {</b></p><p>  if(INT1==0|INT0==0|T0==0)</p><p><b>  {</b></p><p><b>  delay(2);</b></p><p>  if(INT1==0|INT0==0|T0==0)</p

87、><p><b>  break;</b></p><p><b>  }</b></p><p><b>  };</b></p><p><b>  }</b></p><p><b>  }</b></

88、p><p>  //interrupt 3</p><p>  void t2(void) interrupt 1 using 1</p><p><b>  {</b></p><p><b>  TH0=0xff;</b></p><p><b>  TL0=0xf

89、f;</b></p><p><b>  delay(2);</b></p><p><b>  if(T0==0)</b></p><p><b>  {</b></p><p><b>  P0=0xdb;</b></p>&

90、lt;p><b>  P1=0x00;</b></p><p><b>  P2=0xff;</b></p><p><b>  }while(1)</b></p><p><b>  {</b></p><p>  if(INT0==0|INT1=

91、=0)</p><p><b>  { </b></p><p><b>  delay(2);</b></p><p>  if(INT0==0|INT1==0)</p><p><b>  break;</b></p><p><b> 

92、 }</b></p><p><b>  };</b></p><p><b>  }</b></p><p>  void main(void)</p><p><b>  {</b></p><p>  TMOD=0x06;</p&

93、gt;<p><b>  TH0=0xff;</b></p><p><b>  TL0=0xff;</b></p><p><b>  TR0=1;</b></p><p><b>  EA=1;</b></p><p><b>

94、  EX0=1;</b></p><p><b>  EX1=1;</b></p><p><b>  ET0=1;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p>&

95、lt;p><b>  P0=0xeb;</b></p><p>  for(h=28;h>0;h--)</p><p><b>  {</b></p><p>  for(s=248;s>0;s--)</p><p><b>  {</b></p>

96、<p><b>  P1=0x00;</b></p><p><b>  P2=0xff;</b></p><p><b>  P1=0x01;</b></p><p>  P2=dis[h/10];</p><p><b>  delay(1);<

97、;/b></p><p><b>  P1=0x00;</b></p><p><b>  P2=0xff;</b></p><p><b>  P1=0x02;</b></p><p>  P2=dis[h%10];</p><p><b&

98、gt;  delay(1);</b></p><p><b>  P1=0x00;</b></p><p><b>  P2=0xff;</b></p><p><b>  P1=0x04;</b></p><p>  P2=dis[(h+2)/10];</p

99、><p><b>  delay(1);</b></p><p><b>  P1=0x00;</b></p><p><b>  P2=0xff;</b></p><p><b>  P1=0x08;</b></p><p>  P2

100、=dis[(h+2)%10];</p><p><b>  delay(1);</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  delay(248);</p><p><b>  P0

101、=0xf3;</b></p><p>  for(h=3;h>0;h--)</p><p><b>  {</b></p><p>  delay(392);</p><p><b>  P0=0xf3;</b></p><p><b>  del

102、ay(1);</b></p><p><b>  P1=0x00;</b></p><p><b>  P2=0xff;</b></p><p><b>  P1=0xaa;</b></p><p>  P2=dis[(h-1)%10];</p>&l

103、t;p>  delay(600);</p><p><b>  P0=0xfb;</b></p><p><b>  }</b></p><p>  delay(248);</p><p><b>  P0=0xdd;</b></p><p>  

104、for(h=38;h>0;h--)</p><p><b>  {</b></p><p>  for(s=248;s>0;s--)</p><p><b>  {</b></p><p><b>  P1=0x00;</b></p><p>

105、;<b>  P2=0xff;</b></p><p><b>  P1=0x01;</b></p><p>  P2=dis[(h+2)/10];</p><p><b>  delay(1);</b></p><p><b>  P1=0x00;</b>

106、;</p><p><b>  P2=0xff;</b></p><p><b>  P1=0x02;</b></p><p>  P2=dis[(h+2)%10];</p><p><b>  delay(1);</b></p><p><b&g

107、t;  P1=0x00;</b></p><p><b>  P2=0xff;</b></p><p><b>  P1=0x04;</b></p><p>  P2=dis[h/10];</p><p><b>  delay(1);</b></p>

108、<p><b>  P1=0x00;</b></p><p><b>  P2=0xff;</b></p><p><b>  P1=0x08;</b></p><p>  P2=dis[h%10];</p><p><b>  delay(1);<

109、/b></p><p><b>  }</b></p><p><b>  }</b></p><p>  delay(248); </p><p><b>  P0=0xde;</b></p><p>  for(h=3;h>0;h--)&

110、lt;/p><p><b>  {</b></p><p>  delay(392);</p><p><b>  P0=0xde;</b></p><p><b>  delay(1);</b></p><p><b>  P1=0x00;<

111、;/b></p><p><b>  P2=0xff;</b></p><p><b>  P1=0xaa;</b></p><p>  P2=dis[(h-1)%10];</p><p>  delay(600);</p><p><b>  P0=0xdf

112、;</b></p><p><b>  }</b></p><p>  delay(248);</p><p><b>  }</b></p><p><b>  }</b></p><p>  三、交通信號(hào)燈控制器仿真</p>

113、<p>  在完成了交通燈控制器硬件設(shè)計(jì)和軟件設(shè)計(jì)以后,便進(jìn)入系統(tǒng)的調(diào)試階段。系統(tǒng)的調(diào)試步驟和方法基本上是相同的,但具體細(xì)節(jié)和所采用的開(kāi)發(fā)系統(tǒng)以及用戶(hù)系統(tǒng)選用的單片機(jī)型號(hào)有關(guān),如可選用Keil軟件進(jìn)行軟件調(diào)試,</p><p><b>  1、Keil調(diào)試</b></p><p><b>  ……</b></p><

114、;p>  圖3-1 程序調(diào)試完成圖 </p><p><b>  結(jié) 論</b></p><p><b>  一、課程設(shè)計(jì)總結(jié)</b></p><p>  本系統(tǒng)就是充分利用了8051和8255芯片的I/O引腳。系統(tǒng)統(tǒng)采用MSC-51系列單片機(jī)Intel8051和可編程并行I/O接口芯片8255A為

115、中心器件來(lái)設(shè)計(jì)交通燈控制器,實(shí)現(xiàn)了能根據(jù)實(shí)際車(chē)流量通過(guò)8031芯片的P1口設(shè)置紅、綠燈燃亮?xí)r間的功能;紅綠燈循環(huán)點(diǎn)亮,倒計(jì)時(shí)剩5秒時(shí)黃燈閃爍警示(交通燈信號(hào)通過(guò)PA口輸出,顯示時(shí)間直接通過(guò)8255的PC口輸出至雙位數(shù)碼管);車(chē)輛闖紅燈報(bào)警;綠燈時(shí)間可檢測(cè)車(chē)流量并可通過(guò)雙位數(shù)碼管顯示。。系統(tǒng)不足之處不能控制車(chē)的左、右轉(zhuǎn)、以及自動(dòng)根據(jù)車(chē)流改變紅綠燈時(shí)間等。這是由于本身地理位子以及車(chē)流量情況所定,如果有需要可以設(shè)計(jì)擴(kuò)充原系統(tǒng)來(lái)實(shí)現(xiàn) 。<

116、/p><p><b>  二、課程設(shè)計(jì)心得</b></p><p>  通過(guò)這次畢業(yè)設(shè)計(jì),使我得到了一次用專(zhuān)業(yè)知識(shí)、專(zhuān)業(yè)技能分析和解決問(wèn)題全面系統(tǒng)的鍛煉。使我在單片機(jī)的基本原理、單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)過(guò)程,以及在常用編程設(shè)計(jì)思路技巧(特別是匯編語(yǔ)言)的掌握方面都能向前邁了一大步,為日后成為合格的應(yīng)用型人才打下良好的基所得收獲:通過(guò)這次課程設(shè)計(jì),使我得到了一次用專(zhuān)業(yè)知識(shí)和專(zhuān)業(yè)技

117、能去分析問(wèn)題、解決問(wèn)題全面系統(tǒng)的鍛煉。使我在單片機(jī)的基本原理、單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)過(guò)程,以及用匯編語(yǔ)言設(shè)計(jì)程序的思路技巧等方面都能向前邁了一大步,為日后成為合格的應(yīng)用型人才打下良好的基礎(chǔ)。</p><p><b>  參考文獻(xiàn)</b></p><p>  ①?gòu)堃憷? 單片微型計(jì)算機(jī)原理及應(yīng)用,西安電子科技大學(xué)出版社 1998 </p><p>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論