手把手教你學(xué)51單片機(jī)-C語(yǔ)言版(第3版) 課件全套 宋雪松 第1-14章 如何學(xué)習(xí)單片機(jī) -實(shí)踐項(xiàng)目開發(fā) 智能溫控系統(tǒng)_第1頁(yè)
手把手教你學(xué)51單片機(jī)-C語(yǔ)言版(第3版) 課件全套 宋雪松 第1-14章 如何學(xué)習(xí)單片機(jī) -實(shí)踐項(xiàng)目開發(fā) 智能溫控系統(tǒng)_第2頁(yè)
手把手教你學(xué)51單片機(jī)-C語(yǔ)言版(第3版) 課件全套 宋雪松 第1-14章 如何學(xué)習(xí)單片機(jī) -實(shí)踐項(xiàng)目開發(fā) 智能溫控系統(tǒng)_第3頁(yè)
手把手教你學(xué)51單片機(jī)-C語(yǔ)言版(第3版) 課件全套 宋雪松 第1-14章 如何學(xué)習(xí)單片機(jī) -實(shí)踐項(xiàng)目開發(fā) 智能溫控系統(tǒng)_第4頁(yè)
手把手教你學(xué)51單片機(jī)-C語(yǔ)言版(第3版) 課件全套 宋雪松 第1-14章 如何學(xué)習(xí)單片機(jī) -實(shí)踐項(xiàng)目開發(fā) 智能溫控系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩306頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)第一課:如何學(xué)習(xí)單片機(jī)自動(dòng)化、電子電氣、通信相關(guān)的一門主流技術(shù)ARM嵌入式、FPGA基礎(chǔ)安身立命謀生的本領(lǐng)、畢業(yè)生找工作的敲門磚單片機(jī)學(xué)習(xí)為什么學(xué)習(xí)單片機(jī)單片機(jī)學(xué)習(xí)資深工程師講解真正實(shí)用的技術(shù)和知識(shí)后續(xù)會(huì)在51單片機(jī)基礎(chǔ)上錄制STM32以及嵌入式操作系統(tǒng)的教學(xué)課程形象比喻,通俗易懂,由淺入深為什么學(xué)習(xí)金沙灘的單片機(jī)教程不斷開源項(xiàng)目提供鍛煉機(jī)會(huì)為什么先51單片機(jī)1、簡(jiǎn)單易學(xué),上手快,容易建立學(xué)習(xí)信心。2、資料多,遇到困難解決渠道多。3、開發(fā)板便宜,學(xué)習(xí)成本低。(回饋社會(huì),Kingst51開發(fā)板將以0利潤(rùn)成本價(jià)銷售開發(fā)板)4、為學(xué)習(xí)其他型號(hào)打下良好的基礎(chǔ)。如何學(xué)習(xí)單片機(jī)一個(gè)要領(lǐng):在實(shí)踐中成長(zhǎng)!

四個(gè)步驟0

1鸚鵡學(xué)舌(抄)02照葫蘆畫瓢(仿)03它山之石可以攻玉(鑒)04理論實(shí)踐結(jié)合,溫故知新(思)學(xué)習(xí)條件0

1足夠的信心、恒信和耐心02優(yōu)秀的教程和教材03電腦和Kingst51開發(fā)板學(xué)前準(zhǔn)備0

1編程軟件Keil的安裝02下載程序軟件配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)2-1:認(rèn)識(shí)51單片機(jī)單片機(jī)內(nèi)部三大資源FLASH(程序存儲(chǔ)空間<ROM>)RAM(內(nèi)存)SFR(特殊功能寄存器)51單片機(jī)和STC89C52RC什么是51單片機(jī)?兼容Intel的MCS-51體系架構(gòu)的一系列單片機(jī)。STC89C52RC:8KFLASH、512字節(jié)RAM。1K=1024字節(jié)單片機(jī)最小系統(tǒng)特點(diǎn):?jiǎn)纹瑱C(jī)可以運(yùn)行程序,是單片機(jī)控制系統(tǒng)的核心。復(fù)位電路晶振電路電源電路三要素配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)2-2:認(rèn)識(shí)LED小燈LED小燈(發(fā)光二極管)1、LED小燈依靠電流驅(qū)動(dòng),不同顏色的LED小燈壓降不同。其中紅色和黃色1.8V到2.2V之間,綠色、藍(lán)色和白色在3.0V到3.2V之間。2、紅色貼片LED:電流1到20mA,在1到5mA亮度有所變化,5mA以上亮度基本無(wú)變化。LED發(fā)光二極管電路LED發(fā)光二極管以及限流電阻計(jì)算

歐姆定律:R=U/IR=3V/0.02A=150ΩR=3V/0.001A=3KΩ點(diǎn)亮一個(gè)LED發(fā)光二極管

關(guān)于USB供電電路的擴(kuò)展小知識(shí)

Type-C口對(duì)Type-C口供電務(wù)必要接R55和R56兩個(gè)電阻配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)2-3:?jiǎn)纹瑱C(jī)的SFR與新建一個(gè)Keil工程單片機(jī)C語(yǔ)言SFR聲明:

sfrP0=0x80;//SFR聲明sfrTCON=0x88;sbitIT0=TCON^0;//位聲明sbitLED=P0^0;一個(gè)字節(jié)是8位,一位控制一個(gè)I/O口,字節(jié)控制所有的I/O口 #include<reg52.h>1號(hào):111111112號(hào):111111113號(hào):111111114號(hào):11111111寄存器分布示意圖reg52.h對(duì)于SFR的聲明單片機(jī)每一個(gè)特殊功能寄存器都有獨(dú)立的特殊功能提供給用戶使用,以便用戶控制單片機(jī)完成其強(qiáng)大的功能。如果將用戶被比喻為將軍,那么特殊功能寄存器可以理解為一個(gè)個(gè)的特種兵,用戶可以調(diào)度他們完成一項(xiàng)項(xiàng)特殊任務(wù)。Keil軟件建立工程和文件

配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)2-4:編寫點(diǎn)亮小燈的程序點(diǎn)亮一個(gè)LED發(fā)光二極管

單片機(jī)C語(yǔ)言的基本程序框架

#include<reg52.h>sbitLED=P0^0;voidmain(){LED=0;}1、main主函數(shù),有且僅有一個(gè)主函數(shù)2、void為函數(shù)類型,即函數(shù)返回值類型3、函數(shù)體以{}開始和結(jié)束標(biāo)志4、每條C語(yǔ)言語(yǔ)句以分號(hào)結(jié)束參考程序一:#include<reg52.h>sbitLED=P0^0;voidmain(){while(1){LED=0;}}參考程序二:#include<reg52.h>sbitLED=P0^0;voidmain(){LED=0;while(1);}

根據(jù)原理圖編寫點(diǎn)亮LED小燈的程序并且點(diǎn)亮小燈

配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)3-1:電磁兼容(EMC)背景1、冬天的時(shí)候,空氣比較干燥的城市,朋友們經(jīng)常對(duì)電腦,鐵柜等等放電,這就是“靜電放電(ESD)”干擾。2、使用電鉆這種帶電機(jī)的設(shè)備的工作時(shí),電視會(huì)有干擾或者影響,這就是“快速瞬間脈沖群(EFT)”的效果。3、雷電引起的電視或者電腦的重啟死機(jī)甚至損壞,這就是“浪涌(Surge)的效果。電磁兼容(EMC):指電子設(shè)備或者系統(tǒng)在特定電磁環(huán)境中正常工作的能力,同時(shí)不會(huì)對(duì)其他設(shè)備或環(huán)境產(chǎn)生不可接受的電磁干擾。低頻濾波電容低頻濾波電容的作用:1、緩沖作用2、穩(wěn)定作用選取要素:容值和耐壓值低頻濾波電容低頻濾波電容,平常應(yīng)用最多的是鉭電容,電解電容,陶瓷電容,起到去除電源低頻紋波,穩(wěn)定電源的作用。高頻濾波電容,IC電源附近,通常用104電容來(lái)進(jìn)行去除高頻干擾。100nf,0.1uf。電容名稱:10x,即10*10xpf高頻濾波電容

尤其工業(yè)產(chǎn)品,IC高頻去耦電容,要盡可能短的距離將正極和負(fù)極橋連起來(lái)。多組電源的IC,每一組電源都要盡可能短的用104橋連,不走過(guò)長(zhǎng)的線和過(guò)孔。高頻濾波電容使用注意事項(xiàng)(工程經(jīng)驗(yàn))配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)3-2:三極管的學(xué)習(xí)三極管按制造材料分為:鍺管和硅管按結(jié)構(gòu)類型分為:PNP和NPNb:基極e:射極c:集電極三極管的口訣:箭頭朝內(nèi)PNP,導(dǎo)通電壓順箭頭過(guò),電壓控制導(dǎo)通,電流控制狀態(tài)三極管三種狀態(tài):1、截止:e和b不導(dǎo)通2、飽和:e和b導(dǎo)通Ib>Iec/β3、放大:e和b導(dǎo)通Ib=Iec/β如果β=100,可以計(jì)算R47的最大值是143K。3ma/100=4.3/x三極管常見應(yīng)用1、控制應(yīng)用2、驅(qū)動(dòng)應(yīng)用74HC138控制LED電路圖配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)3-3:74HC138的學(xué)習(xí)74HC138控制LED小燈電路圖74HC138應(yīng)用電路74HC138真值表Kingst51開發(fā)板74HC138電路圖配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)3-4:閃爍LED小燈程序編寫閃爍你的LED74HC138控制LED小燈電路圖配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)4-1:C語(yǔ)言變量和運(yùn)算符二進(jìn)制、十進(jìn)制和十六進(jìn)制十進(jìn)制

二進(jìn)制 十六進(jìn)制0 0b0 0x000b0000~0b11111 0b1 0x012 0b10 0x023 0b11 0x034 0b100 0x04…… ……

……9 0b10010x0910 0b10100x0A11 0b1011

0x0B12 0b1100 0x0C13 0b1101 0x0D14 0b1110 0x0E15 0b1111 0x0F16 0b10000 0x1017 0b10001 0x11…… ……

……二進(jìn)制0b00000000~0b11111111轉(zhuǎn)十進(jìn)制遵循8421原則例如0b1010轉(zhuǎn)十進(jìn)制0b11100100轉(zhuǎn)十六進(jìn)制0xE4進(jìn)制和數(shù)字大小無(wú)關(guān)C語(yǔ)言的變量類型及范圍C語(yǔ)言基本運(yùn)算符加、減、乘、除和取余數(shù)+-

*/%a+b;a-b;a*b;a/b;a%b;a=3;b=2;區(qū)分=和==!=a=b;if(a==1)b=a;if(a!=1)b=a;自加和自減++--++b;b++;a=0;b=0;a=b++;a=0;b=1;C語(yǔ)言運(yùn)算符左移<<右移>>X<<2X>>2左移,最低位填0補(bǔ)充;右移,最高位填0補(bǔ)充0xf00b11110000左移:11000000右移:00111100按位取反符號(hào)~

取反后1變成0,0變成10x0F取反后成為0xF0,即00001111->11110000配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)4-2:C語(yǔ)言循環(huán)語(yǔ)句和函數(shù)的初步認(rèn)識(shí)for語(yǔ)句的用法for語(yǔ)句的一般形式(用法1)for(表達(dá)式1;表達(dá)式2;表達(dá)式3){ (需要執(zhí)行的語(yǔ)句);}1、表達(dá)式1只執(zhí)行一次;2、判斷表達(dá)式2是否成立,如果成立則執(zhí)行循環(huán)內(nèi)語(yǔ)句,而后執(zhí)行表達(dá)式3。

......3、表達(dá)式2不成立,則直接跳出循環(huán)用法2:for(i=0;i<30000;i++);用法3:for(;;)for(i=0;i<2;i++){j++;}while語(yǔ)句的用法while語(yǔ)句的一般形式while(表達(dá)式){ 循環(huán)語(yǔ)句;}

while(1){LED=0;}for(i=0;i<30000;i++);LED=1;for(i=0;i<30000;i++);

i=0;while(i<3000){

i++;}do...while語(yǔ)句的用法do...while語(yǔ)句的一般形式

do{循環(huán)語(yǔ)句;}while(表達(dá)式);函數(shù)的簡(jiǎn)單介紹函數(shù)定義的一般形式:函數(shù)值類型函數(shù)名(形式參數(shù)列表){函數(shù)體}1、函數(shù)值類型2、函數(shù)名3、形式參數(shù)列表4、函數(shù)體5、main函數(shù)(必須有且唯一)6、語(yǔ)句注釋//voidmain()//void即函數(shù)類型{//以下為聲明語(yǔ)句部分unsignedinti=0;//定義一個(gè)無(wú)符號(hào)整型變量 i,并賦初值0

//以下為執(zhí)行語(yǔ)句部分ENLED=0;//U3、U4兩片74HC138總使能ADDR3=1;//使能U3使之正常輸出ADDR2=1;//經(jīng)U3的Y6輸出開啟三極管Q16ADDR1=1;ADDR0=0;while(1){LED=0;//點(diǎn)亮小燈for(i=0;i<30000;i++);//延時(shí)一段時(shí)間LED=1;//熄滅小燈for(i=0;i<30000;i++);//延時(shí)一段時(shí)間}}配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)4-3:51單片機(jī)常用延時(shí)辦法51單片機(jī)延時(shí)常用辦法使用Keil仿真程序執(zhí)行時(shí)間配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)4-4:流水燈程序編寫流水燈實(shí)驗(yàn)8個(gè)LED發(fā)光二極管,分別對(duì)應(yīng)單片機(jī)IO口的P0.0到P0.7口,8個(gè)單片機(jī)IO口組成一個(gè)字節(jié),在程序編寫過(guò)程中,可以直接用P0來(lái)進(jìn)行操作。C語(yǔ)言的8位二進(jìn)制數(shù)代表了8個(gè)IO口P0=0xfe;0b111111100xFD0b111111010xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F.P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0

11111

1

1

00x010b000000010b111111100x020b000000100b111111010x040b000001000b11111011流水燈程序編寫配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)5-1:邏輯運(yùn)算和邏輯電路閱讀數(shù)據(jù)手冊(cè)手冊(cè)下載推薦:立創(chuàng)商城9012數(shù)據(jù)手冊(cè)74CH138數(shù)據(jù)手冊(cè)STC89C52RC數(shù)據(jù)手冊(cè)邏輯運(yùn)算&&:邏輯與,F(xiàn)=A&&B都為真則是真||:邏輯或,F(xiàn)=A||B任意一個(gè)為真則為真!:邏輯非,F(xiàn)=!A0b110011000b11110000&:按位與F=A&B0b11000000|:按位或F=A|B0b11111100~:按位取反F=~A0b00110011^:按位異或F=A^B0b00111100相異為1配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)5-2:定時(shí)器和計(jì)數(shù)器定時(shí)器和計(jì)數(shù)器時(shí)鐘周期:?jiǎn)纹瑱C(jī)時(shí)序中的最小單位,具體計(jì)算的方法就是時(shí)鐘源分之一。機(jī)器周期:我們的單片機(jī)完成一個(gè)操作的最短時(shí)間。定時(shí)器:打開定時(shí)器后,定時(shí)器"存儲(chǔ)寄存器"的值經(jīng)過(guò)一個(gè)機(jī)器周期自動(dòng)加1,也就是說(shuō),機(jī)器周期是定時(shí)器的計(jì)數(shù)周期。定時(shí)器存儲(chǔ)寄存器名稱描述SFR地址復(fù)位值TH0定時(shí)器0x8C0x00TL0定時(shí)器0x8A0x00TH1定時(shí)器0x8D0x00TL1定時(shí)器0x8B0x00TCON—定時(shí)器控制寄存器的位分配(地址0x88、可位尋址)位76543210符號(hào)TF1TR1TF0TR0IE1IT1IE0IT0復(fù)位值00000000TCON——定時(shí)器控制寄存器的位描述位符號(hào)描述7TF1定時(shí)器1溢出標(biāo)志。一旦定時(shí)器1發(fā)生溢出時(shí)硬件置1。清零有兩種方式:軟件清零,或者進(jìn)入定時(shí)器中斷時(shí)硬件清零。6TR1定時(shí)器1運(yùn)行控制位。軟件置位/清零來(lái)進(jìn)行啟動(dòng)/停止定時(shí)器。5TF0定時(shí)器0溢出標(biāo)志。一旦定時(shí)器0發(fā)生溢出時(shí)硬件置1。清零有兩種方式:軟件清零,或者進(jìn)入定時(shí)器中斷時(shí)硬件清零。4TR0定時(shí)器0運(yùn)行控制位。軟件置位/清零來(lái)進(jìn)行啟動(dòng)/停止定時(shí)器。3IE1

外部中斷部分,與定時(shí)器無(wú)關(guān),暫且不看。2IT11IE00IT0TMOD—定時(shí)器模式寄存器的位分配(地址0x89、不可位尋址)位76543210符號(hào)GATE(T1)C/T(T1)M1(T1)M0(T1)GATE(T0)C/T(T0)M1(T0)M0(T0)復(fù)位值00000000TMOD——定時(shí)器模式寄存器的位描述符號(hào)描述T1/T0標(biāo)T1的表示控制定時(shí)器1的位,標(biāo)T0的表示控制定時(shí)器0的位。GATE該位被置1時(shí)為門控位。僅當(dāng)‘INT0’腳為高并且TR0控制位被置1時(shí)使能定時(shí)器0,定時(shí)器開始計(jì)時(shí),當(dāng)該位被清0時(shí),只要TR0位被置1,定時(shí)器0就使能開始計(jì)時(shí),不受到單片機(jī)引腳INT0外部信號(hào)的干擾,常用來(lái)測(cè)量外部信號(hào)脈沖寬度。這是定時(shí)器一個(gè)額外功能,本節(jié)課暫不介紹。C/T定時(shí)器或計(jì)數(shù)器選擇位。該位被清零時(shí)用作定時(shí)器功能(內(nèi)部系統(tǒng)時(shí)鐘),被置1用作計(jì)數(shù)器功能。TMOD——定時(shí)器模式寄存器M1/M0工作模式M1M0工作模式描述000兼容8048單片機(jī)的13位定時(shí)器,THn的8位和TLn的5位組成一個(gè)13位定時(shí)器。011THn和TLn組成一個(gè)16位的定時(shí)器。1028位自動(dòng)重裝模式,定時(shí)器溢出后THn重裝到TLn中。113禁用定時(shí)器1,定時(shí)器0變成2個(gè)8位定時(shí)器。T1:TH1高8位,TL1低8位TH1=0x05;TL1=0x05;T0:TH0高8位,TL0低8位TH1=0x05;TL1=0x05;使用定時(shí)器的步驟第一:設(shè)置特殊功能寄存器TMOD,配置好工作模式。第二:設(shè)置計(jì)數(shù)寄存器TH0和TL0的初值。第三:設(shè)置TCON,通過(guò)TR0置1來(lái)讓定時(shí)器開始計(jì)數(shù)。第四:判斷TCON寄存器的TF0位,監(jiān)測(cè)定時(shí)器溢出情況。配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)5-3:用定時(shí)器實(shí)現(xiàn)LED小燈閃爍使用定時(shí)器的方法第一:設(shè)置特殊功能寄存器TMOD,配置好工作模式。第二:設(shè)置計(jì)數(shù)寄存器TH0和TL0的初值。12/11059200第三:設(shè)置TCON,通過(guò)TR0置1來(lái)讓定時(shí)器開始計(jì)數(shù)。第四:判斷TCON寄存器的TF0位,監(jiān)測(cè)定時(shí)器溢出情況。0.5HZ小燈閃爍程序配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)5-4:認(rèn)識(shí)數(shù)碼管數(shù)碼管原理和結(jié)構(gòu)圖KST-51開發(fā)板數(shù)碼管圖數(shù)碼管顯示0的程序編寫數(shù)碼管真值表字符01234567數(shù)值0xC00xF90xA40xB00x990x920x820xF8字符89ABCDEF數(shù)值0x800x900x880x830xC60xA10x860x8E配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)5-5:數(shù)碼管靜態(tài)顯示數(shù)碼管真值表字符01234567數(shù)值0xC00xF90xA40xB00x990x920x820xF8字符89ABCDEF數(shù)值0x800x900x880x830xC60xA10x860x8E使用定時(shí)器的步驟第一:設(shè)置特殊功能寄存器TMOD,配置好工作模式。第二:設(shè)置計(jì)數(shù)寄存器TH0和TL0的初值。第三:設(shè)置TCON,通過(guò)TR0置1來(lái)讓定時(shí)器開始計(jì)數(shù)。第四:判斷TCON寄存器的TF0位,監(jiān)測(cè)定時(shí)器溢出情況。數(shù)碼管秒表程序配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)6-1:數(shù)組的概念及應(yīng)用數(shù)組的聲明數(shù)組是一組變量,這組變量需要滿足三個(gè)條件:1、具有相同的數(shù)據(jù)類型2、具有相同的名字3、在存儲(chǔ)器中是被連續(xù)存放的數(shù)組的基本概念數(shù)組類型數(shù)組名[數(shù)組長(zhǎng)度]數(shù)組類型數(shù)組名[數(shù)組長(zhǎng)度]={初值列表};1、具備相同的數(shù)據(jù)類型。2、數(shù)組名需要符合規(guī)范,只能由字母、數(shù)字和下劃線組成,第一個(gè)字符必須是字母或者下劃線。3、方括號(hào)內(nèi)的數(shù)組長(zhǎng)度是一個(gè)常量或者常量表達(dá)式,并且必須是正整數(shù)。數(shù)組的使用和賦值1、初值列表里的數(shù)據(jù)之間要用逗號(hào)隔開。2、列表內(nèi)初值數(shù)量等于或小于數(shù)組長(zhǎng)度。3、若給數(shù)組元素的所有元素都賦值,可以省略數(shù)組長(zhǎng)度。4、系統(tǒng)為數(shù)組分配連續(xù)的存儲(chǔ)單元,數(shù)組元素的次序由下標(biāo)決定。數(shù)組的初始化1、區(qū)分?jǐn)?shù)組下標(biāo)和數(shù)組元素個(gè)數(shù)的概念2、數(shù)組元素下標(biāo)可以常量或變量或表達(dá)式,初始化必須常量3、數(shù)組整體賦值只能在初始化進(jìn)行,程序只能單個(gè)元素賦值配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)6-2:if和switch語(yǔ)句if語(yǔ)句的用法if語(yǔ)句的默認(rèn)形式:if(條件表達(dá)式){語(yǔ)句1;}if...else語(yǔ)句if(條件表達(dá)式){語(yǔ)句1;}else{語(yǔ)句2;}sec++if(sec>=16){sec=0;}if(sec>=15){sec=0;}else{sec++;}if...elseif語(yǔ)句if(表達(dá)式1)

{語(yǔ)句1;}elseif(表達(dá)式2){語(yǔ)句2;}elseif(表達(dá)式3){語(yǔ)句3;}............else{語(yǔ)句n;}switch語(yǔ)句的用法switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句1;case常量表達(dá)式2:語(yǔ)句2;......case常量表達(dá)式n:語(yǔ)句n;default:語(yǔ)句n+1;}switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句1;break;case常量表達(dá)式2:語(yǔ)句2;break;......case常量表達(dá)式n:語(yǔ)句n;break;default:語(yǔ)句n+1;break;}配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)6-3:數(shù)碼管動(dòng)態(tài)顯示KST-51開發(fā)板數(shù)碼管圖動(dòng)態(tài)顯示的基本原理動(dòng)態(tài)顯示:多個(gè)數(shù)碼管顯示數(shù)字的時(shí)候,實(shí)際上是輪流點(diǎn)亮數(shù)碼管(一個(gè)時(shí)刻只有一個(gè)數(shù)碼管是亮的),利用人眼的視覺暫留現(xiàn)象(也叫余暉效應(yīng))。12數(shù)碼管動(dòng)態(tài)顯示秒表流程圖配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)6-4:數(shù)碼管顯示消隱數(shù)碼管殘影產(chǎn)生原理產(chǎn)生背景:數(shù)碼管位選切換過(guò)渡階段造成的段選的瞬態(tài)顯示。假設(shè)此刻最高位數(shù)碼管顯示0:case5:ADDR2=1;ADDR1=0;ADDR0=1;P0=0xC0;

ADDR2=0;ADDR1=0;ADDR0=1;P0=0xC0;case0:ADDR2=0;ADDR1=0;ADDR0=0;P0=0xF9;中間狀態(tài):ADDR2=0;ADDR1=0;ADDR0=1(case1)數(shù)碼管消隱方法解決方法:切換之前關(guān)閉位選或者段選,切換后一次性打開。關(guān)閉段:switch語(yǔ)句執(zhí)行前加:P0=0xFF;關(guān)閉位:switch語(yǔ)句執(zhí)行前加:ENLED=1;在case語(yǔ)句中P0賦值完成后再打開顯示ENLED=0。配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)6-5:中斷系統(tǒng)的學(xué)習(xí)中斷的介紹比如說(shuō)我正在廚房用煤氣燒一壺水,這樣就只能守在廚房里,苦苦等著水開——如果水溢出來(lái)澆滅了煤氣,有可能就要發(fā)生一場(chǎng)災(zāi)難了。門外忽然又傳來(lái)了鏗鏘有力的歌聲,我最喜歡的電視劇要開演了,聽著水壺發(fā)出“咕嘟咕嘟”的聲音,我清楚:除非等到水開,否則沒有我享受人生的時(shí)候。這個(gè)場(chǎng)景跟中斷有什么關(guān)系呢?

在這個(gè)場(chǎng)景中,我是唯一具有處理能力的主體,不管是燒水、還是看電視,同一個(gè)時(shí)間點(diǎn)上我只能干一件事情。但是,在我專心致志干一件事情時(shí),總有許多或緊迫或不緊迫的事情突然出現(xiàn)在面前,都需要去關(guān)注,有些還需要

我停下手頭的工作馬上去處理。只有在處理完之后,方能回頭完成先前的任務(wù)。

中斷機(jī)制不僅賦予了我處理意外情況的能力,如果我能充分發(fā)揮這個(gè)機(jī)制的妙用,就可以“同時(shí)”完成多個(gè)任務(wù)了。

事實(shí)上燒水需要10分鐘完成,但是提下水壺和關(guān)煤氣我只要幾秒鐘就可以完成。為了這幾秒,我需要在廚房等候10分鐘。如果使用鬧鐘定時(shí)10分鐘,10分鐘一到,鬧鐘就會(huì)提醒我該去關(guān)煤氣了,那么我就可以去安心看電視了。

實(shí)際上就是用了鬧鐘這樣一個(gè)中斷信號(hào)來(lái)提示我完成提水壺和關(guān)煤氣的任務(wù)。IE—中斷使能寄存器的位分配(地址0xA8、可位尋址)位76543210符號(hào)EA--ET2ESET1EX1ET0EX0復(fù)位值0--000000IE—中斷使能寄存器的位描述位符號(hào)描述7EA總中斷使能位,相當(dāng)于總開關(guān)6----5ET2定時(shí)器2中斷使能4ES串口中斷使能3ET1定時(shí)器1中斷使能2EX1外部中斷1使能1ET0定時(shí)器0中斷使能0EX0外部中斷0使能中斷查詢序列中斷函數(shù)編號(hào)中斷名稱中斷標(biāo)志位中斷使能位中斷向量地址默認(rèn)優(yōu)先級(jí)0外部中斷IE0EX00x00031(最高)1T0TF0ET00x000B22外部中斷IE1EX10x001333T1TF1ET10x001B44UARTTI/RIES0x002355T2TF2/EXF2ET20x002B6配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)6-6:中斷優(yōu)先級(jí)中斷優(yōu)先級(jí)搶占優(yōu)先級(jí)和固有優(yōu)先級(jí)IP—中斷優(yōu)先級(jí)寄存器的位分配(地址0xB8、可位尋址)位76543210符號(hào)----PT2PSPT1PX1PT0PX0復(fù)位值----000000

IP—中斷優(yōu)先級(jí)寄存器的位描述位符號(hào)描述7--保留6--保留5PT2定時(shí)器2中斷優(yōu)先級(jí)控制位4PS串口中斷優(yōu)先級(jí)控制位3PT1定時(shí)器1中斷優(yōu)先級(jí)控制位2PX1外部中斷1中斷優(yōu)先級(jí)控制位1PT0定時(shí)器0中斷優(yōu)先級(jí)控制位0PX0外部中斷0中斷優(yōu)先級(jí)控制位中斷固有優(yōu)先級(jí)中斷函數(shù)編號(hào)中斷名稱中斷標(biāo)志位中斷使能位中斷向量地址默認(rèn)優(yōu)先級(jí)0外部中斷IE0EX00x00031(最高)1T0TF0ET00x000B22外部中斷IE1EX10x001333T1TF1ET10x001B44UARTTI/RIES0x002355T2TF2/EXF2ET20x002B6中斷搶占優(yōu)先級(jí)的說(shuō)明當(dāng)人為配置了搶占中斷優(yōu)先級(jí)

配置“水開”為高優(yōu)先級(jí),則當(dāng)“水開”事件發(fā)生時(shí),直接處理“水開”,在處理“水開”的過(guò)程中,即使“接電話”發(fā)生了,也不會(huì)去理會(huì)。當(dāng)“接電話”發(fā)生了,正在接電話時(shí),這個(gè)時(shí)候,“水開”事件又發(fā)生了,那么停下接電話,先去處理“水開”,處理好了后,再回頭電話旁,處理“接電話”事件。

中斷固有優(yōu)先級(jí)的說(shuō)明當(dāng)設(shè)置為默認(rèn)固有中斷優(yōu)先級(jí)時(shí):假設(shè)“水開”默認(rèn)優(yōu)先級(jí)高于“接電話”優(yōu)先級(jí),當(dāng)先聽到“水開”則先處理“水開”這件事,當(dāng)先聽到“接電話”則先處理“接電話”這件事。只有當(dāng)兩件事同時(shí)發(fā)生時(shí),則會(huì)先去處理“水開”,再處理“接電話”。

中斷優(yōu)先級(jí)的處理機(jī)制當(dāng)設(shè)置為默認(rèn)中斷固有優(yōu)先級(jí)時(shí):當(dāng)幾個(gè)中斷同時(shí)發(fā)生時(shí),則先處理中斷優(yōu)先級(jí)高的中斷程序,在處理任意中斷期間發(fā)生中斷,都不會(huì)響應(yīng)。當(dāng)配置了中斷優(yōu)先級(jí),即搶占優(yōu)先級(jí)同時(shí)發(fā)生中斷,優(yōu)先級(jí)高的先響應(yīng),在處理任意中斷時(shí),發(fā)生同級(jí)別或低級(jí)的中斷,則不響應(yīng),發(fā)生優(yōu)先級(jí)更高的中斷時(shí),則先處理高優(yōu)先級(jí)中斷,處理完畢,再回來(lái)處理當(dāng)前中斷。固有優(yōu)先級(jí)的意義--仲裁由于某種特殊原因,暫時(shí)關(guān)閉了總中斷EA,即EA=0;執(zhí)行一段代碼后重新使能了總中斷,即EA=1;這段時(shí)間內(nèi)很可能有多個(gè)中斷發(fā)生了,因?yàn)閯倓偪傊袛嗍顷P(guān)閉的,所以發(fā)生的多個(gè)中斷都沒有被響應(yīng),當(dāng)總中斷被打開后,同時(shí)請(qǐng)求響應(yīng),采用的就是固有優(yōu)先級(jí)的先后順序。配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)7-1:變量的作用域和存儲(chǔ)類別變量的作用域1、局部變量函數(shù)內(nèi)部聲明的變量,只在本函數(shù)內(nèi)有效,在本函數(shù)以外是不能使用的,叫做局部變量。2、全局變量

在函數(shù)外部聲明的變量就是全局變量。一個(gè)源程序文件可以包含一個(gè)或者多個(gè)函數(shù),全局變量的作用范圍是從它開始聲明的位置一直到程序結(jié)束。全局變量的負(fù)作用1、降低函數(shù)的獨(dú)立性,對(duì)任何一個(gè)函數(shù)的修改都可能影響到其他函數(shù)。2、降低函數(shù)的通用性,不利于函數(shù)的重復(fù)調(diào)用。3、降低程序的清晰度,每個(gè)函數(shù)執(zhí)行都有可能改變?nèi)肿兞恐担瑹o(wú)法清楚判斷每個(gè)時(shí)刻的全局變量的值。4、全局變量永久占據(jù)內(nèi)存單元。原則:能用局部變量就不用全局變量全局變量和局部變量同名,在局部變量作用域范圍內(nèi),局部變量有效。變量的存儲(chǔ)類別1、自動(dòng)變量(auto)函數(shù)中的局部變量,如果不加static關(guān)鍵字修飾,都屬于自動(dòng)變量,也叫做動(dòng)態(tài)變量。2、靜態(tài)變量

所有的全局變量都屬于靜態(tài)變量,局部變量如果加了static關(guān)鍵字修飾的話,也是靜態(tài)變量。配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)7-2:認(rèn)識(shí)LED點(diǎn)陣點(diǎn)陣LED實(shí)物圖點(diǎn)陣LED原理Kingst51開發(fā)板點(diǎn)陣LED原理圖配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)7-3:點(diǎn)陣的圖形顯示點(diǎn)陣的圖形顯示(一)點(diǎn)陣的圖形顯示(二)點(diǎn)陣的圖形顯示(三)點(diǎn)陣的圖形顯示(四)點(diǎn)陣的圖形顯示(五)點(diǎn)陣的圖形顯示(六)點(diǎn)陣的圖形顯示(七)配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)7-4:點(diǎn)陣的動(dòng)畫顯示點(diǎn)陣的縱向動(dòng)畫顯示配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)7-5:點(diǎn)陣的橫向動(dòng)畫顯示關(guān)注各大直播平臺(tái):金沙灘電子課堂,直播授課答疑點(diǎn)陣的橫向動(dòng)畫顯示(一)二維數(shù)組數(shù)組類型數(shù)組名[數(shù)組長(zhǎng)度1][數(shù)組長(zhǎng)度2];例如unsignedchara[2][3];定義一個(gè)2行3列的無(wú)符號(hào)字符型二維數(shù)組

unsignedchara[2][3]={{1,2,3},{4,5,6}};unsignedchara[2][3]={1,2,3,4,5,6};unsignedchara[2][3]={{1,2},{3,4}};unsignedchara[2][3]={1,2,0,3,4,0};unsignedchara[2][3]={1,2,3,4};unsignedchara[2][3]={{1,2,3},{4,0,0}};點(diǎn)陣的橫向動(dòng)畫顯示(二)unsignedcharcodeimage[30][8]={{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//動(dòng)畫幀1{0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F},//動(dòng)畫幀2{0xFF,0x3F,0x7F,0x7F,0x7F,0x7F,0x7F,0x3F},//動(dòng)畫幀3{0xFF,0x1F,0x3F,0x3F,0x3F,0x3F,0x3F,0x1F},//動(dòng)畫幀4{0xFF,0x0F,0x9F,0x9F,0x9F,0x9F,0x9F,0x0F},//動(dòng)畫幀5{0xFF,0x87,0xCF,0xCF,0xCF,0xCF,0xCF,0x87},//動(dòng)畫幀6{0xFF,0xC3,0xE7,0xE7,0xE7,0xE7,0xE7,0xC3},//動(dòng)畫幀7{0xFF,0xE1,0x73,0x73,0x73,0xF3,0xF3,0xE1},//動(dòng)畫幀8{0xFF,0x70,0x39,0x39,0x39,0x79,0xF9,0xF0},//動(dòng)畫幀9{0xFF,0x38,0x1C,0x1C,0x1C,0x3C,0x7C,0xF8},//動(dòng)畫幀10{0xFF,0x9C,0x0E,0x0E,0x0E,0x1E,0x3E,0x7C},//動(dòng)畫幀11{0xFF,0xCE,0x07,0x07,0x07,0x0F,0x1F,0x3E},//動(dòng)畫幀12{0xFF,0x67,0x03,0x03,0x03,0x07,0x0F,0x9F},//動(dòng)畫幀13{0xFF,0x33,0x01,0x01,0x01,0x03,0x87,0xCF},//動(dòng)畫幀14{0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7},//動(dòng)畫幀15{0xFF,0xCC,0x80,0x80,0x80,0xC0,0xE1,0xF3},//動(dòng)畫幀16{0xFF,0xE6,0xC0,0xC0,0xC0,0xE0,0xF0,0xF9},//動(dòng)畫幀17{0xFF,0x73,0x60,0x60,0x60,0x70,0x78,0xFC},//動(dòng)畫幀18{0xFF,0x39,0x30,0x30,0x30,0x38,0x3C,0x7E},//動(dòng)畫幀19{0xFF,0x9C,0x98,0x98,0x98,0x9C,0x1E,0x3F},//動(dòng)畫幀20{0xFF,0xCE,0xCC,0xCC,0xCC,0xCE,0x0F,0x1F},//動(dòng)畫幀21{0xFF,0x67,0x66,0x66,0x66,0x67,0x07,0x0F},//動(dòng)畫幀22{0xFF,0x33,0x33,0x33,0x33,0x33,0x03,0x87},//動(dòng)畫幀23{0xFF,0x99,0x99,0x99,0x99,0x99,0x81,0xC3},//動(dòng)畫幀24{0xFF,0xCC,0xCC,0xCC,0xCC,0xCC,0xC0,0xE1},//動(dòng)畫幀25{0xFF,0xE6,0xE6,0xE6,0xE6,0xE6,0xE0,0xF0},//動(dòng)畫幀26{0xFF,0xF3,0xF3,0xF3,0xF3,0xF3,0xF0,0xF8},//動(dòng)畫幀27{0xFF,0xF9,0xF9,0xF9,0xF9,0xF9,0xF8,0xFC},//動(dòng)畫幀28{0xFF,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFE},//動(dòng)畫幀29{0xFF,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF}//動(dòng)畫幀30};配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)8-1:?jiǎn)纹瑱C(jī)最小系統(tǒng)詳解單片機(jī)最小系統(tǒng)解析1、電源常用單片機(jī)的電源系統(tǒng)有5V系統(tǒng)和3.3V系統(tǒng)這兩種。

常用的數(shù)字電路系統(tǒng)的類別有24V、12V、5V、3.3V、2.5V、1.8V、1.5V、1.2V等。單片機(jī)最小系統(tǒng)解析2、晶振

單片機(jī)最小系統(tǒng)解析3、復(fù)位

配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)8-2:函數(shù)的調(diào)用函數(shù)的調(diào)用函數(shù)調(diào)用的一般形式:函數(shù)名(實(shí)參列表);函數(shù)調(diào)用注意事項(xiàng):1、函數(shù)調(diào)用的時(shí)候不需要加函數(shù)類型。2、函數(shù)調(diào)用之前必須進(jìn)行定義或者聲明。3、函數(shù)聲明的時(shí)候必須加函數(shù)類型、函數(shù)的形參,最后加上一個(gè)分號(hào)表示結(jié)束。函數(shù)的形式參數(shù)和實(shí)際參數(shù)實(shí)參:在調(diào)用一個(gè)有參數(shù)的函數(shù)時(shí),函數(shù)名后邊括號(hào)中的參數(shù)。形參:在被調(diào)用的函數(shù)進(jìn)行定義時(shí),括號(hào)內(nèi)的參數(shù)叫做形式參數(shù)。1、函數(shù)定義中指定的形參,在未發(fā)生調(diào)用時(shí)不占用內(nèi)存,函數(shù)調(diào)用時(shí)分配內(nèi)存單元,調(diào)用結(jié)束釋放內(nèi)存。2、實(shí)參可以是常量,也可以是簡(jiǎn)單或者復(fù)雜的表達(dá)式,但是要求必須有確定的值,在調(diào)用時(shí)傳遞給形參。c=add(1,a+b);3、形參必須指定數(shù)據(jù)類型,和變量定義一樣。4、形參和實(shí)參的數(shù)據(jù)類型應(yīng)該相同或者賦值兼容。5、主調(diào)函數(shù)在調(diào)用函數(shù)之前,應(yīng)對(duì)被調(diào)函數(shù)做原型聲明。6、實(shí)參向形參的數(shù)據(jù)傳遞是單向傳遞,不能有形參再回傳給實(shí)參。

unsignedcharadd(unsignedcharx,unsignedchary);

//函數(shù)聲明

voidmain()

{

unsignedchara=1;

unsignedcharb=2;

unsignedcharc=0;

c=add(a,b);

//調(diào)用時(shí),a和b就是實(shí)參,把函數(shù)的返回值賦給c

//執(zhí)行完后,c的值就是3

while(1);

}

unsignedcharadd(unsignedcharx,unsignedchary)//函數(shù)定義

{

//這里括號(hào)中的x和y就是形參

unsignedcharz=0;

z=x+y;

returnz;

//返回值z(mì)的類型就是函數(shù)add的類型

}配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)8-3:按鍵的基本原理獨(dú)立按鍵原理矩陣按鍵原理矩陣按鍵變獨(dú)立按鍵獨(dú)立按鍵的掃描配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)8-4:按鍵的掃描和抖動(dòng)按鍵的檢測(cè)方式過(guò)程監(jiān)測(cè)VS狀態(tài)掃描按鍵狀態(tài)掃描和動(dòng)作判斷將每次的掃描按鍵保存來(lái),當(dāng)一次按鍵狀態(tài)掃描進(jìn)來(lái)后,與前一次的狀態(tài)作比較,如果發(fā)現(xiàn)兩次按鍵狀態(tài)不一致,就說(shuō)明按鍵產(chǎn)生動(dòng)作。確定按下:上次彈起狀態(tài)‘1’;當(dāng)前按下狀態(tài)‘0’。確定彈起:上次按下狀態(tài)‘0’;當(dāng)前彈起狀態(tài)‘1’。按鍵抖動(dòng)和簡(jiǎn)易消抖按鍵延時(shí)消抖步驟1、定義一個(gè)變量暫存按鍵值;2、當(dāng)發(fā)現(xiàn)按鍵狀態(tài)變化,延時(shí)10ms;3、再次確認(rèn)按鍵是否真實(shí)發(fā)生改變;4、如果前次是0,即可判斷按鍵彈起動(dòng)作發(fā)生。配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)8-5:實(shí)用按鍵消抖算法實(shí)用消抖算法12345678;23456789;3456789a;456789ab;56789abc;6789abcd;789abcde獨(dú)立按鍵掃描消抖程序1、keybuff//存儲(chǔ)按鍵連續(xù)8次掃描狀態(tài)緩沖區(qū)2、KeySta//通過(guò)keybuf8次掃描后確定的按鍵狀態(tài)3、backup//用于保存上一次按鍵狀態(tài),備份KeySta,

用于和KeySta比較判斷當(dāng)前是按下還是彈起配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)8-6:矩陣按鍵掃描矩陣按鍵原理圖獨(dú)立按鍵掃描程序1、keybuff//存儲(chǔ)按鍵連續(xù)8次掃描狀態(tài)緩沖區(qū)2、KeySta//通過(guò)keybuf8次掃描后確定的按鍵狀態(tài)3、backup//用于保存上一次按鍵狀態(tài),備份KeySta,

用于和KeySta比較判斷當(dāng)前是按下還是彈起矩陣按鍵掃描程序1、消抖時(shí)間:1*4*4=16ms2、keybuff[4][4]//存儲(chǔ)按鍵連續(xù)4次掃描緩沖區(qū)3、KeySta[4][4]//通過(guò)keybuf4次掃描后確定的按鍵狀態(tài)4、backup[4][4]//用于保存上一次按鍵狀態(tài),備份KeySta,

用于和KeySta比較判斷當(dāng)前是按下還是彈起配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)8-7:簡(jiǎn)易加法計(jì)算器簡(jiǎn)易加法計(jì)算器1、程序邏輯:首先采用數(shù)字按鍵輸入數(shù)字,同時(shí)在數(shù)碼管上顯示出來(lái),然后采用‘↑’代替加號(hào),按下加號(hào)后再輸入一串?dāng)?shù)字并且顯示出來(lái),按下回車鍵計(jì)算加法結(jié)果,并同時(shí)顯示到數(shù)碼管。(能夠?qū)崿F(xiàn)連加)2、按鍵掃描部分和按鍵執(zhí)行部分分離。3、采用按鍵映射的方式將程序的應(yīng)用層和底層驅(qū)動(dòng)進(jìn)行分離,可實(shí)現(xiàn)應(yīng)用層和底層相互獨(dú)立,做出標(biāo)準(zhǔn)化接口。windows虛擬鍵碼表矩陣按鍵映射表1、KeyCodeMap[4][4]//矩陣按鍵編號(hào)到標(biāo)準(zhǔn)鍵盤鍵碼映射表2、ShowNumber()//將一個(gè)無(wú)符號(hào)長(zhǎng)整形的數(shù)字顯示到數(shù)碼管3、KeyAction()//按鍵動(dòng)作函數(shù),根據(jù)鍵碼執(zhí)行相應(yīng)動(dòng)作4、KeyDriver()//按鍵驅(qū)動(dòng)函數(shù),檢測(cè)按鍵動(dòng)作,調(diào)度動(dòng)作函數(shù)5、KeyScan()//按鍵掃描函數(shù),間隔1ms放到定時(shí)器中斷內(nèi)6、LedScan()//數(shù)碼管動(dòng)態(tài)掃描刷新函數(shù)配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)9-1:?jiǎn)纹瑱C(jī)IO口結(jié)構(gòu)和上下拉電阻單片機(jī)IO口的結(jié)構(gòu)上下拉電阻上拉電阻就是將不確定的信號(hào)通過(guò)一個(gè)電阻拉到高電平,同時(shí)此電阻起到一個(gè)限流的作用,下拉就是下拉到低電平。1、OC門要輸出高電平,外部必須加上拉電阻。2、加大普通IO口的驅(qū)動(dòng)能力。3、起到限流的作用。4、抵抗電磁干擾。

上下拉電阻的選取原則1、從降低功耗方面考慮應(yīng)該足夠大,因?yàn)殡娮柙酱螅娏髟叫 ?、從確保足夠的引腳驅(qū)動(dòng)能力考慮應(yīng)該足夠小,電阻越小,電流才能越大。3、開漏輸出時(shí),過(guò)大的上拉電阻會(huì)導(dǎo)致信號(hào)上升沿變緩。

配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)9-2:蜂鳴器的學(xué)習(xí)蜂鳴器按結(jié)構(gòu)分類:壓電式蜂鳴器(高頻,報(bào)警器)和電磁式蜂鳴器(低頻,提示器)按驅(qū)動(dòng)方式:有源蜂鳴器和無(wú)源蜂鳴器配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)9-3:繼電器的學(xué)習(xí)繼電器1、通常用于弱電(低電壓、小電流)控制強(qiáng)電(高電壓、大電流)2、其本質(zhì)是一個(gè)電控機(jī)械開關(guān),由兩部分組成:(1)控制端(弱電)(2)被控端(強(qiáng)電)控制端:3.3V、5V、12V、24V。被控端:220V。板上繼電器參數(shù):5V,250V,10A。續(xù)流二極管的用法常開和常閉常開:繼電器線圈在未通電的狀態(tài)下,觸點(diǎn)處于斷開狀態(tài)。應(yīng)用于特定條件下啟動(dòng)某個(gè)電器設(shè)備的場(chǎng)景:聲控?zé)簟㈦妱?dòng)門禁。常閉:繼電器線圈在未通電的狀態(tài)下,觸點(diǎn)處于閉合狀態(tài)。應(yīng)用于特定條件下斷開連接的場(chǎng)合:燃?xì)獍踩珯z測(cè)系統(tǒng)。配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)9-4:編程實(shí)用技巧案例不同數(shù)據(jù)類型之間的相互轉(zhuǎn)換unsignedchara;unsignedintb;unsignedlongc;c=a*b;a=100;b=700;c=

?44641、自動(dòng)類型轉(zhuǎn)換2、強(qiáng)制類型轉(zhuǎn)換c=(unsignedlong)a*b;和c=(unsignedlong)(a*b)

3、不同類型變量的賦值b=a;a=b;b=?a=?700%256=1884、bit型強(qiáng)制類型轉(zhuǎn)換bita=0;unsignedcharb;a=(bit)b;a=?

定時(shí)器定時(shí)時(shí)間調(diào)整

單片機(jī)進(jìn)出中斷都需要響應(yīng)時(shí)間,并且需要進(jìn)行壓棧。

方法一:使用debug觀察時(shí)間,進(jìn)行補(bǔ)償。

方法二:長(zhǎng)時(shí)間運(yùn)行累計(jì)誤差進(jìn)行調(diào)整字節(jié)操作修改位TMOD&=0xF0;TMOD|=0x01TMOD=0x01;

對(duì)于一個(gè)字節(jié)的任何一位來(lái)說(shuō),不管原來(lái)這一位是0還是1

它跟0進(jìn)行與運(yùn)算,結(jié)果就是0跟1進(jìn)行與運(yùn)算,保持原來(lái)的值

它跟1進(jìn)行或運(yùn)算,結(jié)果就是1跟0進(jìn)行或運(yùn)算,保持原來(lái)的值TMOD=TMOD&0xF0;

數(shù)碼管掃描函數(shù)算法改進(jìn)switch(i){case0:ADDR2=0;ADDR1=0;ADDR0=0;i++;P0=LedBuff[0];break;case1:ADDR2=0;ADDR1=0;ADDR0=1;i++;P0=LedBuff[1];break;case2:ADDR2=0;ADDR1=1;ADDR0=0;i++;P0=LedBuff[2];break;case3:ADDR2=0;ADDR1=1;ADDR0=1;i++;P0=LedBuff[3];break;case4:ADDR2=1;ADDR1=0;ADDR0=0;i++;P0=LedBuff[4];break;case5:ADDR2=1;ADDR1=0;ADDR0=1;i=0;P0=LedBuff[5];break;default:break;}P1=(P1&0xF8)|i;P0=LedBuff[i];if(i<5)i++;elsei=0;配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)9-5:實(shí)用秒表例程秒表程序1、程序涵蓋定時(shí)器、數(shù)碼管、中斷、按鍵等多個(gè)知識(shí)點(diǎn)。2、補(bǔ)償誤差,足夠精確。3、顯示精準(zhǔn),保留小數(shù)點(diǎn)后兩位有效數(shù)字,精確到10ms。4、真正的、實(shí)用的秒表程序,貼近實(shí)際開發(fā),做大項(xiàng)目的基礎(chǔ)。

重要函數(shù)分析1、voidConfigTimer0(unsignedintms)//配置并啟動(dòng)定時(shí)器02、voidStopwatchDisplay()//秒表計(jì)數(shù)顯示函數(shù)3、voidStopwatchAction()//秒表啟停函數(shù)4、voidStopwatchReset()//秒表復(fù)位函數(shù)5、voidStopwatchCount()//秒表計(jì)數(shù)函數(shù),每隔10ms調(diào)用一次進(jìn)行秒表計(jì)數(shù)累加6、voidKeyDriver()、voidKeyScan()、voidLedScan()配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)9-6:PWM的初步認(rèn)識(shí)PWM知識(shí)與實(shí)例PWM:PulseWidthModulation脈沖寬度調(diào)制,使用數(shù)字信號(hào)達(dá)到模擬信號(hào)的效果

占空比:高電平的時(shí)間整個(gè)周期的比例PWM調(diào)整小燈亮度原理1、占空比10%,小燈最亮;占空比40%,亮度次之;占空比90%,小燈最暗。

PWM調(diào)整小燈亮度程序1、voidConfigPWM(unsignedintfr,unsignedchardc)/*配置并啟動(dòng)PWM,fr-頻率,dc-占空比*/2、voidClosePWM()/*關(guān)閉PWM*/3、定時(shí)器中斷:PWM的高電平定時(shí)和低電平定時(shí)的切換配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)9-7:PWM實(shí)現(xiàn)呼吸燈效果呼吸燈功能

讓多個(gè)亮度等級(jí)連續(xù)起來(lái),會(huì)產(chǎn)生一個(gè)小燈漸變的效果,與呼吸有點(diǎn)類似,習(xí)慣稱之為呼吸燈。常用于燈光秀、KTV等舞臺(tái)效果呼吸燈函數(shù)說(shuō)明1、voidConfigTimer1(unsignedintms)/*配置并啟動(dòng)T1,ms-定時(shí)時(shí)間,用來(lái)定時(shí)動(dòng)態(tài)調(diào)整占空比*/2、voidConfigPWM(unsignedintfr,unsignedchardc)/*用定時(shí)器T0配置并啟動(dòng)PWM,fr-頻率,dc-占空比*/3、voidAdjustDutyCycle(unsignedchardc)/*占空比調(diào)整函數(shù),頻率不變只調(diào)整占空比*/4、T0中斷用于產(chǎn)生PWM,T1中斷用于調(diào)整占空比配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)9-8:長(zhǎng)短按鍵的應(yīng)用長(zhǎng)按鍵的執(zhí)行邏輯長(zhǎng)短按鍵檢測(cè):檢測(cè)到一個(gè)按鍵動(dòng)作,馬上執(zhí)行一次相應(yīng)的動(dòng)作,同時(shí)在程序中記錄按鍵按下的持續(xù)時(shí)間。當(dāng)按下的時(shí)間大于1秒后,每經(jīng)過(guò)200ms執(zhí)行一次按鍵動(dòng)作。

模擬定時(shí)炸彈程序1、voidKeyDriver()/*按鍵驅(qū)動(dòng)函數(shù),檢測(cè)按鍵動(dòng)作,調(diào)度相應(yīng)動(dòng)作函數(shù),需在主循環(huán)中調(diào)用*/2、voidKeyAction(unsignedcharkeycode)/*按鍵動(dòng)作函數(shù),根據(jù)鍵碼執(zhí)行相應(yīng)操作,keycode-按鍵鍵碼*/

3、voidConfigTimer0(unsignedintms)voidShowNumber(unsignedlongnum)voidKeyScan()voidLedScan()voidInterruptTimer0()

配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)10-1:(UART)串口通信的初步認(rèn)識(shí)串行通信的初步認(rèn)識(shí)1、并行通信:通信時(shí)數(shù)據(jù)的各個(gè)位同時(shí)傳送,可以實(shí)現(xiàn)字節(jié)為單位通信,但是通信線多占用資源多,成本高:P0,P1,P2,P3。P0=0xFE,即并行總線數(shù)據(jù)輸出。2、串行通信,一次只能發(fā)送一位,要發(fā)送8次才能發(fā)送一個(gè)字節(jié)。0b11111110一位一位輸出,速度為波特率。

RS232接口和USB轉(zhuǎn)串口三種基本通信類型單工通信:只允許一方向另外一方傳送信息,另一方不能回傳信息,比如電視遙控器、收音機(jī)廣播等。半雙工通信:數(shù)據(jù)可以在雙方之間傳播,同一時(shí)刻只能其中一方發(fā)給另外一方,比如對(duì)講機(jī)就是典型半雙工。全雙工通信:發(fā)送數(shù)據(jù)的同時(shí)也能夠接收數(shù)據(jù),兩者同步進(jìn)行,比如我們的電話通信。

UART通信模塊SCON——串行控制寄存器的位分配(地址0x98、可位尋址)位76543210符號(hào)SM0SM1SM2RENTB8RB8TIRI復(fù)位值00000000SCON——串行控制寄存器的位描述位符號(hào)描述7SM0這兩位共同決定了串口通信的模式。我們最常用的就是模式16SM15SM2多機(jī)通信控制位(極少用),模式4REN使能串行接收。由軟件置位使能接收,軟件清零則禁止接收。3TB8模式22RB8模式21TI發(fā)送中斷標(biāo)志位,當(dāng)發(fā)送電路發(fā)送到停止位的中間位置時(shí),TI0RI接收中斷標(biāo)志位,當(dāng)接收電路接收到停止位的中間位置時(shí),RI波特率發(fā)生器

SBUF:兩個(gè)名字相同,地址相同的緩沖器。

計(jì)算:TH1=TL1=256-晶振值/12/2/16/波特率

如果寫:PCON|=0x80;那么計(jì)算公式為

TH1=TL1=256-晶振值/12/16/波特率

配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)10-2:串口通信實(shí)例串口通信程序的基本步驟1、配置串口為模式1。2、配置定時(shí)器T1為模式2,即自動(dòng)重裝模式。

3、根據(jù)波特率計(jì)算TH1和TL1的初值,如果有需要可以使用PCON進(jìn)行波特率加倍。4、打開定時(shí)器控制寄存器TR1,讓定時(shí)器跑起來(lái)。

串口通信實(shí)例1、voidConfigUART(unsignedintbaud)/*串口配置函數(shù),baud-通信波特率*/2、voidInterruptUART()}/*UART中斷服務(wù)函數(shù)*/

3、voidConfigTimer0(unsignedintms)voidLedScan()voidInterruptTimer0()//用于數(shù)碼管掃描

串口助手顯示ASCII碼表ASCII碼(AmericanStandardCodeforInformationInterchange,即美國(guó)信息互換標(biāo)準(zhǔn)代碼)

配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)10-3:使用邏輯分析儀分析串口通信電子工程師常用工具1、萬(wàn)用表:測(cè)量電壓、電流、電阻、電容、電感、線路導(dǎo)通等參數(shù)。2、邏輯分析儀:測(cè)量數(shù)字信號(hào)時(shí)序圖,主要用于解析協(xié)議數(shù)據(jù)。3、示波器:測(cè)量電壓信號(hào)隨時(shí)間變化的波形。可以顯示電壓值,周期,頻率,上升沿下降沿時(shí)間等。主要測(cè)量模擬量和信號(hào)質(zhì)量等。

邏輯分析儀測(cè)量信號(hào)的原理Kingst品牌邏輯分析儀LA1010:100M最高采樣率,16個(gè)通道,精度10nsLA2016:200M最高采樣率,16個(gè)通道,精度5nsLA5016:500M最高采樣率,16個(gè)通道,精度2nsLA5032:500M最高采樣率,32個(gè)通道,精度2ns邏輯分析儀測(cè)量信號(hào)接線圖邏輯分析儀的GND接待測(cè)板子的GND。邏輯分析儀的16個(gè)通道,任選通道接到待測(cè)信號(hào)引腳。邏輯分析儀抓取波形和數(shù)據(jù)分析配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)10-4:指針的初步學(xué)習(xí)指針的應(yīng)用優(yōu)點(diǎn):C語(yǔ)言的靈魂,是C語(yǔ)言的重要特征。利用指針可以直接快速的處理內(nèi)存中的各種數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù),特別是數(shù)組、字符串和內(nèi)存的動(dòng)態(tài)分配。它為函數(shù)間各類數(shù)據(jù)的傳遞提供了簡(jiǎn)捷便利的方法。指針使C語(yǔ)言簡(jiǎn)潔、緊湊、高效。缺點(diǎn):指針使用上的靈活性容易導(dǎo)致指針濫用而可能使程序失控。變量的地址unsignedchara=0x01;unsignedcharb=0x02;unsingedintc=0x0003;unsignedlongd=0x00000004;變量取地址:&a,&b,&c,&d內(nèi)存地址存儲(chǔ)的數(shù)據(jù)…………0x07d0x06d0x05d0x04d0x03c0x02c0x01b0x00a指針變量的聲明和初始化普通變量a可以是1,可以是2,可以是n指針變量p可以是a的地址,可以是b的地址,可以是x的地址特別區(qū)分:1、在C語(yǔ)言中,一種說(shuō)法是地址等同于指針,變量的地址就是變量的指針。2、指針變量簡(jiǎn)稱指針,通常所說(shuō)的指針都是指針變量。區(qū)分方法:&a一律稱之為取地址。只要說(shuō)指針,就是指指針變量。p=&a通常的說(shuō)法是指針指向了a這個(gè)變量。*和&互為逆運(yùn)算,x=*p;方法1:unsignedchara;unsignedchar*p=&a;方法2:unsignedchara;unsignedchar*p;p=&a;指針變量重要區(qū)分1、普通變量VS指針變量unsignedchara;a=1;......a=2;unsignedchar*p;p=&a;......p=&b;是說(shuō)明p指向的變量是unsignedchar類型。

2、定義指針變量*pVS取值運(yùn)算*punsignedchar*p;僅僅是說(shuō)明p是個(gè)指針變量,*不具備任何其他的運(yùn)算功能。unsignedchara=1;unsignedcharb=2;unsignedchar*p;p=&a;b=*p;計(jì)算完畢,b的值是1。

指針的簡(jiǎn)單實(shí)例配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)11-1:指向數(shù)組元素的指針指向數(shù)組元素的指針unsignedcharnumber[10]={0,1,2,3,4,5,6,7,8,9};unsignedchar*p;unsignedchar*q;p=&number[0];q=&number[9];1、比較運(yùn)算2、指針和整數(shù)之間的加減運(yùn)算3、兩個(gè)指針變量在一定條件下的減法運(yùn)算特別注意:數(shù)組名字代表了數(shù)組元素的首地址。p=&number[0];等價(jià)于p=number;p[i]等價(jià)于*(p+i)二維數(shù)組:p=&number[0][0]number[1]等價(jià)于&number[1][0]指向數(shù)組元素指針實(shí)例sizeof()關(guān)鍵字:雖然寫作函數(shù)形式,但是sizeof()整體在程序代碼中相當(dāng)于一個(gè)常量。sizeof(a);sizeof(d);sizeof(number);串口發(fā)送技巧:軟件TI=1可以讓程序直接進(jìn)入中斷,啟動(dòng)發(fā)送。邏輯分析儀抓取波形和數(shù)據(jù)分析配套書籍:手把手教你學(xué)51單片機(jī)--C語(yǔ)言版(第3版)11-2:字符數(shù)組和字符指針常量的類型整型常量:1、2、3、100浮點(diǎn)型常量:3.14、0.56、-4.8字符型常量:'a'、'b'、'1'字符串常量:"a"、"abc"、"1234"、"1234abcd"直接常量與符號(hào)常量constunsignedintBAUD=9600;unsignedcharcodeLedChar[]={......};#definePI

3.14字符常量和字符串常量普通字符:'a''A'unsignedcharx='a';轉(zhuǎn)義字符

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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)論