




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)應(yīng)用技術(shù)課程概述課程性質(zhì):專(zhuān)業(yè)基礎(chǔ)課
學(xué)分:5課時(shí):80內(nèi)容:使用C51語(yǔ)言進(jìn)行單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)課程考核態(tài)度性評(píng)價(jià)知識(shí)性評(píng)價(jià)技能性評(píng)價(jià)網(wǎng)絡(luò)平臺(tái)作業(yè)隨堂測(cè)試階段測(cè)試項(xiàng)目評(píng)價(jià)1項(xiàng)目評(píng)價(jià)2項(xiàng)目評(píng)價(jià)3項(xiàng)目評(píng)價(jià)420%10%10%20%10%10%10%10%課程內(nèi)容1點(diǎn)亮一個(gè)LED燈2開(kāi)關(guān)控制多燈閃爍的實(shí)現(xiàn)3搶答器的實(shí)現(xiàn)4電子鐘的實(shí)現(xiàn)5密碼鍵盤(pán)的實(shí)現(xiàn)系統(tǒng)方案設(shè)計(jì)硬件電路設(shè)計(jì)軟件程序設(shè)計(jì)硬件軟件聯(lián)調(diào)C51如何學(xué)習(xí)單片機(jī)?任務(wù)1.1初識(shí)單片機(jī)什么是單片機(jī)?
單片機(jī)的全稱(chēng)是單片微型計(jì)算機(jī),它是微型計(jì)算機(jī)發(fā)展歷程中的一個(gè)重要分支,是集成在一塊芯片上,專(zhuān)門(mén)用于檢測(cè)控制的微型計(jì)算機(jī)。什么是單片機(jī)?微型計(jì)算機(jī)常用于桌面輔助辦公和設(shè)計(jì),所以體積較大,運(yùn)算能力較強(qiáng)。運(yùn)算器、控制器輸入設(shè)備輸出設(shè)備存儲(chǔ)器什么是單片機(jī)?輸入接口設(shè)備輸出接口設(shè)備運(yùn)算器控制器存儲(chǔ)器輸入設(shè)備輸出設(shè)備單片機(jī)內(nèi)部同樣有中央處理器單元(CPU),并行I/O口和串行I/O口負(fù)責(zé)信息的輸入和輸出,數(shù)據(jù)存儲(chǔ)器RAM和程序存儲(chǔ)器ROM,還有定時(shí)器/計(jì)數(shù)器和中斷系統(tǒng)。單片機(jī)主要嵌入到電子產(chǎn)品中起核心控制作用,又稱(chēng)為微控制器(Micro-ControllerUnit,簡(jiǎn)稱(chēng)MCU)。單片機(jī)的特點(diǎn)100%單片機(jī)的特點(diǎn)體積小、重量輕、價(jià)格低、功能強(qiáng)。電源單一、功耗低、可靠性高、抗干擾能力強(qiáng),能夠滿(mǎn)足工業(yè)控制的需求。品種齊全、形式多樣,能夠提供豐富的功能和性?xún)r(jià)比的選擇。結(jié)構(gòu)簡(jiǎn)單、技術(shù)成熟、容易掌握、開(kāi)發(fā)周期短。單片機(jī)的應(yīng)用應(yīng)用領(lǐng)域智能家電網(wǎng)絡(luò)與通信工業(yè)控制導(dǎo)航與控制智能儀器儀表汽車(chē)電子智能家電智能冰箱、智能洗衣機(jī)、智能風(fēng)扇、智能控制燈單片機(jī)的應(yīng)用智能儀器儀表稱(chēng)重儀、溫控器、計(jì)數(shù)器、智能醫(yī)療儀器單片機(jī)的應(yīng)用汽車(chē)電子交互式汽車(chē)顯示系統(tǒng)、輪胎壓力檢測(cè)系統(tǒng)、汽車(chē)防盜系統(tǒng)、汽車(chē)雨刷、燈光智能控制系統(tǒng)、汽車(chē)電子油門(mén)控制器單片機(jī)的應(yīng)用網(wǎng)絡(luò)與
通信無(wú)線遙控系統(tǒng)、無(wú)線通信系統(tǒng)、串行自動(dòng)呼叫應(yīng)答系統(tǒng)單片機(jī)的應(yīng)用工業(yè)控制工業(yè)機(jī)器人控制、生產(chǎn)過(guò)程自動(dòng)控制單片機(jī)的應(yīng)用導(dǎo)航與
控制導(dǎo)彈控制,智能武器裝置單片機(jī)的應(yīng)用
單片機(jī)按照可以處理的二進(jìn)制位數(shù)分,主要分為4位、8位、16位、32位單片機(jī)。盡管單片機(jī)種類(lèi)很多,目前在我國(guó)使用最廣泛的還是8位的51單片機(jī)。單片機(jī)的分類(lèi)按照可以處理的二進(jìn)制位數(shù)
各大公司MC51單片機(jī)簡(jiǎn)介
8051是美國(guó)INTEL公司生產(chǎn)的一系列單片機(jī)中最典型的產(chǎn)品,通常將以8051為基核的單片機(jī)統(tǒng)稱(chēng)為MCS51單片機(jī),也就是51單片機(jī)。INTEL核心技術(shù)授權(quán)AtmelPhilipsWinbondLGSST宏晶......AT89C51/52/53......P80C51/52/54......W78E51/52......GMS90/97......SST89C54/58......STC15............
采用8051的核心技術(shù)開(kāi)發(fā)的單片機(jī),它們的內(nèi)部資源分布、功能定義、指令代碼編寫(xiě)基本上一樣,本課程中的程序?qū)λ鼈兌际峭ㄓ玫模恍枳鋈魏涡薷模簿褪菍W(xué)會(huì)其中一種51單片機(jī)的操作,其他型號(hào)單片機(jī)也都會(huì)操作了。芯片選擇INTEL核心技術(shù)授權(quán)宏晶STC15W4K32S4
大容量片內(nèi)RAM存儲(chǔ)器;6通道15位專(zhuān)門(mén)的高精度PWM通道;高速增強(qiáng)型8051內(nèi)核,速度比傳統(tǒng)8051快7-12倍;超強(qiáng)抗干擾;大幅度降低EMI;超低功耗;什么是單片機(jī)應(yīng)用系統(tǒng)?CPU輸入設(shè)備輸出設(shè)備軟件系統(tǒng)+單片機(jī)應(yīng)用系統(tǒng)硬件系統(tǒng)輸入接口設(shè)備輸出接口設(shè)備運(yùn)算器控制器存儲(chǔ)器硬件是應(yīng)用系統(tǒng)的基礎(chǔ)軟件是在硬件的基礎(chǔ)上對(duì)其資源進(jìn)行合理調(diào)配和使用,從而完成應(yīng)用系統(tǒng)所要求的任務(wù),二者相互依賴(lài),缺一不可單片機(jī)的應(yīng)用系統(tǒng)及其開(kāi)發(fā)流程明確任務(wù)系統(tǒng)方案設(shè)計(jì)硬件電路設(shè)計(jì)軟件程序設(shè)計(jì)需求分析,明確功能性需求和非功能性需求,確定產(chǎn)品技術(shù)指標(biāo)包括設(shè)計(jì)硬件電路和制作電路板。包含系統(tǒng)的構(gòu)成模塊,單片機(jī)芯片的選型、外部元器件配置、軟硬件劃分等。可以以系統(tǒng)框圖形式體現(xiàn)。根據(jù)設(shè)計(jì)要求,編寫(xiě)控制程序,一般用C51語(yǔ)言,KeiluVision開(kāi)發(fā)環(huán)境軟硬件聯(lián)調(diào)排除硬件電路問(wèn)題和程序中的問(wèn)題,可以使用學(xué)習(xí)板或者Proteus仿真軟件。單片機(jī)應(yīng)用系統(tǒng)的調(diào)試方式ISP下載方式的實(shí)驗(yàn)板軟件仿真調(diào)試KeilC51軟件
可以提供基于單片機(jī)芯片資源的軟件仿真;2.Proteus軟件
軟件提供原理圖布圖、代碼調(diào)試和單片機(jī)與外圍電路協(xié)同仿真的功能。單片機(jī)中的數(shù)與單位
單片機(jī)是一種可編程的數(shù)字電路芯片,采用TTL電平信號(hào),有邏輯“0”和邏輯“1”兩個(gè)電平狀態(tài)。
在電源電壓為5V的單片機(jī)電路中,2.4V以上表示高電平(邏輯1),0.8V以下表示低電平(邏輯0)。十進(jìn)制數(shù)二進(jìn)制數(shù)十六進(jìn)制數(shù)000000100011200102300113401004501015601106701117810008910019101010A111011B121100C131101D141110E151111F在C51語(yǔ)言代碼中:十進(jìn)制數(shù):直接表示。如16,-39.十六進(jìn)制數(shù):用數(shù)字0和字母x或X開(kāi)頭。如0x23,0X7a。單片機(jī)中數(shù)的表示
位(bit)
字節(jié)(Byte)字長(zhǎng)單片機(jī)能表示的最小數(shù)據(jù)單位,即一位二進(jìn)制數(shù),有0和1兩種取值。處理器一次可以并行處理的二進(jìn)制位數(shù),通常是數(shù)據(jù)總線的位數(shù),是微處理器的重要指標(biāo),常見(jiàn)的處理器字長(zhǎng)有8位,16位,32位。
B7B6B5B4B3B2B1B0由8位二進(jìn)制數(shù)組成,通常單片機(jī)里的存儲(chǔ)單元以字節(jié)為單位
單位常見(jiàn)的二進(jìn)制數(shù)量單位:K,M,G。1K=210=1024;1M=1K×1K=220;1G=1K×1M=230。
支持國(guó)產(chǎn)芯片,把國(guó)家、社會(huì)、公民的價(jià)值要求融為一體,提高個(gè)人的愛(ài)國(guó)、敬業(yè)、誠(chéng)信、友善修養(yǎng),自覺(jué)把小我融入大我,實(shí)現(xiàn)人生價(jià)值,升華人生境界。
芯片選擇單片機(jī)的發(fā)展趨勢(shì)低功耗化的效應(yīng)不僅是功耗低,而且?guī)?lái)了產(chǎn)品的高可靠性、高抗干擾能力以及產(chǎn)品的便攜化。抗干擾能力強(qiáng)單片機(jī)都具有多種封裝形式,其中SMD(表面封裝)越來(lái)越受歡迎。小體積更大的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,不用外部擴(kuò)展大容量CMOS芯片除了低功耗特性之外,還具有功耗的可控性,使單片機(jī)可以工作在功耗精細(xì)管理狀態(tài)。CMOS化一個(gè)芯片就是一個(gè)“測(cè)控”系統(tǒng)低價(jià)格和外圍電路內(nèi)裝化主要是指進(jìn)一步改進(jìn)CPU的性能,加快指令運(yùn)算的速度和提高系統(tǒng)控制的可靠性。高性能如何學(xué)習(xí)單片機(jī)?動(dòng)手組裝實(shí)驗(yàn)板合理安排時(shí)間持之以恒遇到問(wèn)題耐心檢查
適當(dāng)投資購(gòu)買(mǎi)實(shí)驗(yàn)器材蜂鳴器,流水燈,數(shù)碼管,液晶顯示,獨(dú)立鍵盤(pán),矩陣鍵盤(pán),AD/DA,串口認(rèn)真學(xué)習(xí)課程理論單片機(jī)學(xué)習(xí)開(kāi)發(fā)環(huán)境的建立(1)單片機(jī)與外圍電路協(xié)同仿真Proteus軟件單片機(jī)學(xué)習(xí)開(kāi)發(fā)環(huán)境的建立(2)單片機(jī)軟件開(kāi)發(fā)系統(tǒng)keil單片機(jī)學(xué)習(xí)開(kāi)發(fā)環(huán)境的建立(3)STC下載軟件任務(wù)1.2點(diǎn)亮一個(gè)LED燈教學(xué)內(nèi)容點(diǎn)亮一個(gè)LED燈了解單片機(jī)應(yīng)用系統(tǒng)的開(kāi)發(fā)過(guò)程單片機(jī)點(diǎn)亮LED燈的硬件電路設(shè)計(jì)單片機(jī)點(diǎn)亮LED燈的程序編寫(xiě)單片機(jī)系統(tǒng)開(kāi)發(fā)軟件Keil的使用單片機(jī)系統(tǒng)仿真軟件Proteus的使用點(diǎn)亮一個(gè)LED燈單片機(jī)模塊LED燈模塊整體設(shè)計(jì)什么是LED?LED:全稱(chēng)為發(fā)光二極管,是半導(dǎo)體二極管的一種,把電能轉(zhuǎn)換成光能,即實(shí)現(xiàn)單向?qū)щ姴l(fā)光。發(fā)光二極管電路符號(hào)直插式發(fā)光二極管貼片式發(fā)光二極管負(fù)極比正極短發(fā)光二極管的顏色代表了它發(fā)光時(shí)的顏色什么是LED?單燈亮電路連接
不同類(lèi)型和顏色的發(fā)光二極管,正向?qū)妷翰煌话阍?.6-2.4V。流過(guò)發(fā)光二極管的電流一般在2-20mA左右可以發(fā)光,電流越大,亮度越強(qiáng),但電流過(guò)大會(huì)燒毀二極管。
為了限制流過(guò)發(fā)光二極管的電流不要過(guò)大,需要串聯(lián)一個(gè)電阻,該電阻稱(chēng)為“限流電阻”。
如果發(fā)光二極管的正向?qū)妷菏?V,限流電阻的阻值是1k?,則根據(jù)歐姆定律,流過(guò)發(fā)光二極管的電流是:
該電流的大小可以通過(guò)改變限流電阻的阻值大小來(lái)調(diào)節(jié)。單燈亮電路連接
單片機(jī)的P1.0引腳具有輸入/輸出的作用,當(dāng)輸出低電平時(shí),LED燈點(diǎn)亮,輸出高電平,LED燈熄滅。其他電路連接是單片機(jī)最小系統(tǒng)電路。單燈亮電路連接灌電流:mA單片機(jī)控制LED電路連接圖拉電流:200uA單燈亮電路連接Proteus仿真軟件簡(jiǎn)介
使用Proteus8.9Professional版本,它可以在計(jì)算機(jī)上實(shí)現(xiàn)原理圖繪制、單片機(jī)代碼級(jí)調(diào)試與仿真的電子設(shè)計(jì)研發(fā)過(guò)程。任務(wù)
點(diǎn)亮一個(gè)LED燈教學(xué)內(nèi)容點(diǎn)亮一個(gè)LED燈了解單片機(jī)應(yīng)用系統(tǒng)的開(kāi)發(fā)過(guò)程單片機(jī)點(diǎn)亮LED燈的硬件電路設(shè)計(jì)單片機(jī)系統(tǒng)開(kāi)發(fā)軟件Keil的使用單片機(jī)系統(tǒng)仿真軟件Proteus的使用單片機(jī)點(diǎn)亮LED燈的程序編寫(xiě)點(diǎn)亮LED燈程序編寫(xiě)#include<stc15.h> //包含針對(duì)stc15系列單片機(jī)的基本聲明sbitLED=P10; //宏定義,用符號(hào)LED表示P1.0引腳voidmain(){
LED=0; //將P1.0設(shè)置為低電平,點(diǎn)亮發(fā)光二極管 while(1);
//原地踏步}
由于P1.0引腳接LED的陰極,LED的陽(yáng)極通過(guò)1k?限流電阻連接到+5V電源上,所以P1.0引腳輸出低電平就可以點(diǎn)亮LED。點(diǎn)亮LED燈的程序如下:KeilμVision軟件介紹
KeilμVision軟件是目前較為流行的開(kāi)發(fā)51單片機(jī)的軟件,它支持眾多不同公司的MCS51架構(gòu)的芯片,集編輯、編譯、仿真等功能于一體。本書(shū)中使用KeilμVision4。新建并保存工程新建并保存程序文件將文件添加到工程編輯調(diào)試程序生成HEX文件STC-ISP軟件介紹通過(guò)STC-ISP軟件將LED.hex文件下載到口袋實(shí)驗(yàn)板的單片機(jī)芯片中,觀察效果。任務(wù)拓展——單燈閃爍的實(shí)現(xiàn)開(kāi)始P1.0引腳輸出低電平延時(shí)P1.0引腳輸出高電平延時(shí)燈亮燈滅任務(wù)拓展——單燈閃爍的實(shí)現(xiàn)voiddelay_ms(unsignedintms){unsignedinti;do { i=MAIN_Fosc/13000; while(--i) ; }while(--ms);}#include<stc15.h> #defineMAIN_Fosc 24000000L voiddelay_ms(unsignedintms);sbitLED=P1^0; voidmain() { while(1) { LED=0; delay_ms(500); LED=1; delay_ms(500); }}
理論指導(dǎo)實(shí)踐,實(shí)踐檢驗(yàn)理論。
理論指導(dǎo)實(shí)踐,實(shí)踐豐富理論。單片機(jī)的應(yīng)用謝謝觀看!項(xiàng)目二聲光報(bào)警器的實(shí)現(xiàn)聲光報(bào)警器的實(shí)現(xiàn)按鍵模塊單片機(jī)模塊LED發(fā)光二極管模塊聲光報(bào)警器的實(shí)現(xiàn)蜂鳴器鳴叫的實(shí)現(xiàn)聲光報(bào)警器的實(shí)現(xiàn)多燈閃爍的實(shí)現(xiàn)內(nèi)部結(jié)構(gòu)、外部引腳C51語(yǔ)言的基本結(jié)構(gòu)及特點(diǎn)內(nèi)部存儲(chǔ)器結(jié)構(gòu)C51語(yǔ)言的數(shù)據(jù)類(lèi)型并行I/O口的結(jié)構(gòu)及工作模式C51語(yǔ)言的運(yùn)算符任務(wù)2-1蜂鳴器鳴叫的實(shí)現(xiàn)任務(wù)介紹任務(wù):使用STC15W4K32S4單片機(jī)控制一個(gè)蜂鳴器鳴叫。蜂鳴器鳴叫電路設(shè)計(jì)蜂鳴器鳴叫器件清單序號(hào)名稱(chēng)Proteus中元件名參數(shù)數(shù)量1單片機(jī)STC15W4K32S412PNP三極管2N70313電阻RES1kΩ14有源蜂鳴器BUZZEROperatingVoltage:2V1蜂鳴器鳴叫的實(shí)現(xiàn)STC15W4K32S4單片機(jī)STC15W4K32S4蜂鳴器鳴叫的實(shí)現(xiàn)STC15W4K32S4單片機(jī)有源蜂鳴器蜂鳴器鳴叫的實(shí)現(xiàn)無(wú)源蜂鳴器
蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,它廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、電子玩具、儀器儀表和工控設(shè)備等電子產(chǎn)品中作發(fā)聲或警報(bào)器件。內(nèi)部帶有振蕩源,只要接通電源,蜂鳴器就會(huì)鳴叫。無(wú)源蜂鳴器由于其內(nèi)部不帶振蕩源,因此直接用直流信號(hào)驅(qū)動(dòng)是無(wú)法另其鳴叫的,必須用500Hz~5kHz的方波去驅(qū)動(dòng)它。STC15W4K32S4單片機(jī)內(nèi)部結(jié)構(gòu)時(shí)鐘電路CPUROMRAMT0T1中斷系統(tǒng)串行接口并行接口P0P1P2P3TXDRXDINT0INT1定時(shí)計(jì)數(shù)器經(jīng)典的51單片機(jī)的片內(nèi)結(jié)構(gòu)蜂鳴器鳴叫的實(shí)現(xiàn)STC15W4K32S4單片機(jī)內(nèi)部結(jié)構(gòu)CPU存儲(chǔ)器并行/串行接口定時(shí)器/計(jì)數(shù)器中斷高精度RC時(shí)鐘高可靠復(fù)位掉電喚醒專(zhuān)用定時(shí)器、比較器、看門(mén)狗、高速AD·······蜂鳴器鳴叫的實(shí)現(xiàn)STC15W4K32S4單片機(jī)引腳電源引腳Vcc(電源正)、Gnd(地)其他引腳I/O口、多功能引腳并行I/O口引腳號(hào)P040\41\42\43\44\1\2\3P14\5\7\8\9\10\11\12P230\31\32\33\34\35\36\37P318\19\20\21\22\23\24\25P417\26\27\28\29\38\39\6P513\15蜂鳴器鳴叫的實(shí)現(xiàn)單片機(jī)最小系統(tǒng)用最少的元件組成的可以工作的單片機(jī)系統(tǒng)。單片機(jī)的最小系統(tǒng)電源時(shí)鐘電路復(fù)位電路片內(nèi)集成外接蜂鳴器鳴叫的實(shí)現(xiàn)單片機(jī)最小系統(tǒng)14號(hào)引腳Vcc:5V電壓正16號(hào)引腳Gnd:電源地蜂鳴器鳴叫的實(shí)現(xiàn)單片機(jī)最小系統(tǒng)單片機(jī)的最小系統(tǒng)電源時(shí)鐘電路片內(nèi)RC時(shí)鐘復(fù)位電路片內(nèi)專(zhuān)用復(fù)位電路
STC-ISP軟件設(shè)置外接直流5V電源蜂鳴器鳴叫的實(shí)現(xiàn)單片機(jī)最小系統(tǒng)單片機(jī)的最小系統(tǒng)電源時(shí)鐘電路片內(nèi)RC時(shí)鐘外接時(shí)鐘電路復(fù)位電路片內(nèi)專(zhuān)用復(fù)位電路外接復(fù)位電路直接輸入時(shí)鐘信號(hào)XTAL1和XTAL2外接晶振蜂鳴器鳴叫的實(shí)現(xiàn)任務(wù)2-2多燈閃爍的實(shí)現(xiàn)任務(wù)介紹任務(wù):使用STC15W4K32S4單片機(jī)控制P1口接的8個(gè)LED燈閃爍。任務(wù)硬件設(shè)計(jì)單燈閃爍器件清單任務(wù)硬件設(shè)計(jì)多燈閃爍器件清單序號(hào)名稱(chēng)Proteus中元件名參數(shù)數(shù)量1單片機(jī)STC15W4K32S412LED發(fā)光二極管LED-RED83電阻RES1kΩ8多燈閃爍流程蜂鳴器鳴叫流程任務(wù)軟件設(shè)計(jì)開(kāi)始P3.6輸出低電平P3.6輸出高電平延時(shí)延時(shí)開(kāi)始P1.0~P1.7輸出低電平P1.0~P1.7輸出低電平延時(shí)延時(shí)sbitLED0=P1^0;sbitLED1=P1^1;sbitLED2=P1^2;sbitLED3=P1^3;sbitLED4=P1^4;sbitLED5=P1^5;sbitLED6=P1^6;sbitLED7=P1^7;蜂鳴器鳴叫程序sbitBUZZ=P3^6;
voidmain() {while(1){
BUZZ=0; delay_ms(500); BUZZ=1; delay_ms(500); }}任務(wù)軟件設(shè)計(jì)LED0=0;LED1=0;LED2=0;LED3=0;LED4=0;LED5=0;LED6=0;LED7=0;delay_ms(500);LED0=1;LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;delay_ms(500); 任務(wù)軟件設(shè)計(jì)P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.000000000P10x00111111110xFF開(kāi)始P1.0~P1.7輸出低電平P1.0~P1.7輸出低電平延時(shí)延時(shí)開(kāi)始P1=0x00;P1=0xFF;延時(shí)延時(shí)#include<stc15.h>//包含stc15頭文件voiddelay_ms(unsignedintms);//函數(shù)聲明#defineMAIN_Fosc11059200L//定時(shí)主時(shí)鐘
voidmain() //主函數(shù)
{while(1){
P1=0x00; delay_ms(500);
P1=0xFF; delay_ms(500); }}任務(wù)軟件設(shè)計(jì)開(kāi)始P1=0x00;P1=0xFF;延時(shí)延時(shí)//延時(shí)ms*1毫秒函數(shù)voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i);
}while(--ms);}STC15W4KS32單片機(jī)的存儲(chǔ)器結(jié)構(gòu)RAM:RandomAccessMemory數(shù)據(jù)和中間結(jié)果ROM:Read-OnlyMemory程序和固定數(shù)據(jù)哈佛結(jié)構(gòu)0123450123456789AB6789ABSTC15W4KS32單片機(jī)的存儲(chǔ)器結(jié)構(gòu)RAMROMROM7FFFH(32K)0000HROM是程序存儲(chǔ)空間,在KEIL編譯環(huán)境中,編寫(xiě)編譯好的HEX文件最終會(huì)下載到ROM中。不同型號(hào)的單片機(jī)ROM的容量不一樣:在單片機(jī)型號(hào)中“STC15W4K32S4”,代表ROM的大小是32KB。沒(méi)有訪問(wèn)外部程序存儲(chǔ)器的總線,不能訪問(wèn)外部程序存儲(chǔ)器。用戶(hù)程序區(qū)中斷入口0003-00BB起始單元0000-0002ProgramFlashMemorySTC15W4KS32單片機(jī)的存儲(chǔ)器結(jié)構(gòu)RAMROM基本RAM0000H0EFFH外部?jī)?nèi)部擴(kuò)展RAM(3840B)內(nèi)部RAM00HFFH7FH80H內(nèi)部RAM(高128B)(低128B)特殊功能寄存器0000HFFFFH外部外部擴(kuò)展RAM(64KB)STC15W4KS32單片機(jī)的特殊功能寄存器可位尋址特殊功能寄存器:字節(jié)地址能夠被8整除不可位尋址特殊功能寄存器STC15W4KS32單片機(jī)的存儲(chǔ)器結(jié)構(gòu)FFH80H特殊功能寄存器特殊功能寄存器SFR(SpecialFunctionRegister):與芯片的引腳有關(guān),如P0-P5,實(shí)際上是6個(gè)鎖存器,每個(gè)鎖存器加上相應(yīng)的輸出驅(qū)動(dòng)器和緩沖器就構(gòu)成了一個(gè)并行I/O口。對(duì)片內(nèi)各個(gè)功能模塊進(jìn)行管理、控制、監(jiān)視的控制寄存器和狀態(tài)寄存器。C51語(yǔ)言的數(shù)據(jù)類(lèi)型C語(yǔ)言數(shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型整型字符型實(shí)型構(gòu)造類(lèi)型數(shù)組結(jié)構(gòu)體struct共用體union枚舉enum指針類(lèi)型空類(lèi)型voidC51語(yǔ)言擴(kuò)展數(shù)據(jù)類(lèi)型位類(lèi)型bit特殊功能寄存器sfr16位特殊功能寄存器sfr16特殊功能寄存器可尋址位sbitC51語(yǔ)言的基本數(shù)據(jù)類(lèi)型C51語(yǔ)言基本數(shù)據(jù)類(lèi)型整型基本整型int有符號(hào)signed無(wú)符號(hào)unsigned長(zhǎng)整型long有符號(hào)signed無(wú)符號(hào)unsigned字符型字符型char有符號(hào)signed無(wú)符號(hào)unsigned實(shí)型單精度浮點(diǎn)型floatC51語(yǔ)言的基本數(shù)據(jù)類(lèi)型類(lèi)型符號(hào)關(guān)鍵字所占位數(shù)字節(jié)數(shù)值域字符型有(signed)char81-128~127無(wú)unsignedchar810~255基本整型有(signed)int162-32768~32767無(wú)unsignedint1620~65535單精度實(shí)型有float3243.4e-38~3.4e38C51語(yǔ)言的基本數(shù)據(jù)類(lèi)型inti;#include<stc15.h>//包含stc15頭文件voiddelay_ms(unsignedintms);//函數(shù)聲明#defineMAIN_Fosc11059200L//定時(shí)主時(shí)鐘
voidmain() //主函數(shù)
{while(1){
P1=0x00; delay_ms(500);
P1=0xFF; delay_ms(500); }}//延時(shí)ms*1毫秒函數(shù)voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i);
}while(--ms);}charunsignedcharsignedcharintunsignedintsignedintlongunsignedlongsignedlongC51語(yǔ)言的擴(kuò)展數(shù)據(jù)類(lèi)型C51語(yǔ)言擴(kuò)展數(shù)據(jù)類(lèi)型特殊功能寄存器sfr16位特殊功能寄存器sfr16特殊功能寄存器可尋址位sbit位類(lèi)型bit關(guān)鍵字所占位數(shù)值域sfr8位0~255sfr1616位0~65535sbit1位0~1bit1位0~1C51語(yǔ)言的擴(kuò)展數(shù)據(jù)類(lèi)型sfr用戶(hù)標(biāo)識(shí)符=
特殊功能寄存器地址;
特殊功能寄存器名
#include<stc15.h>//包含stc15頭文件voiddelay_ms(unsignedintms);//函數(shù)聲明#defineMAIN_Fosc11059200L//定時(shí)主時(shí)鐘
voidmain() //主函數(shù)
{while(1){
P1=0x00; delay_ms(500);
P1=0xFF; delay_ms(500); }}C51語(yǔ)言的擴(kuò)展數(shù)據(jù)類(lèi)型sfr16
特殊功能寄存器名
=
16位特殊功能寄存器的低字節(jié)地址;sfrDPL=0x82;//0000,0000數(shù)據(jù)指針低字節(jié)sfrDPH=0x83;//0000,0000數(shù)據(jù)指針高字節(jié)sfr16DPTR=0x82;//0000,000016位數(shù)據(jù)指針寄存器C51語(yǔ)言的擴(kuò)展數(shù)據(jù)類(lèi)型sbit位名
=
特殊功能寄存器名^i(i=0~7);sbitLED=P1^0; //定義P1.0口為L(zhǎng)ED#defineLEDP10謝謝!任務(wù)2-3聲光報(bào)警器的實(shí)現(xiàn)任務(wù)介紹任務(wù):實(shí)現(xiàn)一個(gè)開(kāi)關(guān)控制1個(gè)LED發(fā)光二極管和1個(gè)有源蜂鳴器。初始狀態(tài)下,開(kāi)關(guān)斷開(kāi),LED燈熄滅,蜂鳴器不發(fā)聲;當(dāng)開(kāi)關(guān)閉合時(shí),LED燈閃爍并且蜂鳴器滴滴鳴叫,實(shí)現(xiàn)聲光報(bào)警。任務(wù)軟件設(shè)計(jì)開(kāi)關(guān)SW模塊LED燈器件名稱(chēng)功能分配I/O口開(kāi)關(guān)SW輸入P3.2發(fā)光二極管LED輸出P1.0蜂鳴器輸出P3.6蜂鳴器任務(wù)硬件設(shè)計(jì)開(kāi)關(guān)控制多燈閃爍仿真器件清單序號(hào)名稱(chēng)Proteus中元件名參數(shù)數(shù)量1單片機(jī)STC15W4K32S412LED發(fā)光二極管LED-BIGY13PNP三極管2N70314有源蜂鳴器BUZZER15電阻RES1kΩ26電阻RES10kΩ17開(kāi)關(guān)SWITCH1任務(wù)硬件設(shè)計(jì)任務(wù)軟件設(shè)計(jì)01開(kāi)始P1.0和P3.6跟隨P3.2口的狀態(tài)值P1.0和P3.6口置1延時(shí)延時(shí)任務(wù)軟件設(shè)計(jì)#include<stc15.h>//包含stc15頭文件voiddelay_ms(unsignedintms);//函數(shù)聲明#defineMAIN_Fosc11059200L//定時(shí)主時(shí)鐘
voidmain() //主函數(shù)
{bitsta_sw;P1M0=0x00;P1M1=0x00;P3M0=0x00;P3M1=0x00;}while(1){sta_sw=S1;
}D1=sta_sw;BUZZ=sta_sw; delay_ms(500);sbitS1=P3^2;sbitD1=P1^0;sbitBUZZ=P3^6;開(kāi)始P1.0和P3.6跟隨P3.2口的狀態(tài)值P1.0和P3.6口置1延時(shí)延時(shí)D1=1;BUZZ=1; delay_ms(500);任務(wù)軟件設(shè)計(jì)#include<stc15.h>//包含stc15頭文件voiddelay_ms(unsignedintms);//函數(shù)聲明#defineMAIN_Fosc11059200L//定時(shí)主時(shí)鐘
sbitS1=P3^2;sbitD1=P1^0;sbitBUZZ=P3^6;voidmain() //主函數(shù)
{bitsta_sw;P1M0=0x00;P1M1=0x00;P3M0=0x00;P3M1=0x00;
while(1){ sta_sw=S1; D1=sta_sw;BUZZ=sta_sw; delay_ms(500); D1=1;BUZZ=1; delay_ms(500); }}//延時(shí)ms*1毫秒函數(shù)voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i);
}while(--ms);}軟硬件調(diào)試STC15W4KS32單片機(jī)的并行I/O口開(kāi)關(guān)SW模塊LED燈模塊器件引腳輸入開(kāi)關(guān)SWP3.2輸出LED發(fā)光二極管P1.0輸出蜂鳴器P3.6I/O位名稱(chēng)P0P0.0~P0.7P1P1.0~P1.7P2P2.0~P2.7P3P3.0~P3.7P4P4.0~P4.7P5P5.3\P5.4蜂鳴器STC15W4KS32單片機(jī)的并行I/O口PnM1[7:0](n=0,1,2,3,4,5)PnM0[7:0](n=0,1,2,3,4,5)工作模式00準(zhǔn)雙向口01推挽輸出10高阻輸入11開(kāi)漏輸出I/O口寄存器名稱(chēng)P0P0M1、P0M0P1P1M1、P1M0P2P2M1、P2M0P3P3M1、P3M0P4P4M1、P4M0P5P5M1、P5M0STC15W4KS32單片機(jī)的并行I/O口工作模式描述準(zhǔn)雙向口傳統(tǒng)8051單片機(jī)I/O口模式,灌電流可達(dá)20mA,拉電流為150uA~270uA。推挽輸出強(qiáng)上拉輸出,拉電流可達(dá)20mA,需外接限流電阻。高阻輸入電流既不能流入也不能流出。開(kāi)漏輸出內(nèi)部上拉電阻斷開(kāi),開(kāi)漏模式既可讀外部狀態(tài)也可對(duì)外輸出(高電平或低電平)。如果要正確讀外部狀態(tài)或需要對(duì)外輸出高電平,需要外加上拉電阻,否則讀不到外部狀態(tài),也對(duì)外輸不出高電平。STC15W4KS32單片機(jī)的并行I/O口配置位配置值工作模式P0M1.7P0M0.700P0.7準(zhǔn)雙向口P0M1.6P0M0.610P0.6高阻輸入P0M1.5P0M0.501P0.5推挽輸出P0M1.4P0M0.411P0.4開(kāi)漏輸出P0M1.3(2/1/0)P0M0.3(2/1/0)00P0.3~P0.0準(zhǔn)雙向口IO_Init()//P0口工作模式配置函數(shù){ P0M0=0x30; //00110000P0M1=0x50;//01010000}I/O口寄存器名稱(chēng)P0P0M1、P0M0P1P1M1、P1M0P2P2M1、P2M0P3P3M1、P3M0P4P4M1、P4M0P5P5M1、P5M0STC15W4KS32單片機(jī)的并行I/O口引腳名稱(chēng)前一次ISP燒錄程序時(shí)的功能上電復(fù)位后I/O口工作模式P1.6/XTAL2XTAL2高阻輸入P1.6準(zhǔn)雙向口P1.7/XTAL1XTAL1高阻輸入P1.7準(zhǔn)雙向口P5.4/RSTRST復(fù)位腳P5.4準(zhǔn)雙向口STC15W4KS32單片機(jī)的并行I/O口P1口和P3口:準(zhǔn)雙向口。STC15單片機(jī)的準(zhǔn)雙向口模式端口寄存器引腳晶體管狀態(tài)11極弱上拉、弱上拉晶體管打開(kāi)10極弱上拉打開(kāi),弱上拉關(guān)閉1懸空極弱上拉打開(kāi)0到1跳變0到1跳變強(qiáng)上拉打開(kāi),加快引腳上0到1的跳變。1001001STC15單片機(jī)的準(zhǔn)雙向口模式010110準(zhǔn)雙向口:作為普通輸入口使用時(shí),必須先向端口鎖存器寫(xiě)“1”,使得接地的晶體管截止,以避免鎖存器為“0”狀態(tài)對(duì)引腳讀入的干擾。STC15單片機(jī)的準(zhǔn)雙向口模式P3.2口:準(zhǔn)雙向口模式輸入口。voidmain() //主函數(shù)
{bitsta_sw;P1M0=0x00;P1M1=0x00;P3M0=0x00;P3M1=0x00;
while(1){ sta_sw=S1; D1=sta_sw;BUZZ=sta_sw; delay_ms(500); D1=1;BUZZ=1; delay_ms(500); }}C51運(yùn)算符賦值運(yùn)算符算術(shù)運(yùn)算符邏輯運(yùn)算符基本運(yùn)算符關(guān)系運(yùn)算符位運(yùn)算符算術(shù)運(yùn)算符賦值運(yùn)算符算術(shù)運(yùn)算符邏輯運(yùn)算符基本運(yùn)算符關(guān)系運(yùn)算符位運(yùn)算符+,-*,/,%乘號(hào)”*“不可省略。C51表達(dá)式:10*value數(shù)學(xué)表達(dá)式:10value算術(shù)運(yùn)算符賦值運(yùn)算符算術(shù)運(yùn)算符邏輯運(yùn)算符基本運(yùn)算符關(guān)系運(yùn)算符位運(yùn)算符+,-*,/,%參與取余運(yùn)算的運(yùn)算對(duì)象必須都是整型數(shù),運(yùn)算結(jié)果等于兩個(gè)整數(shù)相除后的余數(shù)。19/10C51表達(dá)式的值是119.0/10C51表達(dá)式的值是1.9對(duì)整型數(shù)進(jìn)行除法運(yùn)算時(shí),結(jié)果向零取整。對(duì)實(shí)型數(shù)進(jìn)行除法運(yùn)算,結(jié)果為實(shí)型數(shù)。算術(shù)運(yùn)算符賦值運(yùn)算符算術(shù)運(yùn)算符邏輯運(yùn)算符基本運(yùn)算符關(guān)系運(yùn)算符位運(yùn)算符+,-*,/,%min/10min%10算術(shù)運(yùn)算符賦值運(yùn)算符算術(shù)運(yùn)算符邏輯運(yùn)算符基本運(yùn)算符關(guān)系運(yùn)算符位運(yùn)算符++,--voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i);
}while(--ms);}i=i-1;while(i);前綴形式后綴形式關(guān)系運(yùn)算符賦值運(yùn)算符算術(shù)運(yùn)算符邏輯運(yùn)算符基本運(yùn)算符關(guān)系運(yùn)算符位運(yùn)算符>、>=、<、<===,!=voidmain() {
while(1){if(SW==0) { …… }else …… }}邏輯運(yùn)算符賦值運(yùn)算符算術(shù)運(yùn)算符邏輯運(yùn)算符基本運(yùn)算符關(guān)系運(yùn)算符位運(yùn)算符&&、||、!賦值運(yùn)算符賦值運(yùn)算符算術(shù)運(yùn)算符邏輯運(yùn)算符基本運(yùn)算符關(guān)系運(yùn)算符位運(yùn)算符簡(jiǎn)單賦值運(yùn)算符復(fù)合賦值運(yùn)算符變量=
常量或變量或表達(dá)式=賦值運(yùn)算符#include<stc15.h>//包含stc15頭文件voiddelay_ms(unsignedintms);//函數(shù)聲明#defineMAIN_Fosc11059200L//定時(shí)主時(shí)鐘
#defineSWP32voidmain() //主函數(shù)
{bitsta_sw;P1M0=0x00;P1M1=0x00;P3M0=0x00;P3M1=0x00;
while(1){ sta_sw=S1; D1=sta_sw;BUZZ=sta_sw; delay_ms(500); D1=1;BUZZ=1; delay_ms(500); }}//延時(shí)ms*1毫秒函數(shù)voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i);
}while(--ms);}賦值運(yùn)算符賦值運(yùn)算符算術(shù)運(yùn)算符邏輯運(yùn)算符基本運(yùn)算符關(guān)系運(yùn)算符位運(yùn)算符簡(jiǎn)單賦值運(yùn)算符復(fù)合賦值運(yùn)算符+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=等等。
變量雙目運(yùn)算符=表達(dá)式;等價(jià)于:變量=變量雙目運(yùn)算符表達(dá)式;位運(yùn)算符賦值運(yùn)算符算術(shù)運(yùn)算符邏輯運(yùn)算符基本運(yùn)算符關(guān)系運(yùn)算符位運(yùn)算符移位運(yùn)算符邏輯位運(yùn)算符>><<&|^~P1=0x81;P1=P1<<1;10000001左移前00000010左移后補(bǔ)0丟棄謝謝!單片機(jī)C語(yǔ)言程序設(shè)計(jì)項(xiàng)目搶答器的實(shí)現(xiàn)搶答器的實(shí)現(xiàn)任務(wù)目錄任務(wù)一開(kāi)關(guān)控制LED燈顯示任務(wù)二數(shù)碼管顯示按鍵按下次數(shù)任務(wù)三多路搶答器的實(shí)現(xiàn)開(kāi)關(guān)控制LED燈顯示任務(wù)介紹開(kāi)關(guān)閉合,8個(gè)LED燈依次點(diǎn)亮,實(shí)現(xiàn)流水燈效果;開(kāi)關(guān)斷開(kāi),8個(gè)LED燈全亮。硬件電路單片機(jī)最小系統(tǒng)電路、8個(gè)LED燈電路、開(kāi)關(guān)電路軟件設(shè)計(jì)雙分支結(jié)構(gòu)實(shí)現(xiàn)程序,識(shí)別閉合時(shí),實(shí)現(xiàn)流水燈;否則,8個(gè)LED全部點(diǎn)亮。開(kāi)關(guān)控制LED燈顯示1順序結(jié)構(gòu)程序設(shè)計(jì)2選擇結(jié)構(gòu)程序設(shè)計(jì)3循環(huán)結(jié)構(gòu)程序設(shè)計(jì)4函數(shù)、數(shù)組主要內(nèi)容5按鍵、數(shù)碼管順序結(jié)構(gòu)程序設(shè)計(jì)AB按照程序中語(yǔ)句書(shū)寫(xiě)的順序從上到下一條一條依次執(zhí)行概念任務(wù)分析首先點(diǎn)亮D1,保持一段時(shí)間后,熄滅D1,點(diǎn)亮D2,保持一段時(shí)間后,熄滅D2,點(diǎn)亮D3……依次類(lèi)推,直到點(diǎn)亮D8,然后停止流水燈效果流水燈電路序號(hào)名稱(chēng)Proteus中元件名參數(shù)數(shù)量1單片機(jī)STC15W4K32S412LED燈LED-RED
83排阻RX81K1流水燈控制原理端口的控制電平為低,LED燈亮;端口的控制電平為高,LED燈滅端口數(shù)據(jù)D8D7D6D5D4D3D2D1狀態(tài)1滅滅滅滅滅滅滅亮端口數(shù)據(jù):0XFE11111110狀態(tài)2滅滅滅滅滅滅亮滅端口數(shù)據(jù):0XFD11111101狀態(tài)3滅滅滅滅滅亮滅滅端口數(shù)據(jù):0XFB11111011流水燈程序設(shè)計(jì)端口數(shù)據(jù)D8D7D6D5D4D3D2D10xfe滅滅滅滅滅滅滅亮0xfd滅滅滅滅滅滅亮滅0xfb滅滅滅滅滅亮滅滅0xf7滅滅滅滅亮滅滅滅0xef滅滅滅亮滅滅滅滅0xdf滅滅亮滅滅滅滅滅0xbf滅亮滅滅滅滅滅滅0x7f亮滅滅滅滅滅滅滅通過(guò)賦值語(yǔ)句分8次將數(shù)據(jù)依次輸出到P1口流水燈程序設(shè)計(jì)P1=0XFE…………延時(shí)P1=0XFD延時(shí)voidmain() {P1M0=0X00;P1M1=0X00;while(1){
P1=0xfe;
delay_nms(1000);
P1=0xfd; delay_nms(1000);
P1=0xfb; delay_nms(1000);
P1=0xf7; delay_nms(1000);
P1=0xef; delay_nms(1000);
P1=0xdf; delay_nms(1000);
P1=0xbf; delay_nms(1000);
P1=0x7f; delay_nms(1000); }}主函數(shù)賦值語(yǔ)句函數(shù)調(diào)用語(yǔ)句P1=0X7F延時(shí)流水燈工作的原理、設(shè)計(jì)流程、源程序51單片機(jī)順序結(jié)構(gòu)程序設(shè)計(jì)的原理和方法小結(jié)if語(yǔ)句if–else語(yǔ)句
選擇語(yǔ)句選擇結(jié)構(gòu)程序設(shè)計(jì)開(kāi)關(guān)控制燈序號(hào)名稱(chēng)Proteus中元件名參數(shù)數(shù)量1單片機(jī)STC15W4K32S412LED燈LED-RED
13排阻RX81K14按鍵button1選擇結(jié)構(gòu)程序設(shè)計(jì)LED燈開(kāi)關(guān)原理按鍵按下時(shí),P3.2=0按鍵松開(kāi)時(shí),P3.2=1P1=0xFFP1=0x00LED開(kāi)關(guān)程序設(shè)計(jì)if(表達(dá)式)語(yǔ)句語(yǔ)句YN表達(dá)式條件:判斷P3.2電平的高低狀態(tài)執(zhí)行語(yǔ)句:P1輸出高低電平LED開(kāi)關(guān)程序設(shè)計(jì)#include<stc15.h>sbitSW=P3^2voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;P1=0X00; while(1) { if(SW==0)P1=0xff; if(SW==1)P1=0X00; }}確定燈初始為亮循環(huán)判斷操作關(guān)系運(yùn)算符==而非賦值運(yùn)算符=sbitSW=P3^2LED開(kāi)關(guān)程序設(shè)計(jì)if(表達(dá)式)語(yǔ)句1else
語(yǔ)句2P1=0x00P1=0xff高低P3.2語(yǔ)句1語(yǔ)句2真假表達(dá)式LED開(kāi)關(guān)程序設(shè)計(jì)#include<stc15.h>sbitSW=P3^2voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;P1=0X00; while(1) { if(SW==0)P1=0xff; elseP1=0X00; }}雙分支if-else語(yǔ)句LED開(kāi)關(guān)的工作原理51單片機(jī)分支結(jié)構(gòu)程序設(shè)計(jì)小結(jié)If語(yǔ)句和if-else語(yǔ)句實(shí)現(xiàn)了LED開(kāi)關(guān)國(guó)家法律、國(guó)家利益、人民利益高于一切。我們不僅要學(xué)好專(zhuān)業(yè)知識(shí),有高超的專(zhuān)業(yè)技術(shù)能力,設(shè)計(jì)出高質(zhì)量的產(chǎn)品,還要具有強(qiáng)烈的法制意識(shí),高尚的職業(yè)道德,良好的技術(shù)操守,為我們的國(guó)家我們的社會(huì)貢獻(xiàn)自己的力量。if–elseif-else語(yǔ)句switch語(yǔ)句
選擇語(yǔ)句多分支結(jié)構(gòu)程序設(shè)計(jì)開(kāi)關(guān)控制燈序號(hào)名稱(chēng)Proteus中元件名參數(shù)數(shù)量1單片機(jī)STC15W4K32S412LED燈LED-RED
43排阻RX81K14按鍵button4多分支語(yǔ)句if(表達(dá)式1)語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2…………elseif(表達(dá)式n)語(yǔ)句nelse語(yǔ)句n+1條件是按鍵引腳上電平的高低,語(yǔ)句i是LED引腳上輸出高低電平LED開(kāi)關(guān)分析要求:4個(gè)按鍵對(duì)應(yīng)4個(gè)指示燈,S1按下,僅D1亮,S2按下,僅D2亮,S3按下,僅D3亮,S4按下,僅D4亮,其他情況,燈全滅。LED開(kāi)關(guān)分析要求:4個(gè)按鍵對(duì)應(yīng)4個(gè)指示燈,S1按下,僅D1亮,S2按下,僅D2亮,S3按下,僅D3亮,S4按下,僅D4亮,其他情況,燈全滅。(P34==0)&&(P35==1)&&(P36==1)&&(P37==1)(P34==1)&&(P35==0)&&(P36==1)&&(P37==1){D1=0;D2=1;D3=1;D4=1;}{D1=1;D2=0;D3=1;D4=1;}4個(gè)LED開(kāi)關(guān)程序設(shè)計(jì)#defineD1P10#defineD2P11#defineD3P12#defineD4P13#defineS1P34#defineS2P35#defineS3P36#defineS4P37
voidmain(){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;D1=1;D2=1;D3=1;D4=1;while(1){
if((S1==0)&&(S2==1)&&(S3==1)&&(S4==1)){D1=0;D2=1;D3=1;D4=1;}
elseif((S1==1)&&(S2==0)&&(S3==1)&&(S4==1)){D1=1;D2=0;D3=1;D4=1;} elseif((S1==1)&&(S2==1)&&(S3==0)&&(S4==1)){D1=1;D2=1;D3=0;D4=1;}
elseif((S1==1)&&(S2==1)&&(S3==1)&&(S4==0)){D1=1;D2=1;D3=1;D4=0;}else{D1=1;D2=1;D3=1;D4=1;}}}復(fù)合語(yǔ)句關(guān)系運(yùn)算符==邏輯運(yùn)算符&&多分支語(yǔ)句switch(表達(dá)式){case常量表達(dá)式1:[語(yǔ)句組1][break;]case常量表達(dá)式2:[語(yǔ)句組2][break;]
…
…
…
…
…
…
…
……
…
…case常量表達(dá)式n:[語(yǔ)句組n][break;][default:語(yǔ)句組n+1]}執(zhí)行過(guò)程:先計(jì)算表達(dá)式的值,然后依次與每一個(gè)case中的常量表達(dá)式的值進(jìn)行比較,若有相等的,則從該case開(kāi)始依次往下執(zhí)行,若沒(méi)有相等的,則從default開(kāi)始往下執(zhí)行。條件算法分析(P3^4==0)&&(P3^5==1)&&(P3^6==1)&&(P3^7==1)(P3^4==1)&&(P3^5==0)&&(P3^6==1)&&(P3^7==1)(P3^4==0)&&(P3^5==1)&&(P3^6==1)&&(P3^7==1)(P3^4==1)&&(P3^5==0)&&(P3^6==1)&&(P3^7==1)P3端口:需要保留位“&”上1,不需保留的“&”上0即P3&二進(jìn)制數(shù)11110000即P3&0xf0位與常量值計(jì)算P3口P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0&0xf011110000S1按下:0xe011100000S2按下:0xd011010000S3按下:0xb010110000S4按下:0x7001110000S1S2S3S4S1S2按下:0xc011000000S1-S4按下:0x00000000004個(gè)LED開(kāi)關(guān)程序設(shè)計(jì)#include<stc15.h>voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;unsignedcharkey_value=0;while(1){ key_value=P3&0xf0;switch(key_value){ case0xe0:P1=0xfe;break;//點(diǎn)亮D1 case0xd0:P1=0xfd;break;//點(diǎn)亮D2 case0xb0:P1=0xfb;break;//點(diǎn)亮D3 case0x70:P1=0xf7;break;//點(diǎn)亮D4default:P1=0xff;//否則滅燈} } }存放開(kāi)關(guān)S4~S1的狀態(tài)if-elseif-else語(yǔ)句實(shí)現(xiàn)了4路開(kāi)關(guān)LED51單片機(jī)多分支結(jié)構(gòu)程序設(shè)計(jì)小結(jié)switch語(yǔ)句實(shí)現(xiàn)了4路開(kāi)關(guān)LED#include<stc15.h>voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;unsignedcharkey_value=0;while(1){ key_value=P3&0xf0;switch(key_value){ case0xe0:P1=0xfe;break;//點(diǎn)亮D1 case0xd0:P1=0xfd;break;//點(diǎn)亮D2 case0xb0:P1=0xfb;break;//點(diǎn)亮D3 case0x70:P1=0xf7;break;//點(diǎn)亮D4default:P1=0xff;} } }while(1)無(wú)限循環(huán)實(shí)例循環(huán)結(jié)構(gòu)程序設(shè)計(jì)1while語(yǔ)句2do-while語(yǔ)句
3for語(yǔ)句
循環(huán)語(yǔ)句循環(huán)結(jié)構(gòu)程序設(shè)計(jì)while(表達(dá)式){
循環(huán)體語(yǔ)句}循環(huán)體真假表達(dá)式voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;unsignedcharkey_value=0;while(1){ key_value=P3&0xf0;switch(key_value){ case0xe0:P1=0xfe;break; case0xd0:P1=0xfd;break; case0xb0:P1=0xfb;break; case0x70:P1=0xf7;break;default:P1=0xff;} } }循環(huán)結(jié)構(gòu)程序設(shè)計(jì)do{
循環(huán)體語(yǔ)句}while(表達(dá)式);voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;unsignedcharkey_value=0;
do{ key_value=P3&0xf0;switch(key_value){ case0xe0:P1=0xfe;break; case0xd0:P1=0xfd;break; case0xb0:P1=0xfb;break; case0x70:P1=0xf7;break;default:P1=0xff;} }while(1);
}循環(huán)結(jié)構(gòu)之延時(shí)函數(shù)/*延時(shí)函數(shù)*/voiddelay_ms(unsignedintms){unsignedinti;
do{ i=MAIN_Fosc/13000;
while(--i);}while(--ms);}#defineMAIN_Fosc 11059200L //定義主時(shí)鐘循環(huán)執(zhí)行i次空操作“;”循環(huán)次數(shù)i值的計(jì)算i是估算值,時(shí)間不精準(zhǔn)for語(yǔ)句for(表達(dá)式1;表達(dá)式2;表達(dá)式3){
循環(huán)體語(yǔ)句}YN
表達(dá)式2
表達(dá)式3
表達(dá)式1
循環(huán)體for(i=0;i<10;i++){
循環(huán)體語(yǔ)句}voiddelay_ms(unsignedintms){;;;;}voidmain() {
P1=0xfe;
delay(20000);
P1=0xfd; delay(20000);
P1=0xfb; delay(20000);
P1=0xf7; delay(20000);
P1=0xef; delay(20000);
P1=0xdf; delay(20000);
P1=0xbf; delay(20000);
P1=0x7f; delay(20000);
while(1); //結(jié)束}流水燈程序順序結(jié)構(gòu)順序結(jié)構(gòu)循環(huán)結(jié)構(gòu)設(shè)計(jì)流水燈程序8次P1=0XFE…………延時(shí)1秒P1=0XFD延時(shí)1秒P1=0X7F延時(shí)1秒P1=常數(shù)1…………延時(shí)1秒P1=常數(shù)2延時(shí)1秒P1=常數(shù)8延時(shí)1秒過(guò)程不變數(shù)據(jù)在變數(shù)據(jù)變量算法表示循環(huán)結(jié)構(gòu)設(shè)計(jì)流水燈程序“<<”運(yùn)算端口數(shù)據(jù)1D7D6D5D4D3D2D10xfe111111100xfd111111010xfb111110110xf7111101110xef111011110xdf110111110xbf101111110x7f011111111111111011111100<<111111101+111111010<<111111011+1led=(led<<1)+1;循環(huán)結(jié)構(gòu)設(shè)計(jì)流水燈程序8次P1=常數(shù)1…………延時(shí)1秒P1=常數(shù)2延時(shí)1秒P1=常數(shù)8延時(shí)1秒滿(mǎn)8次嗎否是循環(huán)體語(yǔ)句組:P1=led;延時(shí)Led=(led<<1)+1;變量led賦初始值0xfe循環(huán)結(jié)構(gòu)設(shè)計(jì)流水燈程序voidmain() {unsignedchar i,led;P1M0=0x00;P1M1=0X00;while(1){
led=0xfe;
for(i=0;i<8;i++) { P1=led; delay_ms(1000); led=led<<1; led=led+1; }}}外循環(huán)體內(nèi)循環(huán)體滿(mǎn)8次?否是循環(huán)體語(yǔ)句組:P1=led;延時(shí)Led=(led<<1)+1;變量賦初始值循環(huán)結(jié)構(gòu)之流水燈程序小結(jié)初始化循環(huán)控制循環(huán)體100%循環(huán)結(jié)構(gòu)程序設(shè)計(jì)魯迅先生說(shuō):偉大的成績(jī)和辛勤勞動(dòng)是成正比例的,有一分勞動(dòng),就有一分收獲,日積月累,從少到多,奇跡就可以創(chuàng)造出來(lái)。voidmain() {unsignedchari,led;
P1M0=0x00;P1M1=0X00;while(1){ led=0xfe; for(i=0;i<8;i++) {P1=led; delay(1000); led=led<<1; led=led+1;}}}實(shí)例任務(wù)循環(huán)結(jié)構(gòu)實(shí)現(xiàn)流水燈庫(kù)函數(shù)標(biāo)準(zhǔn)庫(kù)函數(shù)是由C51編譯器提供的,用戶(hù)可以直接調(diào)用,以頭文件的形式給出//STC15.HsfrP0=0x80;sbitP00=P0^0;sbitP01=P0^1;sbitP02=P0^2;sbitP03=P0^3;sbitP04=P0^4;sbitP05=P0^5;sbitP06=P0^6;sbitP07=P0^7;intrins.h庫(kù)函數(shù)Intrins.h功能_cror_(v,n)將字符型數(shù)據(jù)向右環(huán)移若干位_crol_(v,n)將字符型數(shù)據(jù)向左環(huán)移若干位_iror_(v,n)將整形型數(shù)據(jù)向右環(huán)移若干位_irol_(v,n)將整形型數(shù)據(jù)向左環(huán)移若干位_lror_(v,n)將長(zhǎng)整形型數(shù)據(jù)向右環(huán)移若干位_lrol_(v,n)將長(zhǎng)整形型數(shù)據(jù)向左環(huán)移若干位_nop_()空操作,相當(dāng)于匯編語(yǔ)言中的NOPv為變量,n為移位的位數(shù)環(huán)移函數(shù)_crol_(led,1)環(huán)移是指數(shù)據(jù)在內(nèi)部進(jìn)行循環(huán)移位,最高位和最低位不會(huì)丟棄也不會(huì)填01111111011111101
voidmain() {P1M0=0x00;P1M1=0X00;unsignedchar i,led;while(1){
led=0xfe;for(i=0;i<8;i++){ P1=led; delay_ms(1000); led=led<<1;led=led+1;} }}voidmain() {P1M0=0x00;P1M1=0X00;unsignedcharled;led=0xfe;while(1){ P1=led; delay_ms(1000); led=_crol_(led,1);}}庫(kù)函數(shù)intrins.h庫(kù)函數(shù)中的移位操作函數(shù)小結(jié)用庫(kù)函數(shù)中的環(huán)移函數(shù)設(shè)計(jì)了流水燈程序函數(shù)定義和調(diào)用
自定義函數(shù)是用戶(hù)根據(jù)需要自行編寫(xiě)的函數(shù),它必須先定義再調(diào)用。voiddelay_ms(unsignedintms){unsignedinti;
do{ i=MAIN_Fosc/13000; while(--i);}while(--ms);}voidmain() {P1M0=0x00;P1M1=0X00;unsignedchari,led;led=0xfe;while(1){ P1=led; delay_nms(1000); led=_crol_(led,1);}}函數(shù)調(diào)用函數(shù)定義自定義函數(shù)voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i);}while(--ms);}函數(shù)類(lèi)型函數(shù)名(形式參數(shù)表){局部變量定義函數(shù)體語(yǔ)句return表達(dá)式;}自定義函數(shù)voidmove_left(unsignedcharval){unsignedchari;P1=val;for(i=0;i<8;i++) { delay_ms(1000); P1=_crol_(P1,1); }}voidmain(void){P1M0=0x00;P1M1=0X00;unsignedcharled;while(1){ led=0xfe;move_left(led);led=0x7f;move_right(led);}}設(shè)計(jì)2個(gè)函數(shù),函數(shù)功能是分別是流水燈D1~D8逐個(gè)移動(dòng)和D8~D1逐個(gè)移動(dòng),在主函數(shù)中調(diào)用函數(shù),實(shí)現(xiàn)流水燈正反向反復(fù)流動(dòng)。voidmove_right(unsignedcharval){unsignedchari;P1=val;for(i=0;i<8;i++) { delay_ms(1000); P1=_cror_(P1,1); }}voidmain() {P1M0=0x00;P1M1=0X00;unsigned char led;led=0xfe;while(1){
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東南方職業(yè)學(xué)院《高爾夫技術(shù)實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 農(nóng)產(chǎn)品加工業(yè)項(xiàng)目風(fēng)險(xiǎn)分析和評(píng)估報(bào)告
- 廣東司法警官職業(yè)學(xué)院《中醫(yī)全科醫(yī)學(xué)概論(含整合醫(yī)學(xué)概論)》2023-2024學(xué)年第二學(xué)期期末試卷
- 撫順師范高等專(zhuān)科學(xué)校《小球類(lèi)(乒乓球)》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京郵電大學(xué)《快題專(zhuān)題訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東省深圳實(shí)驗(yàn)校2025屆初三下期第一次月考物理試題試卷含解析
- 泉州工程職業(yè)技術(shù)學(xué)院《建筑結(jié)構(gòu)試驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京市海淀區(qū)2024-2025 學(xué)年第二學(xué)期期中練習(xí)(一模)數(shù)學(xué)試題(含答案)
- 2025年加工承攬合同范本示例
- 2025網(wǎng)站開(kāi)發(fā)合同書(shū)范本
- 國(guó)旗護(hù)衛(wèi)工作總結(jié)
- 2024年河南藝術(shù)職業(yè)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 冠心病合并糖尿病課件
- 2022撬裝式承壓設(shè)備系統(tǒng)制造監(jiān)督檢驗(yàn)技術(shù)導(dǎo)則
- 2021年江蘇省徐州市中考數(shù)學(xué)試卷(學(xué)生版)
- 供水客服培訓(xùn)課件
- 保潔管理目視化服務(wù)標(biāo)準(zhǔn)手冊(cè)
- 2023年10月中國(guó)互聯(lián)網(wǎng)發(fā)展基金會(huì)招考2名工作人員筆試歷年高頻考點(diǎn)-難、易錯(cuò)點(diǎn)薈萃附帶答案詳解
- 教、學(xué)、評(píng)一體化的小學(xué)語(yǔ)文課堂作業(yè)設(shè)計(jì)研究
- 2022年初中英語(yǔ)新課標(biāo)解讀課件
- 吊籃施工日常檢查表
評(píng)論
0/150
提交評(píng)論