




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、單片機原理及接口技術實驗指導書周云龍編寫鹽城工學院電氣工程學院二。一五年四月實驗一 KEIL集成開發環境應用實驗一、實驗目的1.掌握C51開發環境keil軟件項目創建方法2、匯編程序編寫2. C51程序編寫3、主函數、自定義函數和中斷函數編寫二、實驗備件PC和單片機IDE集成開發軟件三、實驗要求1、建立一個匯編程序工程2、匯編工程調試3、建立一個C語言程序工程4、C語言工程調試實驗二Proteus單片機系統仿真實驗一、實驗目的1 .掌握Proteus界面功能2、原理圖繪制方法2 .住址仿真調試3 、Proteus與 Keil 聯調二、實驗備件PC、單片機IDE集成開發軟件和Proteus仿真軟
2、件 三、實驗步驟4 、學習Proteus軟件2、繪制教材中第150頁上圖5-75 、Keil 與 Proteus聯調實驗三單片機最小系統的熟悉一、實驗目的在進行其他硬件實驗之前,先熟悉實驗裝置的核心模塊一一單片機最小系統模塊。掌握該實驗模塊的電路原理和接口的使用方法。1 .掌握單片機振蕩器時鐘電路及 CPU工作時序;掌握復位狀態及復位電路 設計;掌握單片機各引腳功能及通用I/O 的使用;掌握單片機基本指令的使用。2 .掌握uVision3 IDE集成開發環境,Proteus仿真軟件和STC單片機下載軟 件ISP的使用。3 .將仿真現象和實驗結果進行對比,體會仿真軟件的用處。 二、實驗設備1.5
3、1仿真器或者用線2.單片機系統板三、實驗要求1.連接實驗電路,編寫簡易單片機匯編程序達到下述工作要求:P3.3 口做輸入口,外接一脈沖,每輸入一個脈沖,P1 口按十六進制加一輸出,編寫程序使P1 口接的8個發光二極管L0-L7按16進制加一的方式點亮發光二極管。2,將編寫的程序經過編譯后在 uVision3 IDE軟件中生成*.hex機器語言,通 過ISP將*.hex下載到單片機芯片中,觀察實驗現象。3.用Proteus仿真軟件畫出實驗電路圖,將在 uVision3 IDE軟件中生成*.hex 下載到Proteus仿真電路圖中的單片機芯片中,觀察實驗現象,比較該現象和在 實驗臺上的現象是否相同
4、。四、實驗原理圖和程序框圖實驗原理圖和程序框圖如圖2-1-1和圖2-1-2所示。 說明1、P1 口是準雙向口,它作為輸出口時與一般的雙向口使用方法相同,由準 雙向口結構可知:當 P1 作為輸入口時,必須先對它置高電平,使內部 MOS 管截止,因內部上拉電阻是 20KQ40KQ,故不會對外部輸入產生影響。若不 先對它置高,且原來是低電平,則 MOS管導通,讀入的數據不正確。2、延時子程序的延時計算。void time(void) unsigned int i;for (i=0;i<0xFFF;i+);五、實驗步驟圖2-1-1單片機I/O 口應用一圖2-1-2實驗程序框圖主程用1、系統板上P
5、3.3用插針連至 而脈沖,P1.0P1.7 (JU2)用8芯線連至 JL (L0L7)。要求麗脈沖每按一次,L0L7發光二極管按16進制方式加一 點鳧0說明: 麗脈沖每按一次按鈕,輸出一個負脈沖,而L0L7為帶驅動的8路LED發光管,高電平亮,低電平滅。L0L7為引出插孔,JL為引出插座。2、實驗示例程序:程序實例如下:#include <reg51.h>#define uchar unsigned char#define uint unsigned intsbit k1 = P3A3;void delay(uint x) (uint i,j;for(i=x;i>0;i-)f
6、or(j=110;j>0;j-);)void main()while(1)(if(k1 = = 0)(delay(10);/去抖延時if(k1 = = 0) P2=P2+1;while(k1=0);)3、在uVision3 IDE集成開發環境中編寫單片機程序,進行程序編譯,排除所有的錯誤,直到編譯完全成功。4、經過編譯后通過ISP將* hex下載到STC單片機芯片中,觀察實驗現象。5、將在uVision3 IDE軟件中生成*.hex下載到Proteus仿真電路圖中的單片機芯片中,觀察實驗現象,實驗仿真電路如圖 2-1-3所示。選取的元器件:(1)單片機:AT89C51(2)電阻:RES(
7、3)開關:BUTTON(4)瓷片電容:CAP(5)電解電容:CAP-ELEC(6)黃色發光二極管:LED-YELLOW(7)晶振:CRYSTAL六、實驗報告1 .說明單片機的各個引腳的功能及作用,比較P0, P3腳的異同?2 .時鐘周期、機器周期的關系是什么?在單片機外部晶振為 12M時,機器周 期為多少?當晶振為6M時呢?3 .畫出實驗原理圖。4 .給出單片機程序流程圖和程序清單。5 .進行完該項實驗后,你對單片機的開發工具和開發過程了解了嗎?請畫出 單片機開發過程流程圖。R1C130pfC230pfR9C310kX1CRYSTALU11918912345678XTAL1P0.0/AD0P0
8、.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A10PSENP2.3/A11ALEP2.4/A12EAP2.5/A13P2.6/A14P2.7/A15P1.0P3.0/RXDP1.1P3.1/TXDP1.2P3.2/INT0P1.3P3.3/INT1P1.4P3.4/T0P1.5P3.5/T1P1.6P3.6/WRP1.7P3.7/RD293031圖2-1-3硬件仿真圖和仿真結果實驗四數碼管動態掃描顯示實驗一、實驗目的1 .學習和理解數碼管動態掃描的工作原理。2 .學習和掌握數碼
9、管動態掃描的電路接口設計及程序編寫。 二、實驗設備1 . USB線2 .單片機最小系統教學實驗模塊3 .動態數碼管顯示模塊 三、實驗要求1,使8位數碼管動態顯示“0 1 2 3 4 5 6存樣”2,使8位數碼管動態顯示時間2014年10月20日,即2 0 1 4 10 2 0'字樣3,用Proteus仿真軟件畫出實驗電路圖,將在uVision3 IDE軟件中生成*.hex 下載到Proteus仿真電路圖中的單片機芯片中,觀察實驗現象。4,選擇相應的實驗模塊,搭建電路,完成用數碼管顯示2 0 1 4 10 2 0'。四、實驗原理1. 8段數碼管顯示原理數碼管中的每一段相當于一個發
10、光二極管,8段數碼管則具有8個發光二極 管。對于 共陽極”的數碼管,內部每個發光二極管的陽極被接在一起,成為該各 段的公共選通線;發光二極管的陰極則成為段選線。對于共陰極”數碼管,則正好相反,內部發光二極管的陰極接在一起, 陽極成為段選a線。這兩種數碼管的驅動方式是不同的。當需要點亮共陽極”數碼管的一段時,公共段需接高電平(即寫邏輯1)、"呂I)該段的段選線接低電平(即寫邏輯 0),從而該段被點亮。已當需要點亮 共陰極”數碼管的一段時,公共段需接低電平(即寫邏輯0)、該段的段選線接高電平(即寫邏輯 1),d該段被點亮。數碼管的段位順序如右圖所示:一般來說在一個字節中按照dpgfedc
11、ba的順序放置字型碼,比如在一個共陰 極”數碼管上要顯示“1;則b、c段需被點亮,因此在段選線中寫入 06H。例如 使用P0 口接段選線,則使用下面的語句即可點亮數碼管:P0=0x06;對應規則:dp->D7 g>D6 f->D5e>D4 d->D3 c->D2 b->D1 a->D0 2.多位數碼管的顯示在多位8段數碼管顯示時,為了簡化硬件電路,通常將所有位的段選線相應 地并聯在一起,由一個單片機的8位I/O 口控制,形成段選線的多路復用。而各 位數碼管的共陽極或共陰極分別由單片機獨立的I/O 口線控制,順序循環地點亮每位數碼管,這樣的數碼管驅
12、動方式就稱為動態掃描”。在這種方式中,雖然每一時刻只選通一位數碼管,但由于人眼具有一定的 視覺殘留”,只要延時時間設 置恰當,便會感覺到多位數碼管同時被點亮了。8位8段LED動態顯示器電原理圖如圖2-2-1所示。獨立的M選調線圖2-2-1 8位8段LED動態顯示器電原理圖表2-1所示為一個8位8段LED動態顯示器電路原理圖。其中段選線占用一 個8位I/O 口,位選線占用一個8位I/O 口,由于各位的段選線并聯,段線碼的 輸出對各位來說都是相同的。因此,同一時刻,如果各位位選線都處于選通狀態 的話,8位LED將顯示相同的字符。若要各位 LED能夠顯示出與本位相應的顯 示字符,就必須采用掃描顯示方
13、式,即在某一位的位選線處于選通狀態時, 其它 各位的位選線處于關閉狀態,這樣,8位LED中只有選通的那一位顯示出字符, 而其它位則是熄滅的。同樣,在下一時刻,只讓下一位的位選線處于選通狀態, 而其他的位選線處于關閉狀態。如此循環下去,就可以使各位 同時”顯示出將要 顯示的字符。由于人眼有視覺暫留現象,只要每位顯示間隔足夠短,則可造成多 位同時亮的假象,達到顯示的目的。五、實驗步驟8位共陰極數碼管動態掃描顯示的單片機電路連線如圖2-2-2所示,圖中的三角形符號是加在位選線上的驅動,即74LS244,這一舉措使得數碼管能夠得到合 適的亮度。數碼管的位選是由P2 口控制,第一個數碼管的位選由P2.0
14、控制,數 碼管的段選由P0 口控制,P0.7P0.0分別連接數碼管的dpa。1、按照圖2-2-2的電路原理,用導線正確連接動態掃描方式實驗模塊和單片機 最小系統模塊。圖2-2-2 掃描8位LED動態顯示器2、實驗要求1的示例程序如下:#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intuchar code table" 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/0 9 的字符
15、編碼void delay(uchar z)uchar i,j;for(i=z;i>0;i-) for(j=110;j>0;j-);)void main()uchar i,m=0xfe;P0=0x00;/關閉數碼管的段選P2=0xff;/關閉數碼管的位選while(1)(for(i=0;i<8;i+)(P2=m;/選通某個數碼管的位選P0=tablei; /將段碼送給上面數碼管的段 m=_crol_(m,1);delay(2);將程序進行調試,直至達到實驗要求。3.仿真電路圖將在uVision3 IDE軟件中生成*hex下載到Proteus仿真電路圖中的單片機芯 片中,觀察實驗
16、現象,實驗仿真電路如圖 2-2-3所示。選取的元器件:(1)單片機:AT89C51(2)電阻:RES(3)排阻:RX8(4)瓷片電容:CAP(5)電解電容:CAP-ELEC(6) 8 位共陰極數碼管:7SEG-MPX8-CC-BLUE(7)晶振:CRYSTAL六、實驗報告1 .畫出實驗電路原理圖,并簡要分析電路的執行過程。2 .畫出單片機程序的流程圖,給出程序清單,并給予適當注釋。3 .如果將數碼管換成共陽極,電路中要做那些修改?程序中要做哪些修改, 給出共陽極數碼管動態掃描顯示的電路和程序清單。4 .實驗過程中遇到哪些問題,是如何解決的?圖2-2-3硬件仿真圖和仿真結果實驗五中斷優先級控制及
17、中斷保護實驗一、實驗目的1、掌握單片機中斷機制2、熟悉中斷的應用和編程 二、實驗設備USB線單片機最小系統發光二極管陣列顯示模塊2路手動土單脈沖三、實驗要求1 .連接單片機最小系統和發光二極管陣列的電路并編寫程序,學習單片機 中斷機制及中斷優先級和中斷保護的方法。2 .選擇相應的實驗模塊,畫出電路圖,實現下列功能:使用手動單脈沖SP1 連接INT0 (P3.2),手動單脈沖SP2連接INT1 (P3.3),單片機P2 口連接8個 發光二極管,將單片機的電源+5V與地線連接上。要求:在平時狀態下,發光二極管行以 200ms的時間問隔,依次點亮。 在 INT1中斷時亮一半,暗一半;在INT0中斷時
18、全滅,INT0中斷為高優先級,INT1 中斷為低優先級。3 .選擇相應的實驗模塊,畫出電路圖,實現下列功能:使用手動單脈沖SP1 連接INT0 (P3.2),手動單脈沖葩連接INT1 (P3.3),單片機P2 口連接8個 發光二極管,將單片機的電源+5V與地線連接上。要求:在平時狀態下,發光二極管行以200ms的時間問隔,依次點亮。單脈沖SP1按下時INT0中斷處理程序點亮P2.0對應的發光管2秒鐘,其他發光管 熄滅;單脈沖SP2按下時P2.1對應發光管點亮2秒,其他發光管熄滅,INT0中 斷為低優先級,INT1中斷為高優先級。4 .用Proteus仿真軟件畫出實驗電路圖,將在uVision3
19、 IDE軟件中生成*.hex 下載到Proteus仿真電路圖中的單片機芯片中,觀察實驗現象。四、實驗原理通常一個微處理器讀取外圍設備(如鍵盤等)的輸入信息的方法有輪詢(Polling)及中斷(Interrupt)兩種。輪詢的方法是 CPU依照某種既定法則,依序詢 問每一外圍設備I/O是否需要服務,此種方法CPU需花費一些時間來做詢問服 務,當I/O設備增加時,詢問服務時間也相對增加,因此勢必浪費許多CPU時 間,降低整體運行的效率。使用中斷是一個較好的解決方法。 使用中斷使系統對 外部設備的請求響應更加靈敏,并且不需要占用CPU的時間進行輪詢。但是,當使用中斷,特別是有多個中斷嵌套時要特別注意
20、內存單元內容的保護。1. 80C51中斷結構當中斷發生后,程序將跳至對應中斷入口地址去執行中斷子程序,或稱中斷 服務例程(Interrupt Service Routine),這些特殊的地址稱為中斷向量,例如當 80C51外部中斷INTl發生時,會暫停主程序的執行,跳至地址 0013H去執行中 斷服務例程,直到RETI指令后,才返回主程序繼續執行。MCS-51系列的程序內存中有7個矢量地址,敘述如下:(1) 00H復位當第9腳RESET為高電平,CPU會跳至地址00H處開始執行程序,亦即程 序一定要從地址00H開始寫起。(2) 03H(外部中斷0)當INT0引腳由高電位變至低電位時,CPU會接
21、受外部中斷0,并跳至地址 03H處去執行中斷子程序。(3) 0BH(計時/計數器0中斷)當CPU接受計時/計數器0中斷置位而產生中斷要求時,會跳至地址0BH處去執行中斷子程序。(4) 13H(外部中斷1)當INTl引腳由高電位變至低電位時,CPU會接受外部中斷1,并跳至地址 13H處去執行中斷子程序。(5) 1BH(計時/計數器1中斷)當CPU接受計時/計數器1中斷置位而產生中斷要求時,會跳至地址1BH刻去執行中斷子程序。(6) 23H修行中斷1)當用行端口傳送數據或接收數據完畢時,CPU會接受串行中斷,并跳至地址 23H處去執行中斷子程序。(7) 2BH(計時/計數器2中斷)當CPU接受計時
22、/計數器2產生中斷要求時,會跳至地址 2BH處去執行中 斷子程序。此中斷僅8052系列才有。2.中斷使能位8051針對中斷提供兩層使能,第一層為 EA全局使能控制,第二層為分別控 制EX0, ET0、EXl、ETl、ES、ET2。當8051在初始狀態時,寄存器的各個中 斷使能位都預設為“0;即所有中斷都禁止,故欲允許中斷時,應先使能相對應 的中斷。當中斷產生后,此中斷狀態會記錄于定時器/計數器控制寄存器(Timer/CounterControlRigister, TCON)的中斷請求標志(InterruptRequest flag)中,當標 志被設立,表示中斷已發生。由圖 2-3-1可知,當外
23、部中斷或定時器 0、定時器 1中斷發生時,CPU都可以判別是哪種中斷。因此當這四個中斷發生時,中斷服 務例程被執行后,CPU會主動清除中斷請求標志,對于其他的中斷,由于 CPU無法判別,因此中斷請求標志需由程序指令來清除。另外,在 TCON中尚有兩 個位稱為中斷型式控制位(Wype control bit),經由這兩個位的設定,可以邊擇外 部中斷為負邊緣觸發或低電平觸發。欲設定中斷使能與否,必須規劃位于特殊功能寄存器中的中斷使能寄存器 IE(Interrupt Enable Register),其位于地址 A8H ,是一個可位尋址的寄存器。 3.中斷保護由于各個中斷執行的起始地址間僅有 8個B
24、ytes,因此欲在此空間內完成中斷 服務例程是有困難的。通常中斷服務例程是置于主程序后面,而在中斷向量地址只書寫跳躍指令,跳至相對應中斷服務例程去執行。當執行新的中斷服務例程時, 注意不可以破壞舊有的數據和狀態,因此在編寫時還要保存各個寄存器的數據。 通常會被更改的數據(如ACC、PSW等),可以利用堆棧在執行中斷服務例程之 前就將其PUSH起來,待執行結束后再將相關寄存器 POP即可。另外,因為8051 可任意選擇四個寄存器庫中的一組寄存器,所以利用選擇不同寄存器庫的方式亦可達到數據保存的目的。4,中斷優先級8051對于各種中斷優先權采用雙層結構,首先對于優先權可由中斷優先權寄存器(Inte
25、rrupt Priority IP)設定該中斷為高優先權或低優先權,高優先權可以中斷 低優先權,但是當優先權相同時(都為高優先權或低優先權),則由內部的輪詢順序決定哪一個中斷被接受,輪詢次序如圖2-3-1所示IP寄存器:PSPT1PX1PT0PX0圖2-3-1 MCU內部中斷機制PX0,PX1:外部中斷0, 1的中斷優先級控制;1-高優先級,0-低優先級PT0,PT1定時器/計數器0, 1的中斷優先級控制;PS坤行口中斷優先級控制。IP中對應位全為零時,CPU按照片內硬件優先級來順序響應中斷: 中斷源外部中斷0高定時器/計數器0外部中斷1定時器/計數器1;用行口中斷低五、實驗步驟本實驗將練習使
26、用INT0, INT1的中斷,利用按鍵來觸發外部中斷的發生。并 通過兩個中斷先后到達的方法,來學習中斷優先級的意義與控制。1、電路說明在圖2-3-2中,主程序執行時,單片機端口 P2所接的LED由P2.7至P2.0 次一顆循環點亮。當外部中斷 0產生后,執行該中斷子程序,此時 P2.0對應的 二極管亮,其他二極管熄滅。2秒鐘后,返回主程序繼續中斷前的工作。INT1 中斷子程序則為點亮P2.1對應的二極管,其他二極管熄滅。注意,由于每次在 按鍵按下或放開可能會有抖動現象,因而必須進行必要的保護,以免產生二次以 上的相同中斷信號。在程序主循環進行時,當 而 按下,相應發光管點亮后,立即再按下 SP
27、2 , 看反應如何;在程序主循環進行時,按下葩,相應發光管點亮后,立即按下雨, 觀察反應。電路連線如圖2-3-2:圖2-3-2實驗電路參考2 .程序設計先按SP1執行INT0中斷子程序,在此中斷子程序未結束前再按 SP2 ,或是先按SP2執行INT1中斷子程序,在此中斷子程序未結束前再按 SP1 ,或兩者同 時按,觀察1ED亮暗的情形即可觀察中斷優先權執行的情形。編寫并運行程序,觀察是否符合理論分析的結果。3 .仿真電路圖將在uVision3 IDE軟件中生成*.hex下載到Proteus仿真電路圖中的單片機芯 片中,觀察實驗現象,實驗仿真電路如圖 2-3-3所示。選取的元器件:(1)單片機:
28、AT89C51(2)電阻:RES(3)開關:BUTTON(4)瓷片電容:CAP(5)電解電容:CAP-ELEC(6)黃色發光二極管:LED-YELLOW(7)晶振:CRYSTAL圖2-3-3硬件仿真圖和仿真結果六、實驗報告畫出電路原理圖,并簡要分析工作原理;提供程序清單,適當給出注釋;分析51單片機的中斷運行的機制,它具有那些中斷,對應的中斷矢量地址是 什么?中斷使能位是什么?各中斷源的硬件優先級的順序是怎樣的?哪個寄存器能夠控制單片機中斷源 的優先級?怎樣控制?七、參考程序清單實驗要求2:使用單脈沖 軸連接INTO (P3.2),單脈沖葩連接INT1 (P3.3),單片機P2 口連接8個發光
29、二極管,將單片機的電源+5V與地線連接上要求:在平時狀態下,發光二極管行以200ms的時間問隔,依次點亮。在INT1中斷時亮一半,暗一半;在INT0中斷時全滅。#include <reg51.h>#include <intrins.h> #define uchar unsigned char#define uint unsigned int uchar i,j,aa;void delay(uint z)(uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);)void init()(IT0=1;IT1=1;EA=1;EX0=1E
30、X1=1PX0=1/INT0邊沿觸發 /INTl邊沿觸發 /開總中斷/使能INT0/使能INTl/中斷0優先)void main()(init();aa=0x01;while(1)(P2=aa;delay(200);aa=_crol_(aa,1);aO!環左移一位)void int0() interrupt 0(for(i=8;i>0;i-)(P2=0x00;/P2 口送出00H使燈熄滅,循環8次delay(500);)void int1() interrupt 2(for(j=8;j>0;j-)(P2=0x0f; /低4位亮,高四位暗 delay(500);P2=0xf0; /低
31、4位暗,高四位亮 delay(500);)實驗要求3:使用單脈沖 軸連接INT0 (P3.2),單脈沖 葩連接INT1 (P3, 單片機P2 口連接八個發光二極管,將單片機的電源+5V與地線連接上。要求:在平時狀態下,發光二極管行以200ms的時間問隔,依次點亮。單脈沖雨按下時INT0中斷處理程序點亮P2.0對應的發光管2秒鐘,其他發光管 熄滅;單脈沖 而2按下時P2.1對應發光管點亮2秒,其他發光管熄滅。#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsig
32、ned int uchar aa,i,i;void delay(uint z)(uint x,y;for(x=z;x>0;x-) for(y=110;y>0;y-);)IT0=1; /INT0邊沿觸發IT1=1; /INTl邊沿觸發EA=1; 開總中斷EX0=1; /使能 INT0EX1=1; /使能 INTlPX1=1; /中斷1優先)void main()(init();aa=0x01;while(1)(P2=aa;delay(200);aa=_crol_(aa,1);/a0!環左移一位) void int0() interrupt 0(for(i=0;i<4;i+)(P
33、2=0x01;/點亮 P2.0delay(500);)void int1() interrupt 2(for(j=0;j<4;j+)(delay(500);)實驗六低頻脈沖計數器實驗一、實驗目的1、掌握定時器的工作原理2、學習單片機定時器的應用設計和調試二、實驗設備1、USB 線2、單片機最小系統3、波形信號發生器或時鐘源模塊4、數碼管動態顯示三、實驗要求1 .連接電路并編寫程序,使單片機定時器/計數器T0工作于定時器模式,T1 工作于計數模式,即作為一個低頻脈沖計數器,將實驗箱信號源的值分別設為 10Hz, 100Hz, 1000Hz, 10000Hz,通過單片機在1s內對脈沖計數,要
34、求在數碼 管上分別顯示對應的頻率值。2 .用Proteus仿真軟件畫出實驗電路圖,將在 uVision3 IDE軟件中生成*.hex 下載到Proteus仿真電路圖中的單片機芯片中,觀察實驗現象。四、實驗原理805l單片機內部有兩個16位可編程定時/計數器,記為 T0和TL 8052單 片機內除了 T0和T1之外,還有第三個16位的定時器/計數器,記為T2。它們 的工作方式可以由指令編程來設定,或作定時器用,或作外部事件計數器用。定時器T0由特殊功能寄存器TL0和TH0組成,定時器Tl由特殊功能寄存 器TLl和TH1組成。定時器的工作方式由特殊功能寄存器 TMOD編程決定,定 時器的運行由特殊
35、功能寄存器 TCON編程控制。T0、T1在作為定時器時,規定的定時時間到達,即產生一個定時器中斷,CPU轉向中斷處理程序,從而完成某種定時控制功能。 T0、T1用作計數器使用 時也可以申請中斷。作定時器使用時,時鐘由單片機內部系統時鐘提供; 作計數 器使用時,外部計數脈沖由P3 口的P3. 4(或P3. 5)即T0(或T1)引腳輸入。方式控制寄存器TMOD的控制字格式如下:76543210GATEC/TM1M0GATEC/TM1M0T1/ T0/低4位為T0的控制字,高4位為T1的控制字。GATE為門控位,對定時器 /計數器的啟動起輔助控制作用。GATE=l時,定時器/計數器的計數受外部引 腳
36、輸入電平的控制。此時只有 P3 口的P3. 2(或P3. 3)引腳INT0(或INT1)為1才能啟動計數;GATE = 0時。定時器/計數器的運行不受外部輸入引腳的控制。C/T為方式選擇位。C斤=0為定時器方式,采用單片機內部振蕩脈沖的12分頻信號作為時鐘計時脈沖,若采用12MHz的振蕩器,則定時器的計數頻率為1MHZ,從定時器的計數值便可求得定時的時間。CE計數器方式。采用外部引腳(T0為P3.4, Tl為P3.5)的輸入脈沖作為 計數脈沖,當T0(或T1)輸入信號發生從高到低的負跳變時,計數器加 1。最高 計數頻率為單片機時鐘頻率的1/24。M1、M0二位的狀態確定了定時器的工作方式,詳見
37、表 4-1。表4-1定時器工作模式表:MlM0功能說明00方式0,為13位定時器/計數器01方式1,為16位的定時器/計數器l0方式2,為常數自動重新裝入的8位定時器/計數器11方式3,僅適用于T0,分為二個8位計數器方式0與方式1的差別是計數器的位數,前者13位,后者16位。定時器內部結構邏輯圖如圖2-4-1所示INT1中斷圖2-4-1定時器內部邏輯圖五、實驗步驟1 .電路連接參考以下電路示意圖連接電路:時鐘源圖2-4-2計數器參考電路示意圖2 .軟件編寫 示例程序如下: #include <reg51.h> #define uchar unsigned char #define
38、 uint unsigned int uchar table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /0 9 的字符 編碼uchar timecount;unsigned long count;uchar b1,b2,b3,b4,b5,b6,b7,b8;void display(unsigned long count); /昵示子程序void delay(uint z); 延時子程序void main(void) count=0;/計數脈沖賦初值0/TMOD=0x15;/給TOMD送方式控制字,使 T0為計數方式,T1為定時方式T
39、H1=(65536-50000)/256;TL1=(65536-50000)%256;TH0=0;TL0=0;ET0=1;ET1=1;EA=1;TR0=1;TR1=1;while(1) if(timecount=20) TR0=0;TR1=0;/1秒時間到,關掉定時/計數器display(count);)void delay(uint z)(uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);) void display(unsigned long a)(b1=a%10;/計算 b1 位a=a/10;b2=a%10; 計算 b2 位a=a/10;b3
40、=a%10;/計算 b3 位b4=a/10;/計算 b4 位P2=0x7f;/送入右邊第1位數碼管位選信號,顯示數字P0=tableb1;/送入右邊第1位數碼管的段選信號delay(1);P2=0xbf;/送入右邊第2位數碼管位選信號,顯示數字P0=tableb2;/送入右邊第2位數碼管的段選信號delay(1);P2=0xdf;/送入右邊第3位數碼管位選信號,顯示數字P0=tableb3;/送入右邊第3位數碼管的段選信號delay(1);P2=0xef;/送入右邊第4位數碼管位選信號,顯示數字P0=tableb4;/送入右邊第4位數碼管的段選信號delay(1);)void t1 (void
41、) interrupt 3 using 1中斷服務函數TH1=(65536-50000)/256;TL1=(65536-50000)%256; timecount+;)3 .仿真電路圖將在uVision3 IDE軟件中生成*hex下載到Proteus仿真電路圖中的單片機芯 片中,觀察實驗現象,實驗仿真電路如圖 2-4-3所示。選取的元器件:(1)單片機:AT89C51(2)電阻:RES(3)排阻:RX8(4)瓷片電容:CAP(5)電解電容:CAP-ELEC(6) 8 位共陰極數碼管:7SEG-MPX8-CC-BLUE(7)晶振:CRYSTAL虛擬檢測儀器:(1)單擊工具欄按鈕夏,然后在對象選擇
42、器中選擇 COUNTER TIMER (計圖2-4-4計數/定時器數/定時器),如圖2-4-3所示,打開其屬性編輯框,單擊運行模式下的下拉菜單, 如圖2-4-4所示,可選擇計時、頻率、計數模式,當前設置為頻率計工作方式。圖2-4-3計數/定時器(2)數字時鐘單擊按鈕,在對象選擇器中選擇 DCLOCK (數字時鐘)。在需要添加信號 的或終端單擊即可完成添加 DCLOCK輸入信號。當前設置頻率值為1000Hz,如 圖2-4-5所示。Digital Clock G,.Clock TypeGeneiatoi Narne:|dkTWhGENERATORSDCSINEAnafcauH rppes<S
43、ine 小卬物 CPVrSn 。日eE?fx)ncntC-SFFMFira! Edge AtFrequency |HziPeraad (Sec4l:1000=l>PULSEEXPSFFMPWLIN FILE AUDIODigital Types O Ste« Slate O Single EdasSingle PdseDSTATE DEDGE PULSEGUICElsdai.fi Bftfoie? hJanualEcfts?DCLOCKd HEe Prcperlie:CancelDPATTERN圖2-4-5數字時鐘的選擇和設置8位共陰極數碼管C122pFX1U119* -RN1
44、220C212M1822pFR110kC3H產10uF XTAL1XTAL2RSTP0.7/AD7P2.0/A829 -30 31:PSENALEEAP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WR_ P3.7/RD-.39a»38b/ 37c/*36d 35e34f_y»33g 32hP0.0/AD0P0.1/AD1P0.4/AD4P0.2
45、/AD2P0.3/AD3P0.5/AD5P0.6/AD6 21 22 23J24 252627 28 10 11五 1314 1516五clkI C CLKCERSTmnnnnnn ljulajljcloAT89C51圖2-4-3硬件仿真圖和仿真結果輸入計數頻率為1000Hz,在數碼管上顯示的是1004 (百分誤差小于0.005) 六、實驗報告1 .畫出電路原理圖。2 .對51單片機的可編程計數器/定時器的工作原理進行說明。3 .給出根據實驗要求編寫程序清單、并給予適當注釋。4.請說明在本實驗中T0計數器是怎樣工作的實驗七矩陣式鍵盤輸入實驗一、實驗目的1 .學習矩陣式鍵盤工作原理2 .學習矩陣
46、式接口的電路設計和程序設計 二、實驗設備1 . USB線2 .單片機最小系統實驗教學模塊3 .矩陣式鍵盤實驗模塊4 .動態掃描數碼管顯示模塊三、實驗要求1 .在矩陣式鍵盤中的某個鍵被按下時,8位LED動態顯示器上最低位顯示 該鍵對應的字符,以前的字符向高位推進 1位(即類似于計算器)。2 .在矩陣式鍵盤中的某個鍵被按下時,8位LED動態顯示器上最高位顯示 該鍵對應的字符,以前的字符向低位推進 1位。3 .用Proteus仿真軟件畫出實驗電路圖,將在uVision3 IDE軟件中生成*.hex 下載到Proteus仿真電路圖中的單片機芯片中,觀察實驗現象。四、實驗原理矩陣式由行線和列線組成,按鍵
47、位于行、列的交叉點上。如圖 2-5-1所示, 一個4*4的行、列結構可以構成一個由16個按鍵的鍵盤。很明顯,在按鍵數量 較多的場合,矩陣式鍵盤與獨立式鍵盤相比,要節省很多的I/0 口。圖2-5-1矩陣式鍵盤結構1 .矩陣式鍵盤工作原理按鍵設置在行、列交節點上,行、列分別連接到按鍵開關的兩端。行線通過 上拉電阻接到VCC上。平時無按鍵動作時,行線處于高電平狀態,而當有按鍵 按下時,列線電平為低,行線電平為低。這一點是識別矩陣式鍵盤是否被按下的 關鍵所在。因此,各按鍵彼此將相互發生影響,所以必須將行、列線信號配合起 來并作適當的處理,才能確定閉合鍵的位置。2 .按鍵識別方法下面以圖2-5-2中5號
48、鍵被按下為例,來說明此鍵是如何被識別出來的。前已述及,鍵被按下時,與此鍵相連的行線電平將由與此鍵相連的列線電平 決定,而行線電平在無鍵按下時處于高電平狀態。 如果讓所有列線處于高電平那 么鍵按下與否不會引起行線電平的狀態變化,始終是高電平,所以,讓所有列線處于高電平是沒法識別出按鍵的。現在反過來,讓所有列線處于低電平,很明顯, 按下的鍵所在行電平將也被置為低電平, 根據此變化,便能判定該行一定有鍵被 按下。但我們還不能確定是這一行的哪個鍵被按下。所以,為了進一步判定到底 是哪一列的鍵被按下,可在某一時刻只讓一條列線處于低電平, 而其余所有列線 處于高電平。當第1列為低電平,其余各列為高電平時,
49、因為是鍵 5被按下,所 以第1行仍處于高電平狀態;當第2列為低電平,其余各列為高電平時,同樣我 們會發現第1行仍處于高電平狀態,直到讓第3列為低電平,其余各列為高電平 時,因為是5號鍵被按下,所以第3行出現低電平,據此,我們確信第 3行第3 列交叉點處的按鍵即5號鍵被按下。根據上面的分析,很容易得出矩陣鍵盤按鍵的識別方法, 此方法分兩步進行。 第一步,識別鍵盤有無健被按下;第二步,如果有鍵被按下,識別出具體的按鍵。 分述如下:識別鍵盤有無鍵被按下的方法是:讓所有列線均為低電平,檢查各行線電平 是否有低電平,如果有,則說明有鍵被按下,如果沒有,則說明無鍵被按下(實際編程時應考慮按鍵抖動的影響,通
50、常總是采用軟件延時的方法進行消抖處理)。 識別具體按鍵的方法是(亦稱之為掃描法):逐列置低電平,并檢查各行線電平 的變化,如果某行電平由高電平變為低電平, 則可確定此行此列交叉點處按鍵被 按下。五、實驗步驟P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P3.0 P3.1 P3.2 P3.3P1.7 P1.6 P1.5 P1.4圖2-5-2實驗硬件連線圖1、按照圖2-5-2的電路圖,用導線將矩陣式鍵盤、數碼管動態掃描顯示模 塊和單片機的最小系統實驗模塊連接正確。2、示例程序如下:#include <reg51.h>#include <intrins.h>
51、#define uchar unsigned char#define uint unsigned intuchar code table=0x3f,0x06,0x5b,0x4f,0x66, 0x6d, 0x7d,0x07,0x7f, 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00;uchar Display_Buffer= 16,16,16,16,16,16,16,16; void delay(uint z) uint x,y;for(x=z;x>0;x-) for(y=110;y>0;y-);kscan(void)uchar i, temp,num=16; for(i=0;i<4;i+) P1=_crol_(0xef,i); 逐列掃描 temp=P3;temp=temp & 0x0f; if(temp!=0x0f) delay(20); temp=P3; temp=temp & 0x0f; if(temp!=0x0f) temp=(P1&0xf0)|( P3&0x0f); switch(temp)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025租房合同樣本匯編范本
- 2025保密合同范本
- 2025裝修涂料供貨合同書
- 2025辦公室室內裝修合同書
- 2025建筑工程設計版合同
- 2025青年創業者夏季招聘困局:合同簽訂難題多維權之路漫漫
- 2025個人借款合同協議書
- 2025有關貨車司機勞動合同
- 2025幕墻工程的采購合同范本
- 2025標準商業代理合同范本
- 業主委員會備案申請表填寫模板
- DL∕T 5210.6-2019 電力建設施工質量驗收規程 第6部分:調整試驗
- 2024年工程承包合同書范文
- 有限空間作業風險辨識管控臺帳
- JGJT397-2016 公墓和骨灰寄存建筑設計規范
- 拖拉機濕式離合器
- 中學教材、教輔資料征訂管理制度
- 急性胰腺炎急診診治專家共識2024解讀
- 管道安裝工程款承諾書
- 全國青少年信息素養大賽python初賽必做題模擬五卷
- 權利保障 于法有據 說課課件-2023-2024學年高中政治統編版選擇性必修二法律與生活
評論
0/150
提交評論