版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
項目一單片機智能霓虹燈設(shè)計
1.掌握單片機的概念、發(fā)展歷程2.單片機的特點及應(yīng)用領(lǐng)域3.熟悉單片機開發(fā)軟件4.熟悉單片機開發(fā)軟件的級聯(lián)使用5.掌握單片機點亮LED基本原理
一、學(xué)習(xí)目標(biāo)1.項目任務(wù)在夜幕降臨,城市中各式各樣的霓虹燈、廣告牌,看起來非常絢麗,為夜幕中的城市增添了不少亮麗色彩。其實這些閃爍的霓虹燈,其工作原理和單片機控制流水燈是一樣的。本項目的任務(wù)是實現(xiàn)流水燈閃爍。程序中只需更改流水花樣數(shù)據(jù)表的流水?dāng)?shù)據(jù)就可以隨意添加或改變流水花樣,實現(xiàn)任意方式流水。二、學(xué)習(xí)任務(wù)
圖1-1最小系統(tǒng)實現(xiàn)流水燈閃爍
單片機最小系統(tǒng)構(gòu)成的流水燈控制器如圖1-1所示:它主要由單片機、晶振和復(fù)位電路、開關(guān)輸入電路及輸出顯示電路四部分構(gòu)成,缺一不可。流水燈原理:根據(jù)硬件電路連接方式,當(dāng)P1.0口的電平變?yōu)榈碗娖綍r,P1.0口的LED1亮起來;相反,如果要使P1.0口的LED1熄滅,需把P1.0口的電平變?yōu)楦唠娖?。同理,接在P1.1~P1.7口的其他7個LED的點亮和熄滅方法方法同LED1。因此,要實現(xiàn)流水燈功能,我們只要將LED2~LED8依次點亮、熄滅,8只LED變會一亮一暗的做流水操作了。任務(wù)1單片機點亮LED任務(wù)2左移右移實現(xiàn)流水燈任務(wù)3任意花樣廣告流水燈【任務(wù)描述】使用AT89C51單片機P1.0點亮一個LED?!鞠嚓P(guān)知識】1.單片機的概念1946年,第一臺電子數(shù)字計算機(ENIAC)問世,標(biāo)志著計算機時代的到來。匈牙利籍?dāng)?shù)學(xué)家馮·諾依曼提出的“程序存儲”和“二進(jìn)制運算”思想,構(gòu)建了計算機的組成結(jié)構(gòu)。其組成包括:運算器、控制器、存儲器、輸入設(shè)備、輸出設(shè)備,如圖1-2。
圖1-2計算機的基本結(jié)構(gòu)單片機是單片微型計算機的簡稱,它是在一塊半導(dǎo)體芯片上,集成了CPU、半導(dǎo)體存儲器、I/O(Input/Output)接口、中斷系統(tǒng)和定時器等計算機必備部件,所構(gòu)成的一個完整的數(shù)字電子計算機。單片機是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的計算機系統(tǒng)。此芯片為單片微型計算機(SingleChipMicrocomputer),簡稱單片機。片機也被稱為微控制器(Microcontroller),是因為它最早被用在工業(yè)控制領(lǐng)域。本系統(tǒng)中,核心控制器件是單片機。(1)發(fā)展歷程SCM即單片微型計算機(SingleChipMicrocomputer)階段,主要是尋求最佳的單片形態(tài)嵌入式系統(tǒng)的最佳體系結(jié)構(gòu)。MCU即微控制器(MicroControllerUnit)階段,主要的技術(shù)發(fā)展方向是:不斷擴展?jié)M足嵌入式應(yīng)用時,對象系統(tǒng)要求的各種外圍電路與接口電路,突顯其對象的智能化控制能力,它所涉及的領(lǐng)域都與對象系統(tǒng)相關(guān)。專用單片機的發(fā)展自然形成了SoC化趨勢(2)單片機的特點功能強、體積小面向控制價格低廉低電壓、低功耗(3)應(yīng)用領(lǐng)域1在智能儀器儀表上的應(yīng)用2在工業(yè)控制中的應(yīng)用3在消費電子中的應(yīng)用4在計算機網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用5單片機在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用6在各種大型電器中的模塊化應(yīng)用7單片機在汽車設(shè)備領(lǐng)域中的應(yīng)用
由于單片機具有超微型化的特點,并且有無可比擬的高性能價格比,從而為儀器儀表的智能化提供了可能。1)在智能儀器儀表上的應(yīng)用三代儀器儀表:●第一代為指針式(或模擬式)儀器儀表●第二代為數(shù)字式儀器儀表●第三代就是智能式儀器儀表(視頻)2)在工業(yè)控制中的應(yīng)用3)單片機應(yīng)用之消費電子產(chǎn)品4)在計算機網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用在調(diào)制解調(diào)器、各類手機、傳真機、程控電話交換機、信息網(wǎng)絡(luò)及各種通訊設(shè)備中,單片機也已經(jīng)得到廣泛應(yīng)用。5)單片機在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用6)在各種大型電器中的模塊化應(yīng)用工業(yè)控制7)單片機在汽車設(shè)備領(lǐng)域中的應(yīng)用8)單片機應(yīng)用之軍事技術(shù)2.單片機硬件結(jié)構(gòu)(1)單片機的內(nèi)部資源振蕩器及定時電路89C51CPU4K字節(jié)ROM128字節(jié)RAM2個16位定時器/計數(shù)器64K總線擴展控制可編程I/O可編程串行口
圖1-4AT89C51片內(nèi)結(jié)構(gòu)片內(nèi)硬件組成結(jié)構(gòu)如圖1-4所示。把作為控制應(yīng)用所必需的基本功能部件都集成在一個尺寸有限的集成電路芯片上。有如下功能部件和特性:(1)8位微處理器(CPU);(2)數(shù)據(jù)存儲器(128BRAM);(3)程序存儲器(4KBFlashROM);(4)4個8位可編程并行I/O口(P0口、P1口、P2口、P3口);(5)1個全雙工的異步串行口;(6)2個可編程的16位定時器/計數(shù)器;(7)1個看門狗定時器;(8)中斷系統(tǒng)具有5個中斷源、5個中斷向量;(9)特殊功能寄存器(SFR)26個;(10)低功耗模式有空閑模式和掉電模式,且具有掉電模式下的中斷恢復(fù)模式;(11)3個程序加密鎖定位。(1)單片機的內(nèi)部資源①CPUCPU是單片機的核心部件。它由運算器和控制器等部件組成。A運算器運算器的功能是進(jìn)行算術(shù)運算和邏輯運算②時鐘電路AT89C51片內(nèi)設(shè)有一個由反向放大器所構(gòu)成的振蕩電路,XTAL1和XTAL2分別為振蕩電路的輸入和輸出端,時鐘可以由內(nèi)部方式產(chǎn)生或外部方式產(chǎn)生。內(nèi)部方式時鐘電路如圖1-5所示③存儲器最小系統(tǒng)內(nèi)部存儲資源包括:程序存儲器ROM、數(shù)據(jù)存儲器RAM、特殊功能寄存器。AT89C51單片機的程序存儲器和數(shù)據(jù)存儲器空間是互相獨立的,物理結(jié)構(gòu)也不同。程序存儲器為只讀存儲器(ROM)。數(shù)據(jù)存儲器為隨機存取存儲器(RAM)。數(shù)據(jù)存儲器片內(nèi)為128B(52子系列為256B),片外最多可擴64KB。片內(nèi)128B的RAM以高速RAM的形式集成,可加快單片機運行的速度和降低功耗;程序存儲器(FlashROM)片內(nèi)集成有4KB的Flash存儲器(AT89S52則為8KB;AT89C55片內(nèi)20KB),如片內(nèi)容量不夠,片外可外擴至64KB。A程序存儲器程序存儲器用來存放程序和表格常數(shù)。片內(nèi)集成有4KB的Flash存儲器(AT89S52則為8KB;AT89C55片內(nèi)20KB),如片內(nèi)容量不夠,片外可外擴至64KB。圖1-6AT89C51單片機程序存儲器地址空間B數(shù)據(jù)存儲器1)內(nèi)部數(shù)據(jù)存儲器單片機的數(shù)據(jù)存儲器無論在物理上或邏輯上都分為兩個地址空間,一個為內(nèi)部數(shù)據(jù)存儲器,訪問內(nèi)部數(shù)據(jù)存儲器用MOV指令,另一個為外部數(shù)據(jù)存儲器,訪問外部數(shù)據(jù)存儲器用MOVX指令。
片內(nèi)為128B(52子系列為256B),片外最多可擴64KB。單片機的片內(nèi)數(shù)據(jù)存儲器共有128個字節(jié),地址范圍是00H~7FH,分成工作寄存器區(qū)、可位尋址區(qū)、通用RAM區(qū)三部分。
表1-2內(nèi)部RAM存儲器結(jié)構(gòu)地址范圍在00H~1FH的32個字節(jié),可分成4個工作寄存器組,每組占8個字節(jié)。每個工作寄存器組都有8個寄存器,它們分別稱為R0、R1、R2、R3、R4、R5、R6、R7。但在程序運行時,只允許有一個工作寄存器組工作,把這組工作寄存器稱為當(dāng)前工作寄存器組,寄存器和RAM地址如表所示。表1-3寄存器和RAM地址對照表
表1-4工作寄存器區(qū)選擇CPU通過對PSW中的D4、D3位內(nèi)容的修改,就能任選一個工作寄存器區(qū)。不設(shè)定為第0區(qū),也叫默認(rèn)值,這個特點使AT89C51具有快速現(xiàn)場保護(hù)功能。特別注意的是,如果不加設(shè)定,在同一段程序中R0-R7只能用一次,若用兩次程序會出錯。
位尋址區(qū)
片內(nèi)RAM20H~2FH地址范圍共16個字節(jié)稱位尋址區(qū)。該區(qū)的16個字節(jié),既可作為一般的RAM使用,進(jìn)行字節(jié)操作,也可以對單元中的每一位進(jìn)行位操作。16個字節(jié)共128位,每位有位地址,地址范圍是00H~07H
表1-5位尋址區(qū)的128個位地址表2)外部數(shù)據(jù)存儲器AT89C51具有擴展64K字節(jié)外部數(shù)據(jù)存儲器和I/O口的能力,這對很多應(yīng)用領(lǐng)域已足夠使用,對外部數(shù)據(jù)存儲器的訪問采用MOVX指令,用間接尋址方式,R0,R1和DPTR都可作間址寄存器。3)特殊功能寄存器單片機內(nèi)集成了一些常用的I/O接口電路,如并行I/O端口、串行口、定時器/計數(shù)器、中斷控制器等,這些I/O接口單元電路內(nèi)的寄存器也在CPU內(nèi)部,統(tǒng)稱為特殊功能寄存器(SFR)。
21個特殊功能寄存器,它們不連續(xù)地分布在地址為80H-FFH的128個字節(jié)的存儲空間中
在這21個SFR中,16進(jìn)制的地址碼尾數(shù)為0或8的11個單元均具有位尋址能力,有效的位地址共有82個。a)累加器A最常用的特殊功能寄存器,大部分單操作數(shù)指令的操作取自累加器,很多雙操作數(shù)指令的一個操作數(shù)取自累加器。加、減、乘、除算術(shù)運算指令的運算結(jié)果都存放在累加器A或A、B寄存器對中
b)B寄存器B寄存器是乘除法指令中常用的寄存器。乘法指令的兩個操作數(shù)分別取自A和B,其結(jié)果存放在AB寄存器對中。
c)程序狀態(tài)字PSW程序狀態(tài)字是一個8位寄存器,它包含了程序狀態(tài)信息。位于片內(nèi)特殊功能寄存器區(qū),字節(jié)地址為D0H。
PSW中各個位的功能:(1)Cy(PSW.7)進(jìn)位標(biāo)志位可寫為C。在算術(shù)和邏輯運算時,若有進(jìn)位/借位,Cy=1;否則,Cy=0。在位處理器中,它是位累加器。(2)Ac(PSW.6)輔助進(jìn)位標(biāo)志位在BCD碼運算時,用作十進(jìn)位調(diào)整。即當(dāng)D3位向D4位產(chǎn)生進(jìn)位或借位時,Ac=1;否則,Ac=0。(3)F0(PSW.5)用戶設(shè)定標(biāo)志位由用戶使用的一個狀態(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ù)指令時,用來指示運算結(jié)果是否產(chǎn)生溢出。如果結(jié)果產(chǎn)生溢出,OV=1;否則,OV=0。(6)PSW.1位
保留位(7)P(PSW.0)奇偶標(biāo)志位
指令執(zhí)行完,累加器A中“1”的個數(shù)是奇數(shù)還是偶數(shù)。(2)單片機外部資源AT89C51與51系列中各種型號芯片的引腳互相兼容。目前多采用40只引腳雙列直插,如圖1-7所示。引腳按其功能可分為如下3類:(1)電源及時鐘引腳—VCC、VSS;XTAL1、XTAL2。(2)控制引腳—、ALE/、
/VPP、RST(RESET)(3)I/O口引腳——P0、P1、P2、P3,為4個8位I/O口A主電源引腳Vss和Vcc(1)VCC(40腳):+5V電源。(2)VSS(20腳):數(shù)字地。58圖1-7
AT89S51雙列直插封裝方式的引腳B時鐘引腳
(1)XTAL1(19腳):片內(nèi)振蕩器反相放大器和時鐘發(fā)生器電路輸入端。用片內(nèi)振蕩器時,該腳接外部石英晶體和微調(diào)電容。外接時鐘源時,該腳接外部時鐘振蕩器的信號。(2)XTAL2(18腳):片內(nèi)振蕩器反相放大器的輸出端。當(dāng)使用片內(nèi)振蕩器,該腳連接外部石英晶體和微調(diào)電容。當(dāng)使用外部時鐘源時,本腳懸空。C控制引腳1)RST(RESET,9腳)復(fù)位信號輸入,在引腳加上持續(xù)時間大于2個機器周期的高電平,可使單片機復(fù)位。正常工作,此腳電平應(yīng)≤0.5V。59當(dāng)看門狗定時器溢出輸出時,該腳將輸出長達(dá)96個時鐘振蕩周期的高電平。2)/VPP(EnableAddress/VoltagePulseofPrograming,31腳)
:引腳第一功能:外部程序存儲器訪問允許控制端。
=1,在PC值不超出0FFFH(即不超出片內(nèi)4KBFlash存儲器的地址范圍)時,單片機讀片內(nèi)程序存儲器(4KB)中的程序,但PC值超出0FFFH
(即超出片內(nèi)4KBFlash地址范圍)時,將自動轉(zhuǎn)向讀取片外60KB(1000H-FFFFH)程序存儲器空間中的程序。(3)輸入/輸出引腳①
P0口
P0口有八條端口線,命名為P0.0~P0.7,其中P0.0為低位,P0.7為高位。每條線的結(jié)構(gòu)組成如圖1-8所示。它由一個輸出鎖存器,兩個三態(tài)緩沖器,輸出驅(qū)動電路和輸出控制電路組成。P0口是一個三態(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接反相器輸出端輸出級T1連接與門開鎖信號驅(qū)動T0驅(qū)動電路接通P0口輸出數(shù)據(jù)/地址信息從P0口輸入數(shù)據(jù)信息:引腳信號從輸入三態(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口使用輸出時:P0口作通用I/O口使用輸入時:先將鎖存器寫“1”T0、T1截止讀引腳信號P0~P3口線上的“讀-修改-寫”是通過上面一個三態(tài)門實現(xiàn)的。P0的驅(qū)動能力:驅(qū)動8個TTL門控制端低電平與門輸出低電平T0截止輸出漏級開路外接上拉電阻MUX接鎖存器Q端鎖存器Q與T1連接P0口作通用I/O口使用輸入時:先將鎖存器寫“1”T0、T1截止讀引腳信號地址/數(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口輸出時:將“1”寫入鎖存器輸出高電平將“0”寫入鎖存器Q=1,T導(dǎo)通輸出低電平作通用I/O口輸入時:口鎖存器必須寫“1”先將“1”寫入鎖存器,使T截止,口線上的數(shù)據(jù)取決于外部輸入Q=0,T截止
P1口的驅(qū)動能力:驅(qū)動4個TTL門內(nèi)部總線為引腳為“高電平”“低電平”“1”“0”“讀”準(zhǔn)雙向口P2口:準(zhǔn)雙向口地址控制讀鎖存器寫鎖存器內(nèi)部總線讀引腳DCLQQP2.x鎖存器TP2.x引腳P2口位結(jié)構(gòu)VccMUX上拉電阻P2口作通用I/O口使用時:
準(zhǔn)雙向口。MUX倒向左邊,輸出級與鎖存器“Q”端接通,P2口I/O操作完全與P1口相同P2口作地址總線高8位使用時:
在CPU的控制下,MUX倒向右邊,接通內(nèi)部地址總線,P2口的口線狀態(tài)取決于片內(nèi)輸出的地址信息
P2口的驅(qū)動能力:驅(qū)動4個TTL門第二輸入功能P3口:雙功能口讀鎖存器寫鎖存器內(nèi)部總線讀引腳DCLQQP3.x鎖存器TP3.x引腳Vcc上拉電阻第二輸出功能110P3作第一功能口使用時:
輸出控制線為高電平,與非門的輸出取決于鎖存器“Q”端的狀態(tài),P3口的I/O操作和P1口相同。P3作第二功能口使用時:
相應(yīng)的口線鎖存器必須為“1”,與非門的輸出取決于第二功能輸出線。
P3的驅(qū)動能力:驅(qū)動4個TTL門
第二功能輸入時,信號取自第一個緩沖器的輸出端;第二個緩沖器的輸出,仍是第一功能的讀引腳信號緩沖器。P3口的第二功能狀態(tài)P3.0RXD串入(接收端)P3.1TXD串出(發(fā)送端)P3.6WR外部RAM寫信號P3.3INT1外部中斷1輸入P3.4T0計數(shù)器0輸入P3.5T1計數(shù)器1輸入第二功能作用口線P3.2INT0外部中斷0輸入P3.7RD外部RAM讀信號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)擴展晶振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上頁下頁回目錄二極管導(dǎo)通發(fā)光的兩個條件:兩端有正向壓降(約1.75V);電流達(dá)到額定值(3mA-10mA)。Px.yVCC拉電流驅(qū)動Px.yVCCVCC灌電流驅(qū)動【任務(wù)實施】(1)程序分析在AT89C51單片機的P1.0引腳為高電平時,LED1亮;當(dāng)P1.0引腳為低電平時,LED1不亮。要讓單片機控制LED燈的亮滅,就需要控制1引腳按要求輸出高電平或低電平。在程序中,“P1^0=1”是讓P1.0引腳為高電平,LED點亮;“P1^0=0”是讓P1.0引腳為低電平,LED熄滅。#include<reg51.h>//引入頭文件sbitLED=P1^0;//P1.0引腳定義為變量LEDmain()//主程序開始{While(1){LED=1;//點亮LED}}【進(jìn)階提高】一、在點亮LED的基礎(chǔ)上,如何實現(xiàn)LED實現(xiàn)閃爍?LED閃爍的實質(zhì)就是實現(xiàn)一亮一滅,前面實現(xiàn)了點亮LED,如何實現(xiàn)熄滅呢?向P1.0送低電平便可以實現(xiàn)熄滅。代碼該如何寫呢?我們試著寫一下:#include<reg51.h>//引入頭文件sbitLED=P1^0;//P1.0引腳定義為LED變量voidmydelayms(unsignedintxms){//定義延時函數(shù);定義形參xmsunsignedinti,j; //定義無符號整型變量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; //點亮LEDmydelayms(5);
LED=0;//熄滅LEDmydelayms(5);}}任務(wù)二左移右移實現(xiàn)流水燈【引入任務(wù)】
任務(wù)一實現(xiàn)了單片機點亮LED,并實現(xiàn)了閃爍,那么如何實現(xiàn)單片機控制8個LED按順序依次點亮,不斷循環(huán)往復(fù),即實現(xiàn)“流水燈”的效果呢?【相關(guān)知識】一、最小系統(tǒng)實現(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ù)單片機實現(xiàn)霓虹燈也可以通過KeilC51的移位函數(shù)_crol_和_cror_函數(shù)來完成。_crol_,_cror_:將char型變量循環(huán)向左(右)移動指定位數(shù)后返回;_iror_,_irol_:將int型變量循環(huán)向左(右)移動指定位數(shù)后返回;_lrol_,_lror_:將long型變量循環(huán)向左(右)移動指定位數(shù)后返回。下面舉例說明:a=10001000;
a=_crol_(a,1);//左移一位//程序執(zhí)行后,a=00010001又如a=10001000;a=_crol_(a,2);//左移兩位//程序執(zhí)行后,a=00100010;下面通過一個舉例來說明_crol_函數(shù)的使用:#include<reg51.h>//引入頭文件#include<intrins.h>//引入左移右移函數(shù)voidmain(){//主程序開始unsignedinttemp=0x01;//定義無符號整型變量temp,并賦初值為00000001temp=_irol_(temp,1);//將temp循環(huán)左移1位,值變?yōu)?0000010,即為0x02;printf("%d/n",temp);//打印出temp的值}
下面介紹KeilC51中如何打印輸出:程序編好后,需要進(jìn)行編譯。編譯完畢沒有錯誤后,進(jìn)入調(diào)試模式,如下圖(2)進(jìn)入調(diào)試模式后,點擊菜單Peripherals→Serial,彈出對話框如圖,選中TI和RI。(3)查看結(jié)果點擊view→SerialWindows→UART#1,然后點擊全速運行(快捷鍵為F5)即可看見運行結(jié)果,如圖所示。按下F5后,便可以輸出結(jié)果,如圖用移位函數(shù)實現(xiàn)流水燈代碼如下:#include<reg51.h>#include<intrins.h>#defineucharunsignedchar//宏定義,定義uint為無符號整型#defineuintunsignedint//宏定義,定義uint為無符號整型voiddelayms(ucharxms)//延時函數(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);//延時a=_cror_(a,1);//a循環(huán)右移一位}任務(wù)三
任意花樣霓虹燈【任務(wù)描述】
彩燈控制器有著非常廣泛的運用,如:LED彩燈,音樂彩燈控制器,二維彩燈控制器等等。隨著人們生活環(huán)境的不斷改善和美化,在許多場合可以看到彩色霓虹燈。LED彩燈由于其豐富的燈光色彩,低廉的造價以及控制簡單等特點而得到了廣泛的應(yīng)用,用
彩燈來裝飾街道和城市建筑物已經(jīng)成為一種時尚。但目前市場上各式樣的LED彩燈控制器大多數(shù)用全硬件電路實現(xiàn),電路結(jié)構(gòu)復(fù)雜、功能單一,這樣一旦制作成品只能按照固定的模式閃亮,不能根據(jù)不同場合、不同時間段的需要來調(diào)節(jié)亮燈時間、模式、閃爍頻率等動態(tài)
參數(shù)。現(xiàn)在我們在任務(wù)2的基礎(chǔ)上,如何按照任意方式點亮?【任務(wù)分析】前面項目中巧妙運用了移位指令,是在有邏輯規(guī)則的前提下的操作。實際應(yīng)用中許多變化并不存在規(guī)律。且隨著顯示花樣的增多,如果繼續(xù)沿用上述編程方法,當(dāng)用戶需要修改顯示形式時,編程的工作量會越來越大。引進(jìn)新的處理方法——“數(shù)組”,將顯示花樣做成一個數(shù)組,用數(shù)組控制顯示的花樣。要想改變顯示的花樣,那么只需修改顯示數(shù)據(jù)區(qū)的數(shù)組元素值就可以了?!鞠嚓P(guān)知識】一、單片機的IO口驅(qū)動能力、灌電流、拉電流概述單片機輸出低電平時,將允許外部器件,向單片機引腳內(nèi)灌入電流,這個電流,稱為“灌電流”,就是從負(fù)載流向輸出端口,“灌進(jìn)去”的電流,一般是要吸收負(fù)載的電流,其吸收電流的數(shù)值叫“灌電流”。外部電路稱為“灌電流負(fù)載;單片機輸出高電平時,則允許外部器件,從單片機的引腳拉出電流,就是從輸出端口流向負(fù)載,“拉出來”的電流,這個電流,稱為“拉電流”,外部電路稱為“拉電流負(fù)載”。單片機輸出低電平的時候,驅(qū)動能力尚可,而輸出高電平的時候,就沒有輸出電流的能力。設(shè)計單片機的負(fù)載電路,應(yīng)該采用“灌電流負(fù)載”的電路形式,以避免無謂的電流消耗?!救蝿?wù)實施】#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); //延時 }}}
【進(jìn)階提高】單片機驅(qū)動8只數(shù)碼管,顯示一個心形圖案,該電路如何繪制?程序又該如何編制?首先介紹電路圖繪制:(1)首先先放置好總線,藍(lán)色的,即點擊左側(cè)邊欄的“BusesMode”,變換總線的方向操作:按住Ctrl,如圖所示。畫好后是還沒有建立電路連接關(guān)系的。(2)進(jìn)入“箭頭模式”,把需要放到總線的引腳連接到總線上,到這里依然還是沒有建立電氣連接關(guān)系,如圖所示。(3)接著點擊左邊側(cè)邊欄上面“LBL”,即“WireLableMode”,點擊剛剛建立的WireLable線,綠色的線,彈出的窗口中的String條框中輸入連接網(wǎng)路的名稱,只要兩個端口的名號是相同的就表示互相連接,如圖1-73所示。標(biāo)號是用LBL工具,在總線支線上要連接的兩端支線上標(biāo)上同一標(biāo)號。如果有連續(xù)標(biāo)注,可以用快捷方法。例如,要在總線2
端支線上標(biāo)注P00~P07,可以這樣:快捷鍵A,跳出一個Propty
Assignment
Tool對話框,在string里寫上NET=P0#。然后鼠標(biāo)移到需標(biāo)處,單擊,一個個移下去,就要連續(xù)標(biāo)注。#include<reg51.h>//51單片機頭文件#defineucharunsig
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 測繪管理與法律法規(guī)-注冊測繪師《測繪管理與法律法規(guī)》名師預(yù)測卷1
- 課題申報參考:跨學(xué)科主題教學(xué)的價值、困境及出路研究
- 科技產(chǎn)品創(chuàng)新與安全生產(chǎn)的平衡
- 讀書助力職業(yè)發(fā)展-職場類書籍閱讀推廣方案
- 二零二四年幼兒早教中心品牌經(jīng)營許可及資產(chǎn)轉(zhuǎn)讓合同3篇
- 2025年貨運飛機保險合同
- 救生員勞務(wù)合同
- 2025年人教版(2024)九年級歷史上冊月考試卷含答案
- 2025年湘教版高三歷史下冊階段測試試卷含答案
- 2025年湘教版選修3歷史上冊階段測試試卷含答案
- 中央2025年國務(wù)院發(fā)展研究中心有關(guān)直屬事業(yè)單位招聘19人筆試歷年參考題庫附帶答案詳解
- 2024年09月北京中信銀行北京分行社會招考(917)筆試歷年參考題庫附帶答案詳解
- 外呼合作協(xié)議
- 小學(xué)二年級100以內(nèi)進(jìn)退位加減法800道題
- 保險公司2025年工作總結(jié)與2025年工作計劃
- 2024年公司領(lǐng)導(dǎo)在新年動員會上的講話樣本(3篇)
- 眼科護(hù)理進(jìn)修專題匯報
- 介入手術(shù)室感染控制管理
- 2024北京初三(上)期末英語匯編:材料作文
- 2024年大型風(fēng)力發(fā)電項目EPC總承包合同
- GB/T 33629-2024風(fēng)能發(fā)電系統(tǒng)雷電防護(hù)
評論
0/150
提交評論