nKDE單片機(jī)實(shí)驗(yàn)指導(dǎo)書_第1頁(yè)
nKDE單片機(jī)實(shí)驗(yàn)指導(dǎo)書_第2頁(yè)
nKDE單片機(jī)實(shí)驗(yàn)指導(dǎo)書_第3頁(yè)
nKDE單片機(jī)實(shí)驗(yàn)指導(dǎo)書_第4頁(yè)
nKDE單片機(jī)實(shí)驗(yàn)指導(dǎo)書_第5頁(yè)
已閱讀5頁(yè),還剩193頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PAGEnKDE—51單片機(jī)實(shí)驗(yàn)教學(xué)系統(tǒng)實(shí)驗(yàn)指導(dǎo)書南京郵電高校計(jì)算機(jī)學(xué)院聯(lián)合研制南京捷輝科技有限公司目錄TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc276329262"第1章nKDE51單片機(jī)實(shí)驗(yàn)教學(xué)系統(tǒng)簡(jiǎn)介?PAGEREF_Toc276329262\h1HYPERLINK\l"_Toc276329263”1.1?概述?PAGEREF_Toc276329263\h1HYPERLINK\l"_Toc276329264"1.1.1 CPU板 PAGEREF_Toc276329264\h1HYPERLINK\l"_Toc276329265"1.1.2?基本IO板?PAGEREF_Toc276329265\h3HYPERLINK1.1.4?擴(kuò)展總線接口IO板?PAGEREF_Toc276329267\h6HYPERLINK1.1.5 圖形點(diǎn)陣LCD顯示模塊、大容量Flash存儲(chǔ)器及GPRSModem板 PAGEREF_Toc276329268\h8HYPERLINK\l"_Toc276329269"1.1。6?UART、以太網(wǎng)及電話接口擴(kuò)展板?PAGEREF_Toc276329269\h9HYPERLINK\l”_Toc276329270"第2章KeilμVisionC51集成開(kāi)發(fā)環(huán)境及ISP軟件使用簡(jiǎn)介?PAGEREF_Toc276329270\h13HYPERLINK\l”_Toc276329271"2。1 Keil軟件的使用?PAGEREF_Toc276329271\h13HYPERLINK\l”_Toc276329272"2.1.1?啟動(dòng)Keil?PAGEREF_Toc276329272\h13HYPERLINK\l"_Toc276329273"2。1.2?新建工程?PAGEREF_Toc276329273\h14HYPERLINK\l"_Toc276329274”2。1。3?設(shè)置工程的配置及參數(shù)?PAGEREF_Toc276329274\h15HYPERLINK\l"_Toc276329275"2.1。4 使用Keil建立一個(gè)實(shí)際的工程?PAGEREF_Toc276329275\h16HYPERLINK\l”_Toc276329276”2。1.5 程序的編譯、鏈接及運(yùn)行?PAGEREF_Toc276329276\h18HYPERLINK\l”_Toc276329277"2.2?ISP軟件的使用 PAGEREF_Toc276329277\h21HYPERLINK\l”_Toc276329278"2.2。1?ISP簡(jiǎn)介?PAGEREF_Toc276329278\h21HYPERLINK\l"_Toc276329279”2.2。2 HEX文件的格式?PAGEREF_Toc276329279\h22HYPERLINK\l"_Toc276329280"2。2.3 使用ISP程序固化單片機(jī)代碼進(jìn)行實(shí)驗(yàn) PAGEREF_Toc276329280\h22HYPERLINK\l”_Toc276329281”第3章單片機(jī)內(nèi)部資源掌握類實(shí)驗(yàn)?PAGEREF_Toc276329281\h27HYPERLINK\l"_Toc276329282"3.1?單片機(jī)并行端口輸入輸出實(shí)驗(yàn)?PAGEREF_Toc276329282\h27HYPERLINK\l"_Toc276329283"3.2?獨(dú)立數(shù)碼管驅(qū)動(dòng)實(shí)驗(yàn)?PAGEREF_Toc276329283\h32HYPERLINK\l"_Toc276329284"3。3?數(shù)碼管動(dòng)態(tài)顯示驅(qū)動(dòng)實(shí)驗(yàn)?PAGEREF_Toc276329284\h35HYPERLINK\l”_Toc276329285”3。4?單片機(jī)外部中斷實(shí)驗(yàn)?PAGEREF_Toc276329285\h38HYPERLINK\l"_Toc276329286”3。5?使用單片機(jī)定時(shí)器的數(shù)碼管動(dòng)態(tài)顯示驅(qū)動(dòng)實(shí)驗(yàn)?PAGEREF_Toc276329286\h43HYPERLINK\l"_Toc276329287"3.6?單片機(jī)串行口的應(yīng)用──通過(guò)移位寄存器擴(kuò)展輸入輸出端口?PAGEREF_Toc276329287\h49HYPERLINK\l"_Toc276329288”3.7 單片機(jī)和計(jì)算機(jī)串行通信實(shí)驗(yàn)──查詢方式?PAGEREF_Toc276329288\h58HYPERLINK\l"_Toc276329289"3。8 單片機(jī)和計(jì)算機(jī)串行通信實(shí)驗(yàn)──中斷方式 PAGEREF_Toc276329289\h60HYPERLINK\l"_Toc276329290"3.9?單片機(jī)計(jì)數(shù)器實(shí)驗(yàn)?PAGEREF_Toc276329290\h65HYPERLINK4.5?模擬總線時(shí)序驅(qū)動(dòng)1602字符點(diǎn)陣液晶顯示模塊實(shí)驗(yàn)?PAGEREF_Toc276329296\h92HYPERLINK\l"_Toc276329297"4.6 模擬單總線(1-Wire)時(shí)序掌握數(shù)字溫度傳感器DS18B20實(shí)驗(yàn)?PAGEREF_Toc276329297\h102HYPERLINK\l"_Toc276329298"4。7?基于TLC1549的串行A/D轉(zhuǎn)換實(shí)驗(yàn) PAGEREF_Toc276329298\h110HYPERLINK\l"_Toc276329299”4。8 基于TLC5615的串行D/A轉(zhuǎn)換實(shí)驗(yàn) PAGEREF_Toc276329299\h114_Toc276329303"5。1.1?MCS—51單片機(jī)外部總線擴(kuò)展的結(jié)構(gòu)?PAGEREF_Toc276329303\h128HYPERLINK\l”_Toc276329304"5。1.2?單片機(jī)擴(kuò)展數(shù)據(jù)總線的操作時(shí)序?PAGEREF_Toc276329304\h129HYPERLINK\l"_Toc276329305"5。2 單片機(jī)外擴(kuò)RAM測(cè)試實(shí)驗(yàn)?PAGEREF_Toc276329305\h131HYPERLINK\l"_Toc276329306"5.3?基于單片機(jī)擴(kuò)展總線的并行輸入輸出端口實(shí)驗(yàn)?PAGEREF_Toc276329306\h135HYPERLINK\l”_Toc276329307"5.4 單片機(jī)外擴(kuò)大容量Flash存儲(chǔ)器39SF040實(shí)驗(yàn)?PAGEREF_Toc276329307\h138HYPERLINK\l”_Toc276329308”5。5?單片機(jī)總線擴(kuò)展方式掌握128×64圖形點(diǎn)陣LCD顯示模塊實(shí)驗(yàn) PAGEREF_Toc276329308\h148HYPERLINK\l"_Toc276329309”5.5.1?128×64圖形點(diǎn)陣液晶顯示模塊簡(jiǎn)介?PAGEREF_Toc276329309\h148HYPERLINK\l"_Toc276329310"5。5。2 128×64圖形點(diǎn)陣LCD顯示模塊和單片機(jī)的接口電路?PAGEREF_Toc276329310\h151HYPERLINK5.6 基于16C550的單片機(jī)擴(kuò)展串行口實(shí)驗(yàn)──查詢方式?PAGEREF_Toc276329311\h159HYPERLINK\l"_Toc276329312”5。6。1?16C550簡(jiǎn)介 PAGEREF_Toc276329312\h159HYPERLINK\l”_Toc276329313”5。6。2?單片機(jī)通過(guò)16C550擴(kuò)展串行口的電路設(shè)計(jì)?PAGEREF_Toc276329313\h167HYPERLINK5.9?基于MT8870的電話接口掌握實(shí)驗(yàn) PAGEREF_Toc276329316\h180HYPERLINK\l"_Toc276329317"第6章單片機(jī)綜合實(shí)驗(yàn)?PAGEREF_Toc276329317\h185HYPERLINK\l"_Toc276329318”6.1?基于GSMModem的短消息收發(fā)實(shí)驗(yàn) PAGEREF_Toc276329318\h185HYPERLINK\l"_Toc276329319"6。1.1?GSM網(wǎng)絡(luò)概述?PAGEREF_Toc276329319\h185HYPERLINK\l"_Toc276329320"6.1。2 GSMModem模塊簡(jiǎn)介?PAGEREF_Toc276329320\h185HYPERLINK\l"_Toc276329321"6。2?漢字顯示液晶模塊實(shí)驗(yàn)?PAGEREF_Toc276329321\h193南京郵電大學(xué)計(jì)算機(jī)學(xué)院·南京捷輝科技有限公司PAGE194nKDE51單片機(jī)實(shí)驗(yàn)教學(xué)系統(tǒng)簡(jiǎn)介概述nKDE—51單片機(jī)實(shí)驗(yàn)教學(xué)系統(tǒng)是由南京郵電高校計(jì)算機(jī)學(xué)院和南京捷輝科技有限公司聯(lián)合設(shè)計(jì)的協(xié)作單片機(jī)教學(xué)的實(shí)驗(yàn)系統(tǒng)。該系統(tǒng)除可進(jìn)行傳統(tǒng)的單片機(jī)實(shí)驗(yàn)外,我們還依據(jù)南京郵電高校的教學(xué)定位,增加了部分通信類實(shí)驗(yàn)器件,設(shè)計(jì)了相關(guān)實(shí)驗(yàn),并編寫了配套的實(shí)驗(yàn)指導(dǎo)書。使用該系統(tǒng)共可進(jìn)行數(shù)十種單片機(jī)及通信類實(shí)驗(yàn),是提高單片機(jī)課程教學(xué)質(zhì)量及同學(xué)動(dòng)手能力的得力教學(xué)實(shí)驗(yàn)設(shè)備。nKDE-51單片機(jī)實(shí)驗(yàn)教學(xué)系統(tǒng)采納模塊化設(shè)計(jì),以便利同學(xué)自由組合功能,設(shè)計(jì)實(shí)驗(yàn)。整個(gè)實(shí)驗(yàn)系統(tǒng)包括六個(gè)功能模塊,分別為CPU板、基本IO板、模擬總線接口IO板、擴(kuò)展總線接口IO板、字符點(diǎn)陣LCD/大容量Flash/GPRS模塊板和UART/以太網(wǎng)及電話接口擴(kuò)展板。全部電路板的電源都通過(guò)固定螺絲引入,左下角螺絲接+5V電源,左上角螺絲接+12V電源,右側(cè)兩個(gè)螺絲接地,實(shí)驗(yàn)時(shí)應(yīng)格外注意相鄰電路板之間不同的電源引腳不能短路,安裝電路板時(shí),首先應(yīng)切斷系統(tǒng)電源,并注意電路板的安裝方向,全部核對(duì)無(wú)誤后方可通電。每塊電路板的左下角均有一個(gè)電源指示LED,當(dāng)系統(tǒng)正常上電后,該LED點(diǎn)亮。各功能模塊電路簡(jiǎn)略介紹如下。CPU板電路板外形CPU板的外形如REFCPU板外形\h圖1-1所示。圖1-SEQ圖1—\*ARABIC1CPU板外形系統(tǒng)資源及功能簡(jiǎn)介單片機(jī)端口的引出MCS—51系列單片機(jī)共有4個(gè)獨(dú)立的8位并行I/O端口,分別為P0、P1、P2和P3,在CPU板上,各通過(guò)兩個(gè)8芯單排插針引出,如REFCPU端口及引出插座標(biāo)號(hào)\h表1—1所示,可通過(guò)杜邦插座連接到其它模塊或器件。表1—SEQ表1—\*ARABIC1CPU端口及引出插座標(biāo)號(hào)單片機(jī)端口引出插座標(biāo)號(hào)P0J1,J5P1J2,J6P2J3,J7P3J4,J8注:端口P2的引腳排列挨次和其它3個(gè)端口相反,連接時(shí)要加以注意。CPU工作頻率的選擇nKDE-51系統(tǒng)供應(yīng)了四種常用的晶振頻率,分別是11.0592MHz、12MHz、18.432MHz和22。1184MHz。用戶可通過(guò)跳線(JP1和JP2)來(lái)選擇系統(tǒng)晶振的頻率。如果用戶還需要其它的晶振頻率,本系統(tǒng)預(yù)留了一個(gè)焊接晶振的位置(X5)可供使用。晶振頻率選擇如REFCPU晶振頻率選擇\h表1-2所示.表1-SEQ表1—\*ARABIC2CPU晶振頻率選擇選擇晶振晶振頻率短接位置X111。0592MHzJP1-1,JP2-1X212MHzJP1-2,JP2—2X318.432MHzJP1-3,JP2-3X422.1184MHzJP1-4,JP2-4X5用戶自定義JP1-5,JP2—5CPU工作模式的選擇MCS-51單片機(jī)的工作方式可分為端口工作方式(不擴(kuò)展總線)和擴(kuò)展總線模式。在擴(kuò)展總線模式下,單片機(jī)的P0口通過(guò)ALE信號(hào)掌握外部地址鎖存器復(fù)用為地址總線(低8位地址)和數(shù)據(jù)總線,P2口供應(yīng)高8位地址,同時(shí)P3.6和P3.7作為和信號(hào)。而當(dāng)單片機(jī)工作在端口方式下時(shí),P0~P3的每一位都可以作為獨(dú)立的端口引腳使用。在nKDE-51系統(tǒng)中,當(dāng)實(shí)驗(yàn)中不使用擴(kuò)展總線時(shí),單片機(jī)的端口可通過(guò)REFCPU端口及引出插座標(biāo)號(hào)\h\*MERGEFORMAT表1—1所列出的插座引出.如果單片機(jī)實(shí)驗(yàn)需要使用擴(kuò)展總線,用戶可使用系統(tǒng)供應(yīng)的40芯連接電纜,將J9和JX1連接起來(lái)。此時(shí)P0、P2和P3。6、P3.7等引腳已作為系統(tǒng)總線使用,不要再將它們用作一般的I/O。JX2和JX3的各引腳和JX1的對(duì)應(yīng)引腳相連,可以通過(guò)它們將總線連接到其它模塊上。單片機(jī)的ISP及串行口電路連接nKDE—51系統(tǒng)使用NXP公司的P89V51RD2作為CPU.該CPU兼容標(biāo)準(zhǔn)51內(nèi)核,自帶64K字節(jié)的Flash程序存儲(chǔ)器,支持通過(guò)串行口進(jìn)行在系統(tǒng)編程(ISP)以及程序調(diào)試。單片機(jī)的串行口通過(guò)雙向自鎖開(kāi)關(guān)SW2選擇連接到9芯孔型插座COM1(RS232接口,用于和計(jì)算機(jī)通信進(jìn)行ISP或程序調(diào)試)或者連接到J4、J8及J9(用于進(jìn)行I/O端口及RS485通信等實(shí)驗(yàn))。計(jì)算機(jī)必須通過(guò)實(shí)驗(yàn)系統(tǒng)供應(yīng)的9芯串口延長(zhǎng)電纜和COM1相連。當(dāng)SW2彈起時(shí),單片機(jī)的串行口連接到COM1;當(dāng)SW2按下時(shí),單片機(jī)串行口連接到J4、J8及J9。擴(kuò)展外部RAMnKDE-51單片機(jī)實(shí)驗(yàn)教學(xué)系統(tǒng)供應(yīng)了32KB的擴(kuò)展外部RAM,CPU板上的U2為32KB靜態(tài)RAM芯片62256,U3為74HC573,當(dāng)連接了J9和JX1后,單片機(jī)的擴(kuò)展總線即和U2及U3接通,此時(shí)可訪問(wèn)外部擴(kuò)展RAM。外部擴(kuò)展RAM的片選線為A15,低有效,地址空間為0x0000~0x7FFF。復(fù)位電路nKDE-51系統(tǒng)設(shè)計(jì)了上電復(fù)位及按鍵復(fù)位電路。實(shí)驗(yàn)系統(tǒng)加電后,只要按下Reset健,CPU即可復(fù)位.復(fù)位信號(hào)同時(shí)也通過(guò)JX2和JX3引出到其它模塊上?;綢O板電路板外形基本IO板的外形如REF基本IO板外形\h\*MERGEFORMAT圖1—2所示。圖1-SEQ圖1-\*ARABIC2基本IO板外形系統(tǒng)資源及功能簡(jiǎn)介獨(dú)立LED基本IO板上共有8只獨(dú)立驅(qū)動(dòng)的LED,元件標(biāo)號(hào)為D1~D8,通過(guò)J4引入外部信號(hào)進(jìn)行驅(qū)動(dòng)。當(dāng)J4的某個(gè)引腳輸入低電平常,對(duì)應(yīng)的LED點(diǎn)亮;輸入高電平或者懸空時(shí),LED熄滅.獨(dú)立數(shù)碼管基本IO板上供應(yīng)了一個(gè)獨(dú)立驅(qū)動(dòng)的7段數(shù)碼管,元件標(biāo)號(hào)為LED1,通過(guò)J5引入外部信號(hào)進(jìn)行驅(qū)動(dòng),J5的1~8腳分別對(duì)應(yīng)數(shù)碼管的A~H段.數(shù)碼管為共陽(yáng)驅(qū)動(dòng)方式,當(dāng)J5的某個(gè)引腳輸入低電平常,對(duì)應(yīng)的段點(diǎn)亮;輸入高電平或者懸空時(shí),對(duì)應(yīng)的段熄滅。蜂鳴器蜂鳴器B1通過(guò)J8的引腳1驅(qū)動(dòng),輸入低電平則蜂鳴器鳴響;輸入高電平或懸空時(shí),蜂鳴器不鳴響。繼電器繼電器RL1通過(guò)J8的引腳2驅(qū)動(dòng),輸入低電平常RL1吸合,J9的兩個(gè)端子接通;輸入高電平或懸空時(shí),RL1斷開(kāi),J9的兩個(gè)端子也斷開(kāi)。紅外接收模塊紅外接收模塊的元件標(biāo)號(hào)為IR1。當(dāng)紅外遙控器發(fā)出的紅外信號(hào)到達(dá)該模塊時(shí),模塊即通過(guò)輸出引腳輸出和遙控信號(hào)對(duì)應(yīng)的方波。紅外接收模塊的輸出引腳(管腳編號(hào)1)連接到J8的第3號(hào)引腳。實(shí)驗(yàn)時(shí),使用連接電纜將單片機(jī)的端口連接到J8即可通該端口進(jìn)行掌握.紅外編碼的簡(jiǎn)略格式及編解碼方式請(qǐng)自行查閱相關(guān)資料.撥碼開(kāi)關(guān)JP1為8路撥碼開(kāi)關(guān),每路開(kāi)關(guān)和J7的一個(gè)引腳相連.當(dāng)撥碼開(kāi)關(guān)中某位撥動(dòng)到ON的位置時(shí),撥碼開(kāi)關(guān)輸出低電平,否則輸出高電平。單片機(jī)可把某端口連接到J7來(lái)讀取撥碼開(kāi)關(guān)的值。獨(dú)立按鍵電路板中SW1~SW4為4路獨(dú)立按鍵,分別連接到J6的1~4引腳。按鍵未按下時(shí)輸出高電平,按鍵按下時(shí)則輸出低電平。單片機(jī)可把某端口連接到J6來(lái)讀取按鍵的值。行列式鍵盤電路板中K1~K16為行列式鍵盤,共16個(gè)按鍵,分為四行四列。鍵盤的四行分別連接到J3的第1~4號(hào)引腳,鍵盤的四列則連接到J3的第5~8號(hào)引腳.每個(gè)按鍵的兩端分別跨接在某個(gè)行和列的交叉點(diǎn)上,當(dāng)按鍵按下時(shí),對(duì)應(yīng)的行和列即接通。組合數(shù)碼管系統(tǒng)中的組合數(shù)碼管由2個(gè)獨(dú)立的4聯(lián)數(shù)碼管模塊組成,元件標(biāo)號(hào)為L(zhǎng)P1和LP2,共8?jìng)€(gè)數(shù)碼管。組合數(shù)碼管的驅(qū)動(dòng)為共陰方式,每個(gè)數(shù)碼管的公共陰極分別引出,定義為POS1~POS8,為8?jìng)€(gè)數(shù)碼管的位置選擇端,由一片ULN2803達(dá)林頓管陣列U1驅(qū)動(dòng)。ULN2803的輸入端連接到J1,J1的第1位~第8位從左到右分別對(duì)應(yīng)8個(gè)數(shù)碼管,某位輸出高電平則驅(qū)動(dòng)該位置對(duì)應(yīng)數(shù)碼管的陰極和地連接,表示該位值的數(shù)碼管可以點(diǎn)亮。要點(diǎn)亮某個(gè)數(shù)碼管,僅有位置驅(qū)動(dòng)還不夠,必須同時(shí)供應(yīng)該數(shù)碼管的段驅(qū)動(dòng)。在本系統(tǒng)中,8個(gè)數(shù)碼管的同名段都復(fù)接在一起,通過(guò)一個(gè)PNP型三極管驅(qū)動(dòng),因此共有8個(gè)三極管,元件標(biāo)號(hào)為Q1~Q8。這8個(gè)三極管的基極分別連接到J2的第1位~第8位,對(duì)應(yīng)數(shù)碼管的A~H段.當(dāng)J2的某位輸入低電平常,該位對(duì)應(yīng)的數(shù)碼管的段被驅(qū)動(dòng)。如果同時(shí)某個(gè)位置驅(qū)動(dòng)也有效,則該位置的數(shù)碼管的對(duì)應(yīng)段點(diǎn)亮。模擬總線接口IO板電路板外形模擬總線接口IO板的外形如REF模擬總線接口IO板外形\h圖1-3所示。系統(tǒng)資源及功能簡(jiǎn)介1602字符點(diǎn)陣LCD顯示模塊系統(tǒng)中使用了一塊1602的字符點(diǎn)陣LCD顯示模塊,元器件標(biāo)號(hào)為L(zhǎng)CM1,模塊內(nèi)部的驅(qū)動(dòng)芯片為HD44780,可顯示兩行,每行16個(gè)英文字符及符號(hào)。1602LCD顯示模塊和CPU的接口包括數(shù)據(jù)線(D0~D7)及掌握線(D/、R/、E),其中數(shù)據(jù)線連接到J5,掌握線連接到J4。J4的4號(hào)引腳用于掌握LCD模塊的背光開(kāi)關(guān)。當(dāng)該引腳輸入低電平信號(hào)時(shí),LCD模塊的背光打開(kāi),否則背光關(guān)閉。LCD顯示模塊的顯示對(duì)比度通過(guò)滑動(dòng)變阻器VR1調(diào)節(jié)。在本系統(tǒng)中,1602字符點(diǎn)陣LCD被配置成端口工作方式,即通過(guò)單片機(jī)端口輸出凹凸電平模擬總線操作時(shí)序來(lái)掌握LCD模塊的顯示。關(guān)于HD44780簡(jiǎn)略的掌握命令和操作時(shí)序等請(qǐng)參閱其Datasheet及相關(guān)實(shí)驗(yàn)代碼。圖1-SEQ圖1-\*ARABIC3模擬總線接口IO板外形看門狗(WDT)芯片X5045X5045的主要功能有上電復(fù)位、低電壓復(fù)位、可編程看門狗定時(shí)器、4Kbit3—Wire接口非易失性E2PROM等。芯片標(biāo)號(hào)U1。X5045的掌握引腳共4根,分別為、SI、SO和SCK,通過(guò)J3引出,復(fù)位信號(hào)通過(guò)J9的4號(hào)引腳輸出。芯片的簡(jiǎn)略功能和掌握時(shí)序請(qǐng)參閱X5045的數(shù)據(jù)手冊(cè)及相關(guān)實(shí)驗(yàn)代碼。E2PROM存儲(chǔ)器芯片24C1624Cxx系列E2PROM存儲(chǔ)器為I2C接口的電可擦除非易失性存儲(chǔ)器,器件存儲(chǔ)單元的牢靠重復(fù)擦除次數(shù)可達(dá)一百萬(wàn)次,常用來(lái)存儲(chǔ)小容量的、常常修改的數(shù)據(jù).本系統(tǒng)中使用的型號(hào)為24C16,標(biāo)號(hào)為U4.該芯片的SDA和SCL信號(hào)線連接到J6的第1、2號(hào)引腳.實(shí)時(shí)鐘(RTC)芯片PCF8563PCF8563為Philips公司生產(chǎn)的具有I2C接口的RTC芯片。該芯片可在后備紐扣電池供電的情況下正常工作,供應(yīng)包括年月日、時(shí)分秒的精確計(jì)時(shí)服務(wù)。本系統(tǒng)中的PCF8563標(biāo)號(hào)為U5,該芯片的SDA和SCL信號(hào)線連接到J6的第3、4號(hào)引腳,中斷準(zhǔn)時(shí)鐘信號(hào)輸出則通過(guò)J9的第2、3號(hào)引腳輸出.該芯片的簡(jiǎn)略功能請(qǐng)參閱其Datasheet及相關(guān)實(shí)驗(yàn)代碼。溫度傳感器芯片DS18B20DS18B20為小型化、一體化的數(shù)字溫度傳感器,溫度檢測(cè)范圍-55℃~125℃。該芯片標(biāo)號(hào)為TMP1。DS18B20采納1—Wire總線接口,通過(guò)一根信號(hào)線和CPU交互.該信號(hào)線連接到J24和J25的第8號(hào)引腳。實(shí)驗(yàn)時(shí),使用連接電纜將單片機(jī)的端口連接到J24或J25即可通過(guò)該端口對(duì)DS18B20進(jìn)行掌握。芯片的簡(jiǎn)略功能和掌握時(shí)序請(qǐng)參閱Datasheet及相關(guān)實(shí)驗(yàn)代碼.串行A/D變換芯片TLC1549TLC1549為TI公司生產(chǎn)的10位串行A/D轉(zhuǎn)換芯片。系統(tǒng)中該芯片的元件標(biāo)號(hào)為U2.芯片通過(guò)三個(gè)管腳(CLK、DO、)進(jìn)行掌握,這三個(gè)管腳連接到J7的第1、2、3號(hào)引腳。芯片的簡(jiǎn)略功能及掌握時(shí)序請(qǐng)參閱Dat(yī)asheet及相關(guān)的實(shí)驗(yàn)代碼。模擬量的輸入有兩種方法,一種方法是通過(guò)J1輸入外部的模擬量,此時(shí)需要把跳線JP1的1、2短接;另外一種方法是通過(guò)滑動(dòng)變阻器VR2調(diào)節(jié)輸入電壓,此時(shí)需要將跳線JP1的2、3短接。兩種輸入方法中,輸入信號(hào)的電平幅度都必須限制在0~5V之間。串行D/A變換芯片TLC5619TLC5615為TI公司生產(chǎn)的10位串行D/A轉(zhuǎn)換芯片。芯片標(biāo)號(hào)U3,通過(guò)三個(gè)引腳(DIN、SCK、)進(jìn)行掌握,這三個(gè)引腳分別連接到J8的第1、2、3號(hào)引腳。該芯片的簡(jiǎn)略功能及掌握時(shí)序請(qǐng)參閱Datasheet及相關(guān)實(shí)驗(yàn)代碼。模擬量通過(guò)J2的1號(hào)引腳輸出。XC9536CPLD本電路板包含了一片CPLD芯片XC9536,元件標(biāo)號(hào)為U6,共有34個(gè)可用的IO管腳,通過(guò)J11~J15引出.J10為該芯片的編程接口。本實(shí)驗(yàn)指導(dǎo)書不包括CPLD的實(shí)驗(yàn)內(nèi)容,讀者可自行參閱相關(guān)資料。擴(kuò)展總線接口IO板電路板外形擴(kuò)展總線接口IO板的外形如REF擴(kuò)展總線接口IO板外形\h圖1-4所示。圖1-SEQ圖1—\*ARABIC4擴(kuò)展總線接口IO板外形系統(tǒng)資源及功能簡(jiǎn)介16位并行擴(kuò)展輸入及輸出端口單片機(jī)的總線經(jīng)JX1引入后,經(jīng)U3和U4組成的譯碼電路完成譯碼,共產(chǎn)生4個(gè)譯碼輸出,分別掌握2個(gè)并行8位輸入芯片(74HC244)和2個(gè)并行輸出芯片(74HC573).16并行輸入數(shù)據(jù)由J5引入,16位并行輸出數(shù)據(jù)則由J4引出。相關(guān)端口地址安排范圍及功能說(shuō)明等如REF十六位并行輸入輸出端口地址分配及功能說(shuō)明\h表1-3所示。表1-SEQ表1—\*ARABIC316位并行輸入/輸出端口地址安排及功能說(shuō)明地址范圍受控元件標(biāo)號(hào)功能簡(jiǎn)介0x8000~0x87FFU5輸出端口低8位(J4的D0~D7)0x9000~0x97FFU6輸出端口高8位(J4的D8~D15)0xA000~0xA7FFU7輸入端口低8位(J5的D0~D7)0xB(niǎo)000~0xB7FFU8輸入端口高8位(J5的D8~D15)16位串行擴(kuò)展輸入及輸出端口本系統(tǒng)供應(yīng)16位的串行并行移位寄存器,該移位寄存器由2片74164組成,芯片標(biāo)號(hào)為U9、U10.串行數(shù)據(jù)輸出時(shí),首先輸入到U10,U10最高位的串行數(shù)據(jù)則輸出到U9的串行數(shù)據(jù)輸入,移位時(shí)鐘則同時(shí)輸入到U9和U10。16位并行數(shù)據(jù)輸出到J6。當(dāng)單片機(jī)的串行口設(shè)置為模式0時(shí),輸出的串行數(shù)據(jù)由RxD輸出,移位時(shí)鐘由TxD供應(yīng),單片機(jī)串行口輸出數(shù)據(jù)時(shí)LSB先輸出,MSB后輸出,U9和U10在電路設(shè)計(jì)時(shí)已經(jīng)考慮到這個(gè)特點(diǎn),做了倒序處理。簡(jiǎn)略電路及程序請(qǐng)參閱相關(guān)的實(shí)驗(yàn)代碼。單片機(jī)的串行數(shù)據(jù)輸入由2片并入串出移位寄存器74HC165完成,簡(jiǎn)略的電路及程序請(qǐng)參閱相關(guān)的實(shí)驗(yàn)代碼。16×16LED點(diǎn)陣16×16LED點(diǎn)陣由四塊8×8LED點(diǎn)陣模塊組成,共16行、16列,每個(gè)行列的交叉點(diǎn)有一個(gè)發(fā)光二極管,共256個(gè)獨(dú)立的LED。對(duì)該點(diǎn)陣模塊的驅(qū)動(dòng)采納行列驅(qū)動(dòng)及動(dòng)態(tài)掃描的方式。模塊的列驅(qū)動(dòng)由兩塊ULN(yùn)2803完成,元件標(biāo)號(hào)為U1、U2,列驅(qū)動(dòng)信號(hào)由J1引入.當(dāng)列驅(qū)動(dòng)數(shù)據(jù)送到J1后,如果某位為高,則對(duì)該列LED的驅(qū)動(dòng)有效。模塊的行驅(qū)動(dòng)則由J2引入,通過(guò)16個(gè)PNP型三極管完成.當(dāng)行驅(qū)動(dòng)數(shù)據(jù)送到J2后,如果某位為低,則對(duì)該行LED的驅(qū)動(dòng)有效。當(dāng)行列驅(qū)動(dòng)同時(shí)有效時(shí),對(duì)應(yīng)交叉點(diǎn)上的LED點(diǎn)亮。圖形點(diǎn)陣LCD顯示模塊、大容量Flash存儲(chǔ)器及GPRSModem板本部分電路采納地址總線擴(kuò)展的方式掌握?qǐng)D形點(diǎn)陣LCD顯示模塊及大容量Flash存儲(chǔ)器。單片機(jī)的系統(tǒng)總線通過(guò)JX1引入本電路板,經(jīng)地址譯碼電路譯碼后輸出對(duì)LCD顯示模塊及Flash的有效掌握信號(hào)。電路板外形本電路板的外形如REF圖形點(diǎn)陣LCD_大容量Flash_GPRSModem\h圖1-5所示。系統(tǒng)資源及功能簡(jiǎn)介圖形點(diǎn)陣LCD顯示模塊系統(tǒng)使用的圖形點(diǎn)陣LCD顯示模塊的點(diǎn)陣規(guī)模為128×64,顯示模塊在電路板上的元件標(biāo)號(hào)為U7,通過(guò)VR1調(diào)整顯示對(duì)比度,顯示模塊的背光則由J4的D7位掌握,該位輸入低電平將打開(kāi)顯示模塊的背光。LCD顯示模塊的有效地址空間為0xD000~0xDFFF。圖1—SEQ圖1—\*ARABIC5圖形點(diǎn)陣LCD顯示模塊、大容量Flash存儲(chǔ)器及GPRSModem模塊電路板外形大容量Flash存儲(chǔ)器系統(tǒng)選用39SF040大容量Flash存儲(chǔ)器,元件標(biāo)號(hào)為U5。該存儲(chǔ)器共有4M位(512K字節(jié))的存儲(chǔ)單元。存儲(chǔ)單元按扇區(qū)進(jìn)行組織,4K字節(jié)為一個(gè)扇區(qū),整個(gè)存儲(chǔ)空間可分為128個(gè)扇區(qū).在電路設(shè)計(jì)中,單片機(jī)通過(guò)A0~A11共12位地址線供應(yīng)扇區(qū)內(nèi)的存儲(chǔ)地址,另外再通過(guò)J4的D0~D6供應(yīng)高7位的扇區(qū)地址。GPRSModem本系統(tǒng)選用華為的GTM-900CGPRS模塊,協(xié)作外圍電路構(gòu)成了GPRSModem。模塊的元件標(biāo)號(hào)為U3。計(jì)算機(jī)或單片機(jī)系統(tǒng)通過(guò)串行口掌握GPRSModem,電路板上的串行口插座元件標(biāo)號(hào)為COM1,計(jì)算機(jī)的串行口可通過(guò)串口延長(zhǎng)線直接與之相連。GPRS模塊串行口的全部信號(hào)都已引出,通過(guò)一片SP3238進(jìn)行電平變換。GPRSModem必須插入SIM卡才能正常工作。SIM卡插座的元件標(biāo)號(hào)為J2。將J2的上蓋向左推動(dòng)即可翻開(kāi),放入SIM卡后壓下上蓋,并向右滑動(dòng)即可鎖緊SIM卡。實(shí)驗(yàn)完畢要取出SIM卡前請(qǐng)務(wù)必先關(guān)閉電源,然后方可取出SIM卡。開(kāi)頭實(shí)驗(yàn)前,請(qǐng)將位于右下角的天線轉(zhuǎn)動(dòng)到和條帶電纜平行的方向(使其指向右端或右下方),以避開(kāi)射頻信號(hào)對(duì)系統(tǒng)的干擾.系統(tǒng)上電后,按下K1約100ms,或通過(guò)單片機(jī)的端口引腳給J5的1號(hào)引腳(IGT)一個(gè)約100ms的低電平信號(hào)即可啟動(dòng)GPRS模塊,此時(shí)D1會(huì)通過(guò)閃動(dòng)表示模塊的狀態(tài)(不同品牌的GPRSModem閃動(dòng)情況不一樣,簡(jiǎn)略請(qǐng)參閱其Datasheet).一般情況下10~15秒模塊可正常啟動(dòng)并登錄到網(wǎng)絡(luò),此后可通過(guò)模塊的串行口輸入AT命令來(lái)掌握模塊。位于電路板右上位置的J3為電話手柄插座,插入電話手柄后,可通過(guò)AT命令掌握GTM—900C模塊進(jìn)行語(yǔ)音通信實(shí)驗(yàn).關(guān)于GTM-900C模塊的指示燈狀態(tài)及AT命令等內(nèi)容可參閱模塊的硬件描述文檔和AT命令集文檔。UART、以太網(wǎng)及電話接口擴(kuò)展板本部分電路采納地址總線擴(kuò)展的方式掌握串行口擴(kuò)展芯片16C550(UART,通用串行收發(fā)器)、以太網(wǎng)接口芯片RTL8019AS和雙音多頻(DTMF)信號(hào)接收器MT8870等擴(kuò)展芯片.單片機(jī)的系統(tǒng)總線通過(guò)JX1引入本電路板,經(jīng)地址譯碼電路譯碼后輸出對(duì)各芯片的有效掌握信號(hào).電路板外形UART、以太網(wǎng)及電話接口擴(kuò)展板的外形如所示。圖1-SEQ圖1-\*ARABIC6UART、以太網(wǎng)及電話接口擴(kuò)展板外形系統(tǒng)資源及功能簡(jiǎn)介擴(kuò)展RS—232串行通信接口本系統(tǒng)使用16C550擴(kuò)展了一個(gè)串行通信接口。16C550最早為TI公司生產(chǎn)的串行口擴(kuò)展芯片,所擴(kuò)展的串行口最高波特率可達(dá)1Mbps,支持完整的硬件流控及Modem掌握規(guī)律,可設(shè)置各種不同的串行幀格式,應(yīng)用格外廣泛,目前已成為事實(shí)上的工業(yè)標(biāo)準(zhǔn)。本系統(tǒng)通過(guò)總線掌握16C550,實(shí)現(xiàn)了一個(gè)完整的DTE側(cè)的9芯串行口,并使用SP3243完成TTL電平和RS—232電平的相互轉(zhuǎn)換.所擴(kuò)展的串行口插座在電路板右側(cè),元件標(biāo)號(hào)為COM1,為標(biāo)準(zhǔn)的9芯針型插座,插座上各引腳的信號(hào)定義如REFDB9串行口引腳信號(hào)定義\h表1-4所示。16C550的有效片選地址范圍是0x8800~0x8FFF.一般的串行口通信可以只使用TxD、RxD和地3根信號(hào)線,16C550擴(kuò)展串口的TxD、RxD9通過(guò)JP1選擇連接到U3(RS—232接口,JP1的1,2號(hào)開(kāi)關(guān)撥動(dòng)到“ON”、3,4號(hào)開(kāi)關(guān)撥動(dòng)到另外一邊)還是U8(RS-485接口,JP1的3,4號(hào)開(kāi)關(guān)撥動(dòng)到“ON”、1,2號(hào)開(kāi)關(guān)撥動(dòng)到另外一邊)。9芯串行口中其余的6個(gè)引腳包括2個(gè)輸出引腳和4個(gè)輸入引腳,加上16C550供應(yīng)的兩個(gè)可編程輸出引腳,共有4個(gè)輸入引腳和4個(gè)輸出引腳。這些引腳直接連接到J1,其中J1的1~4連接輸出引腳,5~8連接輸入引腳。如果串行通信中不使用這些引腳,可把它們作為一般的I/O端口來(lái)使用。如果需要使用這些信號(hào),則要將JP2中的開(kāi)關(guān)撥動(dòng)到“ON”的位置,此時(shí)各掌握信號(hào)和SP3243接通,16C550的兩個(gè)可編程輸出接口OUT1和OUT2驅(qū)動(dòng)發(fā)光二極管D1和D2,輸出低電平則發(fā)光管點(diǎn)亮。表1—SEQ表1—\*ARABIC49芯串行口引腳信號(hào)定義引腳信號(hào)功能說(shuō)明1DCD數(shù)據(jù)載波檢測(cè),檢測(cè)到線路上載波后此信號(hào)有效2RxD數(shù)據(jù)接收3TxD數(shù)據(jù)發(fā)送4DTR數(shù)據(jù)終端就緒,DTE通知DCE本端籌備好,可以進(jìn)行通信5GND信號(hào)地6DSR數(shù)據(jù)裝置就緒,DCE通知DTE本端籌備好,可以進(jìn)行通信7RTS懇求發(fā)送,DTE通知DCE本端將要發(fā)送數(shù)據(jù),懇求對(duì)方回應(yīng)8CTS清除發(fā)送,RTS的應(yīng)答信號(hào),表示DCE回應(yīng)DTE可以接收數(shù)據(jù)9RI振鈴指示,DCE通知DTE有呼叫進(jìn)入如果需要進(jìn)行16C550中斷方式的通信實(shí)驗(yàn),則可短接JP5的第一組或其次組引腳來(lái)選擇使用單片機(jī)的INT0或INT1。需要注意的是,一個(gè)中斷只能安排給一個(gè)設(shè)備,不行復(fù)用。RS—485接口本系統(tǒng)設(shè)計(jì)了兩路RS485總線通信接口,接口芯片都是Sipex公司生產(chǎn)的SP485,標(biāo)號(hào)為U7和U8,分別通過(guò)J2和J3引出。J2引出的RS485通信接口通過(guò)JP5來(lái)選擇U7的收發(fā)引腳是否和單片機(jī)的RxD、TxD相連;J3引出的RS485通信接口則通過(guò)JP1來(lái)選擇U8的收發(fā)引腳是否和16C550的RxD和TxD相連.當(dāng)JP1的1、2為ON,3、4為OFF時(shí),16C550的收發(fā)引腳和SP3243相連,作為RS232接口的收發(fā)信號(hào);而當(dāng)JP1的1、2為OFF,3、4為ON時(shí),16C550的收發(fā)引腳則和U8相連,作為RS485接口的收發(fā)信號(hào)。每一路RS485接口都供應(yīng)了一個(gè)用于匹配傳輸線路阻抗的120Ω的終端電阻,當(dāng)通信線路較長(zhǎng)時(shí),用戶可通過(guò)短接JP3和JP4的1-2引腳將終端電阻接入RS485總線。以太網(wǎng)接口本系統(tǒng)通過(guò)擴(kuò)展總線的方式掌握一個(gè)速率為10Mbps的以太網(wǎng)接口芯片RTL8019AS,芯片標(biāo)號(hào)為U12,通過(guò)RJ45接口(J6)連接網(wǎng)絡(luò),并通過(guò)D8指示是否有物理連接,通過(guò)D9、D10指示網(wǎng)絡(luò)數(shù)據(jù)的收發(fā)狀態(tài)。RTL8019AS的有效片選地址范圍為0x9800~0x9FFF,其中斷信號(hào)可通過(guò)JP5的第3、4組引腳選擇是否和單片機(jī)的INT0、INT1連接。系統(tǒng)并沒(méi)有為RTL8019AS供應(yīng)用于存儲(chǔ)以太網(wǎng)物理地址(MAC地址)的E2PROM,用戶可以通過(guò)程序,在初始化RTL8019AS時(shí)指定其MAC地址.簡(jiǎn)略內(nèi)容請(qǐng)參閱RTL8019AS的Datashee(cuò)t及相關(guān)實(shí)驗(yàn)代碼。電話用戶線接口系統(tǒng)設(shè)計(jì)的電話用戶線接口主要包括三個(gè)部分,第一部分是振鈴信號(hào)檢測(cè)電路,其次部分是用戶終端模擬電路,第三部分則是雙音多頻(DTMF)信號(hào)譯碼電路。振鈴信號(hào)檢測(cè)電路的功能電話用戶線通過(guò)J4接入系統(tǒng)。當(dāng)線路上有振鈴信號(hào)(外部電話呼入)時(shí),振鈴檢測(cè)電路通過(guò)阻容網(wǎng)絡(luò)及光耦電路將振鈴信號(hào)轉(zhuǎn)換成CPU可識(shí)別的TTL電平信號(hào),當(dāng)有振鈴信號(hào)時(shí),J5的3號(hào)引腳(RING)將輸出低電平,同時(shí)D7將點(diǎn)亮;反之則輸出高電平,D7熄滅。單片機(jī)通過(guò)檢測(cè)RING引腳上的電平,即可推斷是否有振鈴信號(hào)。用戶終端模擬電路的功能用戶終端模擬電路由直流負(fù)載電阻和音頻變壓器(溝通負(fù)載)串聯(lián)構(gòu)成.當(dāng)系統(tǒng)需要模擬電話摘機(jī)操作時(shí),可向J5的2號(hào)引腳(RLY_C)和輸出低電平,掌握繼電器RL1吸合,此時(shí)上述交直流負(fù)載接入電話用戶線,遠(yuǎn)端交換機(jī)將認(rèn)為該用戶終端摘機(jī),從而可以進(jìn)行進(jìn)一步的處理。用戶終端摘機(jī)后,電話線路上的音頻信號(hào)可通過(guò)音頻變壓器進(jìn)入MT8870,完成DTMF信號(hào)的檢測(cè)和譯碼。音頻信號(hào)也可以反向傳輸,單片機(jī)只要通過(guò)IO端口引腳向J5的1號(hào)引腳(TONE_C)輸出肯定頻率的方波信號(hào),這個(gè)信號(hào)即可通過(guò)音頻變壓器耦合到電話線路上。雙音多頻(DTMF)信號(hào)譯碼電路的功能雙音多頻信號(hào)由高頻組和低頻組各4個(gè)音頻構(gòu)成,通過(guò)凹凸組音頻的不同組合來(lái)代表16種不同的信號(hào)。這樣的音頻信號(hào)被稱為雙音多頻(DTMF)信號(hào)。由于在選擇高、低頻組信號(hào)時(shí)格外考慮了抗干擾的問(wèn)題,因此雙音多頻信號(hào)的抗干擾能力格外強(qiáng),除了在電話系統(tǒng)中使用外,還廣泛應(yīng)用于各種需要高牢靠性低速通信的場(chǎng)合.DTMF信號(hào)的接收和解碼是由專用集成電路完成的,本系統(tǒng)中使用的是MT8870,該芯片具有CPU接口,CPU通過(guò)掌握其輸出允許信號(hào)(TOE),可以通過(guò)數(shù)據(jù)總線讀出MT8870上次檢測(cè)到的有效DTMF信號(hào)的編碼。KeilμVisionC51集成開(kāi)發(fā)環(huán)境及ISP軟件使用簡(jiǎn)介匯編語(yǔ)言和C語(yǔ)言是MCS—51系列單片機(jī)系統(tǒng)開(kāi)發(fā)中最常用的程序設(shè)計(jì)語(yǔ)言。匯編語(yǔ)言常被稱為“低級(jí)語(yǔ)言",這是由于匯編語(yǔ)言的語(yǔ)句通常和CPU的指令直接對(duì)應(yīng)的緣由。采納匯編語(yǔ)言設(shè)計(jì)的程序具有程序結(jié)構(gòu)緊湊、目標(biāo)代碼效率高、占用程序存儲(chǔ)器空間少、運(yùn)行速度快和實(shí)時(shí)性強(qiáng)等特點(diǎn),適用于實(shí)時(shí)測(cè)控等應(yīng)用領(lǐng)域。但由于匯編語(yǔ)言面對(duì)簡(jiǎn)略CPU的指令系統(tǒng),其程序代碼的可移植性、通用性較差,編程也比較煩瑣,提高了系統(tǒng)設(shè)計(jì)和維護(hù)的難度。C語(yǔ)言則基本擺脫了對(duì)簡(jiǎn)略CPU指令系統(tǒng)的依靠。C語(yǔ)言是面對(duì)過(guò)程的,側(cè)重于如何解決問(wèn)題,具有統(tǒng)一的語(yǔ)法規(guī)范,所以程序代碼的可移植性、通用性較好,維護(hù)和編程都較為簡(jiǎn)潔。針對(duì)MCS-51型單片機(jī)系統(tǒng)的C語(yǔ)言稱為C51。目前C51的應(yīng)用格外廣泛,由德國(guó)Keil公司推出的KeilμVision集成開(kāi)發(fā)環(huán)境已成為C51開(kāi)發(fā)工具領(lǐng)域事實(shí)上的標(biāo)準(zhǔn),由于其出色的編譯性能,Keil現(xiàn)已被ARM公司收購(gòu).本章對(duì)其進(jìn)行簡(jiǎn)潔的介紹.Keil軟件的使用啟動(dòng)Keil安裝好Keil后,雙擊桌面圖標(biāo)啟動(dòng)Keil,將看到如REFKeilC51啟動(dòng)界面\h圖2-1所示的啟動(dòng)界面。圖2-SEQ圖2-\*ARABIC1KeilC51啟動(dòng)界面啟動(dòng)完畢的Keil集成開(kāi)發(fā)環(huán)境的界面如REFKeilC51啟動(dòng)完畢后的界面\h\*MERGEFORMAT圖2-2所示。圖2-SEQ圖2-\*ARABIC2KeilC51啟動(dòng)完畢后的界面新建工程在用Keil進(jìn)行單片機(jī)程序設(shè)計(jì)之前,首先要建立工程。所謂的單片機(jī)程序,不但包括C語(yǔ)言或匯編語(yǔ)言的源程序,還包括和整個(gè)應(yīng)用系統(tǒng)相關(guān)的一些設(shè)置和參數(shù),例如該應(yīng)用系統(tǒng)中單片機(jī)的晶振頻率、外部程序存儲(chǔ)器及數(shù)據(jù)存儲(chǔ)器的地址空間等,建立工程的目的就是將全部的這些設(shè)置和參數(shù)一并保存,以便利系統(tǒng)的維護(hù)和管理。在Keil中建立工程的步驟如下:選擇菜單ProjectNewProject選擇新工程的存儲(chǔ)路徑,并輸入工程的文件名依據(jù)Keil的提示選擇該工程使用的CPU類型選擇Yes,將Keil供應(yīng)的啟動(dòng)代碼加入新建的工程設(shè)置工程的配置及參數(shù)右擊Target1,選擇OptionsforTarget‘Target1’進(jìn)行參數(shù)設(shè)置設(shè)置系統(tǒng)晶振頻率,選擇使用內(nèi)部ROM存儲(chǔ)程序。如果有外部ROM或RAM,應(yīng)在Off-ChipCodememory和Off-chipXdatamemory欄中設(shè)置其起始地址及存儲(chǔ)容量選擇Output選項(xiàng)卡,選中CreateHEXFile項(xiàng),要求編譯后生成HEX文件使用Keil建立一個(gè)實(shí)際的工程選擇FileNew或點(diǎn)擊圖標(biāo)建立一個(gè)新文件選擇建立新文件后,Keil會(huì)打開(kāi)一個(gè)臨時(shí)窗口,名稱為Text1,供開(kāi)發(fā)人員編輯程序.由于Keil的編輯器針對(duì)匯編語(yǔ)言和C語(yǔ)言源程序供應(yīng)了關(guān)鍵字識(shí)別、自動(dòng)縮進(jìn)、語(yǔ)法檢查等專業(yè)化的處理功能,因此建議先將這個(gè)Text1文件保存成合適的匯編或C源文件后再輸入程序.選擇FileSaveAS菜單,將文件存儲(chǔ)為有合適擴(kuò)展名的源程序文件,然后再輸入程序。例如,我們?cè)O(shè)計(jì)的第一個(gè)例子是輸出Helloworld信息,故將這個(gè)Text1另存為HelloWrold。C,然后輸入程序代碼。輸入程序代碼后的C語(yǔ)言源程序輸入程序的過(guò)程我們將發(fā)現(xiàn),Keil供應(yīng)的編輯器會(huì)將C語(yǔ)言的關(guān)鍵字按不同顏色顯示,還能依據(jù)代碼的規(guī)律關(guān)系供應(yīng)源程序的自動(dòng)縮進(jìn)、括號(hào)配對(duì)等處理。這樣的功能將削減用戶少犯錯(cuò)誤的機(jī)會(huì),有利于提高編程效率.將源代碼加入工程在上一個(gè)步驟中雖然已將源代碼保存在一個(gè)文件中,但是該文件還必須加入到工程中才能夠進(jìn)行后續(xù)的編譯、鏈接等處理.鼠標(biāo)右擊SourceGroup1,選擇AddFilestoGroup‘SourceGroup1’,然后選擇文件即可將源代碼文件加入工程。加入源代碼后,窗口左側(cè)的ProjectWo(hù)rkspace顯示了工程中各文件之間的關(guān)系。由于可以從外部選擇程序加載,因此設(shè)計(jì)程序時(shí)我們也可以使用其它任意一種編輯器(例如Notepad、UltraEdit等)來(lái)編寫源代碼.選擇FileSaveAll即可保存工程中的全部文件。至此,工程建立完畢。程序的編譯、鏈接及運(yùn)行編譯、鏈接代碼點(diǎn)擊Rebuildalltargetfiles按鈕后,Keil首先保存工程中全部的文件,然后對(duì)源程序進(jìn)行編譯、鏈接,并生成HEX文件。在窗口下部的OutputWindow中可以看到編譯、鏈接過(guò)程的輸出信息。程序的調(diào)試運(yùn)行程序設(shè)計(jì)完成并編譯鏈接成功后,點(diǎn)擊Debug按鈕可以在計(jì)算機(jī)環(huán)境下進(jìn)行程序的調(diào)試運(yùn)行工作.進(jìn)入調(diào)試模式后,Keil的界面如下:圖中程序清單窗口左側(cè)的黃色小箭頭表示當(dāng)前單片機(jī)的程序指針?biāo)幍奈恢茫聪乱粭l將執(zhí)行的程序代碼的位置。點(diǎn)擊工具條中的DisassemblyWindow按鈕,Keil將生成一個(gè)反匯編窗口:在反匯編窗口中,我們可以直觀地看到C語(yǔ)言源程序和對(duì)應(yīng)的由編譯器生成的匯編代碼之間的關(guān)系,這對(duì)我們深刻理解高級(jí)語(yǔ)言和匯編語(yǔ)言之間的關(guān)系以及計(jì)算機(jī)程序的本質(zhì)都是格外有幫助的。點(diǎn)擊工具條中RST按鈕右側(cè)的Run按鈕,Keil將全速運(yùn)行編譯后的程序。單片機(jī)程序在Keil中運(yùn)行起來(lái)后,Halt按鈕使能,此時(shí)點(diǎn)擊Halt按鈕可停止程序運(yùn)行。如果需要觀察串行口的輸出,可點(diǎn)擊工具條中的SerialWindow#1按鈕,Keil將打開(kāi)串行口窗口,并將單片機(jī)運(yùn)行過(guò)程中串行口的輸出顯示在這個(gè)窗口中.在該窗口中通過(guò)鍵盤輸入的數(shù)據(jù)將被送往單片機(jī)的串行口。Keil所供應(yīng)的運(yùn)行調(diào)試環(huán)境外觀和VC格外相像,功能也很全面。單片機(jī)程序在Keil中除了可以進(jìn)行上述的全速運(yùn)行外,還可以進(jìn)行單步或多步的跟蹤調(diào)試,只要在Debug狀態(tài)下點(diǎn)擊Stepinto(跟蹤到函數(shù)內(nèi)部執(zhí)行)、Stepover(直接執(zhí)行函數(shù))、Stepout(直接運(yùn)行并返回上層函數(shù))、Runtocursor(運(yùn)行到光標(biāo)處)等按鈕即可,對(duì)程序的調(diào)試和排錯(cuò)都有極大的幫助。上述內(nèi)容對(duì)使用Keil進(jìn)行單片機(jī)程序開(kāi)發(fā)做了一個(gè)簡(jiǎn)潔的介紹,更簡(jiǎn)略的內(nèi)容請(qǐng)自行參閱相關(guān)資料。ISP軟件的使用ISP簡(jiǎn)介在Keil中雖然可以運(yùn)行和調(diào)試程序,但是畢竟只是在計(jì)算機(jī)環(huán)境下的模擬調(diào)試,當(dāng)需要在實(shí)際的單片機(jī)系統(tǒng)中運(yùn)行程序的時(shí)候,就需要將keil編譯鏈接后生成的代碼固化到單片機(jī)的程序存儲(chǔ)器中來(lái)執(zhí)行.以前的單片機(jī)沒(méi)有內(nèi)部程序存儲(chǔ)器,一般都外擴(kuò)肯定容量的程序存儲(chǔ)器,需要通過(guò)編程器才能將代碼固化到程序存儲(chǔ)器中.現(xiàn)在隨著集成電路技術(shù)的進(jìn)展,多數(shù)單片機(jī)都在內(nèi)部設(shè)置了肯定容量的Flash存儲(chǔ)器作為程序存儲(chǔ)器,并設(shè)計(jì)了啟動(dòng)代碼,掌握單片機(jī)和計(jì)算機(jī)通信,獵取并固化程序代碼。通信和固化代碼的工作可以在最終的應(yīng)用系統(tǒng)中完成,因此這種固化代碼的方式被稱為ISP(InSystemProgrammable,在系統(tǒng)可編程),更有一些單片機(jī),可以在應(yīng)用程序工作的過(guò)程中和計(jì)算機(jī)通信,并分塊更新和固化代碼,這種固化方式被稱為IAP(InApplicationProgrammable,在應(yīng)用可編程),極大地便利了系統(tǒng)程序的維護(hù)和更新,也為單片機(jī)實(shí)驗(yàn)供應(yīng)了一個(gè)成本低廉、簡(jiǎn)潔易用的硬件開(kāi)發(fā)環(huán)境。HEX文件的格式Keil編譯鏈接生成的代碼就是前面關(guān)于Keil工程設(shè)置中要求生成的HEX文件,最常用的是IntelHEX文件格式。IntelHEX文件是一個(gè)ASCII文本文件,在IntelHEX文件中,每一行是一個(gè)HEX記錄,是由多個(gè)文本表示的十六進(jìn)制數(shù)組成的機(jī)器碼或者數(shù)據(jù)常量,記錄格式如下:一個(gè)IntelHEX文件可以包含任意多條的十六進(jìn)制記錄,每條記錄有五個(gè)域,例如::LLAAAATT[DD.。.]CC:??冒號(hào),表示一條IntelHEX記錄的開(kāi)頭;LL 記錄的長(zhǎng)度域,表示本條記錄包含多少字節(jié)的數(shù)據(jù)(DD…);AAAA 地址域,表示本條記錄中數(shù)據(jù)的起始存儲(chǔ)地址;TT??表示本條記錄的類型的代碼,代碼包括:00:數(shù)據(jù)記錄;01:文件結(jié)束記錄;02:擴(kuò)展段地址記錄;04:擴(kuò)展線性地址記錄;對(duì)于MCS-51單片機(jī),因其程序存儲(chǔ)器空間最多為64K字節(jié),因此不會(huì)用到擴(kuò)展地址字段;DD…?數(shù)據(jù)域,每?jī)蓚€(gè)連續(xù)的字符表示一個(gè)十六進(jìn)制的字節(jié)數(shù)據(jù),一條記錄可能包含多個(gè)數(shù)據(jù)字節(jié),字節(jié)數(shù)目由本條記錄的LL域指定;CC? 校驗(yàn)和域,表示本條記錄中除冒號(hào)和校驗(yàn)和字節(jié)以外全部字節(jié)的效驗(yàn)和,計(jì)算方法是將本條記錄冒號(hào)之后,校驗(yàn)和之前的全部字符,以兩個(gè)字符為一個(gè)單位,轉(zhuǎn)化為實(shí)際的字節(jié)后,全部累加后對(duì)256取模所得到的余數(shù),再求出余數(shù)的補(bǔ)碼即是效驗(yàn)和.對(duì)于上一節(jié)中Keil生成的HEX文件,其第一行為::0300000002047087對(duì)比上述的HEX文件格式,可以分析出,本行包含3個(gè)字節(jié)的有效數(shù)據(jù),起始存儲(chǔ)地址為0000,類型為00,表示數(shù)據(jù)記錄,3個(gè)字節(jié)的數(shù)據(jù)為0x02、0x04、0x70,將冒號(hào)后、校驗(yàn)和前的數(shù)據(jù)字節(jié)相加,即0x03+3個(gè)0x00+0x02+0x04+0x70=0x79,求0x79的補(bǔ)碼(數(shù)據(jù)按位取反再加1)即為0x87。使用ISP程序固化單片機(jī)代碼進(jìn)行實(shí)驗(yàn)nKDE-51使用的CPU是NXP公司的P89V51RD2,配套的ISP軟件是FlashMagic.安裝該軟件后計(jì)算機(jī)桌面上將有圖標(biāo),雙擊啟動(dòng)后FlashMagic的界面如下:接下來(lái)應(yīng)依據(jù)軟件提示的步驟完成后續(xù)操作.第一步是選擇ISP使用的串口號(hào)、波特率、單片機(jī)型號(hào)和ISP類型,接口方式肯定要選擇None(ISP),串行端口號(hào)和波特率可依據(jù)計(jì)算機(jī)的實(shí)際情況選擇;其次步是選擇片內(nèi)Flash的擦除方式,這里要選擇“僅擦除程序使用到的塊”的方式,可以節(jié)省編程的總時(shí)間;第三步是選擇要下載的HEX文件的路徑,點(diǎn)擊“Browse”按鈕即可進(jìn)行選擇;第四步僅需選擇“編程完畢后校驗(yàn)”即可。當(dāng)然,如果是實(shí)際的生產(chǎn)項(xiàng)目,可選擇設(shè)置加密位對(duì)芯片進(jìn)行加密處理;下圖為在FlashMagic中選擇HEX文件的界面,選擇HelloWorld.hex文件,點(diǎn)擊打開(kāi)按鈕將其載入FlashMagic中.最后檢查一下單片機(jī)實(shí)驗(yàn)系統(tǒng)的串行口和PC機(jī)的串行口是否已連接,確認(rèn)實(shí)驗(yàn)系統(tǒng)中CPU板上串行口插座旁的SW2是否處于彈起的狀態(tài),然后點(diǎn)擊“Start”即可開(kāi)頭ISP編程。點(diǎn)擊“Start”后,如果單片機(jī)不是第一次編程或者沒(méi)有打開(kāi)單片機(jī)實(shí)驗(yàn)系統(tǒng)的電源,則會(huì)看到FlashMagic給出的提示如下:此時(shí)應(yīng)檢查電源是否打開(kāi),如果電源已打開(kāi),則按提示按一下單片機(jī)實(shí)驗(yàn)系統(tǒng)的Reset按鈕即可進(jìn)入編程階段。也可以在點(diǎn)擊Start前先按住Reset按鈕,點(diǎn)擊Start后再松開(kāi)Reset即可開(kāi)頭編程。HelloWorld實(shí)驗(yàn)代碼所完成的工作是通過(guò)單片機(jī)的串行口送出字符串,為了在計(jì)算機(jī)上看到單片機(jī)送出的數(shù)據(jù),我們需要先配置計(jì)算機(jī)上的超級(jí)終端,選擇合適的波特率和流掌握方式。注意在配置超級(jí)終端前必須先將串行口關(guān)閉.另外,FlashMagic在編程期間是通過(guò)計(jì)算機(jī)的串行口和單片機(jī)通信的,即需要占用計(jì)算機(jī)的串行口,因此在用FlashMagic進(jìn)行ISP編程前,如果超級(jí)終端在運(yùn)行,必須關(guān)閉串行口或關(guān)閉整個(gè)程序。FlashMagic在編程完畢后會(huì)自動(dòng)釋放計(jì)算機(jī)的串行口。CPU在ISP編程完畢后并不會(huì)自動(dòng)運(yùn)行程序代碼,此時(shí)需要我們按一下Reset按鈕,固化(燒寫)到CPU內(nèi)部的代碼才會(huì)執(zhí)行。HelloWorld例子最終輸出到超級(jí)終端的結(jié)果如下:從顯示結(jié)果可以看出,單片機(jī)是依據(jù)程序設(shè)計(jì)的要求運(yùn)行的。單片機(jī)內(nèi)部資源掌握類實(shí)驗(yàn)單片機(jī)并行端口輸入輸出實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康恼莆諉纹瑱C(jī)并行端口的結(jié)構(gòu)及工作原理;掌握單片機(jī)并行端口的程序掌握方法;掌握LED、蜂鳴器、繼電器、按鍵、撥碼開(kāi)關(guān)等常用輸入輸出設(shè)備的掌握方式。實(shí)驗(yàn)要求單片機(jī)通過(guò)P0端口輸入撥碼開(kāi)關(guān)的狀態(tài);單片機(jī)通過(guò)P1端口驅(qū)動(dòng)LED;單片機(jī)的P2。0端口驅(qū)動(dòng)蜂鳴器,P2.1端口驅(qū)動(dòng)繼電器;兩個(gè)獨(dú)立按鍵SW1和SW2從單片機(jī)的P3.2和P3.3輸入;SW1按下,單片機(jī)通過(guò)P0讀入撥碼開(kāi)關(guān)狀態(tài),并通過(guò)P1驅(qū)動(dòng)LED顯示撥碼開(kāi)關(guān)的狀態(tài)(撥碼開(kāi)關(guān)導(dǎo)通,則對(duì)應(yīng)位置的LED點(diǎn)亮).按鍵按下時(shí),P2。0驅(qū)動(dòng)蜂鳴器鳴響,按鍵釋放時(shí),P2。0驅(qū)動(dòng)蜂鳴器靜音;SW2按下時(shí),單片機(jī)也通過(guò)P0讀入撥碼開(kāi)關(guān)狀態(tài),并依據(jù)1號(hào)撥碼開(kāi)關(guān)的狀態(tài)驅(qū)動(dòng)繼電器(即1號(hào)撥碼開(kāi)關(guān)導(dǎo)通,繼電器吸合,否則斷開(kāi))。按鍵按下時(shí),P2。0驅(qū)動(dòng)蜂鳴器鳴響,按鍵釋放時(shí),P2.0蜂鳴器靜音.實(shí)驗(yàn)設(shè)備硬件:PC機(jī),nKDE—51單片機(jī)實(shí)驗(yàn)教學(xué)系統(tǒng)軟件:KeilC51集成開(kāi)發(fā)環(huán)境,F(xiàn)lashMagic實(shí)驗(yàn)原理MCS-51單片機(jī)的并行端口MCS-51單片機(jī)有4個(gè)8位的并行端口:P0、P1、P2和P3,這4個(gè)端口分別受控于單片機(jī)內(nèi)部同名的特殊功能寄存器(SFR)。每個(gè)端口都是8位準(zhǔn)雙向口,包括8條I/O口線,每一條I/O口線都能獨(dú)立地用作輸入和輸出.每個(gè)端口都由4部分構(gòu)成:端口鎖存器(即特殊功能寄存器P0~P3)、輸入緩沖器、輸出驅(qū)動(dòng)器和引至芯片外的端口引腳。他們都是雙向通道,作為輸出時(shí)數(shù)據(jù)可以鎖存,作為輸入時(shí)數(shù)據(jù)可以緩沖。當(dāng)端口作為輸出口使用時(shí),內(nèi)部帶鎖存器,故可以直接和外設(shè)相連,不必外加鎖存器。P0端口的輸出級(jí)與P1~P3端口的輸出級(jí)在結(jié)構(gòu)上是不同的,它的輸出級(jí)無(wú)上拉電阻。當(dāng)用作一般I/O端口時(shí),輸出級(jí)是開(kāi)漏電路,需外接上拉電阻,才能驅(qū)動(dòng)MOS電路;用作地址/數(shù)據(jù)總線時(shí),則無(wú)須外接上拉電阻.P0端口每一位輸出可驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載。P1~P3端口的輸出級(jí)接有內(nèi)部上拉負(fù)載電阻,不需要外接上拉電阻就能直接驅(qū)動(dòng)MOS電路,它們的每一位輸出可去驅(qū)動(dòng)4個(gè)DS型TTL負(fù)載.對(duì)于8051單片機(jī),作為輸出端口時(shí),由于端口內(nèi)部的上拉電阻格外大,高電平常每個(gè)引腳只能輸出微安級(jí)的電流,因此當(dāng)需要采納電流的方式驅(qū)動(dòng)外部設(shè)備(如點(diǎn)亮LED)時(shí),通常都采納灌入電流的方式,而采納電壓驅(qū)動(dòng)的方式驅(qū)動(dòng)外部設(shè)備(如驅(qū)動(dòng)一個(gè)一般的晶體管的基極)時(shí),肯定要外接上拉電阻,以保證高電平常的驅(qū)動(dòng)能力.LED、蜂鳴器、繼電器、按鍵、撥碼開(kāi)關(guān)等常用輸入輸出設(shè)備的掌握方式單片機(jī)端口驅(qū)動(dòng)LED如上所述,使用單片機(jī)的端口引腳直接驅(qū)動(dòng)LED時(shí),由于端口內(nèi)部的上拉電阻格外大,端口輸出高電平常只能向外部電路供應(yīng)微安級(jí)的電流,用于驅(qū)動(dòng)TTL或CMOS電路芯片不成問(wèn)題,但驅(qū)動(dòng)LED就力不從心了。單片機(jī)端口引腳直接驅(qū)動(dòng)LED只能采納灌電流的方式,當(dāng)端口引腳輸出低電平常,該引腳的下拉場(chǎng)效應(yīng)管導(dǎo)通,端口引腳在芯片內(nèi)部和地連通,于是電流按VCCLED限流電阻地(芯片內(nèi)部接地)的方向流過(guò),點(diǎn)亮LED。本實(shí)驗(yàn)系統(tǒng)的LED電路如REFF3_1_單片機(jī)實(shí)驗(yàn)系統(tǒng)中的LED驅(qū)動(dòng)電路\h圖3—1所示,單片機(jī)的驅(qū)動(dòng)端口連接到J4上,端口的某個(gè)引腳輸出低電平(即通過(guò)程序?qū)⒍丝谒鶎?duì)應(yīng)的SFR的某位寫0),則對(duì)應(yīng)位置的LED點(diǎn)亮。圖3—SEQ圖3-\*ARABIC1LED驅(qū)動(dòng)電路單片機(jī)端口驅(qū)動(dòng)蜂鳴器由于蜂鳴器鳴響所需要的電流較大,因此不能使用單片機(jī)的端口引腳直接驅(qū)動(dòng),需要通過(guò)驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)。一般可使用三極管或ULN2003/2803等專門的驅(qū)動(dòng)集成電路完成。本實(shí)驗(yàn)系統(tǒng)中使用的是通過(guò)三極管驅(qū)動(dòng)的方式來(lái)驅(qū)動(dòng)蜂鳴器的,驅(qū)動(dòng)電路如REFF3_2_蜂鳴器驅(qū)動(dòng)電路\h圖3-2所示。圖3-SEQ圖3-\*ARABIC2蜂鳴器驅(qū)動(dòng)電路電路中BZC為掌握端,和單片機(jī)的端口線相連,單片機(jī)輸出低電平,則Q9導(dǎo)通,蜂鳴器鳴響。當(dāng)單片機(jī)輸出高電平常,蜂鳴器停止鳴響.注意在本實(shí)驗(yàn)系統(tǒng)中全部的I/O端口引腳在CPU板上都已上拉,因此在REFF3_2_蜂鳴器驅(qū)動(dòng)電路\h圖3-2中沒(méi)有畫出上拉電阻.單片機(jī)端口驅(qū)動(dòng)繼電器繼電器的吸合通常比蜂鳴器需要更大的電流,同樣可以采納單片機(jī)掌握三極管的方式來(lái)驅(qū)動(dòng),本實(shí)驗(yàn)系統(tǒng)中繼電器驅(qū)動(dòng)電路如REFF3_3_繼電器驅(qū)動(dòng)電路\h圖3-3所示.圖3-SEQ圖3-\*ARABIC3繼電器驅(qū)動(dòng)電路由于繼電器的驅(qū)動(dòng)線圈有肯定的電感,在線圈斷電的瞬間可能會(huì)產(chǎn)生較大的反向電壓,因此在繼電器驅(qū)動(dòng)電路上通常都要在線圈上反向并聯(lián)一個(gè)保護(hù)二極管用于線圈的反向放電.在REFF3_3_繼電器驅(qū)動(dòng)電路\h圖3-3所示的電路中,D10即為保護(hù)二極管.和蜂鳴器掌握電路一樣,當(dāng)和繼電器掌握信號(hào)RLC相連的單片機(jī)端口輸出低電平常,繼電器吸合,同時(shí)D9點(diǎn)亮;反之,繼電器斷開(kāi),D9熄滅.單片機(jī)端口輸入按鍵和撥碼開(kāi)關(guān)的狀態(tài)本實(shí)驗(yàn)系統(tǒng)中獨(dú)立按鍵和撥碼開(kāi)關(guān)的電路如REFF3_4_獨(dú)立按鍵及撥碼開(kāi)關(guān)接口電路\h圖3-4所示。圖3—SEQ圖3-\*ARABIC4獨(dú)立按鍵及撥碼開(kāi)關(guān)接口電路REFF3_4_獨(dú)立按鍵及撥碼開(kāi)關(guān)接口電路\h圖3-4中J6為獨(dú)立按鍵開(kāi)關(guān)的引出插座,J7為撥碼開(kāi)關(guān)的引出插座。實(shí)驗(yàn)時(shí)只要將單片機(jī)的端口引腳和J6及J7連接起來(lái),即可通過(guò)單片機(jī)的端口讀入按鍵或撥碼開(kāi)關(guān)的狀態(tài)。從電路圖中可以看出,按鍵按下或撥碼開(kāi)關(guān)導(dǎo)通時(shí),CPU將讀到低電平,按鍵未按下或撥碼開(kāi)關(guān)斷開(kāi)時(shí),由于單片機(jī)端口均被上拉,讀到的將是高電平.需要注意的是,由于單片機(jī)端口是準(zhǔn)雙向口,在進(jìn)行輸入操作時(shí),首先要向端口的輸出鎖存器寫入1,關(guān)閉端端口中連接到內(nèi)部地的場(chǎng)效應(yīng)管,才能夠正確地讀入外部輸入電平。實(shí)驗(yàn)過(guò)程連接實(shí)驗(yàn)電路本實(shí)驗(yàn)需要用到CPU板和基本IO板,首先請(qǐng)依據(jù)實(shí)驗(yàn)要求中的描述連接電路。簡(jiǎn)略連接方式請(qǐng)參閱REFT3_1_單片機(jī)并行端口輸入輸出實(shí)驗(yàn)接線表\h表3-1。表3—SEQ表3-\*ARABIC1單片機(jī)并行端口輸入輸出實(shí)驗(yàn)接線表CPU板器件標(biāo)號(hào)基本IO板器件標(biāo)號(hào)P0(J1或J5)撥碼開(kāi)關(guān)(J7)P1(J2或J6)LED(J4)P2。0、P2.1(J3或J7)BUZ(yǔ)_C、RLY_C(J8-1、J8-2)P3.2、P3。3(J4或J8)SW1、SW2(J6—1、J6-2)設(shè)計(jì)程序綜合實(shí)驗(yàn)要求,可以采納循環(huán)掃描的方式來(lái)識(shí)別“按鍵按下并放開(kāi)”大事,并依據(jù)輸入條件來(lái)輸出相應(yīng)的掌握數(shù)據(jù)。程序流程如REFF3_5_單片機(jī)并行端口輸入輸出實(shí)驗(yàn)程序流程圖\h圖3-5所示。在REFF3_5_單片機(jī)并行端口輸入輸出實(shí)驗(yàn)程序流程圖\h圖3—5中,推斷按鍵按下的過(guò)程并沒(méi)有簡(jiǎn)略地畫出。一般來(lái)說(shuō),由于按鍵的彈性及觸點(diǎn)的電氣性能的影響,按鍵開(kāi)關(guān)在閉合和斷開(kāi)的過(guò)程中會(huì)伴隨一連串不同電平的抖動(dòng),抖動(dòng)時(shí)間的長(zhǎng)短基本由按鍵的機(jī)械特性決定,一般在5~10ms不等,相對(duì)于CPU的執(zhí)行速度而言,這是一個(gè)很長(zhǎng)的時(shí)間,如何消除這段抖動(dòng)時(shí)間對(duì)程序的影響將是決定按鍵能否被正常識(shí)別的關(guān)鍵.程序設(shè)計(jì)時(shí)常采納軟件延時(shí)的方法進(jìn)行消抖。簡(jiǎn)略方法是,在程序第一次檢測(cè)到按鍵按下時(shí),CPU?qǐng)?zhí)行一段延時(shí)10ms左右的子程序后再確認(rèn)該按鍵是否仍保持按下的狀態(tài),如果確實(shí)保持按下?tīng)顟B(tài)則確認(rèn)其真正按下,從而消除了抖動(dòng)的影響.通常情況下,延時(shí)子程序都是通過(guò)空循環(huán)消耗CPU時(shí)間來(lái)達(dá)到延時(shí)的目的的。在匯編語(yǔ)言中,我們可以通過(guò)統(tǒng)計(jì)循環(huán)消耗的機(jī)器周期數(shù)精確計(jì)算延時(shí)時(shí)間,但用C語(yǔ)言編寫程序時(shí),我們并不知道C語(yǔ)言的循環(huán)和匯編指令是如何對(duì)應(yīng)的,為了較為精確地確定延時(shí)時(shí)間,我們可以查閱編譯后生成的匯編代碼,計(jì)算每一步循環(huán)消耗的時(shí)間,來(lái)確定總的循環(huán)次數(shù);也可以直接在編譯后使用調(diào)試功能模擬執(zhí)行代碼,觀察循環(huán)子程序運(yùn)行前后的機(jī)器周期數(shù),以此換算出循環(huán)程序消耗的時(shí)間,并據(jù)此調(diào)整循環(huán)變量的數(shù)值。圖3-SEQ圖3-\*ARABIC5單片機(jī)并行端口輸入輸出實(shí)驗(yàn)程序流程圖依據(jù)上述流程設(shè)計(jì)的程序如下:#include<reg51.h〉#defineSWInput ?P0#defineLEDDriver?P1sbitBUZ_C?=P2^0;sbitRLY_C =P2^1;sbitSW1?=P3^2;sbitSW2?=P3^3;voidDelay10ms(void) ?//延時(shí)10ms程序{?inti; ?i=1000;??? //循環(huán)初值。該初值可通過(guò)編譯后模擬執(zhí)行時(shí),觀察執(zhí)行時(shí)間來(lái)進(jìn)行調(diào)整?while(i--);}voidmain(void){?unsignedcharswstat(yī);? P0=0xff;?P1=0xff;?BUZ_C=1;?RLY_C=1;?SW1=1;?SW2=1; ???//輸入端口在輸入前置1,輸出端口均輸出1,關(guān)閉LED、蜂鳴器和繼電器??while(1)?{??if(SW1==0) //如果推斷SW1按下??{? ?Delay10ms();?//軟件去抖動(dòng) ??if(SW1==0)?//如果按鍵仍然保持按下?? {??? BUZ_C=0;?//蜂鳴器鳴響????swstat=P0;//讀入撥碼開(kāi)關(guān)狀態(tài) ? ?P1=swstat;//按狀態(tài)驅(qū)動(dòng)LED ??}??}??elseBUZ(yǔ)_C=1;??//只要按鍵釋放,就停止蜂鳴器鳴響 ?? if(SW2==0)? //如果推斷SW1按下??{???Delay10ms(); //軟件去抖動(dòng)???if(SW2==0)?//如果按鍵仍然保持按下 ?{? ?BUZ(yǔ)_C=0;?//蜂鳴器鳴響????swstat=P0;//讀入撥碼開(kāi)關(guān)狀態(tài)?? if(swstat&0x01)RLY_C=1;?//依據(jù)最低位狀況驅(qū)動(dòng)繼電器??? elseRLY_C=0;???}??}??elseBUZ_C=1;?//只要按鍵釋放,就停止蜂鳴器鳴響?}}驗(yàn)證結(jié)果在Keil中建立新工程,將上述程序代碼加入工程,編譯鏈接后,將生成的HEX文件燒寫到單片機(jī)中,驗(yàn)證運(yùn)行結(jié)果和設(shè)計(jì)要求是否相符。獨(dú)立數(shù)碼管驅(qū)動(dòng)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康恼莆諉纹瑱C(jī)并行端口輸出數(shù)據(jù)的程序掌握方法;掌握數(shù)碼管靜態(tài)顯示驅(qū)動(dòng)程序的編寫方法。實(shí)驗(yàn)要求單片機(jī)通過(guò)P1端口連接獨(dú)立數(shù)碼管;依據(jù)電路連接方式和數(shù)碼管驅(qū)動(dòng)方式,設(shè)計(jì)顯示0~9,A~F的字型碼,通過(guò)循環(huán)和延時(shí)相結(jié)合的方式輪流顯示。實(shí)驗(yàn)設(shè)備硬件:PC機(jī),nKDE—51單片機(jī)實(shí)驗(yàn)教學(xué)系統(tǒng);軟件:KeilC51集成開(kāi)發(fā)環(huán)境,FlashMagic單片機(jī)程序燒寫軟件.實(shí)驗(yàn)原理實(shí)驗(yàn)系統(tǒng)供應(yīng)了一個(gè)獨(dú)立的數(shù)碼管,其電路連接情況如REFF3_6_獨(dú)立數(shù)碼管的電路連接\h圖3-6所示。圖3-SEQ圖3-\*ARABIC6獨(dú)立數(shù)碼管的電路連接從中可以看出,構(gòu)成數(shù)碼管的8個(gè)LED的陽(yáng)極連接在一起,通過(guò)1、2引腳接VCC,因此這個(gè)數(shù)碼管為共陽(yáng)方式驅(qū)動(dòng)。如果構(gòu)成數(shù)碼管的8個(gè)LED的陰極連接在一起,則該數(shù)碼管為共陰方式驅(qū)動(dòng)。數(shù)碼管各段的位置及其內(nèi)部結(jié)構(gòu)如REFF3_7_數(shù)碼管的段位置及內(nèi)部結(jié)構(gòu)\h圖3-7所示。圖3-SEQ圖3-\*ARABIC7數(shù)碼管的段位置及內(nèi)部結(jié)構(gòu)由于本實(shí)驗(yàn)系統(tǒng)中數(shù)碼管為共陽(yáng)方式驅(qū)動(dòng),且數(shù)碼管的各段各通過(guò)一個(gè)限流電阻連接到J5,因此,只要J5的某個(gè)引腳輸入低電平,數(shù)碼管對(duì)應(yīng)段的LED點(diǎn)亮.綜上所述,該數(shù)碼管顯示0~9、A~F共16個(gè)字符的字型碼如REFT3_2_共陽(yáng)方式驅(qū)動(dòng)數(shù)碼管的字型碼\h表3-2所示。表3—SEQ表3—\*ARABIC2共陽(yáng)方式驅(qū)動(dòng)數(shù)碼管的字型碼D7/HD6/GD5/FD4/ED3/DD2/CD1/BD0/A共陽(yáng)型字型碼顯示字符110000000xC00111110010xF91101001000xA42101100000xB03100110010x994100100100x925100000100x826111110000xF87100000000x808100100000x909100010000x88A100000110x83b110001100xC6C101000010xA1d100001100x86E100011100x8EF實(shí)驗(yàn)過(guò)程電路連接本實(shí)驗(yàn)的電路連接格外簡(jiǎn)潔,只要將基本IO板上的J5和CPU板上單片機(jī)的P1(J2或J6)相連即可。注意連接方向(P1。0和數(shù)碼管的A段連接)。程序設(shè)計(jì)依據(jù)實(shí)驗(yàn)要求,設(shè)計(jì)程序如下:#include<reg51.h>unsignedcharcodeCharCode[]={?0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};?//依據(jù)驅(qū)動(dòng)方式和端口與數(shù)碼管各段的連接挨次定義0~9,A~F十六個(gè)字符的字型碼,保存在程序存儲(chǔ)器中voidDelay(void)?? ?//循環(huán)延時(shí)程序{ inti; i=20000;? ???//調(diào)整該變量的初值可轉(zhuǎn)變延時(shí)時(shí)間 while(i——);}voidmain(void){ unsignedchari;??while(1)?{? for(i=0;i〈16;i++)??//在數(shù)碼管上循環(huán)顯示十六個(gè)字符 ?{?? P1=CharCode[i];?//每次取出一個(gè)字型碼送驅(qū)動(dòng)端口?? Delay();???//每次顯示后延時(shí)一段時(shí)間??}?}}驗(yàn)證結(jié)果在Keil中建立新工程,將上述程序代碼加入工程,編譯鏈接后,將生成的HEX文件燒寫到單片機(jī)中,驗(yàn)證運(yùn)行結(jié)果和設(shè)計(jì)要求是否相符。調(diào)整Delay函數(shù)中的循環(huán)次數(shù)掌握常數(shù),可轉(zhuǎn)變延時(shí)時(shí)間。注意循環(huán)掌握變量是整型數(shù),在Keil中整型數(shù)位寬為16位,最高位為符號(hào)位,因此延時(shí)常數(shù)不能大于32767。如果需要更長(zhǎng)的延時(shí)時(shí)間,可將循環(huán)掌握常數(shù)改為無(wú)符號(hào)整型(最大循環(huán)次數(shù)為65535)或者使用多重循環(huán)。數(shù)碼管動(dòng)態(tài)顯示驅(qū)動(dòng)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康恼莆諗?shù)碼管動(dòng)態(tài)驅(qū)動(dòng)方式的工作原理;掌握數(shù)碼管動(dòng)態(tài)顯示驅(qū)動(dòng)程序的編寫方法。實(shí)驗(yàn)要求單片機(jī)通過(guò)P1端口連接數(shù)碼管組的字型碼(段碼)掌握端;單片機(jī)通過(guò)P0端口連接數(shù)碼管組的位置碼(位碼)掌握端;依據(jù)電路連接方式和數(shù)碼管驅(qū)動(dòng)方式,設(shè)計(jì)顯示0~9,A~F的字型碼;設(shè)置8個(gè)字節(jié)的顯示緩沖區(qū),通過(guò)數(shù)碼管動(dòng)態(tài)顯示驅(qū)動(dòng)的方法,將顯示緩沖區(qū)內(nèi)容顯示在8位數(shù)碼管上。實(shí)驗(yàn)設(shè)備硬件:PC機(jī),nKDE—51單片機(jī)實(shí)驗(yàn)教學(xué)系統(tǒng);軟件:KeilC51集成開(kāi)發(fā)環(huán)境,F(xiàn)lashMagic單片機(jī)程序燒寫軟件。實(shí)驗(yàn)原理數(shù)碼管的動(dòng)態(tài)顯示是通過(guò)程序在運(yùn)行過(guò)程中對(duì)每一位數(shù)碼管輪流驅(qū)動(dòng),交替點(diǎn)亮實(shí)現(xiàn)的。動(dòng)態(tài)顯示的方法利用了人眼視覺(jué)暫留的原理,只要各數(shù)碼管輪流點(diǎn)亮的間隔小于人眼視覺(jué)暫留的時(shí)間(約40ms),人們就會(huì)覺(jué)得數(shù)碼管是始終點(diǎn)亮的。實(shí)驗(yàn)系統(tǒng)供應(yīng)了一組共8個(gè)數(shù)碼管,其電路連接情況如REFF3_8_數(shù)碼管組的電路連接\h圖3—8所示。圖3—SEQ圖3—\*ARABIC8數(shù)碼管組的電路連接數(shù)碼管動(dòng)態(tài)顯示驅(qū)動(dòng)時(shí),由于每個(gè)數(shù)碼管都是單獨(dú)點(diǎn)亮的,或者說(shuō)不會(huì)有多個(gè)數(shù)碼管同時(shí)點(diǎn)亮的情況,因此驅(qū)動(dòng)電路可大大簡(jiǎn)化,全部數(shù)碼管的A~H段的引腳各自連接在一起進(jìn)行段驅(qū)動(dòng);再通過(guò)位驅(qū)動(dòng)電路對(duì)各數(shù)碼管的公共端進(jìn)行驅(qū)動(dòng),選擇簡(jiǎn)略點(diǎn)亮哪一個(gè)數(shù)碼管。依據(jù)REFF3_8_數(shù)碼管組的電路連接\h圖3-8所示的數(shù)碼管組顯示驅(qū)動(dòng)電路,數(shù)碼管組中的數(shù)碼管為共陰型,其段驅(qū)動(dòng)信號(hào)(段碼)從J2引入,位置驅(qū)動(dòng)信號(hào)(位碼)從J1引入。段驅(qū)動(dòng)信號(hào)為低有效,即段驅(qū)動(dòng)信號(hào)為低,三極管導(dǎo)通,對(duì)應(yīng)段被驅(qū)動(dòng);位驅(qū)動(dòng)由ULN2803完成,ULN(yùn)2803為反相達(dá)林頓驅(qū)動(dòng)管,因此位信號(hào)為高有效,即為驅(qū)動(dòng)信號(hào)為高,ULN2803輸出低電平,驅(qū)動(dòng)某個(gè)數(shù)碼管。只有段驅(qū)動(dòng)和位驅(qū)動(dòng)都有效,被驅(qū)動(dòng)的數(shù)碼管才會(huì)點(diǎn)亮對(duì)應(yīng)的段。數(shù)碼管動(dòng)態(tài)顯示驅(qū)動(dòng)方式雖然簡(jiǎn)化了電路,但CPU每隔一段時(shí)間就必須執(zhí)行一次顯示子程序?qū)?shù)碼管進(jìn)行動(dòng)態(tài)掃描,為了避開(kāi)數(shù)碼管的顯示閃爍,CPU必須在人眼視覺(jué)暫留時(shí)間(約40ms)內(nèi)將全部數(shù)碼管的顯示刷新一遍,消耗了肯定的CPU處理能力。另外,當(dāng)數(shù)碼管數(shù)量較多時(shí),每個(gè)數(shù)碼管安排到的顯示時(shí)間相對(duì)較短,顯示亮度會(huì)有所降低。實(shí)驗(yàn)過(guò)程電路連接本實(shí)驗(yàn)的電路連接格外簡(jiǎn)潔,只要將基本IO板上的J1和CPU板上單片機(jī)的P0(J1或J5)相連、基本IO板上的J2和CPU板上單片機(jī)的P1(J2或J6)相連即可。注意連接時(shí)的挨次,低位和低位相連。程序設(shè)計(jì)依據(jù)實(shí)驗(yàn)要求,設(shè)計(jì)程序如下:#include<reg51。h>unsignedcharDisplayBuf[8]; ??//定義顯示緩沖區(qū),每字節(jié)對(duì)應(yīng)一個(gè)數(shù)碼管位置unsignedcharcodeCharCode[]={?0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,?0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};?//依據(jù)驅(qū)動(dòng)方式和端口與數(shù)碼管各段的連接挨次定義0~9,A~F十六個(gè)字符的字型碼,保存在程序存儲(chǔ)器中voidDelay(void){?inti;??i=100;?while(i--);}voidmain(void){?unsignedchari,pos;? P0=0;?P1=0xff;?????????//設(shè)置初值,關(guān)閉全部數(shù)碼管的顯示?for(i=0;i<7;i++)DisplayBuf[i]=i; ?//設(shè)置顯示緩沖區(qū)初值,用戶可自行更改 ?while(1)?{ ?pos=0x80;??? ? ??//先從最左邊的數(shù)碼管開(kāi)頭顯示??for(i=0;i〈8;i++)??{???P1=CharCode[DisplayBuf[i]];??//依據(jù)顯示緩沖區(qū)里的內(nèi)容查找字型碼(段驅(qū)動(dòng))???P0=pos;?? ?? ?//完成位驅(qū)動(dòng),數(shù)碼管應(yīng)點(diǎn)亮???pos>>=1;??? ???//向右連續(xù)顯示???Delay(); ? ????//稍作延時(shí),使數(shù)碼管發(fā)光穩(wěn)定??}?}}驗(yàn)證結(jié)果在Keil中建立新工程,將上述程序代碼加入工程,編譯鏈接后,將生成的HEX文件燒寫到單片機(jī)中,驗(yàn)證運(yùn)行結(jié)果和設(shè)計(jì)要求是否相符。調(diào)整Delay函數(shù)的延時(shí)時(shí)間,觀察延時(shí)時(shí)間的變化對(duì)顯示效果的影響并分析緣由.單片機(jī)外部中斷實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康恼莆諉纹瑱C(jī)中斷系統(tǒng)的工作原理;掌握單片機(jī)中斷優(yōu)先級(jí)的概念。實(shí)驗(yàn)要求單片機(jī)通過(guò)P1端口驅(qū)動(dòng)獨(dú)立數(shù)碼管;單片機(jī)的、連接按鍵開(kāi)關(guān)SW1、SW2;依據(jù)電路連接方式和數(shù)碼管驅(qū)動(dòng)方式,設(shè)計(jì)顯示0~9的字型碼;設(shè)置為下降沿觸發(fā),對(duì)每次中斷進(jìn)行計(jì)數(shù),并在數(shù)碼管上顯示;設(shè)置為低電平觸發(fā),高優(yōu)先級(jí),觀察按住SW2不放時(shí),INT0中斷的處理情況。實(shí)驗(yàn)設(shè)備硬件:PC機(jī),nKDE-51單片機(jī)實(shí)驗(yàn)教學(xué)系統(tǒng);軟件:KeilC51集成開(kāi)發(fā)環(huán)境,FlashMagic單片機(jī)程序燒寫軟件。實(shí)驗(yàn)原理MCS51/52單片機(jī)中斷系統(tǒng)的結(jié)構(gòu)所謂中斷是指在計(jì)算機(jī)正常工作的過(guò)程中,由于系統(tǒng)內(nèi)、外發(fā)生的隨機(jī)大事,使計(jì)算機(jī)必須暫?,F(xiàn)行程序的執(zhí)行,而轉(zhuǎn)去執(zhí)行處理該大事的程序.待該處理程序執(zhí)行完畢,計(jì)算機(jī)再返回到原來(lái)被中斷的程序連續(xù)執(zhí)行的過(guò)程。為實(shí)現(xiàn)中斷功能而設(shè)定的各種硬件和軟件統(tǒng)稱為中斷系統(tǒng)。在中斷系統(tǒng)中,向CPU申請(qǐng)中斷的外部大事來(lái)源統(tǒng)稱為中斷源。MCS—51系列單片機(jī)中斷系統(tǒng)共有5個(gè)中斷源,MCS-52系列單片機(jī)增加了一個(gè)定時(shí)器/計(jì)數(shù)器2的中斷源。這些中斷源分為兩個(gè)中斷優(yōu)先級(jí),能實(shí)現(xiàn)兩級(jí)中斷的嵌套.CPU是否響應(yīng)中斷源的中斷懇求,由中斷允許寄存器IE中對(duì)應(yīng)的位來(lái)掌握;每一個(gè)中斷源都可以通過(guò)編程中斷優(yōu)先級(jí)寄存器IP中的各位來(lái)選擇其優(yōu)先級(jí)為高或低。單片機(jī)中斷系統(tǒng)的總體結(jié)構(gòu)如REFF3_9_MCS51_52中斷系統(tǒng)結(jié)構(gòu)示意圖\h圖3-9所示。圖3-SEQ圖3-\*ARABIC9MCS51/52中斷系統(tǒng)結(jié)構(gòu)示意圖MCS51/52單片機(jī)中斷系統(tǒng)各SFR的結(jié)構(gòu)及功能MCS—51/52單片機(jī)中和中斷掌握相關(guān)的特殊功能寄存器(SFR)有:TCON:定時(shí)器/計(jì)數(shù)器掌握寄存器;SCON:串行口掌握寄存器;IE:中斷允許寄存器;IP:中斷優(yōu)先級(jí)選擇寄存器;T2CON:定時(shí)器/計(jì)數(shù)器2掌握寄存器.其中TCON、T2CON和SCON只有一部分位用于中斷掌握。通過(guò)對(duì)以上各特殊功能寄

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論