《單片機(jī)技術(shù)》課件項(xiàng)目一 單片機(jī)智能霓虹燈設(shè)計(jì)_第1頁(yè)
《單片機(jī)技術(shù)》課件項(xiàng)目一 單片機(jī)智能霓虹燈設(shè)計(jì)_第2頁(yè)
《單片機(jī)技術(shù)》課件項(xiàng)目一 單片機(jī)智能霓虹燈設(shè)計(jì)_第3頁(yè)
《單片機(jī)技術(shù)》課件項(xiàng)目一 單片機(jī)智能霓虹燈設(shè)計(jì)_第4頁(yè)
《單片機(jī)技術(shù)》課件項(xiàng)目一 單片機(jī)智能霓虹燈設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩111頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

項(xiàng)目一單片機(jī)智能霓虹燈設(shè)計(jì)

1.掌握單片機(jī)的概念、發(fā)展歷程2.單片機(jī)的特點(diǎn)及應(yīng)用領(lǐng)域3.熟悉單片機(jī)開發(fā)軟件4.熟悉單片機(jī)開發(fā)軟件的級(jí)聯(lián)使用5.掌握單片機(jī)點(diǎn)亮LED基本原理

一、學(xué)習(xí)目標(biāo)1.項(xiàng)目任務(wù)在夜幕降臨,城市中各式各樣的霓虹燈、廣告牌,看起來非常絢麗,為夜幕中的城市增添了不少亮麗色彩。其實(shí)這些閃爍的霓虹燈,其工作原理和單片機(jī)控制流水燈是一樣的。本項(xiàng)目的任務(wù)是實(shí)現(xiàn)流水燈閃爍。程序中只需更改流水花樣數(shù)據(jù)表的流水?dāng)?shù)據(jù)就可以隨意添加或改變流水花樣,實(shí)現(xiàn)任意方式流水。二、學(xué)習(xí)任務(wù)

圖1-1最小系統(tǒng)實(shí)現(xiàn)流水燈閃爍

單片機(jī)最小系統(tǒng)構(gòu)成的流水燈控制器如圖1-1所示:它主要由單片機(jī)、晶振和復(fù)位電路、開關(guān)輸入電路及輸出顯示電路四部分構(gòu)成,缺一不可。流水燈原理:根據(jù)硬件電路連接方式,當(dāng)P1.0口的電平變?yōu)榈碗娖綍r(shí),P1.0口的LED1亮起來;相反,如果要使P1.0口的LED1熄滅,需把P1.0口的電平變?yōu)楦唠娖?。同理,接在P1.1~P1.7口的其他7個(gè)LED的點(diǎn)亮和熄滅方法方法同LED1。因此,要實(shí)現(xiàn)流水燈功能,我們只要將LED2~LED8依次點(diǎn)亮、熄滅,8只LED變會(huì)一亮一暗的做流水操作了。任務(wù)1單片機(jī)點(diǎn)亮LED任務(wù)2左移右移實(shí)現(xiàn)流水燈任務(wù)3任意花樣廣告流水燈【任務(wù)描述】使用AT89C51單片機(jī)P1.0點(diǎn)亮一個(gè)LED。【相關(guān)知識(shí)】1.單片機(jī)的概念1946年,第一臺(tái)電子數(shù)字計(jì)算機(jī)(ENIAC)問世,標(biāo)志著計(jì)算機(jī)時(shí)代的到來。匈牙利籍?dāng)?shù)學(xué)家馮·諾依曼提出的“程序存儲(chǔ)”和“二進(jìn)制運(yùn)算”思想,構(gòu)建了計(jì)算機(jī)的組成結(jié)構(gòu)。其組成包括:運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備、輸出設(shè)備,如圖1-2。

圖1-2計(jì)算機(jī)的基本結(jié)構(gòu)單片機(jī)是單片微型計(jì)算機(jī)的簡(jiǎn)稱,它是在一塊半導(dǎo)體芯片上,集成了CPU、半導(dǎo)體存儲(chǔ)器、I/O(Input/Output)接口、中斷系統(tǒng)和定時(shí)器等計(jì)算機(jī)必備部件,所構(gòu)成的一個(gè)完整的數(shù)字電子計(jì)算機(jī)。單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。此芯片為單片微型計(jì)算機(jī)(SingleChipMicrocomputer),簡(jiǎn)稱單片機(jī)。片機(jī)也被稱為微控制器(Microcontroller),是因?yàn)樗钤绫挥迷诠I(yè)控制領(lǐng)域。本系統(tǒng)中,核心控制器件是單片機(jī)。(1)發(fā)展歷程SCM即單片微型計(jì)算機(jī)(SingleChipMicrocomputer)階段,主要是尋求最佳的單片形態(tài)嵌入式系統(tǒng)的最佳體系結(jié)構(gòu)。MCU即微控制器(MicroControllerUnit)階段,主要的技術(shù)發(fā)展方向是:不斷擴(kuò)展?jié)M足嵌入式應(yīng)用時(shí),對(duì)象系統(tǒng)要求的各種外圍電路與接口電路,突顯其對(duì)象的智能化控制能力,它所涉及的領(lǐng)域都與對(duì)象系統(tǒng)相關(guān)。專用單片機(jī)的發(fā)展自然形成了SoC化趨勢(shì)(2)單片機(jī)的特點(diǎn)功能強(qiáng)、體積小面向控制價(jià)格低廉低電壓、低功耗(3)應(yīng)用領(lǐng)域1在智能儀器儀表上的應(yīng)用2在工業(yè)控制中的應(yīng)用3在消費(fèi)電子中的應(yīng)用4在計(jì)算機(jī)網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用5單片機(jī)在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用6在各種大型電器中的模塊化應(yīng)用7單片機(jī)在汽車設(shè)備領(lǐng)域中的應(yīng)用

由于單片機(jī)具有超微型化的特點(diǎn),并且有無可比擬的高性能價(jià)格比,從而為儀器儀表的智能化提供了可能。1)在智能儀器儀表上的應(yīng)用三代儀器儀表:●第一代為指針式(或模擬式)儀器儀表●第二代為數(shù)字式儀器儀表●第三代就是智能式儀器儀表(視頻)2)在工業(yè)控制中的應(yīng)用3)單片機(jī)應(yīng)用之消費(fèi)電子產(chǎn)品4)在計(jì)算機(jī)網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用在調(diào)制解調(diào)器、各類手機(jī)、傳真機(jī)、程控電話交換機(jī)、信息網(wǎng)絡(luò)及各種通訊設(shè)備中,單片機(jī)也已經(jīng)得到廣泛應(yīng)用。5)單片機(jī)在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用6)在各種大型電器中的模塊化應(yīng)用工業(yè)控制7)單片機(jī)在汽車設(shè)備領(lǐng)域中的應(yīng)用8)單片機(jī)應(yīng)用之軍事技術(shù)2.單片機(jī)硬件結(jié)構(gòu)(1)單片機(jī)的內(nèi)部資源振蕩器及定時(shí)電路89C51CPU4K字節(jié)ROM128字節(jié)RAM2個(gè)16位定時(shí)器/計(jì)數(shù)器64K總線擴(kuò)展控制可編程I/O可編程串行口

圖1-4AT89C51片內(nèi)結(jié)構(gòu)片內(nèi)硬件組成結(jié)構(gòu)如圖1-4所示。把作為控制應(yīng)用所必需的基本功能部件都集成在一個(gè)尺寸有限的集成電路芯片上。有如下功能部件和特性:(1)8位微處理器(CPU);(2)數(shù)據(jù)存儲(chǔ)器(128BRAM);(3)程序存儲(chǔ)器(4KBFlashROM);(4)4個(gè)8位可編程并行I/O口(P0口、P1口、P2口、P3口);(5)1個(gè)全雙工的異步串行口;(6)2個(gè)可編程的16位定時(shí)器/計(jì)數(shù)器;(7)1個(gè)看門狗定時(shí)器;(8)中斷系統(tǒng)具有5個(gè)中斷源、5個(gè)中斷向量;(9)特殊功能寄存器(SFR)26個(gè);(10)低功耗模式有空閑模式和掉電模式,且具有掉電模式下的中斷恢復(fù)模式;(11)3個(gè)程序加密鎖定位。(1)單片機(jī)的內(nèi)部資源①CPUCPU是單片機(jī)的核心部件。它由運(yùn)算器和控制器等部件組成。A運(yùn)算器運(yùn)算器的功能是進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算②時(shí)鐘電路AT89C51片內(nèi)設(shè)有一個(gè)由反向放大器所構(gòu)成的振蕩電路,XTAL1和XTAL2分別為振蕩電路的輸入和輸出端,時(shí)鐘可以由內(nèi)部方式產(chǎn)生或外部方式產(chǎn)生。內(nèi)部方式時(shí)鐘電路如圖1-5所示③存儲(chǔ)器最小系統(tǒng)內(nèi)部存儲(chǔ)資源包括:程序存儲(chǔ)器ROM、數(shù)據(jù)存儲(chǔ)器RAM、特殊功能寄存器。AT89C51單片機(jī)的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器空間是互相獨(dú)立的,物理結(jié)構(gòu)也不同。程序存儲(chǔ)器為只讀存儲(chǔ)器(ROM)。數(shù)據(jù)存儲(chǔ)器為隨機(jī)存取存儲(chǔ)器(RAM)。數(shù)據(jù)存儲(chǔ)器片內(nèi)為128B(52子系列為256B),片外最多可擴(kuò)64KB。片內(nèi)128B的RAM以高速RAM的形式集成,可加快單片機(jī)運(yùn)行的速度和降低功耗;程序存儲(chǔ)器(FlashROM)片內(nèi)集成有4KB的Flash存儲(chǔ)器(AT89S52則為8KB;AT89C55片內(nèi)20KB),如片內(nèi)容量不夠,片外可外擴(kuò)至64KB。A程序存儲(chǔ)器程序存儲(chǔ)器用來存放程序和表格常數(shù)。片內(nèi)集成有4KB的Flash存儲(chǔ)器(AT89S52則為8KB;AT89C55片內(nèi)20KB),如片內(nèi)容量不夠,片外可外擴(kuò)至64KB。圖1-6AT89C51單片機(jī)程序存儲(chǔ)器地址空間B數(shù)據(jù)存儲(chǔ)器1)內(nèi)部數(shù)據(jù)存儲(chǔ)器單片機(jī)的數(shù)據(jù)存儲(chǔ)器無論在物理上或邏輯上都分為兩個(gè)地址空間,一個(gè)為內(nèi)部數(shù)據(jù)存儲(chǔ)器,訪問內(nèi)部數(shù)據(jù)存儲(chǔ)器用MOV指令,另一個(gè)為外部數(shù)據(jù)存儲(chǔ)器,訪問外部數(shù)據(jù)存儲(chǔ)器用MOVX指令。

片內(nèi)為128B(52子系列為256B),片外最多可擴(kuò)64KB。單片機(jī)的片內(nèi)數(shù)據(jù)存儲(chǔ)器共有128個(gè)字節(jié),地址范圍是00H~7FH,分成工作寄存器區(qū)、可位尋址區(qū)、通用RAM區(qū)三部分。

表1-2內(nèi)部RAM存儲(chǔ)器結(jié)構(gòu)地址范圍在00H~1FH的32個(gè)字節(jié),可分成4個(gè)工作寄存器組,每組占8個(gè)字節(jié)。每個(gè)工作寄存器組都有8個(gè)寄存器,它們分別稱為R0、R1、R2、R3、R4、R5、R6、R7。但在程序運(yùn)行時(shí),只允許有一個(gè)工作寄存器組工作,把這組工作寄存器稱為當(dāng)前工作寄存器組,寄存器和RAM地址如表所示。表1-3寄存器和RAM地址對(duì)照表

表1-4工作寄存器區(qū)選擇CPU通過對(duì)PSW中的D4、D3位內(nèi)容的修改,就能任選一個(gè)工作寄存器區(qū)。不設(shè)定為第0區(qū),也叫默認(rèn)值,這個(gè)特點(diǎn)使AT89C51具有快速現(xiàn)場(chǎng)保護(hù)功能。特別注意的是,如果不加設(shè)定,在同一段程序中R0-R7只能用一次,若用兩次程序會(huì)出錯(cuò)。

位尋址區(qū)

片內(nèi)RAM20H~2FH地址范圍共16個(gè)字節(jié)稱位尋址區(qū)。該區(qū)的16個(gè)字節(jié),既可作為一般的RAM使用,進(jìn)行字節(jié)操作,也可以對(duì)單元中的每一位進(jìn)行位操作。16個(gè)字節(jié)共128位,每位有位地址,地址范圍是00H~07H

表1-5位尋址區(qū)的128個(gè)位地址表2)外部數(shù)據(jù)存儲(chǔ)器AT89C51具有擴(kuò)展64K字節(jié)外部數(shù)據(jù)存儲(chǔ)器和I/O口的能力,這對(duì)很多應(yīng)用領(lǐng)域已足夠使用,對(duì)外部數(shù)據(jù)存儲(chǔ)器的訪問采用MOVX指令,用間接尋址方式,R0,R1和DPTR都可作間址寄存器。3)特殊功能寄存器單片機(jī)內(nèi)集成了一些常用的I/O接口電路,如并行I/O端口、串行口、定時(shí)器/計(jì)數(shù)器、中斷控制器等,這些I/O接口單元電路內(nèi)的寄存器也在CPU內(nèi)部,統(tǒng)稱為特殊功能寄存器(SFR)。

21個(gè)特殊功能寄存器,它們不連續(xù)地分布在地址為80H-FFH的128個(gè)字節(jié)的存儲(chǔ)空間中

在這21個(gè)SFR中,16進(jìn)制的地址碼尾數(shù)為0或8的11個(gè)單元均具有位尋址能力,有效的位地址共有82個(gè)。a)累加器A最常用的特殊功能寄存器,大部分單操作數(shù)指令的操作取自累加器,很多雙操作數(shù)指令的一個(gè)操作數(shù)取自累加器。加、減、乘、除算術(shù)運(yùn)算指令的運(yùn)算結(jié)果都存放在累加器A或A、B寄存器對(duì)中

b)B寄存器B寄存器是乘除法指令中常用的寄存器。乘法指令的兩個(gè)操作數(shù)分別取自A和B,其結(jié)果存放在AB寄存器對(duì)中。

c)程序狀態(tài)字PSW程序狀態(tài)字是一個(gè)8位寄存器,它包含了程序狀態(tài)信息。位于片內(nèi)特殊功能寄存器區(qū),字節(jié)地址為D0H。

PSW中各個(gè)位的功能:(1)Cy(PSW.7)進(jìn)位標(biāo)志位可寫為C。在算術(shù)和邏輯運(yùn)算時(shí),若有進(jìn)位/借位,Cy=1;否則,Cy=0。在位處理器中,它是位累加器。(2)Ac(PSW.6)輔助進(jìn)位標(biāo)志位在BCD碼運(yùn)算時(shí),用作十進(jìn)位調(diào)整。即當(dāng)D3位向D4位產(chǎn)生進(jìn)位或借位時(shí),Ac=1;否則,Ac=0。(3)F0(PSW.5)用戶設(shè)定標(biāo)志位由用戶使用的一個(gè)狀態(tài)標(biāo)志位,可用指令來使它置1或清0,控制程序的流向。用戶應(yīng)充分利用。(4)RS1、RS0(PSW.4、PSW.3)4組工作寄存器區(qū)選擇

選擇片內(nèi)RAM區(qū)中的4組工作寄存器區(qū)中的某一組為當(dāng)前工作寄存區(qū)見表1-4。(5)OV(PSW.2)溢出標(biāo)志位

當(dāng)執(zhí)行算術(shù)指令時(shí),用來指示運(yùn)算結(jié)果是否產(chǎn)生溢出。如果結(jié)果產(chǎn)生溢出,OV=1;否則,OV=0。(6)PSW.1位

保留位(7)P(PSW.0)奇偶標(biāo)志位

指令執(zhí)行完,累加器A中“1”的個(gè)數(shù)是奇數(shù)還是偶數(shù)。(2)單片機(jī)外部資源AT89C51與51系列中各種型號(hào)芯片的引腳互相兼容。目前多采用40只引腳雙列直插,如圖1-7所示。引腳按其功能可分為如下3類:(1)電源及時(shí)鐘引腳—VCC、VSS;XTAL1、XTAL2。(2)控制引腳—、ALE/、

/VPP、RST(RESET)(3)I/O口引腳——P0、P1、P2、P3,為4個(gè)8位I/O口A主電源引腳Vss和Vcc(1)VCC(40腳):+5V電源。(2)VSS(20腳):數(shù)字地。58圖1-7

AT89S51雙列直插封裝方式的引腳B時(shí)鐘引腳

(1)XTAL1(19腳):片內(nèi)振蕩器反相放大器和時(shí)鐘發(fā)生器電路輸入端。用片內(nèi)振蕩器時(shí),該腳接外部石英晶體和微調(diào)電容。外接時(shí)鐘源時(shí),該腳接外部時(shí)鐘振蕩器的信號(hào)。(2)XTAL2(18腳):片內(nèi)振蕩器反相放大器的輸出端。當(dāng)使用片內(nèi)振蕩器,該腳連接外部石英晶體和微調(diào)電容。當(dāng)使用外部時(shí)鐘源時(shí),本腳懸空。C控制引腳1)RST(RESET,9腳)復(fù)位信號(hào)輸入,在引腳加上持續(xù)時(shí)間大于2個(gè)機(jī)器周期的高電平,可使單片機(jī)復(fù)位。正常工作,此腳電平應(yīng)≤0.5V。59當(dāng)看門狗定時(shí)器溢出輸出時(shí),該腳將輸出長(zhǎng)達(dá)96個(gè)時(shí)鐘振蕩周期的高電平。2)/VPP(EnableAddress/VoltagePulseofPrograming,31腳)

:引腳第一功能:外部程序存儲(chǔ)器訪問允許控制端。

=1,在PC值不超出0FFFH(即不超出片內(nèi)4KBFlash存儲(chǔ)器的地址范圍)時(shí),單片機(jī)讀片內(nèi)程序存儲(chǔ)器(4KB)中的程序,但PC值超出0FFFH

(即超出片內(nèi)4KBFlash地址范圍)時(shí),將自動(dòng)轉(zhuǎn)向讀取片外60KB(1000H-FFFFH)程序存儲(chǔ)器空間中的程序。(3)輸入/輸出引腳①

P0口

P0口有八條端口線,命名為P0.0~P0.7,其中P0.0為低位,P0.7為高位。每條線的結(jié)構(gòu)組成如圖1-8所示。它由一個(gè)輸出鎖存器,兩個(gè)三態(tài)緩沖器,輸出驅(qū)動(dòng)電路和輸出控制電路組成。P0口是一個(gè)三態(tài)雙向I/O口,它有兩種不同的功能,用于不同的工作環(huán)境。

圖1-8P0口位結(jié)構(gòu)地址/數(shù)據(jù)控制讀鎖存器寫鎖存器DCLQQP0.x鎖存器T0T1MUXP0.x引腳內(nèi)部總線讀引腳P0口位結(jié)構(gòu)Vcc11001“讀”01100P0口作地址/數(shù)據(jù)復(fù)用總線D0~D7A0~A7P0口作地址/數(shù)據(jù)復(fù)用總線從P0口輸出數(shù)據(jù)或地址信息的過程:控制端高電平MUX接反相器輸出端輸出級(jí)T1連接與門開鎖信號(hào)驅(qū)動(dòng)T0驅(qū)動(dòng)電路接通P0口輸出數(shù)據(jù)/地址信息從P0口輸入數(shù)據(jù)信息:引腳信號(hào)從輸入三態(tài)緩沖器進(jìn)入內(nèi)部總線“讀”P0口:作通用I/O口用地址/數(shù)據(jù)控制讀鎖存器寫鎖存器DCLQQP0.x鎖存器T0T1MUXP0.x引腳內(nèi)部總線讀引腳P0口位結(jié)構(gòu)Vcc外接上拉電阻0100讀讀-修改-寫功能1ANLP0,A(P0)^(A)P0“讀”VccP0口作通用I/O口使用輸出時(shí):P0口作通用I/O口使用輸入時(shí):先將鎖存器寫“1”T0、T1截止讀引腳信號(hào)P0~P3口線上的“讀-修改-寫”是通過上面一個(gè)三態(tài)門實(shí)現(xiàn)的。P0的驅(qū)動(dòng)能力:驅(qū)動(dòng)8個(gè)TTL門控制端低電平與門輸出低電平T0截止輸出漏級(jí)開路外接上拉電阻MUX接鎖存器Q端鎖存器Q與T1連接P0口作通用I/O口使用輸入時(shí):先將鎖存器寫“1”T0、T1截止讀引腳信號(hào)地址/數(shù)據(jù)控制讀鎖存器寫鎖存器DCLQQP0.x鎖存器T0T1MUXP0.x引腳內(nèi)部總線讀引腳P0口位結(jié)構(gòu)Vcc0100P1口:準(zhǔn)雙向口讀鎖存器寫鎖存器內(nèi)部總線讀引腳DCLQQP1.x鎖存器TP1.x引腳Vcc內(nèi)部上拉電阻010101輸出輸入“讀引腳”P1口位結(jié)構(gòu)作通用I/O口輸出時(shí):將“1”寫入鎖存器輸出高電平將“0”寫入鎖存器Q=1,T導(dǎo)通輸出低電平作通用I/O口輸入時(shí):口鎖存器必須寫“1”先將“1”寫入鎖存器,使T截止,口線上的數(shù)據(jù)取決于外部輸入Q=0,T截止

P1口的驅(qū)動(dòng)能力:驅(qū)動(dòng)4個(gè)TTL門內(nèi)部總線為引腳為“高電平”“低電平”“1”“0”“讀”準(zhǔn)雙向口P2口:準(zhǔn)雙向口地址控制讀鎖存器寫鎖存器內(nèi)部總線讀引腳DCLQQP2.x鎖存器TP2.x引腳P2口位結(jié)構(gòu)VccMUX上拉電阻P2口作通用I/O口使用時(shí):

準(zhǔn)雙向口。MUX倒向左邊,輸出級(jí)與鎖存器“Q”端接通,P2口I/O操作完全與P1口相同P2口作地址總線高8位使用時(shí):

在CPU的控制下,MUX倒向右邊,接通內(nèi)部地址總線,P2口的口線狀態(tài)取決于片內(nèi)輸出的地址信息

P2口的驅(qū)動(dòng)能力:驅(qū)動(dòng)4個(gè)TTL門第二輸入功能P3口:雙功能口讀鎖存器寫鎖存器內(nèi)部總線讀引腳DCLQQP3.x鎖存器TP3.x引腳Vcc上拉電阻第二輸出功能110P3作第一功能口使用時(shí):

輸出控制線為高電平,與非門的輸出取決于鎖存器“Q”端的狀態(tài),P3口的I/O操作和P1口相同。P3作第二功能口使用時(shí):

相應(yīng)的口線鎖存器必須為“1”,與非門的輸出取決于第二功能輸出線。

P3的驅(qū)動(dòng)能力:驅(qū)動(dòng)4個(gè)TTL門

第二功能輸入時(shí),信號(hào)取自第一個(gè)緩沖器的輸出端;第二個(gè)緩沖器的輸出,仍是第一功能的讀引腳信號(hào)緩沖器。P3口的第二功能狀態(tài)P3.0RXD串入(接收端)P3.1TXD串出(發(fā)送端)P3.6WR外部RAM寫信號(hào)P3.3INT1外部中斷1輸入P3.4T0計(jì)數(shù)器0輸入P3.5T1計(jì)數(shù)器1輸入第二功能作用口線P3.2INT0外部中斷0輸入P3.7RD外部RAM讀信號(hào)ALEP3.1P3.2P3.3P3.4P3.5P3.6P3.7P3.0EAPSENRST803180518751VccVssP1口P2口P0口373GE+5VA0~A7A8~A15D0~D7I/OXTAL1XTAL2RXDTXDINT0INT1T0T1WRRD控制總線CB三總線結(jié)構(gòu)數(shù)據(jù)總線DB地址總線AB利用三條總線,可方便地進(jìn)行系統(tǒng)擴(kuò)展晶振1.2~12MHZ8031地址總線AB(A0~A15)寬16位片外尋址64KBP0.0~P0.7ALE鎖存到鎖存器373A0~A7P2.0~P2.7A8~A15數(shù)據(jù)總線DB(D0~D7)寬8位雙向、三態(tài)P0.0~P0.7D0~D7控制總線CB寬12位P3口的第二功能狀態(tài)加上控制線PSENEAALERESET上頁(yè)下頁(yè)回目錄二極管導(dǎo)通發(fā)光的兩個(gè)條件:兩端有正向壓降(約1.75V);電流達(dá)到額定值(3mA-10mA)。Px.yVCC拉電流驅(qū)動(dòng)Px.yVCCVCC灌電流驅(qū)動(dòng)【任務(wù)實(shí)施】(1)程序分析在AT89C51單片機(jī)的P1.0引腳為高電平時(shí),LED1亮;當(dāng)P1.0引腳為低電平時(shí),LED1不亮。要讓單片機(jī)控制LED燈的亮滅,就需要控制1引腳按要求輸出高電平或低電平。在程序中,“P1^0=1”是讓P1.0引腳為高電平,LED點(diǎn)亮;“P1^0=0”是讓P1.0引腳為低電平,LED熄滅。#include<reg51.h>//引入頭文件sbitLED=P1^0;//P1.0引腳定義為變量LEDmain()//主程序開始{While(1){LED=1;//點(diǎn)亮LED}}【進(jìn)階提高】一、在點(diǎn)亮LED的基礎(chǔ)上,如何實(shí)現(xiàn)LED實(shí)現(xiàn)閃爍?LED閃爍的實(shí)質(zhì)就是實(shí)現(xiàn)一亮一滅,前面實(shí)現(xiàn)了點(diǎn)亮LED,如何實(shí)現(xiàn)熄滅呢?向P1.0送低電平便可以實(shí)現(xiàn)熄滅。代碼該如何寫呢?我們?cè)囍鴮懸幌拢?include<reg51.h>//引入頭文件sbitLED=P1^0;//P1.0引腳定義為L(zhǎng)ED變量voidmydelayms(unsignedintxms){//定義延時(shí)函數(shù);定義形參xmsunsignedinti,j; //定義無符號(hào)整型變量i,jfor(i=0;i<xms;i++)//定義第一重for循壞for(j=0;j<120;j++);//定義第二重for循環(huán)

}voidmain()//主程序開始{while(1){//一直循環(huán)執(zhí)行下面兩條指令LED=1; //點(diǎn)亮LEDmydelayms(5);

LED=0;//熄滅LEDmydelayms(5);}}任務(wù)二左移右移實(shí)現(xiàn)流水燈【引入任務(wù)】

任務(wù)一實(shí)現(xiàn)了單片機(jī)點(diǎn)亮LED,并實(shí)現(xiàn)了閃爍,那么如何實(shí)現(xiàn)單片機(jī)控制8個(gè)LED按順序依次點(diǎn)亮,不斷循環(huán)往復(fù),即實(shí)現(xiàn)“流水燈”的效果呢?【相關(guān)知識(shí)】一、最小系統(tǒng)實(shí)現(xiàn)代碼:#include"reg51.h"#defineuintunsignedint#defineucharunsignedcharvoiddelay(unsignedintxms){uinti,j;for(i=xms;i>0;i--)for(j=120;j>0;j--);

}【進(jìn)階提高】一、移位函數(shù)介紹1._crol_和_cror_函數(shù)單片機(jī)實(shí)現(xiàn)霓虹燈也可以通過KeilC51的移位函數(shù)_crol_和_cror_函數(shù)來完成。_crol_,_cror_:將char型變量循環(huán)向左(右)移動(dòng)指定位數(shù)后返回;_iror_,_irol_:將int型變量循環(huán)向左(右)移動(dòng)指定位數(shù)后返回;_lrol_,_lror_:將long型變量循環(huán)向左(右)移動(dòng)指定位數(shù)后返回。下面舉例說明:a=10001000;

a=_crol_(a,1);//左移一位//程序執(zhí)行后,a=00010001又如a=10001000;a=_crol_(a,2);//左移兩位//程序執(zhí)行后,a=00100010;下面通過一個(gè)舉例來說明_crol_函數(shù)的使用:#include<reg51.h>//引入頭文件#include<intrins.h>//引入左移右移函數(shù)voidmain(){//主程序開始unsignedinttemp=0x01;//定義無符號(hào)整型變量temp,并賦初值為00000001temp=_irol_(temp,1);//將temp循環(huán)左移1位,值變?yōu)?0000010,即為0x02;printf("%d/n",temp);//打印出temp的值}

下面介紹KeilC51中如何打印輸出:程序編好后,需要進(jìn)行編譯。編譯完畢沒有錯(cuò)誤后,進(jìn)入調(diào)試模式,如下圖(2)進(jìn)入調(diào)試模式后,點(diǎn)擊菜單Peripherals→Serial,彈出對(duì)話框如圖,選中TI和RI。(3)查看結(jié)果點(diǎn)擊view→SerialWindows→UART#1,然后點(diǎn)擊全速運(yùn)行(快捷鍵為F5)即可看見運(yùn)行結(jié)果,如圖所示。按下F5后,便可以輸出結(jié)果,如圖用移位函數(shù)實(shí)現(xiàn)流水燈代碼如下:#include<reg51.h>#include<intrins.h>#defineucharunsignedchar//宏定義,定義uint為無符號(hào)整型#defineuintunsignedint//宏定義,定義uint為無符號(hào)整型voiddelayms(ucharxms)//延時(shí)函數(shù){uchari,j;for(i=0;i<xms;i++)for(j=0;j<120;j++);}voidmain(){uinta=0xef;//a=0xef;while(1){P1=a;//P1=0xef;delayms(50);//延時(shí)a=_cror_(a,1);//a循環(huán)右移一位}任務(wù)三

任意花樣霓虹燈【任務(wù)描述】

彩燈控制器有著非常廣泛的運(yùn)用,如:LED彩燈,音樂彩燈控制器,二維彩燈控制器等等。隨著人們生活環(huán)境的不斷改善和美化,在許多場(chǎng)合可以看到彩色霓虹燈。LED彩燈由于其豐富的燈光色彩,低廉的造價(jià)以及控制簡(jiǎn)單等特點(diǎn)而得到了廣泛的應(yīng)用,用

彩燈來裝飾街道和城市建筑物已經(jīng)成為一種時(shí)尚。但目前市場(chǎng)上各式樣的LED彩燈控制器大多數(shù)用全硬件電路實(shí)現(xiàn),電路結(jié)構(gòu)復(fù)雜、功能單一,這樣一旦制作成品只能按照固定的模式閃亮,不能根據(jù)不同場(chǎng)合、不同時(shí)間段的需要來調(diào)節(jié)亮燈時(shí)間、模式、閃爍頻率等動(dòng)態(tài)

參數(shù)?,F(xiàn)在我們?cè)谌蝿?wù)2的基礎(chǔ)上,如何按照任意方式點(diǎn)亮?【任務(wù)分析】前面項(xiàng)目中巧妙運(yùn)用了移位指令,是在有邏輯規(guī)則的前提下的操作。實(shí)際應(yīng)用中許多變化并不存在規(guī)律。且隨著顯示花樣的增多,如果繼續(xù)沿用上述編程方法,當(dāng)用戶需要修改顯示形式時(shí),編程的工作量會(huì)越來越大。引進(jìn)新的處理方法——“數(shù)組”,將顯示花樣做成一個(gè)數(shù)組,用數(shù)組控制顯示的花樣。要想改變顯示的花樣,那么只需修改顯示數(shù)據(jù)區(qū)的數(shù)組元素值就可以了。【相關(guān)知識(shí)】一、單片機(jī)的IO口驅(qū)動(dòng)能力、灌電流、拉電流概述單片機(jī)輸出低電平時(shí),將允許外部器件,向單片機(jī)引腳內(nèi)灌入電流,這個(gè)電流,稱為“灌電流”,就是從負(fù)載流向輸出端口,“灌進(jìn)去”的電流,一般是要吸收負(fù)載的電流,其吸收電流的數(shù)值叫“灌電流”。外部電路稱為“灌電流負(fù)載;單片機(jī)輸出高電平時(shí),則允許外部器件,從單片機(jī)的引腳拉出電流,就是從輸出端口流向負(fù)載,“拉出來”的電流,這個(gè)電流,稱為“拉電流”,外部電路稱為“拉電流負(fù)載”。單片機(jī)輸出低電平的時(shí)候,驅(qū)動(dòng)能力尚可,而輸出高電平的時(shí)候,就沒有輸出電流的能力。設(shè)計(jì)單片機(jī)的負(fù)載電路,應(yīng)該采用“灌電流負(fù)載”的電路形式,以避免無謂的電流消耗。【任務(wù)實(shí)施】#include"reg51.h"#defineuintunsignedint#defineucharunsignedcharvoiddelay(unsignedintxms){uinti,j;for(i=xms;i>0;i--)for(j=120;j>0;j--);

}voidmain(){unsignedchari;unsignedchardisplay[]={0xe7,0xdb,0xbd,0x7e};while(1){for(i=0;i<4;i++){P1=display[i]; //顯示字送P1口delay(400); //延時(shí) }}}

【進(jìn)階提高】單片機(jī)驅(qū)動(dòng)8只數(shù)碼管,顯示一個(gè)心形圖案,該電路如何繪制?程序又該如何編制?首先介紹電路圖繪制:(1)首先先放置好總線,藍(lán)色的,即點(diǎn)擊左側(cè)邊欄的“BusesMode”,變換總線的方向操作:按住Ctrl,如圖所示。畫好后是還沒有建立電路連接關(guān)系的。(2)進(jìn)入“箭頭模式”,把需要放到總線的引腳連接到總線上,到這里依然還是沒有建立電氣連接關(guān)系,如圖所示。(3)接著點(diǎn)擊左邊側(cè)邊欄上面“LBL”,即“WireLableMode”,點(diǎn)擊剛剛建立的WireLable線,綠色的線,彈出的窗口中的String條框中輸入連接網(wǎng)路的名稱,只要兩個(gè)端口的名號(hào)是相同的就表示互相連接,如圖1-73所示。標(biāo)號(hào)是用LBL工具,在總線支線上要連接的兩端支線上標(biāo)上同一標(biāo)號(hào)。如果有連續(xù)標(biāo)注,可以用快捷方法。例如,要在總線2

端支線上標(biāo)注P00~P07,可以這樣:快捷鍵A,跳出一個(gè)Propty

Assignment

Tool對(duì)話框,在string里寫上NET=P0#。然后鼠標(biāo)移到需標(biāo)處,單擊,一個(gè)個(gè)移下去,就要連續(xù)標(biāo)注。#include<reg51.h>//51單片機(jī)頭文件#defineucharunsig

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論