資源描述:
《實驗一定時器及外部中斷實驗》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、實驗一定時器及外部中斷實驗——有急救車的交通燈控制實驗一、實驗目的1、熟練在單片機系統中擴展簡單I/O接口的方法。2、熟練C51語言數據輸出程序的設計方法。3、學習模擬交通燈控制的C51實現方法。4、學習外部中斷技術及定時器中斷的C51基本使用方法。5、學習中斷處理程序C51編程方法。二、實驗設備硬件:PC機軟件:uVision2keilc51三、實驗內容本實驗的原理圖如下:P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7單片機89C51編寫程序,完成以下功能:模擬交通燈管理:允許急救車優(yōu)先通過的要求具體要求為:當有急
2、救車到達時,東西和南北方向上的紅燈亮,以便讓急救車通過,假定急救車通過路口的時間為10秒,急救車通過后,交通燈恢復中斷前的狀態(tài)。本實驗以單脈沖為中斷申請,表示有急救車通過。四、實驗原理1、實驗方案本實驗的設計可以有兩種設計方案:方案一:用十二個發(fā)光二極管分別表示南面路口的綠燈、黃燈、紅燈,東面路口的綠燈、黃燈、紅燈,北面路口的綠燈、黃燈、紅燈,西面路口的綠燈、黃燈、紅燈。3方案二:雖然實際交通燈的數量是十二個,但是因為南北路口的兩個紅燈、綠燈以及黃燈的亮滅規(guī)律相同,其它路口的燈也滿足同樣的規(guī)律,所以用六個發(fā)光二極管也能模擬交通燈。由原
3、理圖可定義如下:LED1、LED2、LED3→南北方向的綠燈、黃燈、紅燈LED4、LED5、LED6→東西方向的綠燈、黃燈、紅燈要完成本實驗,首先必須了解交通路燈的亮滅規(guī)律,本實驗的亮滅規(guī)律如下:1、初始態(tài)是兩個方向路口的紅燈全亮。2、東西路口的綠燈亮,南北路口的紅燈亮,東西方向通車。3、延時一段時間后,東西路口綠燈滅,黃燈開始閃爍。4、閃爍若干次后,東西路口紅燈亮,同時南北路口綠燈亮,南北方向開始通車。5、延時一段時間后,南北路口的綠燈滅,黃燈開始閃爍。閃爍若干次后,再切換到東西路口方向,如此反復下去。本實驗以單脈沖為中斷申請,表示
4、有急救車通過。特別注意的是中斷現場的保護。要求用軟件或者定時器來完成延時。2、實驗說明因此交通燈(發(fā)光二極管)的顯示數據可以賦給OUTPORT變量,實現結果的輸出。本實驗中還要注意的是,交通燈的每一種狀態(tài)的顯示,都需要延時一段時間再切換到另一種狀態(tài),從而實現每一種狀態(tài)的穩(wěn)定顯示。其C51語言的實現方法如下:OUTPORT=x;//顯示交通燈某一狀態(tài)數據xDelay(1);//延時1msOUTPORT=y;//顯示交通燈另一狀態(tài)數據yDelay(1);//延時1ms……實驗中涉及到急救車通過,要求使用外部中斷的方式實現。在本實驗中我們可
5、以利用單片機的外部中斷INT0實現。也就是說,急救車通過時,首先利用INT0外部中斷給單片機發(fā)脈沖,告知單片機,急救車要求通過,然后單片機接收到脈沖,并做出判斷并使東西和南北方向上的紅燈亮,同時延時10秒,10秒后表明急救車已經通過,此時單片機恢復原狀態(tài)。利用C51語言可定義外部中斷如下:voidRescure_bus()interrupt0{EA=0;//關閉中斷,即不允許其它中斷OUTPORT=0x11;//0x11為東西和南北方向上紅燈亮的狀態(tài)數據Delay(10000);//延時10s……EA=1;//開啟中斷}在調用外部中斷
6、0時,一定要注意的是中斷現場的保護,要就是說,中斷完成后,一定能夠恢復中斷前的狀態(tài),那么在中斷程序中使用的變量、外部端口、內部資源,如果在中斷前正在使用,那么在中斷開始前一定要保護,中斷后一定要恢復。同時,注意的是由于在實驗中使用到單片機資源外部中斷0,需要對對應的特殊寄存器作一定的配置。首先需要定義特殊寄存器變量:sfrIE=0xA8;sbitEA=IE^7;sbitEX0=IE^0;3當然,這些特殊寄存器的定義實際上在reg51.h庫中定義了,因此在C51編程時,只要包含上reg51.h即可,如下所示:#include7、.h>本實驗需要使用到這些特殊寄存器,就是在程序初始化時需要對這些寄存器賦初值,才可保證對應的INT0中斷正常工作。本實驗賦初值如下:IT0=1;EX0=1;EA=1;本實驗可以根據實際實驗箱的配置來選擇以上方案中的任意一種。本實驗按照方案二來設計,選用實驗箱上八個發(fā)光二極管中的六個,即紅、黃、綠各兩個。例如將L1(紅)、L2(綠)、L3(黃)作為東西方向的指示燈,將L5(紅)、L6(綠)、L7(黃)作為南北方向的指示燈,同學們還可以用別的設計方法。各發(fā)光二極管的陽極通過保護電阻接到+5V的電源上,陰極接到輸入端上,因此使其點亮應使相
8、應輸入端為低電平。五、實驗步驟1、將PO.0-P0.7接發(fā)光二極管L1~L8;2、脈沖輸入端P_接8051CPU上的INT0,用來表示救護車的急救信號。3、按實驗內容以及方案二編寫程序。4、模擬仿真調試,觀察P0口狀態(tài)變