單片機應用技術-基于STC15系列單片機 課件全套 張瑋 項目1-6 點亮一個LED燈 -智能測溫系統(tǒng)的實現_第1頁
單片機應用技術-基于STC15系列單片機 課件全套 張瑋 項目1-6 點亮一個LED燈 -智能測溫系統(tǒng)的實現_第2頁
單片機應用技術-基于STC15系列單片機 課件全套 張瑋 項目1-6 點亮一個LED燈 -智能測溫系統(tǒng)的實現_第3頁
單片機應用技術-基于STC15系列單片機 課件全套 張瑋 項目1-6 點亮一個LED燈 -智能測溫系統(tǒng)的實現_第4頁
單片機應用技術-基于STC15系列單片機 課件全套 張瑋 項目1-6 點亮一個LED燈 -智能測溫系統(tǒng)的實現_第5頁
已閱讀5頁,還剩488頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

單片機應用技術課程概述課程性質:專業(yè)基礎課

學分:5課時:80內容:使用C51語言進行單片機應用系統(tǒng)設計課程考核態(tài)度性評價知識性評價技能性評價網絡平臺作業(yè)隨堂測試階段測試項目評價1項目評價2項目評價3項目評價420%10%10%20%10%10%10%10%課程內容1點亮一個LED燈2開關控制多燈閃爍的實現3搶答器的實現4電子鐘的實現5密碼鍵盤的實現系統(tǒng)方案設計硬件電路設計軟件程序設計硬件軟件聯調C51如何學習單片機?任務1.1初識單片機什么是單片機?

單片機的全稱是單片微型計算機,它是微型計算機發(fā)展歷程中的一個重要分支,是集成在一塊芯片上,專門用于檢測控制的微型計算機。什么是單片機?微型計算機常用于桌面輔助辦公和設計,所以體積較大,運算能力較強。運算器、控制器輸入設備輸出設備存儲器什么是單片機?輸入接口設備輸出接口設備運算器控制器存儲器輸入設備輸出設備單片機內部同樣有中央處理器單元(CPU),并行I/O口和串行I/O口負責信息的輸入和輸出,數據存儲器RAM和程序存儲器ROM,還有定時器/計數器和中斷系統(tǒng)。單片機主要嵌入到電子產品中起核心控制作用,又稱為微控制器(Micro-ControllerUnit,簡稱MCU)。單片機的特點100%單片機的特點體積小、重量輕、價格低、功能強。電源單一、功耗低、可靠性高、抗干擾能力強,能夠滿足工業(yè)控制的需求。品種齊全、形式多樣,能夠提供豐富的功能和性價比的選擇。結構簡單、技術成熟、容易掌握、開發(fā)周期短。單片機的應用應用領域智能家電網絡與通信工業(yè)控制導航與控制智能儀器儀表汽車電子智能家電智能冰箱、智能洗衣機、智能風扇、智能控制燈單片機的應用智能儀器儀表稱重儀、溫控器、計數器、智能醫(yī)療儀器單片機的應用汽車電子交互式汽車顯示系統(tǒng)、輪胎壓力檢測系統(tǒng)、汽車防盜系統(tǒng)、汽車雨刷、燈光智能控制系統(tǒng)、汽車電子油門控制器單片機的應用網絡與

通信無線遙控系統(tǒng)、無線通信系統(tǒng)、串行自動呼叫應答系統(tǒng)單片機的應用工業(yè)控制工業(yè)機器人控制、生產過程自動控制單片機的應用導航與

控制導彈控制,智能武器裝置單片機的應用

單片機按照可以處理的二進制位數分,主要分為4位、8位、16位、32位單片機。盡管單片機種類很多,目前在我國使用最廣泛的還是8位的51單片機。單片機的分類按照可以處理的二進制位數

各大公司MC51單片機簡介

8051是美國INTEL公司生產的一系列單片機中最典型的產品,通常將以8051為基核的單片機統(tǒng)稱為MCS51單片機,也就是51單片機。INTEL核心技術授權AtmelPhilipsWinbondLGSST宏晶......AT89C51/52/53......P80C51/52/54......W78E51/52......GMS90/97......SST89C54/58......STC15............

采用8051的核心技術開發(fā)的單片機,它們的內部資源分布、功能定義、指令代碼編寫基本上一樣,本課程中的程序對它們都是通用的,不需做任何修改,也就是學會其中一種51單片機的操作,其他型號單片機也都會操作了。芯片選擇INTEL核心技術授權宏晶STC15W4K32S4

大容量片內RAM存儲器;6通道15位專門的高精度PWM通道;高速增強型8051內核,速度比傳統(tǒng)8051快7-12倍;超強抗干擾;大幅度降低EMI;超低功耗;什么是單片機應用系統(tǒng)?CPU輸入設備輸出設備軟件系統(tǒng)+單片機應用系統(tǒng)硬件系統(tǒng)輸入接口設備輸出接口設備運算器控制器存儲器硬件是應用系統(tǒng)的基礎軟件是在硬件的基礎上對其資源進行合理調配和使用,從而完成應用系統(tǒng)所要求的任務,二者相互依賴,缺一不可單片機的應用系統(tǒng)及其開發(fā)流程明確任務系統(tǒng)方案設計硬件電路設計軟件程序設計需求分析,明確功能性需求和非功能性需求,確定產品技術指標包括設計硬件電路和制作電路板。包含系統(tǒng)的構成模塊,單片機芯片的選型、外部元器件配置、軟硬件劃分等??梢砸韵到y(tǒng)框圖形式體現。根據設計要求,編寫控制程序,一般用C51語言,KeiluVision開發(fā)環(huán)境軟硬件聯調排除硬件電路問題和程序中的問題,可以使用學習板或者Proteus仿真軟件。單片機應用系統(tǒng)的調試方式ISP下載方式的實驗板軟件仿真調試KeilC51軟件

可以提供基于單片機芯片資源的軟件仿真;2.Proteus軟件

軟件提供原理圖布圖、代碼調試和單片機與外圍電路協同仿真的功能。單片機中的數與單位

單片機是一種可編程的數字電路芯片,采用TTL電平信號,有邏輯“0”和邏輯“1”兩個電平狀態(tài)。

在電源電壓為5V的單片機電路中,2.4V以上表示高電平(邏輯1),0.8V以下表示低電平(邏輯0)。十進制數二進制數十六進制數000000100011200102300113401004501015601106701117810008910019101010A111011B121100C131101D141110E151111F在C51語言代碼中:十進制數:直接表示。如16,-39.十六進制數:用數字0和字母x或X開頭。如0x23,0X7a。單片機中數的表示

位(bit)

字節(jié)(Byte)字長單片機能表示的最小數據單位,即一位二進制數,有0和1兩種取值。處理器一次可以并行處理的二進制位數,通常是數據總線的位數,是微處理器的重要指標,常見的處理器字長有8位,16位,32位。

B7B6B5B4B3B2B1B0由8位二進制數組成,通常單片機里的存儲單元以字節(jié)為單位

單位常見的二進制數量單位:K,M,G。1K=210=1024;1M=1K×1K=220;1G=1K×1M=230。

支持國產芯片,把國家、社會、公民的價值要求融為一體,提高個人的愛國、敬業(yè)、誠信、友善修養(yǎng),自覺把小我融入大我,實現人生價值,升華人生境界。

芯片選擇單片機的發(fā)展趨勢低功耗化的效應不僅是功耗低,而且?guī)砹水a品的高可靠性、高抗干擾能力以及產品的便攜化??垢蓴_能力強單片機都具有多種封裝形式,其中SMD(表面封裝)越來越受歡迎。小體積更大的程序存儲器和數據存儲器,不用外部擴展大容量CMOS芯片除了低功耗特性之外,還具有功耗的可控性,使單片機可以工作在功耗精細管理狀態(tài)。CMOS化一個芯片就是一個“測控”系統(tǒng)低價格和外圍電路內裝化主要是指進一步改進CPU的性能,加快指令運算的速度和提高系統(tǒng)控制的可靠性。高性能如何學習單片機?動手組裝實驗板合理安排時間持之以恒遇到問題耐心檢查

適當投資購買實驗器材蜂鳴器,流水燈,數碼管,液晶顯示,獨立鍵盤,矩陣鍵盤,AD/DA,串口認真學習課程理論單片機學習開發(fā)環(huán)境的建立(1)單片機與外圍電路協同仿真Proteus軟件單片機學習開發(fā)環(huán)境的建立(2)單片機軟件開發(fā)系統(tǒng)keil單片機學習開發(fā)環(huán)境的建立(3)STC下載軟件任務1.2點亮一個LED燈教學內容點亮一個LED燈了解單片機應用系統(tǒng)的開發(fā)過程單片機點亮LED燈的硬件電路設計單片機點亮LED燈的程序編寫單片機系統(tǒng)開發(fā)軟件Keil的使用單片機系統(tǒng)仿真軟件Proteus的使用點亮一個LED燈單片機模塊LED燈模塊整體設計什么是LED?LED:全稱為發(fā)光二極管,是半導體二極管的一種,把電能轉換成光能,即實現單向導電并發(fā)光。發(fā)光二極管電路符號直插式發(fā)光二極管貼片式發(fā)光二極管負極比正極短發(fā)光二極管的顏色代表了它發(fā)光時的顏色什么是LED?單燈亮電路連接

不同類型和顏色的發(fā)光二極管,正向導通電壓不同,一般在1.6-2.4V。流過發(fā)光二極管的電流一般在2-20mA左右可以發(fā)光,電流越大,亮度越強,但電流過大會燒毀二極管。

為了限制流過發(fā)光二極管的電流不要過大,需要串聯一個電阻,該電阻稱為“限流電阻”。

如果發(fā)光二極管的正向導通電壓是2V,限流電阻的阻值是1k?,則根據歐姆定律,流過發(fā)光二極管的電流是:

該電流的大小可以通過改變限流電阻的阻值大小來調節(jié)。單燈亮電路連接

單片機的P1.0引腳具有輸入/輸出的作用,當輸出低電平時,LED燈點亮,輸出高電平,LED燈熄滅。其他電路連接是單片機最小系統(tǒng)電路。單燈亮電路連接灌電流:mA單片機控制LED電路連接圖拉電流:200uA單燈亮電路連接Proteus仿真軟件簡介

使用Proteus8.9Professional版本,它可以在計算機上實現原理圖繪制、單片機代碼級調試與仿真的電子設計研發(fā)過程。任務

點亮一個LED燈教學內容點亮一個LED燈了解單片機應用系統(tǒng)的開發(fā)過程單片機點亮LED燈的硬件電路設計單片機系統(tǒng)開發(fā)軟件Keil的使用單片機系統(tǒng)仿真軟件Proteus的使用單片機點亮LED燈的程序編寫點亮LED燈程序編寫#include<stc15.h> //包含針對stc15系列單片機的基本聲明sbitLED=P10; //宏定義,用符號LED表示P1.0引腳voidmain(){

LED=0; //將P1.0設置為低電平,點亮發(fā)光二極管 while(1);

//原地踏步}

由于P1.0引腳接LED的陰極,LED的陽極通過1k?限流電阻連接到+5V電源上,所以P1.0引腳輸出低電平就可以點亮LED。點亮LED燈的程序如下:KeilμVision軟件介紹

KeilμVision軟件是目前較為流行的開發(fā)51單片機的軟件,它支持眾多不同公司的MCS51架構的芯片,集編輯、編譯、仿真等功能于一體。本書中使用KeilμVision4。新建并保存工程新建并保存程序文件將文件添加到工程編輯調試程序生成HEX文件STC-ISP軟件介紹通過STC-ISP軟件將LED.hex文件下載到口袋實驗板的單片機芯片中,觀察效果。任務拓展——單燈閃爍的實現開始P1.0引腳輸出低電平延時P1.0引腳輸出高電平延時燈亮燈滅任務拓展——單燈閃爍的實現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); }}

理論指導實踐,實踐檢驗理論。

理論指導實踐,實踐豐富理論。單片機的應用謝謝觀看!項目二聲光報警器的實現聲光報警器的實現按鍵模塊單片機模塊LED發(fā)光二極管模塊聲光報警器的實現蜂鳴器鳴叫的實現聲光報警器的實現多燈閃爍的實現內部結構、外部引腳C51語言的基本結構及特點內部存儲器結構C51語言的數據類型并行I/O口的結構及工作模式C51語言的運算符任務2-1蜂鳴器鳴叫的實現任務介紹任務:使用STC15W4K32S4單片機控制一個蜂鳴器鳴叫。蜂鳴器鳴叫電路設計蜂鳴器鳴叫器件清單序號名稱Proteus中元件名參數數量1單片機STC15W4K32S412PNP三極管2N70313電阻RES1kΩ14有源蜂鳴器BUZZEROperatingVoltage:2V1蜂鳴器鳴叫的實現STC15W4K32S4單片機STC15W4K32S4蜂鳴器鳴叫的實現STC15W4K32S4單片機有源蜂鳴器蜂鳴器鳴叫的實現無源蜂鳴器

蜂鳴器是一種一體化結構的電子訊響器,它廣泛應用于計算機、打印機、電子玩具、儀器儀表和工控設備等電子產品中作發(fā)聲或警報器件。內部帶有振蕩源,只要接通電源,蜂鳴器就會鳴叫。無源蜂鳴器由于其內部不帶振蕩源,因此直接用直流信號驅動是無法另其鳴叫的,必須用500Hz~5kHz的方波去驅動它。STC15W4K32S4單片機內部結構時鐘電路CPUROMRAMT0T1中斷系統(tǒng)串行接口并行接口P0P1P2P3TXDRXDINT0INT1定時計數器經典的51單片機的片內結構蜂鳴器鳴叫的實現STC15W4K32S4單片機內部結構CPU存儲器并行/串行接口定時器/計數器中斷高精度RC時鐘高可靠復位掉電喚醒專用定時器、比較器、看門狗、高速AD·······蜂鳴器鳴叫的實現STC15W4K32S4單片機引腳電源引腳Vcc(電源正)、Gnd(地)其他引腳I/O口、多功能引腳并行I/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蜂鳴器鳴叫的實現單片機最小系統(tǒng)用最少的元件組成的可以工作的單片機系統(tǒng)。單片機的最小系統(tǒng)電源時鐘電路復位電路片內集成外接蜂鳴器鳴叫的實現單片機最小系統(tǒng)14號引腳Vcc:5V電壓正16號引腳Gnd:電源地蜂鳴器鳴叫的實現單片機最小系統(tǒng)單片機的最小系統(tǒng)電源時鐘電路片內RC時鐘復位電路片內專用復位電路

STC-ISP軟件設置外接直流5V電源蜂鳴器鳴叫的實現單片機最小系統(tǒng)單片機的最小系統(tǒng)電源時鐘電路片內RC時鐘外接時鐘電路復位電路片內專用復位電路外接復位電路直接輸入時鐘信號XTAL1和XTAL2外接晶振蜂鳴器鳴叫的實現任務2-2多燈閃爍的實現任務介紹任務:使用STC15W4K32S4單片機控制P1口接的8個LED燈閃爍。任務硬件設計單燈閃爍器件清單任務硬件設計多燈閃爍器件清單序號名稱Proteus中元件名參數數量1單片機STC15W4K32S412LED發(fā)光二極管LED-RED83電阻RES1kΩ8多燈閃爍流程蜂鳴器鳴叫流程任務軟件設計開始P3.6輸出低電平P3.6輸出高電平延時延時開始P1.0~P1.7輸出低電平P1.0~P1.7輸出低電平延時延時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); }}任務軟件設計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); 任務軟件設計P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.000000000P10x00111111110xFF開始P1.0~P1.7輸出低電平P1.0~P1.7輸出低電平延時延時開始P1=0x00;P1=0xFF;延時延時#include<stc15.h>//包含stc15頭文件voiddelay_ms(unsignedintms);//函數聲明#defineMAIN_Fosc11059200L//定時主時鐘

voidmain() //主函數

{while(1){

P1=0x00; delay_ms(500);

P1=0xFF; delay_ms(500); }}任務軟件設計開始P1=0x00;P1=0xFF;延時延時//延時ms*1毫秒函數voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i);

}while(--ms);}STC15W4KS32單片機的存儲器結構RAM:RandomAccessMemory數據和中間結果ROM:Read-OnlyMemory程序和固定數據哈佛結構0123450123456789AB6789ABSTC15W4KS32單片機的存儲器結構RAMROMROM7FFFH(32K)0000HROM是程序存儲空間,在KEIL編譯環(huán)境中,編寫編譯好的HEX文件最終會下載到ROM中。不同型號的單片機ROM的容量不一樣:在單片機型號中“STC15W4K32S4”,代表ROM的大小是32KB。沒有訪問外部程序存儲器的總線,不能訪問外部程序存儲器。用戶程序區(qū)中斷入口0003-00BB起始單元0000-0002ProgramFlashMemorySTC15W4KS32單片機的存儲器結構RAMROM基本RAM0000H0EFFH外部內部擴展RAM(3840B)內部RAM00HFFH7FH80H內部RAM(高128B)(低128B)特殊功能寄存器0000HFFFFH外部外部擴展RAM(64KB)STC15W4KS32單片機的特殊功能寄存器可位尋址特殊功能寄存器:字節(jié)地址能夠被8整除不可位尋址特殊功能寄存器STC15W4KS32單片機的存儲器結構FFH80H特殊功能寄存器特殊功能寄存器SFR(SpecialFunctionRegister):與芯片的引腳有關,如P0-P5,實際上是6個鎖存器,每個鎖存器加上相應的輸出驅動器和緩沖器就構成了一個并行I/O口。對片內各個功能模塊進行管理、控制、監(jiān)視的控制寄存器和狀態(tài)寄存器。C51語言的數據類型C語言數據類型基本數據類型整型字符型實型構造類型數組結構體struct共用體union枚舉enum指針類型空類型voidC51語言擴展數據類型位類型bit特殊功能寄存器sfr16位特殊功能寄存器sfr16特殊功能寄存器可尋址位sbitC51語言的基本數據類型C51語言基本數據類型整型基本整型int有符號signed無符號unsigned長整型long有符號signed無符號unsigned字符型字符型char有符號signed無符號unsigned實型單精度浮點型floatC51語言的基本數據類型類型符號關鍵字所占位數字節(jié)數值域字符型有(signed)char81-128~127無unsignedchar810~255基本整型有(signed)int162-32768~32767無unsignedint1620~65535單精度實型有float3243.4e-38~3.4e38C51語言的基本數據類型inti;#include<stc15.h>//包含stc15頭文件voiddelay_ms(unsignedintms);//函數聲明#defineMAIN_Fosc11059200L//定時主時鐘

voidmain() //主函數

{while(1){

P1=0x00; delay_ms(500);

P1=0xFF; delay_ms(500); }}//延時ms*1毫秒函數voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i);

}while(--ms);}charunsignedcharsignedcharintunsignedintsignedintlongunsignedlongsignedlongC51語言的擴展數據類型C51語言擴展數據類型特殊功能寄存器sfr16位特殊功能寄存器sfr16特殊功能寄存器可尋址位sbit位類型bit關鍵字所占位數值域sfr8位0~255sfr1616位0~65535sbit1位0~1bit1位0~1C51語言的擴展數據類型sfr用戶標識符=

特殊功能寄存器地址;

特殊功能寄存器名

#include<stc15.h>//包含stc15頭文件voiddelay_ms(unsignedintms);//函數聲明#defineMAIN_Fosc11059200L//定時主時鐘

voidmain() //主函數

{while(1){

P1=0x00; delay_ms(500);

P1=0xFF; delay_ms(500); }}C51語言的擴展數據類型sfr16

特殊功能寄存器名

16位特殊功能寄存器的低字節(jié)地址;sfrDPL=0x82;//0000,0000數據指針低字節(jié)sfrDPH=0x83;//0000,0000數據指針高字節(jié)sfr16DPTR=0x82;//0000,000016位數據指針寄存器C51語言的擴展數據類型sbit位名

特殊功能寄存器名^i(i=0~7);sbitLED=P1^0; //定義P1.0口為LED#defineLEDP10謝謝!任務2-3聲光報警器的實現任務介紹任務:實現一個開關控制1個LED發(fā)光二極管和1個有源蜂鳴器。初始狀態(tài)下,開關斷開,LED燈熄滅,蜂鳴器不發(fā)聲;當開關閉合時,LED燈閃爍并且蜂鳴器滴滴鳴叫,實現聲光報警。任務軟件設計開關SW模塊LED燈器件名稱功能分配I/O口開關SW輸入P3.2發(fā)光二極管LED輸出P1.0蜂鳴器輸出P3.6蜂鳴器任務硬件設計開關控制多燈閃爍仿真器件清單序號名稱Proteus中元件名參數數量1單片機STC15W4K32S412LED發(fā)光二極管LED-BIGY13PNP三極管2N70314有源蜂鳴器BUZZER15電阻RES1kΩ26電阻RES10kΩ17開關SWITCH1任務硬件設計任務軟件設計01開始P1.0和P3.6跟隨P3.2口的狀態(tài)值P1.0和P3.6口置1延時延時任務軟件設計#include<stc15.h>//包含stc15頭文件voiddelay_ms(unsignedintms);//函數聲明#defineMAIN_Fosc11059200L//定時主時鐘

voidmain() //主函數

{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;開始P1.0和P3.6跟隨P3.2口的狀態(tài)值P1.0和P3.6口置1延時延時D1=1;BUZZ=1; delay_ms(500);任務軟件設計#include<stc15.h>//包含stc15頭文件voiddelay_ms(unsignedintms);//函數聲明#defineMAIN_Fosc11059200L//定時主時鐘

sbitS1=P3^2;sbitD1=P1^0;sbitBUZZ=P3^6;voidmain() //主函數

{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); }}//延時ms*1毫秒函數voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i);

}while(--ms);}軟硬件調試STC15W4KS32單片機的并行I/O口開關SW模塊LED燈模塊器件引腳輸入開關SWP3.2輸出LED發(fā)光二極管P1.0輸出蜂鳴器P3.6I/O位名稱P0P0.0~P0.7P1P1.0~P1.7P2P2.0~P2.7P3P3.0~P3.7P4P4.0~P4.7P5P5.3\P5.4蜂鳴器STC15W4KS32單片機的并行I/O口PnM1[7:0](n=0,1,2,3,4,5)PnM0[7:0](n=0,1,2,3,4,5)工作模式00準雙向口01推挽輸出10高阻輸入11開漏輸出I/O口寄存器名稱P0P0M1、P0M0P1P1M1、P1M0P2P2M1、P2M0P3P3M1、P3M0P4P4M1、P4M0P5P5M1、P5M0STC15W4KS32單片機的并行I/O口工作模式描述準雙向口傳統(tǒng)8051單片機I/O口模式,灌電流可達20mA,拉電流為150uA~270uA。推挽輸出強上拉輸出,拉電流可達20mA,需外接限流電阻。高阻輸入電流既不能流入也不能流出。開漏輸出內部上拉電阻斷開,開漏模式既可讀外部狀態(tài)也可對外輸出(高電平或低電平)。如果要正確讀外部狀態(tài)或需要對外輸出高電平,需要外加上拉電阻,否則讀不到外部狀態(tài),也對外輸不出高電平。STC15W4KS32單片機的并行I/O口配置位配置值工作模式P0M1.7P0M0.700P0.7準雙向口P0M1.6P0M0.610P0.6高阻輸入P0M1.5P0M0.501P0.5推挽輸出P0M1.4P0M0.411P0.4開漏輸出P0M1.3(2/1/0)P0M0.3(2/1/0)00P0.3~P0.0準雙向口IO_Init()//P0口工作模式配置函數{ P0M0=0x30; //00110000P0M1=0x50;//01010000}I/O口寄存器名稱P0P0M1、P0M0P1P1M1、P1M0P2P2M1、P2M0P3P3M1、P3M0P4P4M1、P4M0P5P5M1、P5M0STC15W4KS32單片機的并行I/O口引腳名稱前一次ISP燒錄程序時的功能上電復位后I/O口工作模式P1.6/XTAL2XTAL2高阻輸入P1.6準雙向口P1.7/XTAL1XTAL1高阻輸入P1.7準雙向口P5.4/RSTRST復位腳P5.4準雙向口STC15W4KS32單片機的并行I/O口P1口和P3口:準雙向口。STC15單片機的準雙向口模式端口寄存器引腳晶體管狀態(tài)11極弱上拉、弱上拉晶體管打開10極弱上拉打開,弱上拉關閉1懸空極弱上拉打開0到1跳變0到1跳變強上拉打開,加快引腳上0到1的跳變。1001001STC15單片機的準雙向口模式010110準雙向口:作為普通輸入口使用時,必須先向端口鎖存器寫“1”,使得接地的晶體管截止,以避免鎖存器為“0”狀態(tài)對引腳讀入的干擾。STC15單片機的準雙向口模式P3.2口:準雙向口模式輸入口。voidmain() //主函數

{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運算符賦值運算符算術運算符邏輯運算符基本運算符關系運算符位運算符算術運算符賦值運算符算術運算符邏輯運算符基本運算符關系運算符位運算符+,-*,/,%乘號”*“不可省略。C51表達式:10*value數學表達式:10value算術運算符賦值運算符算術運算符邏輯運算符基本運算符關系運算符位運算符+,-*,/,%參與取余運算的運算對象必須都是整型數,運算結果等于兩個整數相除后的余數。19/10C51表達式的值是119.0/10C51表達式的值是1.9對整型數進行除法運算時,結果向零取整。對實型數進行除法運算,結果為實型數。算術運算符賦值運算符算術運算符邏輯運算符基本運算符關系運算符位運算符+,-*,/,%min/10min%10算術運算符賦值運算符算術運算符邏輯運算符基本運算符關系運算符位運算符++,--voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i);

}while(--ms);}i=i-1;while(i);前綴形式后綴形式關系運算符賦值運算符算術運算符邏輯運算符基本運算符關系運算符位運算符>、>=、<、<===,!=voidmain() {

while(1){if(SW==0) { …… }else …… }}邏輯運算符賦值運算符算術運算符邏輯運算符基本運算符關系運算符位運算符&&、||、!賦值運算符賦值運算符算術運算符邏輯運算符基本運算符關系運算符位運算符簡單賦值運算符復合賦值運算符變量=

常量或變量或表達式=賦值運算符#include<stc15.h>//包含stc15頭文件voiddelay_ms(unsignedintms);//函數聲明#defineMAIN_Fosc11059200L//定時主時鐘

#defineSWP32voidmain() //主函數

{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); }}//延時ms*1毫秒函數voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i);

}while(--ms);}賦值運算符賦值運算符算術運算符邏輯運算符基本運算符關系運算符位運算符簡單賦值運算符復合賦值運算符+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=等等。

變量雙目運算符=表達式;等價于:變量=變量雙目運算符表達式;位運算符賦值運算符算術運算符邏輯運算符基本運算符關系運算符位運算符移位運算符邏輯位運算符>><<&|^~P1=0x81;P1=P1<<1;10000001左移前00000010左移后補0丟棄謝謝!單片機C語言程序設計項目搶答器的實現搶答器的實現任務目錄任務一開關控制LED燈顯示任務二數碼管顯示按鍵按下次數任務三多路搶答器的實現開關控制LED燈顯示任務介紹開關閉合,8個LED燈依次點亮,實現流水燈效果;開關斷開,8個LED燈全亮。硬件電路單片機最小系統(tǒng)電路、8個LED燈電路、開關電路軟件設計雙分支結構實現程序,識別閉合時,實現流水燈;否則,8個LED全部點亮。開關控制LED燈顯示1順序結構程序設計2選擇結構程序設計3循環(huán)結構程序設計4函數、數組主要內容5按鍵、數碼管順序結構程序設計AB按照程序中語句書寫的順序從上到下一條一條依次執(zhí)行概念任務分析首先點亮D1,保持一段時間后,熄滅D1,點亮D2,保持一段時間后,熄滅D2,點亮D3……依次類推,直到點亮D8,然后停止流水燈效果流水燈電路序號名稱Proteus中元件名參數數量1單片機STC15W4K32S412LED燈LED-RED

83排阻RX81K1流水燈控制原理端口的控制電平為低,LED燈亮;端口的控制電平為高,LED燈滅端口數據D8D7D6D5D4D3D2D1狀態(tài)1滅滅滅滅滅滅滅亮端口數據:0XFE11111110狀態(tài)2滅滅滅滅滅滅亮滅端口數據:0XFD11111101狀態(tài)3滅滅滅滅滅亮滅滅端口數據:0XFB11111011流水燈程序設計端口數據D8D7D6D5D4D3D2D10xfe滅滅滅滅滅滅滅亮0xfd滅滅滅滅滅滅亮滅0xfb滅滅滅滅滅亮滅滅0xf7滅滅滅滅亮滅滅滅0xef滅滅滅亮滅滅滅滅0xdf滅滅亮滅滅滅滅滅0xbf滅亮滅滅滅滅滅滅0x7f亮滅滅滅滅滅滅滅通過賦值語句分8次將數據依次輸出到P1口流水燈程序設計P1=0XFE…………延時P1=0XFD延時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); }}主函數賦值語句函數調用語句P1=0X7F延時流水燈工作的原理、設計流程、源程序51單片機順序結構程序設計的原理和方法小結if語句if–else語句

選擇語句選擇結構程序設計開關控制燈序號名稱Proteus中元件名參數數量1單片機STC15W4K32S412LED燈LED-RED

13排阻RX81K14按鍵button1選擇結構程序設計LED燈開關原理按鍵按下時,P3.2=0按鍵松開時,P3.2=1P1=0xFFP1=0x00LED開關程序設計if(表達式)語句語句YN表達式條件:判斷P3.2電平的高低狀態(tài)執(zhí)行語句:P1輸出高低電平LED開關程序設計#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)判斷操作關系運算符==而非賦值運算符=sbitSW=P3^2LED開關程序設計if(表達式)語句1else

語句2P1=0x00P1=0xff高低P3.2語句1語句2真假表達式LED開關程序設計#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語句LED開關的工作原理51單片機分支結構程序設計小結If語句和if-else語句實現了LED開關國家法律、國家利益、人民利益高于一切。我們不僅要學好專業(yè)知識,有高超的專業(yè)技術能力,設計出高質量的產品,還要具有強烈的法制意識,高尚的職業(yè)道德,良好的技術操守,為我們的國家我們的社會貢獻自己的力量。if–elseif-else語句switch語句

選擇語句多分支結構程序設計開關控制燈序號名稱Proteus中元件名參數數量1單片機STC15W4K32S412LED燈LED-RED

43排阻RX81K14按鍵button4多分支語句if(表達式1)語句1elseif(表達式2)語句2…………elseif(表達式n)語句nelse語句n+1條件是按鍵引腳上電平的高低,語句i是LED引腳上輸出高低電平LED開關分析要求:4個按鍵對應4個指示燈,S1按下,僅D1亮,S2按下,僅D2亮,S3按下,僅D3亮,S4按下,僅D4亮,其他情況,燈全滅。LED開關分析要求:4個按鍵對應4個指示燈,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個LED開關程序設計#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;}}}復合語句關系運算符==邏輯運算符&&多分支語句switch(表達式){case常量表達式1:[語句組1][break;]case常量表達式2:[語句組2][break;]

……

…case常量表達式n:[語句組n][break;][default:語句組n+1]}執(zhí)行過程:先計算表達式的值,然后依次與每一個case中的常量表達式的值進行比較,若有相等的,則從該case開始依次往下執(zhí)行,若沒有相等的,則從default開始往下執(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&二進制數11110000即P3&0xf0位與常量值計算P3口P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0&0xf011110000S1按下:0xe011100000S2按下:0xd011010000S3按下:0xb010110000S4按下:0x7001110000S1S2S3S4S1S2按下:0xc011000000S1-S4按下:0x00000000004個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;//點亮D1 case0xd0:P1=0xfd;break;//點亮D2 case0xb0:P1=0xfb;break;//點亮D3 case0x70:P1=0xf7;break;//點亮D4default:P1=0xff;//否則滅燈} } }存放開關S4~S1的狀態(tài)if-elseif-else語句實現了4路開關LED51單片機多分支結構程序設計小結switch語句實現了4路開關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;//點亮D1 case0xd0:P1=0xfd;break;//點亮D2 case0xb0:P1=0xfb;break;//點亮D3 case0x70:P1=0xf7;break;//點亮D4default:P1=0xff;} } }while(1)無限循環(huán)實例循環(huán)結構程序設計1while語句2do-while語句

3for語句

循環(huán)語句循環(huán)結構程序設計while(表達式){

循環(huán)體語句}循環(huán)體真假表達式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)結構程序設計do{

循環(huán)體語句}while(表達式);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)結構之延時函數/*延時函數*/voiddelay_ms(unsignedintms){unsignedinti;

do{ i=MAIN_Fosc/13000;

while(--i);}while(--ms);}#defineMAIN_Fosc 11059200L //定義主時鐘循環(huán)執(zhí)行i次空操作“;”循環(huán)次數i值的計算i是估算值,時間不精準for語句for(表達式1;表達式2;表達式3){

循環(huán)體語句}YN

表達式2

表達式3

表達式1

循環(huán)體for(i=0;i<10;i++){

循環(huán)體語句}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); //結束}流水燈程序順序結構順序結構循環(huán)結構設計流水燈程序8次P1=0XFE…………延時1秒P1=0XFD延時1秒P1=0X7F延時1秒P1=常數1…………延時1秒P1=常數2延時1秒P1=常數8延時1秒過程不變數據在變數據變量算法表示循環(huán)結構設計流水燈程序“<<”運算端口數據1D7D6D5D4D3D2D10xfe111111100xfd111111010xfb111110110xf7111101110xef111011110xdf110111110xbf101111110x7f011111111111111011111100<<111111101+111111010<<111111011+1led=(led<<1)+1;循環(huán)結構設計流水燈程序8次P1=常數1…………延時1秒P1=常數2延時1秒P1=常數8延時1秒滿8次嗎否是循環(huán)體語句組:P1=led;延時Led=(led<<1)+1;變量led賦初始值0xfe循環(huán)結構設計流水燈程序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)體內循環(huán)體滿8次?否是循環(huán)體語句組:P1=led;延時Led=(led<<1)+1;變量賦初始值循環(huán)結構之流水燈程序小結初始化循環(huán)控制循環(huán)體100%循環(huán)結構程序設計魯迅先生說:偉大的成績和辛勤勞動是成正比例的,有一分勞動,就有一分收獲,日積月累,從少到多,奇跡就可以創(chuàng)造出來。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;}}}實例任務循環(huán)結構實現流水燈庫函數標準庫函數是由C51編譯器提供的,用戶可以直接調用,以頭文件的形式給出//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庫函數Intrins.h功能_cror_(v,n)將字符型數據向右環(huán)移若干位_crol_(v,n)將字符型數據向左環(huán)移若干位_iror_(v,n)將整形型數據向右環(huán)移若干位_irol_(v,n)將整形型數據向左環(huán)移若干位_lror_(v,n)將長整形型數據向右環(huán)移若干位_lrol_(v,n)將長整形型數據向左環(huán)移若干位_nop_()空操作,相當于匯編語言中的NOPv為變量,n為移位的位數環(huán)移函數_crol_(led,1)環(huán)移是指數據在內部進行循環(huán)移位,最高位和最低位不會丟棄也不會填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);}}庫函數intrins.h庫函數中的移位操作函數小結用庫函數中的環(huán)移函數設計了流水燈程序函數定義和調用

自定義函數是用戶根據需要自行編寫的函數,它必須先定義再調用。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);}}函數調用函數定義自定義函數voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i);}while(--ms);}函數類型函數名(形式參數表){局部變量定義函數體語句return表達式;}自定義函數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);}}設計2個函數,函數功能是分別是流水燈D1~D8逐個移動和D8~D1逐個移動,在主函數中調用函數,實現流水燈正反向反復流動。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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論