版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、一 STC89C51單片機實驗開發(fā)板套件元件清單元件個數(shù)元件名稱原理圖上的標號單價1DIP40插座U10.51DIP16插座U20.591K 電阻R10(8個),R10.52三極管PNP(8550)Q1,Q20.6110uf電解電容(有正負之分)C30.3230PF陶瓷電容C1,C20.21發(fā)光二極管(有正負之分)L10.41晶振(11.0592MHZ)11.059211電源開關S111電源座+5V輸入1110K 9腳排阻R2011910K電阻R4,R3,R30(8個)R5R614104陶瓷電容C4,C5,C6,C711DS18B20(溫度傳感器)918按鍵KEY1到KEY17,REST51串
2、口下載線515v開關電源141面包板121STC89C51U11227段數(shù)碼管(共陽極)LED1,LED2,LED34.51MAX232U24.5注意:在焊板子時,由于我們采用的是面包板,元件的焊接位置需要大家自己布局,在焊元件時,先看一下原理圖上有那些幾元件,在腦海里有一個大體上的布局,避免將來放的元件太密,或者說放的太運,導致了無法連線,或者有些元件在面包板上放不下.第一步先焊接單片機最小系統(tǒng): 什么是單片機最小系統(tǒng)? 單片機最小系統(tǒng)就是:有單片機,晶振,復位電路,EA引腳接高電平,即組成單片機最小系統(tǒng) 1、電源:這當然是必不可少的了。單片機使用的是5V電源,其中正極接40引腳,負極(地)
3、接20引腳。 (如下圖所示)2、振蒎電路:單片機是一種時序電路,必須提供脈沖信號才能正常工作,將晶體振蕩器,接單片機18、19腳。(如下圖所示)3、復位引腳:按圖1中畫法連好,至于復位是何含義及為何需要復要復位,在單片機功能中介紹。 4、EA引腳:EA引腳接到正電源端。 至此,一個單片機就接好,通上電,單片機就開始工作了。按照原理圖,1).將DIP40座焊好,DIP40座是用來插51單片機,焊它方便將來的調(diào)試和維修,這個元件盡可能的放在面包板的中央.2)再焊晶振,和C1,C2,這是單片機的振蕩電路,也是單片機的心臟,只它的可靠的啟振,單片機才能工作。焊接晶振時,其位置盡可能的靠近單片機,不要離
4、的太遠,否則單片機容易收到干擾有可能工作的不可靠。3)焊接復位電路,就是C3,RST,R5組成,焊接時要注意C3是一個10UF的電解電容,有正負之分,電解的長腳為正,短腳為負。4)焊接電源座和電源開關,并單片機的20腳的地和電源座連好,單片機40腳連到+5V上,同樣復位電路也要連接+5V,地;振蕩電路有個地要連。程序?qū)嶒炓婚W爍燈1) 實驗任務學習一下,如何用單片機通過程序來控制一個端口!從P2.7 端口經(jīng)過了一個限流電阻接一個發(fā)光二極管L1,使L1 不停地一亮一滅,一亮一滅的時間間隔為0.2 秒。重點是學習程序的編寫思路,看一下程序是如何將課堂上所學到的指令綜合運用起來。2) 電路原理圖程序設
5、計內(nèi)容 在編程序以前先給大家講一下延時程序:(1) 延時程序的設計方法作為單片機的指令的執(zhí)行的時間是很短,一條指令的運行速度能達到微秒級,(所謂指令運行速度與外接晶振有關)因此,我們要求的閃爍時間間隔為0.2秒,相對于微秒來說,相差太大,所以我們在執(zhí)行某一指令時,插入延時程序,來達到我們的要求,但這樣的延時程序是如何設計呢?下面具體介紹其原理:如下圖 所示,我們實際用的石英晶體為11。0592MHz,(之所以用它是為了方便串口波特率計算準確)但為了計算方便我們暫且按12M晶振來計算,因些,1 個機器周期為1 微秒因此,上面的延時程序時間為10.002ms。由以上可知,當R610、R7248 時
6、,延時5ms,R620、R7248 時,延時10ms,以此為基本的計時單位。如本實驗要求0.2 秒200ms,10msR5200ms,則R520,延時子程序如下:DELAY: MOV R5,#20D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RET(2) 輸出控制如 原理圖 所示,當P2.7 端口輸出低電平,即P2.70 時,根據(jù)發(fā)光二極管的單向?qū)щ娦钥芍?,這時發(fā)光二極管LED1亮;當P2.7 端口輸出高電平,即P2.71 時,發(fā)光二極管LED1熄滅;我們可以使用SETB P1.0 指令使P1.0 端口輸出高電平,使用CLR
7、 P1.0 指令使P1.0 端口輸出低電平。5) 程序框圖圖4.1.26) 匯編源程序ORG 0000HAJMP STARTSTART: CLR P2.7 ;關閉P2.7,使P2.7=0;LCALL DELAY ;延時子程序,延時0.2 秒SETB P0.0 ;開啟P2.7,使P2.7=1;LCALL DELAYLJMP STARTDELAY: MOV R5,#20 ;延時子程序,延時0.2 秒D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND7) C 語言源程序#include #include #define p
8、ort_P2 P2sbit L1=P27;/* 延時t毫秒 */void delay02s(unsigned int t)/*精典模塊,建議日后開發(fā)直接引用unsigned int i;while(t-)/* 對于12M時鐘,約延時1ms */for (i=0;i125;i+)void main(void)port_P2 =0;while(1)port_P2 =0; ;關閉P2.7,使P2.7=0;delay02s(200); ;延時子程序,延時0.2 秒L1=1; ;開啟P2.7,使P2.7=1;delay02s(200); ;延時子程序,延時0.2 秒實驗二 LED 共陽極數(shù)碼管 靜態(tài)顯示
9、驅(qū)動1. 實驗任務利用51 單片機的P0 端口的P0.0P0.7 連接到一個共陽極數(shù)碼管的ag 的筆段上,數(shù)碼管的公共端經(jīng)三極管接到+5V。在數(shù)碼管上循環(huán)顯示09 數(shù)字,時間間隔0.2 秒。學習重點是程序的編寫思路和7段數(shù)碼驅(qū)動原理。希望通過這個程序大家能理解MOVC A,A+DPTR,怎么樣使用!2. 電路原理圖3. 系統(tǒng)板上硬件連線 1)在實驗一的基礎上,先焊排阻,排阻就將8個電阻電綁定在一個陶瓷片中,引出了9個腳,一個共公腳,和8個電阻腳。再焊8個限流電阻.后焊七段LED數(shù)碼4. 程序設計內(nèi)容1)LED 數(shù)碼顯示原理七段LED 數(shù)碼內(nèi)部由七個條形發(fā)光二極管和一個小圓點發(fā)光二極管組成,根據(jù)
10、各管的極管的接線形式,可分成共陰極型和共陽極型。LED 數(shù)碼管的ga 七個發(fā)光二極管因加正電壓而發(fā)亮,因加零電壓而不以發(fā)亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼,下面給出共陽極的字形碼見下表“0”0C0H; “1”0F9H, “2”0A4H, “3”0B0H, “4”99H, “5”92H, “6”82H, “7”0F8H, “8”80H, “9”90H 由于顯示的數(shù)字09 的字形碼沒有規(guī)律可循,只能采用查表的方式來完成我們所需的要求了。這樣我們按著數(shù)字09 的順序,把每個數(shù)字的筆段代碼按順序排好!建立的表格如下所示:TABLE: DB 0C0H;0F9H,0A4H,0B0H
11、,99H,92H,82H,0F8H,80H,90H2)在七段LED 數(shù)碼的COM口(也稱為公共口),接了一個PNP三極管Q1,當PNP三極管Q1的基極加高電時,則PNP三極管Q1,C E結是不導通的;當PNP三極管Q1的基極加低電時,則PNP三極管Q1,C E結是導通的.5程序框圖圖5.26 匯編源程序ORG 0START: MOV R1,#00H CLR P2.0 ;將控制LED1的三極管Q1打開,也就是使其導通NEXT: MOV A,R1 MOV DPTR,#TABLE ;將表格的首地址送到DPTR指鐘中,MOVC A,A+DPTR ; 表格的首地址+累加器的內(nèi)容,得到了一地址,然后從這個
12、地址取出MOV P0,A ;將取出的數(shù)送到P0口上,也就是送到了LED顯示LCALL DELAYINC R1 ;地址加1 CJNE R1,#10,NEXT ;判斷0-9字形碼是否送完,不完繼續(xù)從表中取數(shù)/LJMP STARTDELAY: MOV R5,#20D2: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1DJNZ R5,D2RETTABLE: DB 0C0H;0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HEND7 C 語言源程序#include unsigned char code table=0XC0H;0XF9
13、H,0XA4H,0XB0H,0X99H, 0X 92H, 0X 82H, 0X F8H, 0X 80H, 0X 90H;unsigned char dispcount;sbit led1_bit=p22;void delay02s(void)unsigned char i,j,k;for(i=20;i0;i-)for(j=20;j0;j-)for(k=248;k0;k-);void main(void) led1_bit=0;while(1)for(dispcount=0;dispcount10;dispcount+)P0=tabledispcount;delay02s();實驗三 0099
14、計數(shù)器(LED 數(shù)碼管 動態(tài) 顯示技術)1 實驗任務利用51 單片機來制作一個手動計數(shù)器,在51 單片機的P2.3 管腳接一個按鍵,作為手動計數(shù)的按鈕,用單片機的P2.0 控制一個共陽數(shù)碼管,作為0099 計數(shù)的個位數(shù)顯示,用單片機的P2.1控制一個共陽數(shù)碼管,作為0099 計數(shù)的十位數(shù)顯示;學習重點是什么是動態(tài)顯示?什么是靜態(tài)顯示?如何檢測按鍵?2 電路原理圖 3 系統(tǒng)板上硬件連線4 程序設計內(nèi)容(1 單片機對按鍵的識別的過程處理(2 單片機對正確識別的按鍵進行計數(shù),計數(shù)滿時,又從零開始計數(shù); 在此了解一下按鍵為什么要去抖動。(3 單片機對計的數(shù)值要進行數(shù)碼顯示,計得的數(shù)是十進數(shù),含有十位和
15、個位,我們要把十位和個位拆開分別送出這樣的十位和個位數(shù)值到對應的數(shù)碼管上顯示。如何拆開十位和個位我們可以把所計得的數(shù)值對10 求余,即可個位數(shù)字,對10 整除,即可得到十位數(shù)字了。(4 通過查表方式,分別顯示出個位和十位數(shù)字。5 程序框圖圖8.26 匯編源程序ORG 00HAJMP MAINORG 30HMAIN: MOV r0,#0 LOOP1:MOV R3,#50 ;設置循環(huán)次數(shù)LOOP2:MOV A,R0 MOV B,#10 DIV AB ;A除B 將R0的數(shù)據(jù)折分成兩個字節(jié)的BCD碼 SETB P2.0 ;開啟數(shù)碼管LED1的段選 CLR P2.1 ;關閉數(shù)碼管LED2的段選 MOV
16、DPTR,#TABLE ;裝入表頭 MOVC A,A+DPTR ;從表中取十位要顯示的數(shù)據(jù) MOV P0,A LCALL DELAY10MS ;調(diào)用10MS延時 LOOP3: SETB P2.1 ;開啟數(shù)碼管LED2的段選 CLR P2.0 ;關閉數(shù)碼管LED1的段選 MOV A,B MOV DPTR,#TABLE ;裝入表頭 MOVC A,A+DPTR ;從表中取個位要顯示的數(shù)據(jù) MOV P0,A LCALL DELAY10MSLOOP4:DJNZ R3,LOOP2JB P2.3 LOOP5 ;判斷P2。3是否按下,沒有按下,繼續(xù)顯示上一次數(shù)據(jù)LCALL DELAY10MS ;按下,延時一段
17、時,做按鍵去抖動,防干擾JB P2.3 LOOP5 ;再次 判斷P2。3是否按下. INC R0 ;按下,將要顯示的數(shù)據(jù)+1LOOP5:CJNE R0,#100,LOOP1 SJMP MAIN DELAY10MS: MOV R6,#20D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RETTABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END實驗四 44 矩陣式鍵盤識別技術1 實驗任務用89C51 的并行口P1 接44 矩陣鍵盤,以P1.0P1.3 作輸入線,以P1.4P1.7作輸出線;在數(shù)碼管上顯示每個按
18、鍵的“0F”序號。對應的按鍵的序號排列如圖9.1 所示2 硬件電路原理圖3 系統(tǒng)板上硬件連線4 程序設計內(nèi)容(1 44 矩陣鍵盤識別處理。(2 每個按鍵有它的行值和列值 ,行值和列值的組合就是識別這個按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和CPU 通信。每個按鍵的狀態(tài)同樣需變成數(shù)字量“0”和“1”,開關的一端(列線)通過電阻接VCC,而接地是通過程序輸出數(shù)字“0”實現(xiàn)的。鍵盤處理程序的任務是:確定有無鍵按下,判斷哪一個鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開時的抖動。兩個并行口中,一個輸出掃描碼,使按鍵逐行動態(tài)接地,另一個并行口輸入按鍵狀態(tài),由行掃描值和回饋信號共同形成鍵編碼而
19、識別按鍵,通過軟件查表,查出該鍵的功能。5 程序框圖圖9.3注意:P1=0XFF;是將上一個行掃描引腳電位,拉成高電平,每一次掃描只能有一行(即一個引腳)是低電平。6 匯編源程序KEYBUF EQU 30H ;設定一個變量存放按鍵碼ORG 00HSTART: MOV KEYBUF,#2WAIT:MOV P1,#0FFHCLR P1.0 ;掃描第一行,將第一行的引腳拉低MOV A,P1ANL A,#0F0H ;取低4位引腳電平狀態(tài)XRL A,#0F0H ;異或判斷,低4位是否有按鍵按下JZ NOKEY1 ;沒按鍵按下,則跳轉到無按鍵按下程序LCALL DELY10MS ;延時10MS,做為軟件去
20、抖動MOV A,P1 ;再次取出按鍵狀態(tài)ANL A,#0F0H ;取低4位引腳電平狀態(tài)XRL A,#0F0H ;異或判斷,低4位是否有按鍵按下JZ NOKEY1 ;沒按鍵按下,則跳轉到無按鍵按下程序,做為一次干擾MOV A,P1ANL A,#0F0HCJNE A,#0E0H,NK1 ;將ACC中數(shù)據(jù)和00001110相比較,相等則表明,K4被按下MOV KEYBUF,#3LJMP DK1NK1: CJNE A,#0D0H,NK2 ;將ACC中數(shù)據(jù)和00001101相比較,相等則表明,K3被按下MOV KEYBUF,#2LJMP DK1NK2: CJNE A,#0B0H,NK3 ;將ACC中數(shù)據(jù)
21、和00001011相比較,相等則表明,K2被按下MOV KEYBUF,#1LJMP DK1NK3: CJNE A,# 70H,NK4 ;將ACC中數(shù)據(jù)和00001101相比較,相等則表明,K1被按下MOV KEYBUF,#0LJMP DK1NK4: NOPDK1:MOV A,KEYBUF ;將鍵碼送到數(shù)碼管顯示MOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,ACLR P2.2 ;允許LED6顯示DK1A: MOV A,P1ANL A,#0F0HXRL A,#0F0HJNZ DK1A ;等待按鍵松開,不停取出P1口的狀態(tài),不為0,繼續(xù)讀出P1口狀態(tài)NOKEY1:MOV P1
22、,#0FFH ;在掃描第二行以前,將第一行的引腳電平拉高CLR P1.1 ;掃描第二行,將第二行的引腳拉低MOV A,P1ANL A,#0F0HXRL A,#0F0HJZ NOKEY2LCALL DELY10MSMOV A,P1ANL A,#0F0HXRL A,#0F0HJZ NOKEY2MOV A,P1ANL A,#0F0HCJNE A,#0E0H,NK5 ;將ACC中數(shù)據(jù)和00001110相比較,相等則表明,K8被按下MOV KEYBUF,#7LJMP DK2NK5: CJNE A,#0D0H,NK6 ;將ACC中數(shù)據(jù)和00001101相比較,相等則表明,K7被按下MOV KEYBUF,#
23、6LJMP DK2NK6: CJNE A,#0B0H,NK7 ;將ACC中數(shù)據(jù)和00001011相比較,相等則表明,K6被按下MOV KEYBUF,#5LJMP DK2NK7: CJNE A,# 70H,NK8 ;將ACC中數(shù)據(jù)和00000111相比較,相等則表明,K5被按下MOV KEYBUF,#4LJMP DK2NK8: NOPDK2:MOV A,KEYBUF ;將鍵碼送到數(shù)碼管顯示MOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,ACLR P2.2 ;允許LED6顯示DK2A: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ DK2A ;等待按鍵松開,
24、不停取出P1口的狀態(tài),不為0,繼續(xù)讀出P1口狀態(tài)NOKEY2:MOV P1,#0FFH ;在掃描第三行以前,將第二行的引腳電平拉高CLR P1.2 ;掃描第三行,將第三行的引腳拉低MOV A,P1ANL A,#0F0HXRL A,#0F0HJZ NOKEY3LCALL DELY10MSMOV A,P1ANL A,#0F0HXRL A,#0F0HJZ NOKEY3MOV A,P1ANL A,#0F0HCJNE A,#0EH,NK9 ;將ACC中數(shù)據(jù)和00001110相比較,相等則表明,K12被按下MOV KEYBUF,#8LJMP DK3NK9: CJNE A,#0DH,NK10 ;將ACC中數(shù)據(jù)和00001101相比較,相等則表明,K11被按下MOV KEYBUF,#9LJMP DK3NK10: CJNE A,#0BH,NK11 ;將ACC中數(shù)據(jù)和00001011相比較,相等則表明,K10被按下MOV KEYBUF,#10LJMP DK3NK11: CJNE A,#07H,NK12 ;將ACC中數(shù)據(jù)和00000111相比較,相等則表明,K9被按下MOV KEYBUF,#11LJMP DK3NK12: NOPDK3:MOV A,KEYBUF ;將鍵碼送到數(shù)碼管顯示MOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,ACLR P2.2 ;允許LE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年山西信息職業(yè)技術學院單招職業(yè)適應性考試模擬試題及答案解析
- 2026年唐山職業(yè)技術學院單招職業(yè)適應性考試參考題庫及答案解析
- 2026年四川應用技術職業(yè)學院單招職業(yè)適應性測試備考試題及答案解析
- 2026年忻州職業(yè)技術學院單招職業(yè)適應性測試模擬試題及答案解析
- 期末考試工作總結18篇
- 2026年漳州城市職業(yè)學院單招職業(yè)適應性測試備考試題及答案解析
- 2026年周口職業(yè)技術學院單招職業(yè)適應性測試模擬試題及答案解析
- 2026年四川體育職業(yè)學院單招職業(yè)適應性考試模擬試題及答案解析
- 校園安全教育活動總結(15篇)
- 2026年溫州科技職業(yè)學院單招職業(yè)適應性測試模擬試題及答案解析
- 小學階段人工智能在激發(fā)學生學習動機中的應用研究教學研究課題報告
- 2025年山西大地環(huán)境投資控股有限公司社會招聘116人備考題庫及完整答案詳解一套
- 2025年植物標本采集合同協(xié)議
- 2025湖北武漢市蔡甸區(qū)總工會招聘工會協(xié)理員4人筆試試題附答案解析
- 2026年企業(yè)出口管制合規(guī)審查培訓課件與物項識別指南
- 膽管重復畸形健康宣教
- 2025秋人教精通版英語小學五年級上冊知識點及期末測試卷及答案
- 2025年秋季學期國家開放大學《人文英語4》期末機考精準復習題庫
- GB/Z 3480.22-2024直齒輪和斜齒輪承載能力計算第22部分:微點蝕承載能力計算
- 醫(yī)療耗材配送服務方案
- 環(huán)境監(jiān)測報告編制指南
評論
0/150
提交評論