




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《單片機(jī)控制技術(shù)項(xiàng)目式教程(第2版)》習(xí)題答案項(xiàng)目1知識(shí)思考與項(xiàng)目訓(xùn)練答案(一)選擇題:1.C2.C3.A4.A(二)填空題:1.SCM,Single,ChipMicrocomputer2.CPU,I/O口,定時(shí)器/計(jì)數(shù)器3.雙列直插式封裝4.STC,在線下載(三)簡答題:1.什么是單片機(jī)?單片機(jī)由哪些基本部件組成?答:單片機(jī)是指集成在一個(gè)芯片上的微型計(jì)算機(jī),也就是把組成微型計(jì)算機(jī)的各種功能部件,包括CPU(CentralProcessingUnit)、隨機(jī)存取存儲(chǔ)器RAM(RandomAccessMemory)、只讀存儲(chǔ)器ROM(Read-OnlyMemory)、基本輸入/輸出(Input/Output)接口電路、定時(shí)器/計(jì)數(shù)器等部件都制作在一塊集成芯片上,構(gòu)成一個(gè)完整的微型計(jì)算機(jī),從而實(shí)現(xiàn)微型計(jì)算機(jī)的基本功能。2.單片機(jī)的發(fā)展經(jīng)歷了哪些階段?答:單片機(jī)的探索階段;單片機(jī)的完善階段;單片機(jī)向微控制器發(fā)展階段;微控制器的全面發(fā)展階段。3.單片機(jī)有哪些特點(diǎn)?主要應(yīng)用在哪些領(lǐng)域?答:單片機(jī)的特點(diǎn):(1)體積小,成本低,運(yùn)用靈活,易于產(chǎn)品化,能方便地組成各種智能化的控制設(shè)備和儀器,做到機(jī)電一體化。(2)面向控制,能針對性地解決從簡單到復(fù)雜的各類控制任務(wù),因而能獲得最佳的性能價(jià)格比。(3)抗干擾能力強(qiáng),適用溫度范圍寬,在各種惡劣的環(huán)境下都能可靠地工作,這是其它類型計(jì)算機(jī)無法比擬的。(4)可以方便地實(shí)現(xiàn)多機(jī)和分布式控制,使整個(gè)控制系統(tǒng)的效率和可靠性大為提高。單片機(jī)主要應(yīng)用領(lǐng)域:智能儀器儀表、工業(yè)控制、家用電器、計(jì)算機(jī)網(wǎng)絡(luò)和通信領(lǐng)域、醫(yī)用設(shè)備領(lǐng)域、大型電器的模塊中。4.舉例說出單片機(jī)的用途。答:比如家中的空調(diào)、洗衣機(jī)等。5.MCS-51系列單片機(jī)有哪些產(chǎn)品?它們各有哪些差異?你認(rèn)為我們應(yīng)選用哪個(gè)產(chǎn)品作為典型學(xué)習(xí)較合適?答:MCS-51系列單片機(jī)有8×51系列、8×C51系列、8×52系列、8×C252系列等系列產(chǎn)品。8×51系列是基本的51系列產(chǎn)品;8×C51系列采用COMS工藝,省電;8×52系列有8KBROM容量和256BRAM容量,3個(gè)定時(shí)器/計(jì)數(shù)器,6個(gè)中斷源;8×C252系列采用COMS工藝,內(nèi)部配置與8×52系列相當(dāng),有7個(gè)中斷源。我們在學(xué)習(xí)是采用基本的89C51型號就可以了。(四)項(xiàng)目訓(xùn)練:1.列舉兩個(gè)你身邊的使用單片機(jī)的例子。答:電飯煲、洗衣機(jī)、空調(diào)、智能控制燈等。2.詳細(xì)敘述一個(gè)電子產(chǎn)品的單片機(jī)控制過程。答:以洗衣機(jī)為例,單片機(jī)在其中的控制面板中,如圖所示,它接收面板按鍵發(fā)來的功能控制信息,控制洗衣模式的指示燈顯示和時(shí)間的數(shù)碼管顯示,控制注水閥的注水與電機(jī)的啟動(dòng)和停止,總之單片機(jī)在其中起著控制中心的作用。項(xiàng)目2知識(shí)思考與項(xiàng)目訓(xùn)練答案(一)填空題:1.Proteus,KeilC512.*.c,*.uv2,*.hex(二)簡答題:1.如何創(chuàng)建uVision4工程?答:單擊Project菜單,在彈出的下拉菜單中選中NewuVisionProject選項(xiàng),建立一個(gè)新的uVision4工程,這時(shí)會(huì)彈出工程文件保存對話框。在新建工程對話框中,我們需要給自己的工程取一個(gè)名稱,工程名應(yīng)便于記憶且文件名不宜太長;選擇工程存放的路徑,工程文件的擴(kuò)展名為.uvproj。在完成所有輸入和選擇后,按【保存】按鈕,就已經(jīng)建立新的工程了。2.KeilC51軟件的使用步驟是什么?答:(1)啟動(dòng)KeiluVision4;(2)進(jìn)入工作界面;(3)新建工程;(4)CPU型號選擇;(5)新建源程序文件;(6)添加文件到工程;(7)編寫*.c文件;(8)對工程進(jìn)行設(shè)置;(9)編譯、鏈接、生成可執(zhí)行文件。3.Proteus軟件的使用步驟是什么?答:(1)軟件打開;(2)進(jìn)入工作界面;(3)原理圖繪制(略);(4)電路仿真。4.Proteus軟件加載程序仿真和單純硬件仿真各有什么意義?答:①Proteus可以對純硬件電路仿真運(yùn)行,以檢查硬件電路是否正確,此時(shí)無需加載軟件。只要在原理圖編輯完成以后,選擇“Debug”——“Execute”命令即可進(jìn)行電路仿真運(yùn)行。這種仿真只能簡單檢查電路的工作情況。②將KeilC51軟件編寫的源程序進(jìn)行編譯、鏈接生成可執(zhí)行文件,加載到原理圖中的單片機(jī)芯片以后,選擇“Debug”——“Execute”命令對整個(gè)系統(tǒng)進(jìn)行軟、硬件全面仿真運(yùn)行。這種仿真真實(shí)地反映了電路的工作情況。項(xiàng)目3知識(shí)思考與項(xiàng)目訓(xùn)練答案(一)選擇題:1.A2.B3.C4.B
5.D6.B7.A8.A9.D(二)填空題:1.ROM,RAM2.16,0000H,0000H3.214.16,DPH,DPL5.00H~7FH,80H~FFH6.電源正常,復(fù)位正常,時(shí)鐘正常7.高電平2個(gè)機(jī)器周期2us8.6,12(三)簡答題:51單片機(jī)內(nèi)部包含哪些邏輯功能部件?各有什么主要功能?答:MCS-51單片機(jī)的內(nèi)部由中央處理器,時(shí)鐘電路、內(nèi)部程序存儲(chǔ)器、內(nèi)部數(shù)據(jù)存儲(chǔ)器、中斷系統(tǒng)、定時(shí)/計(jì)數(shù)器、并口和一個(gè)串行通信模塊組成。中央處理器(CPU)是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)的工作,完成運(yùn)算和控制輸入輸出功能等操作。數(shù)據(jù)存儲(chǔ)器(RAM)用于存放可讀/寫的數(shù)據(jù)、運(yùn)算的中間結(jié)果或用戶定義的字型表等。程序存儲(chǔ)器(ROM)用于存放用戶程序、原始數(shù)據(jù)或表格。定時(shí)/計(jì)數(shù)器,用于實(shí)現(xiàn)定時(shí)或計(jì)數(shù)、產(chǎn)生中斷或作為串口波特率發(fā)生器。并行輸入輸出(I/O)口用于外部數(shù)據(jù)的傳輸。51單片機(jī)具備較完善的中斷系統(tǒng),有兩個(gè)外部中斷、兩個(gè)(52有3個(gè))定時(shí)/計(jì)數(shù)器中斷和1個(gè)串行中斷,可滿足不同的控制要求,并具有2級的優(yōu)先級別選擇。時(shí)鐘電路用于產(chǎn)生整個(gè)單片機(jī)運(yùn)行的脈沖時(shí)序。簡述51單片機(jī)中程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的功能。它們的尋址范圍是如何確定和分配的?答:51單片機(jī)的數(shù)據(jù)存儲(chǔ)器(RAM)用于存放可讀/寫的數(shù)據(jù)、運(yùn)算的中間結(jié)果或用戶定義的字型表等。片外RAM可有64KB,地址范圍為0000H~FFFFH。片內(nèi)RAM共有256個(gè)單元,通常把這256個(gè)單元按其功能劃分為兩部分:低128單元(單元地址00H~7FH)和高128單元(單元地址80H~FFH)。低128單元分為:00H~1FH單元共有32個(gè)字節(jié),是4個(gè)通用工作寄存器組,每組含有8個(gè)寄存器,編號為R0~R7;位尋址區(qū)(20H~2FH);數(shù)據(jù)緩沖區(qū)(30H~7FH)。高128單元離散地分布著特殊功能寄存器,地址為80H~FFH之間的區(qū)域中。51單片機(jī)的程序存儲(chǔ)器(ROM)用于存放用戶程序、原始數(shù)據(jù)或表格。51單片機(jī)內(nèi)部程序存儲(chǔ)器具有4kB的存儲(chǔ)空間,地址范圍為0000H~0FFFH,片外最多能擴(kuò)展到64kB程序存儲(chǔ)器,地址范圍為0000H~FFFFH。其中有一組特殊單元是0003H~002AH,共40個(gè)單元。這40個(gè)單元被均勻地分為5段,作為5個(gè)中斷源的中斷地址區(qū)。51單片機(jī)內(nèi)部數(shù)據(jù)存儲(chǔ)器可分為哪幾部分?答:51單片機(jī)片內(nèi)RAM共有256個(gè)單元,通常把這256個(gè)單元按其功能劃分為兩部分:低128單元(單元地址00H~7FH)和高128單元(單元地址80H~FFH)。低128單元分為:00H~1FH單元共有32個(gè)字節(jié),是4個(gè)通用工作寄存器組,每組含有8個(gè)寄存器,編號為R0~R7;位尋址區(qū)(20H~2FH);數(shù)據(jù)緩沖區(qū)(30H~7FH)。高128單元離散地分布著特殊功能寄存器,地址為80H~FFH之間的區(qū)域中。51單片機(jī)有多少個(gè)特殊功能寄存器?它們分布在何地址范圍?答:51單片機(jī)有21個(gè)特殊功能寄存器,它們離散地分布在80H~FFH之間的區(qū)域中。程序狀態(tài)字寄存器PSW的作用是什么?常用狀態(tài)有哪些位?答:程序狀態(tài)字(PSW)是一個(gè)8位特殊功能寄存器,它表示了單片機(jī)的各種狀態(tài),該寄存器可位尋址。CY為進(jìn)位標(biāo)志,AC為輔助進(jìn)位標(biāo)志,RS1、RS0為寄存器組選擇,OV為溢出標(biāo)志,P為奇偶標(biāo)志。DPTR是什么寄存器?它的作用是什么?它是由哪幾個(gè)寄存器組成?答:數(shù)據(jù)指針(DPTR)是一個(gè)16位特殊功能寄存器,可分為兩個(gè)8位寄存器,高8位為DPH,低8位為DPL。該寄存器主要用于存放程序存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器的地址。何謂振蕩周期、機(jī)器周期、指令周期?針對80C51單片機(jī),如采用12MHz晶振,振蕩周期、狀態(tài)周期、機(jī)器周期各為多少?答:振蕩周期:又稱節(jié)拍(用P表示),指為單片機(jī)提供定時(shí)信號的振蕩源的周期。機(jī)器周期:CPU完成一個(gè)基本操作所需要的時(shí)間。指令周期:執(zhí)行一條指令所需要的時(shí)間。fosc=12MHz,Tosc=1/fosc=1/12usT狀=2Tosc=1/6usT機(jī)=12Tosc=1us51單片機(jī)常用的復(fù)位方法有幾種?應(yīng)注意什么事項(xiàng)?并畫電路圖說明其工作原理。答:51單片機(jī)常用的復(fù)位方法有上電復(fù)位和按鍵復(fù)位兩種。復(fù)位時(shí)要注意復(fù)位引腳的高電平時(shí)間一定要大于兩個(gè)機(jī)器周期。上電復(fù)位按鍵復(fù)位(四)項(xiàng)目訓(xùn)練:1.用AT89C51設(shè)計(jì)一個(gè)單片機(jī)最小系統(tǒng),要求晶振頻率為24MHz。項(xiàng)目4知識(shí)思考與項(xiàng)目訓(xùn)練答案選擇題:1.D2.B3.A4.D(二)填空題:1.4P0P2P32.上拉電阻地址數(shù)據(jù)3.10k4.限流。5.0x(三)簡答題:P1口與P0口在結(jié)構(gòu)上有何區(qū)別?答:P1口只有通用I/O功能,只有輸入和輸出電路,P1口內(nèi)部有上拉電阻;P0口內(nèi)部有一個(gè)選擇開關(guān),可以選擇作為通用I/O,也可以作為地址/數(shù)據(jù)線,P0口內(nèi)部沒有上拉電阻。P0口~P3口的負(fù)載能力分別如何?答:P0口的輸出級具有驅(qū)動(dòng)8個(gè)LSTTL負(fù)載的能力,輸出電流不大于800mA;P1、P2和P3口具有驅(qū)動(dòng)4個(gè)LSTTL負(fù)載的能力。51單片機(jī)的P0~P3口在結(jié)構(gòu)上有何不同?在使用上有什么特點(diǎn)?用作通用I/O口輸入數(shù)據(jù)時(shí),應(yīng)注意什么?答:P0口是一個(gè)三態(tài)雙向口,可作為地址/數(shù)據(jù)分時(shí)復(fù)用口,也可作為通用的I/O接口,在輸出數(shù)據(jù)時(shí),必須外接上拉電阻。P1口是準(zhǔn)雙向口,它只能作通用I/O接口使用。P2口也是準(zhǔn)雙向口,它有兩種用途:通用I/O接口和高8位地址線。P3口除了作為準(zhǔn)雙向通用I/O口使用外,它的每一根線還具有第二種功能。P1、P2、P3作為通用I/O口時(shí)都不用上拉。P3口的第二功能是什么?答:引腳第二功能功能說明P3.0RXD串行數(shù)據(jù)接收P3.1TXD串行數(shù)據(jù)發(fā)送P3.2外部中斷0P3.3外部中斷1P3.4T0定時(shí)器/計(jì)數(shù)器0外部輸入P3.5T1定時(shí)器/計(jì)數(shù)器1外部輸入P3.6外部數(shù)據(jù)存儲(chǔ)器寫P3.7外部數(shù)據(jù)存儲(chǔ)器讀單片機(jī)外部擴(kuò)展存儲(chǔ)器時(shí),P0口和P2口有什么作用?答:P0作為外擴(kuò)存儲(chǔ)器的低8位地址/數(shù)據(jù)線用,P2口作為外擴(kuò)存儲(chǔ)器的高8位地址線。在編寫單片機(jī)程序時(shí),添加“reg52.h”頭文件的目的是什么?答:添加“reg52.h”頭文件是因?yàn)閱纹瑱C(jī)程序需要用到單片機(jī)的庫函數(shù),它在“reg52.h”頭文件中定義的。(四)項(xiàng)目訓(xùn)練:1.如圖4.7電路,請修改程序,使P1.7的LED燈大致按1s的時(shí)間間隔交替亮與滅。(1)電路設(shè)計(jì):(2)軟件設(shè)計(jì):#include<reg52.h>sbitled=P1^7;//延時(shí)子函數(shù),大約x毫秒延時(shí)voidDelayMS(unsignedintx){unsignedchari;while(x--)for(i=0;i<120;i++);}//主函數(shù),控制P1.7引腳的LED燈閃爍voidmain(void){while(1){led=~led;DelayMS(1000);}}2.如圖4.10電路,請將設(shè)計(jì)稍作修改:控制從P1.0到P1.7連接的8只LED燈依次全部點(diǎn)亮,然后依次熄滅,接下來控制從P1.7到P1.0連接的8只LED燈依次全部點(diǎn)亮再依次熄滅,最后8只LED燈全亮之后再全滅。請編寫程序并調(diào)試。(1)電路設(shè)計(jì):(2)軟件設(shè)計(jì):#include<reg52.h>#defineuintunsignedint#defineucharunsignedchar//延時(shí)子函數(shù)voidDelay(uintt){while(--t);}//主函數(shù),循環(huán)點(diǎn)亮LED燈voidmain(){uchark,recy;while(1){recy=0xfe;for(k=1;k<=8;k++){P1=recy;Delay(50000);recy=recy<<1;} recy=0x01;for(k=1;k<=8;k++){P1=recy;Delay(50000);recy=(recy<<1)+1;}recy=0x7f;for(k=1;k<=8;k++){P1=recy;Delay(50000);recy=recy>>1;}recy=0x80;for(k=1;k<=8;k++){P1=recy;Delay(50000);recy=(recy>>1)+0X80;}P1=0xff;Delay(50000);}}項(xiàng)目5知識(shí)思考與項(xiàng)目訓(xùn)練答案選擇題:1.C2.A3.A4.D5.C6.C(二)填空題:1.4,TMOD,TCON,T0,T12.TL0,TH0,163.8,自動(dòng)重裝載功能4.8192,65536,2565.2us,131.072ms6.TL0,TH0,停止計(jì)數(shù)(三)簡答題:MCS-51單片機(jī)定時(shí)/計(jì)數(shù)器的定時(shí)功能和計(jì)數(shù)功能有什么不同?分別應(yīng)用在什么場合下?答:定時(shí)功能計(jì)數(shù)的是單片機(jī)內(nèi)部的機(jī)器周期,當(dāng)我們要定時(shí)時(shí)采用這種方式;計(jì)數(shù)功能計(jì)數(shù)的外部的脈沖個(gè)數(shù),當(dāng)我們要控制外面的電路時(shí)可以采用這種方式。MCS-51單片機(jī)定時(shí)/計(jì)數(shù)器做定時(shí)和計(jì)數(shù)時(shí),其計(jì)數(shù)脈沖分別由誰提供?答:定時(shí)時(shí)的計(jì)數(shù)脈沖由單片機(jī)的時(shí)鐘電路提供,計(jì)數(shù)時(shí)的計(jì)數(shù)脈沖由P3.4(T0)或P3.5(T1)上連接的外部電路提供。簡述MCS-51單片機(jī)定時(shí)/計(jì)數(shù)器的4種工作方式的特點(diǎn)及如何選擇和設(shè)定這4種工作方式。答:M1M0工作方式功能說明00方式013位計(jì)數(shù)器01方式116位計(jì)數(shù)器10方式2自動(dòng)重裝初值的8位計(jì)數(shù)器11方式3方式3只針對T0,T0分成兩個(gè)獨(dú)立的8位定時(shí)/計(jì)數(shù)器;T1無方式3MCS-51單片機(jī)的定時(shí)/計(jì)數(shù)器做定時(shí)器用時(shí),其定時(shí)時(shí)間與哪些因素有關(guān)?做計(jì)數(shù)器時(shí)對外界計(jì)數(shù)頻率有何限制?答:單片機(jī)的定時(shí)/計(jì)數(shù)器的定時(shí)時(shí)間與外接晶體的頻率、工作方式有關(guān)。做計(jì)數(shù)器時(shí)必須保證輸入信號的高電平與低電平的持續(xù)時(shí)間大于一個(gè)機(jī)器周期。使用一個(gè)定時(shí)器,如何通過軟硬件結(jié)合的方法,實(shí)現(xiàn)較長時(shí)間的定時(shí)?答:采用定時(shí)/計(jì)數(shù)器的方式3,TH0作為定時(shí)器,TL0設(shè)置為計(jì)數(shù)器,當(dāng)TH0計(jì)滿溢出后,用軟件復(fù)位的方法使T0(P3.4)引腳產(chǎn)生負(fù)跳變,TH0每溢出一次,T0引腳便產(chǎn)生一個(gè)負(fù)跳變,TL0便計(jì)數(shù)一次。這樣定時(shí)值是成倍數(shù)上升的,可以實(shí)現(xiàn)較長的定時(shí)。(四)項(xiàng)目訓(xùn)練:1.若AT89C51單片機(jī)的時(shí)鐘頻率為12MHz,要求T1產(chǎn)生40ms的定時(shí),試對T1進(jìn)行初始化編程。TMOD=0x10;TH1=(65536-40000)/256;TL1=(65536-40000)%256;TR1=1;2.編寫用定時(shí)器1,方式1采用查詢方式實(shí)現(xiàn)1s的延時(shí)子程序。voidsTime(){unsignedinti; TMOD=0x10;//設(shè)定時(shí)器1為方式1 TH1=(65536-50000)/256;//置定時(shí)器初值 TL1=(65536-50000)%256; TR1=1;//啟動(dòng)T1 for(i=0;i<=20;){if(TF1==1)//查詢計(jì)數(shù)溢出{i++;TF1=0;TH1=(65536-50000)/256;//重新置定時(shí)器初值TL1=(65536-50000)%256;}}return;}3.已知單片機(jī)系統(tǒng)晶振頻率為6MHz,試編寫程序,用定時(shí)器工作方式1,使P1.0輸出如下周期為0.1s的波形。#include<reg51.h>#defineucharunsignedcharsbitPWM=P1^0;voidmain(){ucharT_Count=0;//累加計(jì)數(shù)溢出發(fā)生的次數(shù)TMOD=0x01;//定時(shí)器0工作于方式1TH0=(65536-50000)/256;//50ms定時(shí)初值TL0=(65536-50000)%256;TR0=1;//啟動(dòng)定時(shí)器while(1){if(TF0==1)//定時(shí)溢出標(biāo)志位為1時(shí)表示計(jì)時(shí)溢出{TF0=0;//軟件清零TH0=(65536-50000)/256;//重置50ms定時(shí)TL0=(65536-50000)%256;PWM=!PWM;}}}項(xiàng)目6知識(shí)思考與項(xiàng)目訓(xùn)練答案選擇題:1.D2.B3.A4.A5.C6.A7.A8.B(二)填空題:1.5,22.T0,T1,外部中斷0,外部中斷1,串行口3.中斷請求,中斷響應(yīng),中斷處理,中斷返回4.高級,低級,PCON5.靜態(tài)顯示,動(dòng)態(tài)顯示6.6DH(三)簡答題:1. 簡述LED共陽極數(shù)碼管和共陰極數(shù)碼管的工作原理。答:共陰LED數(shù)碼管把所有發(fā)光二極管的負(fù)極(陰極)連接在一起,作為公共引腳com,接地;每個(gè)發(fā)光二極管對應(yīng)的正極分別作為獨(dú)立引腳(稱“筆段電極”),其引腳名稱分別為a、b、c、d、e、f、g腳及DP腳(小數(shù)點(diǎn)),某段接高電平就會(huì)點(diǎn)亮,接低電平就會(huì)熄滅,不同組合就顯示不同字符。共陽LED數(shù)碼管把所有發(fā)光二極管正極(陽極)連接在一起,作為公共引腳com,接電源;每個(gè)發(fā)光二極管對應(yīng)的負(fù)極分別作為獨(dú)立引腳,其引腳名稱分別為a、b、c、d、e、f、g腳及DP腳(小數(shù)點(diǎn)),某段接低電平就會(huì)點(diǎn)亮,接高電平就會(huì)熄滅,不同組合就顯示不同字符。2. LED數(shù)碼管動(dòng)態(tài)顯示的特點(diǎn)是什么?應(yīng)用時(shí)有哪些需要注意的地方?答:動(dòng)態(tài)顯示方式的優(yōu)點(diǎn)是能夠節(jié)省大量的I/O口,而且功耗較低。缺點(diǎn)是編程比較復(fù)雜,顯示亮度不如靜態(tài)。一般適用于顯示位數(shù)較多的場合。應(yīng)用時(shí)為了顯示亮些,通常在位選線上加三極管一個(gè)驅(qū)動(dòng)電路。3. 51單片機(jī)的中斷系統(tǒng)有哪幾個(gè)寄存器?它們的作用是什么?答:51單片機(jī)有4個(gè)中斷寄存器:中斷源寄存器TCON(保存中斷信息)和SCON(保存中斷信息)、中斷允許控制寄存器IE(控制中斷的開放和關(guān)閉)、中斷優(yōu)先級控制寄存器IP(設(shè)定優(yōu)先級別)。4. 如何設(shè)定中斷源的優(yōu)先級?如果將IP寄存器中的PT1和PS位設(shè)置為1,其它位為零,請將各51單片機(jī)中斷源按優(yōu)先級由高到低排列。答:IP寄存器中設(shè)置為1的寄存器優(yōu)先級高,為0的優(yōu)先級低,設(shè)置相同時(shí)按自然優(yōu)先級由高到低排隊(duì):、T0、、T1、串行口。如果將IP寄存器中的PT1和PS位設(shè)置為1,其它位為零,各中斷源按優(yōu)先級從高到低分別為:T1、串行口、INT0、T0、INT1。5. 51單片機(jī)外部中斷有哪兩種觸發(fā)方式?對觸發(fā)脈沖或電平有什么要求?如何選擇和設(shè)定?答:外部中斷有兩種觸發(fā)方式:低電平觸發(fā)方式和下降沿觸發(fā)方式。當(dāng)IT0=0,為低電平觸發(fā)方式,CPU在每個(gè)機(jī)器周期的S5P2期間對(P3.2)引腳采樣,若為低電平,則認(rèn)為有中斷申請,在中斷返回之前必須撤消P3.2引腳上的低電平;當(dāng)IT0=1,為下降沿觸發(fā)方式。6. 請簡述應(yīng)用單片機(jī)的中斷時(shí)的初始化過程。答:(1)CPU的開、關(guān)中斷。(2)具體中斷源中斷請求的允許和禁止(屏蔽)。(3)各中斷源優(yōu)先級別的控制。(4)外部中斷請求觸發(fā)方式的設(shè)定。7. 簡述LCD1602的初始化過程。答:LCD1602的一般初始化(復(fù)位)過程如下:延時(shí)15ms,寫指令38H(不檢測忙信號),延時(shí)5ms,寫指令38H(不檢測忙信號),延時(shí)5ms,寫指令38H(不檢測忙信號),以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號,寫指令38H(顯示模式設(shè)置),寫指令08H(顯示關(guān)閉),寫指令01H(顯示清屏),寫指令06H(顯示光標(biāo)移動(dòng)設(shè)置),寫指令0CH(顯示開及光標(biāo)設(shè)置)。(四)項(xiàng)目訓(xùn)練:1.用AT89C51單片機(jī)控制4位集成式共陽極的數(shù)碼管在相應(yīng)位以1秒間隔循環(huán)顯示數(shù)字“1234”。設(shè)計(jì)電路并編寫工作程序。電路設(shè)計(jì):程序設(shè)計(jì)://宏定義#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint//***************************************************************************//定義段碼表ucharcodetable1[]={0xF9,0xA4,0xB0,0x99};//定義位碼表ucharcodetable2[]={0x01,0x02,0x04,0x08};//***************************************************************************//延時(shí)子函數(shù),大約x毫秒延時(shí)voidDelayMS(uintx){uchari;while(x--)for(i=0;i<120;i++);}//***************************************************************************//主函數(shù)voidmain(){uchark;P0=0xFF;//關(guān)顯示P2=0x00;//關(guān)顯示while(1){for(k=0;k<4;k++){P0=table1[k];//發(fā)送段碼P2=table2[k];//發(fā)送位碼DelayMS(1000);//延時(shí)1秒P0=0xFF;//關(guān)顯示}}}2.用AT89C51單片機(jī)控制8位集成式共陰極的數(shù)碼管在相應(yīng)位同時(shí)顯示字符串“ABCDEFHL”2秒鐘,又同時(shí)熄滅2秒鐘,如此反復(fù)。設(shè)計(jì)電路并編寫工作程序。電路設(shè)計(jì):程序設(shè)計(jì)://宏定義#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint//***************************************************************************//定義段碼表ucharcodetable1[]={0x77,0x7C,0x39,0x5E,0x79,0x71,0x76,0x38};//定義位碼表ucharcodetable2[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};//***************************************************************************//延時(shí)子函數(shù),大約x毫秒延時(shí)voidDelayMS(uintx){uchari;while(x--)for(i=0;i<120;i++);}//***************************************************************************//主函數(shù)voidmain(){uchark,t;P1=0x00;//關(guān)顯示P2=0xFF;//關(guān)顯示while(1){for(t=0;t<100;t++) {for(k=0;k<=7;k++){P1=table1[k];//發(fā)送段碼P2=table2[k];//發(fā)送位碼DelayMS(2);P1=0x00;//關(guān)顯示} } P1=0x00;//關(guān)顯示P2=0xFF;//關(guān)顯示 DelayMS(2000);} }3.用51單片機(jī)的定時(shí)器1(方式2)中斷實(shí)現(xiàn)LED燈按1秒間隔的亮滅交替。設(shè)計(jì)電路并編寫工作程序。電路設(shè)計(jì):程序設(shè)計(jì)://宏定義#include<reg51.h>#defineuintunsignedint//***************************************************************************//定義ledsbitled=P1^0;//定義延時(shí)倍數(shù)uintcount=0;//***************************************************************************//主程序voidmain(){TMOD=0x20;//T1工作在方式2TH1=0x06;TL1=0x06;//250*1us=250usEA=1;//CPU允許中斷ET1=1;//允許T1中斷TR1=1;//開啟T1led=0;//點(diǎn)亮D1while(1);}//***************************************************************************//中斷子程序voidTime_0()interrupt3{count++;if(count==4000)//250us*4000=1s{count=0;led=~led;//D1熄滅或點(diǎn)亮}}4.用51單片機(jī)的T0中斷控制交通信號燈,交通燈執(zhí)行步驟如下:①東西向綠燈與南北向紅燈亮30s;②東西向綠燈與南北向紅燈滅,東西向黃燈與南北向黃燈閃爍5次;③東西向紅燈與南北向綠燈亮30s;④東西向紅燈與南北向綠燈滅,東西向黃燈與南北向黃燈閃爍5次。①~④操作反復(fù),同時(shí)用一只2位的共陰極數(shù)碼管倒計(jì)時(shí)顯示當(dāng)前的秒數(shù)。要求繪制電路原理圖并編寫工作程序。電路設(shè)計(jì):程序設(shè)計(jì)://宏定義#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint//定義控制端口sbitRED_A=P0^0;//東西向信號燈sbitYELLOW_A=P0^1;sbitGREEN_A=P0^2;sbitRED_B=P0^3; //南北向信號燈sbitYELLOW_B=P0^4;sbitGREEN_B=P0^5;//定義全局變量uintTime_Count=0; //延時(shí)倍數(shù)ucharFlash_Count=0; //閃爍次數(shù)uchars=30; //顯示秒數(shù)uchars_Count=0; //顯示秒數(shù)的計(jì)數(shù)ucharOperation_Type=1; //操作類型變量ucharcodetable1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //定義共陰極數(shù)碼管段碼ucharcodetable2[]={0xfe,0xfd}; //定義共陰極數(shù)碼管位碼//T0中斷子程序voidT0_INT()interrupt1{TH0=-50000/256;TL0=-50000%256;switch(Operation_Type){case1: //東西向綠燈與南北向紅燈亮30sRED_A=0;YELLOW_A=0;GREEN_A=1;RED_B=1;YELLOW_B=0;GREEN_B=0;if(++s_Count%20==0) s--;if(++Time_Count!=600)return;Time_Count=0; s_Count=0; s=4;Operation_Type=2;break;case2://黃燈開始閃爍,東西向綠燈與南北向紅燈滅if(++s_Count%20==0) s--; if(++Time_Count!=8)return;Time_Count=0;YELLOW_A=!YELLOW_A; YELLOW_B=!YELLOW_B;GREEN_A=0;RED_B=0;if(++Flash_Count!=10)return; //閃爍5次Flash_Count=0; s_Count=0; s=30;Operation_Type=3;break; case3: //東西向紅燈與南北向綠燈亮30s RED_A=1;YELLOW_A=0;GREEN_A=0;RED_B=0;YELLOW_B=0;GREEN_B=1;if(++s_Count%20==0) s--;if(++Time_Count!=600)return;Time_Count=0; s_Count=0; s=4; Operation_Type=4;break;case4://黃燈開始閃爍,東西向紅燈與南北向綠燈滅 if(++s_Count%20==0) s--; if(++Time_Count!=8)return;Time_Count=0;YELLOW_A=!YELLOW_A; YELLOW_B=!YELLOW_B;GREEN_B=0;RED_A=0;if(++Flash_Count!=10)return; //閃爍5次Flash_Count=0; s_Count=0; s=30; Operation_Type=1;break;}}//延時(shí)子函數(shù),大約x毫秒延時(shí)voidDelayMS(uintx){uchari;while(x--)for(i=0;i<120;i++);}voidmain(){TMOD=0x01; //T0工作在方式1TH0=-50000/256;//賦初值,計(jì)數(shù)50000次TL0=-50000%256;EA=1; //開中斷ET0=1;TR0=1; //啟動(dòng)T0while(1) {P1=table1[s/10];//發(fā)送十位段碼 P2=table2[0];//發(fā)送位碼DelayMS(2);P1=0x00;//關(guān)顯示 P1=table1[s%10];//發(fā)送個(gè)位段碼 P2=table2[1];//發(fā)送位碼 DelayMS(2);P1=0x00;//關(guān)顯示 }}項(xiàng)目7知識(shí)思考與項(xiàng)目訓(xùn)練答案選擇題:1.B2.D3.B4.A5.B(二)填空題:1.編碼鍵盤,非編碼鍵盤2.獨(dú)立式鍵盤,矩陣式鍵盤3.掃描法,線反轉(zhuǎn)法4.硬件去抖動(dòng),軟件去抖動(dòng)5.延時(shí)5—20ms(三)簡答題:簡述矩陣(行列式)鍵盤的工作原理。答:矩陣鍵盤由行線和列線組成,按鍵位于行、列的交叉點(diǎn)上。行、列線分別連接到按鍵的開關(guān)兩端,列線(或行線)通過上拉電阻接到+5V上。平時(shí)無按鍵動(dòng)作時(shí),列線處于高電平狀態(tài),而當(dāng)有按鍵按下時(shí),行線電平狀態(tài)將由與此行線相連的列線電平?jīng)Q定。由于矩陣鍵盤中行、列線為多鍵共用,各按鍵均影響該鍵所在行和列的電平,所以必須將行、列線信號配合起來并作適當(dāng)?shù)奶幚恚拍艽_定閉合鍵的位置。矩陣(行列式)鍵盤有幾種識(shí)別方法?它們各是怎樣識(shí)別按鍵的?答:矩陣鍵盤的按鍵識(shí)別方法有掃描法和線反轉(zhuǎn)法。掃描法:當(dāng)鍵被按下時(shí),讓所有列線處于低電平,按鍵所在行電平將被拉成低電平,根據(jù)此行電平的變化,便能判定此行有鍵被按下。為了判定是哪一列的鍵被按下,可讓列線依次處于低電平,而其余列線處于高電平,按鍵所在的列電平將被拉成低電平,根據(jù)此列電平的變化,便能判定按鍵所在的列。線反轉(zhuǎn)法:將行線編程為輸入線,列線編程為輸出線,并使輸出線輸出為全零電平,則行線中電平由高到低所在行為按鍵所在行。同第一步完全相反,將行線編程為輸出線,列線編程為輸入線,并使輸出線為全零電平,則列線中電平由高到低所在列為按鍵所在列。按鍵的去抖動(dòng)有哪幾種方式?單片機(jī)通常采用哪種方式?答:按鍵去抖動(dòng)一般有硬件和軟件兩種方法。單片機(jī)通常采用軟件延時(shí)去抖。簡述有源蜂鳴器和無源蜂鳴器的控制方法。答:有源蜂鳴器內(nèi)部帶震蕩源,所以只要一通電就會(huì)叫。有源蜂鳴器的優(yōu)點(diǎn)是:程序控制方便。無源蜂鳴器內(nèi)部不帶震蕩源,所以用直流信號無法令其鳴叫,必須用2~5KHz的方波去驅(qū)動(dòng)它。無源蜂鳴器的優(yōu)點(diǎn)較多:便宜;聲音頻率可控,可以做出“多來米發(fā)索拉西”的效果;在一些特例中,可以和LED復(fù)用一個(gè)控制口。(四)項(xiàng)目訓(xùn)練:1.如圖7.5電路,用K1~K4鍵分組控制八只LED燈,按K1鍵輪流點(diǎn)亮D1~D8;按K2點(diǎn)亮D1、D3、D5、D7;按K3點(diǎn)亮D2、D4、D6、D8;按K4熄滅D1~D8。電路設(shè)計(jì):程序設(shè)計(jì)://宏定義#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint//*************************************************************//延時(shí)1ms子程序voidDelayMS(uintx){uchari;while(x--)for(i=0;i<120;i++);}//*************************************************************//按鍵控制LED燈主程序voidmain(){uchark,t,Key_State;P1=0xFF;P0=0xFF;while(1){t=P1;//將鍵值保存起來if(t!=0xFF)//判斷有鍵按下{DelayMS(10);//再次檢查按鍵是否按下,去抖動(dòng)if(t!=P1)continue;//如果按鍵沒有按下,下一次循環(huán)Key_State=~t;//取得4位按鍵值,由1111xxxx變?yōu)?000xxxxk=0;//獲取按鍵號kwhile(Key_State!=0){k++;Key_State>>=1;}switch(k){case1:if(P0==0xFF||P0==0xAA||P0==0x55)P0=0x7F;P0=_crol_(P0,1);//輪流點(diǎn)亮D1~D8DelayMS(200);break;case2:P0=0xAA;break;//點(diǎn)亮D1、D3、D5、D7case3:P0=0x55;break;//點(diǎn)亮D2、D4、D6、D8case4:P0=0xFF;//熄滅D1~D8}}}}2.采用AT89C51單片機(jī)設(shè)計(jì)一只電子秒表,可以正計(jì)時(shí),也可以倒計(jì)時(shí)。要求用一只兩位的共陽極的數(shù)碼管動(dòng)態(tài)顯示秒數(shù),定時(shí)采用T1的工作方式2,并且用中斷實(shí)現(xiàn)。在Proteus環(huán)境下繪制原理圖,編程調(diào)試實(shí)現(xiàn)功能。電路設(shè)計(jì):程序設(shè)計(jì)://宏定義#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitK1=P3^2;sbitK2=P3^3;//*************************************************************//0~9的數(shù)碼管共陽極段碼表ucharcodeDSY_CODE[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//定義秒表初值60uchars=0;//定義T1計(jì)數(shù)次數(shù)uintcount=0;//*************************************************************//延時(shí)1ms子程序voidDelayMS(uintx){uchari;while(x--)for(i=0;i<120;i++);}//*************************************************************//初始化定時(shí)器1函數(shù)(定時(shí)器1,8位自動(dòng)重裝載初值模式2,250次計(jì)數(shù))voidinit_time1(){TMOD=0x20; TH1=0x06; TL1=0x06; EA=1;ET1=1;}//*************************************************************************//定時(shí)器1,1s定時(shí)減1中斷函數(shù)timer1()interrupt3{ count++; if(s==0)s=60; if(count==4000) //進(jìn)入中斷4000次為1s {count=0; s--;//秒數(shù)減1 }}//*************************************************************************//數(shù)碼管動(dòng)態(tài)顯示子函數(shù)voiddisplay(){ P2=0x00; //關(guān)閉顯示 P0=DSY_CODE[s/10];//送十位字型碼 P2=0x01; //送十位字位碼 DelayMS(2); P2=0x00; //關(guān)閉顯示 P0=DSY_CODE[s%10];//送個(gè)位字型碼 P2=0x02; //送個(gè)位字位碼 DelayMS(2);}//秒表主程序voidmain(){init_time1();P0=0xFF;P2=0x00;K1=1;K2=1; while(1){ display();if(K1==0)//K1鍵按下{DelayMS(10);//按鍵去抖動(dòng)if(K1==0)//再次檢查按鍵{s=60; TR1=1; //開啟T1}}if(K2==0){DelayMS(10);//按鍵去抖動(dòng)if(K2==0)//再次檢查按鍵{TR1=0; //關(guān)T1 s=0; //顯示清零 }}}}3.用51單片機(jī)設(shè)計(jì)一只模擬鬧鐘:用8位共陰極的數(shù)碼管動(dòng)態(tài)顯示時(shí)間,從左到右第1、2位顯示小時(shí),第4、5位顯示分鐘,第7、8位顯示秒,中間用“—”隔開。比如設(shè)置“01—30—00”,表示鬧鐘定時(shí)1小時(shí)30分鐘,開始計(jì)時(shí)后以倒數(shù)的方式顯示“01—29—59”、“01—29—58”……直到“00—00—00”時(shí)蜂鳴器發(fā)出鬧鈴聲。具體要求如下:(1)用4×4矩陣鍵盤的數(shù)字鍵輸入設(shè)定時(shí)間;(2)8位共陰極的數(shù)碼管動(dòng)態(tài)顯示當(dāng)前的數(shù)值(剩余時(shí)間);(3)“A”鍵作為開始鍵,按下后設(shè)置的數(shù)值以1s的時(shí)間間隔減1倒數(shù);(4)“B”鍵作為取消鍵,按下后取消前面的輸入重新設(shè)置;(5)當(dāng)設(shè)置的數(shù)值減到0時(shí)蜂鳴器報(bào)警。請編寫程序并調(diào)試。電路設(shè)計(jì):程序設(shè)計(jì)://宏定義#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitBEEP=P3^7;ucharcodeKeyCodeTable[]={0x18,0x28,0x48,0x88,0x14,0x24,0x44,0x84,0x12,0x22,0x42,0x82,0x11,0x21,0x41,0x81}; ucharcodeDisplayTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};uchardigbit; //字位uchardigbit1=0x01; //靜態(tài)顯示字位ucharwordbuf[6]; //字型碼緩沖區(qū)ucharcount; //字型碼緩沖區(qū)計(jì)數(shù) intt1count; //定時(shí)器1計(jì)數(shù)//延時(shí)1ms子程序voidDelayMS(uintx){uchari;while(x--)for(i=0;i<120;i++);}//*************************************************************//鍵盤掃描子函數(shù)ucharkeyscan(){ucharsCode,kCode,i,k;P2=0xF0;//低4位置0,放入四行if((P2&0xF0)!=0xF0) {DelayMS(10); if((P2&0xF0)!=0xF0) {sCode=0xFE;//行掃描碼初值 for(k=0;k<4;k++)//對4行分別掃描 {P2=sCode; if((P2&0xF0)!=0xF0) {kCode=~P2; do{P2=0xf0;} //等待按鍵彈起 while(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國斑馬線指示燈市場分析及競爭策略研究報(bào)告
- 旅行成長:視野與適應(yīng)力并進(jìn)
- 裝修公司創(chuàng)新創(chuàng)業(yè)計(jì)劃書
- 客戶服務(wù)質(zhì)量的提升措施計(jì)劃
- 業(yè)務(wù)流程再造與優(yōu)化計(jì)劃
- 如何根據(jù)學(xué)生特點(diǎn)調(diào)整教學(xué)方式計(jì)劃
- 孩子情緒自控從這5點(diǎn)開始
- 課程創(chuàng)新與實(shí)驗(yàn)項(xiàng)目計(jì)劃
- 主管全年工作任務(wù)安排計(jì)劃
- 提升社區(qū)文化自信的工作步驟計(jì)劃
- 新時(shí)代高職生創(chuàng)新創(chuàng)業(yè)教育PPT完整全套教學(xué)課件
- 2023年甘肅省平?jīng)鍪兄锌家荒I镌囶}+
- 2023年主任醫(yī)師(正高)-中醫(yī)骨傷科學(xué)(正高)考試上岸歷年考點(diǎn)真題演練含答案
- 12J4-2 天津市建筑標(biāo)準(zhǔn)設(shè)計(jì)圖集(2012版)專用門窗
- 2023年江蘇省中學(xué)生生物學(xué)競賽奧賽初賽試題和答案
- 鋼結(jié)構(gòu)大棚建設(shè)施工合同書69944
- 健康之道-調(diào)養(yǎng)腸道PPT課件2
- 臨時(shí)用藥申請表
- 探究土壤酸堿性對植物生長的影響 教學(xué)設(shè)計(jì)
- 私車公用情況登記表
- 半導(dǎo)體行業(yè)深度報(bào)告:海外觀察系列十:從美光破凈看存儲(chǔ)行業(yè)投資機(jī)會(huì)
評論
0/150
提交評論