




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
微機(jī)原理思考:如何利用已學(xué)知識設(shè)計(jì)一個(gè)房屋簡易防賊裝置??保安?機(jī)關(guān)?機(jī)械?捕鼠器1捕鼠器2
電子?計(jì)算機(jī)?
第0章
緒論1計(jì)算機(jī)的問世2計(jì)算機(jī)經(jīng)歷了五個(gè)時(shí)代3微型計(jì)算機(jī)結(jié)構(gòu)框圖及單片機(jī)定義4
單片機(jī)的發(fā)展?fàn)顩r5為什么學(xué)及如何學(xué)1946年情人節(jié),世界上第一臺(tái)電子計(jì)算機(jī)誕生
1.計(jì)算機(jī)的問世17468個(gè)電子管、6萬個(gè)電阻器1萬個(gè)電容器、6千個(gè)開關(guān)重30噸,占地170平方米耗電174千瓦每次一開機(jī),整個(gè)費(fèi)城西區(qū)的電燈都為之黯然失色每15分鐘就可能燒掉一支真空管每秒只能運(yùn)行5千次加法運(yùn)算電子管計(jì)算機(jī)晶體管計(jì)算機(jī)集成電路計(jì)算機(jī)大規(guī)模、超大規(guī)模集成電路計(jì)算機(jī)智能計(jì)算機(jī)ENIAC—ElectronicNumericalIntegrator1947年貝爾實(shí)驗(yàn)室發(fā)明了晶體管第一個(gè)半導(dǎo)體集成電路1958年
2計(jì)算機(jī)經(jīng)歷了五個(gè)時(shí)代計(jì)算機(jī)巨型機(jī)微型機(jī)通用微機(jī)單片機(jī)通用單片機(jī)專用單片機(jī)小型機(jī)集成在同一塊芯片上——單片機(jī)微型計(jì)算機(jī)由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備五大部分組成存儲(chǔ)器(ROM、RAM)I/O接口I/O設(shè)備(輸入/輸出)地址總線(AB)數(shù)據(jù)總線
(DB)控制總線(CB)CPU運(yùn)算器控制器馮.諾依曼3微型計(jì)算機(jī)結(jié)構(gòu)框圖及單片機(jī)定義單片機(jī)是早期SingleChipMicrocomputer的直譯,它忠實(shí)地反映了早期單片微機(jī)的形態(tài)和本質(zhì)。它是一種把處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口等功能集成到一塊芯片上的小而完善的計(jì)算機(jī)系統(tǒng)。單片機(jī)也被稱為微控制(MicrocontrollerUnit),常用英文字母的縮寫MCU表示單片機(jī),它最早是被用在工業(yè)控制領(lǐng)域。單片機(jī)定義單片機(jī)芯片開關(guān)輸入LED顯示數(shù)碼管顯示串行模塊鍵盤輸入鼠標(biāo)輸入CRT或LED顯示器輸出主機(jī)內(nèi)有CPU、存儲(chǔ)器、I/O接口等部件單片機(jī)與PC機(jī)的比較單片機(jī)與PC機(jī)的比較單片機(jī)是特殊的計(jì)算機(jī)!
1.單片機(jī)的特點(diǎn)(1)控制性能好、可靠性高
可對I/O端口直接操作,位操作能力更是其它計(jì)算機(jī)無法比擬的。由于CPU、存儲(chǔ)器及I/O接口集成在同一芯片內(nèi),數(shù)據(jù)在傳送時(shí)受干擾的影響較小,且不易受環(huán)境條件的影響。(2)體積小、價(jià)格低、易于產(chǎn)品化
應(yīng)用系統(tǒng)的印制板減小、接插件減少、安裝簡單方便。4單片機(jī)的特點(diǎn)及應(yīng)用領(lǐng)域單片機(jī)在哪里?——電冰箱輸入設(shè)備(箭頭指向單片機(jī)):加、減按鈕輸出設(shè)備(箭頭指向設(shè)備):4個(gè)指示燈、電磁線圈的驅(qū)動(dòng)電路單片機(jī)在哪里?——電磁爐單片機(jī)就好像核心控制者,統(tǒng)管著液晶屏、USB口、存儲(chǔ)器、DAC及驅(qū)動(dòng)電路、按鈕等外部設(shè)備,并有序地在這些設(shè)備中傳遞、交換數(shù)據(jù)或信號。單片機(jī)在哪里?——MP3播放機(jī)臺(tái)燈單片機(jī)在哪里?——臺(tái)燈一輛轎車有幾十個(gè)單片機(jī)單片機(jī)在哪里?——汽車單片機(jī)在哪里?下面開啟單片機(jī)應(yīng)用之毀三觀系列以上為常規(guī)單片機(jī)應(yīng)用你們口袋里就裝了很多計(jì)算機(jī)--單片機(jī)單片機(jī)在哪里?——SIM卡SIM卡是帶有微處理器的芯片,內(nèi)有5個(gè)模塊,每個(gè)模塊對應(yīng)一個(gè)功能:CPU(8位/16位/32位)、程序存儲(chǔ)器ROM、工作存儲(chǔ)器RAM、數(shù)據(jù)存儲(chǔ)器EEPROM和串行通信單元。SIM卡在與手機(jī)連接時(shí),最少需要5個(gè)連接線:*電源(Vcc)*時(shí)鐘(CLK)*數(shù)據(jù)I/O口(Data)*復(fù)位(RST)*接地端(GND)單片機(jī)在哪里?——飯卡單片機(jī)在哪里?——銀行卡單片機(jī)還隱藏在我們?nèi)粘I畹脑S多電子產(chǎn)品中,如鼠標(biāo)、遙控器、洗衣機(jī)、機(jī)器人等。綜觀這些電子產(chǎn)品都有一個(gè)特點(diǎn),它們都有輸入或輸出設(shè)備。比如鼠標(biāo)的按鍵、遙控器的按鍵等是輸入設(shè)備;洗衣機(jī)的電機(jī)、機(jī)器人的執(zhí)行機(jī)構(gòu)是輸出設(shè)備。形形色色的輸入設(shè)備和輸出設(shè)備都在單片機(jī)的控制下協(xié)調(diào)工作。更多單片機(jī)2025/4/1622單片機(jī)技術(shù)的應(yīng)用遍布國民經(jīng)濟(jì)與人民生活的各個(gè)領(lǐng)域1.單片機(jī)的發(fā)展過程
(1)低性能8位單片機(jī)階段
1976年,Intel公司推出了MCS-48系列單片機(jī)。8位CPU、1K字節(jié)ROM、64字節(jié)RAM、27根I/O線和1個(gè)8位定時(shí)/計(jì)數(shù)器。
特點(diǎn):存儲(chǔ)器容量小,尋址范圍小(不大于4K),無串行接口,指令系統(tǒng)功能不強(qiáng)。
4單片機(jī)的發(fā)展?fàn)顩r
特點(diǎn):結(jié)構(gòu)體系完善,性能已大大提高,面向控制的特點(diǎn)進(jìn)一步突出。現(xiàn)在MCS-51已成為公認(rèn)的單片機(jī)經(jīng)典機(jī)種。
1980年,Intel公司推出了MCS-51系列單片機(jī):8位CPU、4K字節(jié)ROM、128字節(jié)RAM、4個(gè)8位并口、1個(gè)全雙工串行口、2個(gè)16位定時(shí)/計(jì)數(shù)器。尋址范圍64K,并有控制功能較強(qiáng)的布爾處理器。
(2)高性能8位單片機(jī)階段5單片機(jī)的發(fā)展?fàn)顩r
(3)
8位單片機(jī)鞏固發(fā)展及16位單片機(jī)、32位單片機(jī)推出階段。
特點(diǎn):片內(nèi)面向測控系統(tǒng)電路增強(qiáng),使之可以方便靈活地用于復(fù)雜的自動(dòng)測控系統(tǒng)及設(shè)備?!拔⒖刂破鳌钡姆Q謂更能反應(yīng)單片機(jī)的本質(zhì)。1982年,Intel推出MCS-96系列單片機(jī)。芯片內(nèi)集成:16位CPU、8K字節(jié)ROM、232字節(jié)RAM、5個(gè)8位并口、1個(gè)全雙工串行口、2個(gè)16位定時(shí)/計(jì)數(shù)器。尋址范圍64K。片上還有8路10位ADC、1路PWM輸出及高速I/O部件等。MCS-51系列單片機(jī)的缺點(diǎn):時(shí)鐘利用率不高。(需要至少12個(gè)以上的時(shí)鐘脈沖才能執(zhí)行完一條指令);片內(nèi)不包含ADC、DAC、WATCHDOG、PWM、CAN控制器等。故現(xiàn)在有些公司對MCS51單片機(jī)進(jìn)行了設(shè)計(jì)改造,使新一代的MCS-51兼容單片機(jī)具有了高速、高效工作的特性,并在51系列芯片中集成了許多新的功能特性(如A/D、D/A等)。國內(nèi)人們廣泛使用MCS-51系列單片機(jī)。因此我們需要學(xué)好、掌握MCS51系列單片機(jī)技術(shù)。2.單片機(jī)產(chǎn)品近況
ATMEL公司融入Flash存儲(chǔ)器技術(shù)的AT89系列宏晶科技公司的STC單片機(jī)
Philips公司的80C51、80C552系列
華邦公司的W78C51、W77C51高速低價(jià)系列
ADI公司的ADμC8xx高精度ADC系列
LG公司的GMS90/97低壓高速系列
Maxim公司的DS89C420高速(50MIPS)系列
Cygnal公司的C8051F系列高速SOC單片機(jī)
51系列產(chǎn)品繁多,已推出的主要產(chǎn)品有:非51結(jié)構(gòu)單片機(jī)新品不斷推出,給用戶提供了更為廣泛的選擇空間,近年來推出的非51系列的主要產(chǎn)品有:
Intel的MCS-96系列16位單片機(jī)ATMEL公司的AVR單片機(jī),是流行的Arduino的控制器
Microchip的PIC系列RISC單片機(jī)
TI的MSP430F系列16位低功耗單片機(jī)
ST的STM32系列32位單片機(jī)STM32單片機(jī)介紹其實(shí),51單片機(jī)太弱了……51STM32體系8位32位主頻1.2~33MHz(12MHz)72MHz
ROM/FLASH4k512K
RAM128
64K中斷源6個(gè)60定時(shí)器2個(gè)11個(gè)UART1個(gè)5個(gè)A/D、D/A無3個(gè)12位A/D、2個(gè)12位D/A典型芯片對比51存活的原因:便宜單片機(jī)的應(yīng)用正從根本上改變著傳統(tǒng)的控制系統(tǒng)設(shè)計(jì)思想和設(shè)計(jì)方法。從前必須由模擬電路或數(shù)字電路實(shí)現(xiàn)的大部分控制功能,現(xiàn)在已能使用單片微機(jī)通過軟件方法實(shí)現(xiàn)了。這種以軟件取代硬件,并能提高系統(tǒng)性能的控制技術(shù),稱之為微控制技術(shù)。這標(biāo)志著一種全新概念的建立。5為什么學(xué)及如何學(xué)(對于普通人)學(xué)習(xí)單片機(jī)是理解工業(yè)社會(huì)的一種途徑如何利用已學(xué)知識設(shè)計(jì)一個(gè)簡易防賊裝置??實(shí)踐是學(xué)習(xí)單片機(jī)技術(shù)的必由之路!5為什么學(xué)及如何學(xué)(對于開發(fā)者)善用開發(fā)板6為什么學(xué)及如何學(xué)Keil6為什么學(xué)及如何學(xué)關(guān)于編程語言問題1.機(jī)器語言在單片機(jī)中,用二進(jìn)制代碼表示的指令、數(shù)字和符號簡稱為機(jī)器語言。直接用機(jī)器語言編寫的程序稱為機(jī)器語言程序。缺點(diǎn):程序不易看懂,不便于記憶,容易出錯(cuò)。目前,用于程序設(shè)計(jì)的語言基本上分為三種:6為什么學(xué)及如何學(xué)2.匯編語言用助記符表示的指令稱為符號語言或匯編語言。匯編語言程序(源程序)需要“匯編”(由專門的匯編程序完成)才能轉(zhuǎn)換成機(jī)器語言。得到的機(jī)器語言程序稱為目標(biāo)程序。
特點(diǎn):是面向機(jī)器的語言,必須對硬件有一定的了解。助記符指令和機(jī)器指令一一對應(yīng)。能直接管理和控制硬件設(shè)備(功能部件)。6為什么學(xué)及如何學(xué)3.高級語言高級語言不受具體機(jī)器的限制,都是參照一些數(shù)學(xué)語言而設(shè)計(jì)的,使用了許多數(shù)學(xué)公式和數(shù)學(xué)計(jì)算上的習(xí)慣用語,非常擅長于科學(xué)計(jì)算。常用的高級語言,如BASIC、FORTRAN、C語言等。
特點(diǎn):通用性強(qiáng),直觀、易懂、易學(xué)、可讀性好。計(jì)算機(jī)不能直接識別和執(zhí)行。(需要進(jìn)行編譯)發(fā)展很快。易懂、易學(xué)?while(x--){for(i=120;i>0;i--);}111011110001111110101010000001100111000000000001000111100100101011000000000101111111010111100011101101110100111001010000000000100000011101110000111011000000011110111MOVA,R7DECR7MOVR2,0x06JNZC:000ADECR6ORLA,R2JZC:0018MOVR5,#0x78MOVA,R5SETBCSUBBA,#0x00JCDelayMS(C:0003)DECR5SJMPC:000F機(jī)器語言、匯編、C語言對比1.1計(jì)算機(jī)中的數(shù)制及編碼1.2C語言基礎(chǔ)第一章
單片機(jī)與C語言基礎(chǔ)1.1計(jì)算機(jī)中的數(shù)制及編碼十進(jìn)制數(shù)十進(jìn)制數(shù)有兩個(gè)主要特點(diǎn):
(1)有10個(gè)不同的數(shù)字符號:0、1、2、…、9;
(2)低位向高位進(jìn)位的規(guī)律是“逢十進(jìn)一”。因此,同一個(gè)數(shù)字符號在不同的數(shù)位所代表的數(shù)值是不同的。如555.5中4個(gè)5分別代表500、50、5和0.5,這個(gè)數(shù)可以寫成555.5=5×102+5×101+5×100+5×10-1
式中的10稱為十進(jìn)制的基數(shù),102、101、100、10-1稱為各數(shù)位的權(quán)。二進(jìn)制數(shù)
例如,二進(jìn)制數(shù)1011.01可表示為(1011.01)2=1×23+0×22+1×21+1×20+0×2-1+1×2-2
在二進(jìn)制數(shù)中,只有兩個(gè)不同數(shù)碼:0和1,進(jìn)位規(guī)律為“逢二進(jìn)一”。
一般,在二進(jìn)制數(shù)末尾加b表示其進(jìn)制:(1011)2=1011B十六進(jìn)制
一般,在十六進(jìn)制數(shù)開頭加0x表示其進(jìn)制,或末尾加H:(F5E)16=0xF5E=0F5EH在十六進(jìn)制中,有0、1、2、…、9、A、B、C、D、E、F共16個(gè)不同的數(shù)碼,進(jìn)位方法是“逢十六進(jìn)一”。例如,(3A8.0D)16可表示為(3A8.0D)16=3×162+10×161+8×160+0×16-1+13×16-2
各種進(jìn)位制的對應(yīng)關(guān)系十進(jìn)制二進(jìn)制八進(jìn)制十六進(jìn)制十進(jìn)制二進(jìn)制八進(jìn)制十六進(jìn)制000091001119111110101012A2102211101113B3113312110014C41004413110115D51015514111016E61106615111117F7111771610000201081000108不同進(jìn)制間的相互轉(zhuǎn)換二、十六進(jìn)制轉(zhuǎn)換成十進(jìn)制例1
將數(shù)(10.101)2,(2D.A4)16轉(zhuǎn)換為十進(jìn)制。(10.101)2=1×21+0×20+1×2-1+0×2-2+1×2-3=2.625(2D.A4)16=2×161+13×160+10×16-1+4×16-2=45.64062二進(jìn)制與十六進(jìn)制之間的相互轉(zhuǎn)換00101011.011010002B.68即(101011.01101)2=(2B.68)16
由于24=16,故可采用“合四為一”的原則,即從小數(shù)點(diǎn)開始分別向左、右兩邊各以4位為一組進(jìn)行二—十六換算:若不足4位的以0補(bǔ)足,便可將二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)。反之,采用“一分為四”的原則,每位十六進(jìn)制數(shù)用四位二進(jìn)制數(shù)表示,就可將十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。例5將(101011.01101)2轉(zhuǎn)換為十六進(jìn)制數(shù)。例6將(123.45)16轉(zhuǎn)換成二進(jìn)制數(shù)。123.45000100100011.01000101即(123.45)16=(100100011.01000101)2
例7將(110101.011)2轉(zhuǎn)換為十六進(jìn)制數(shù)。00110101.011035.6即(110101.011)2=(35.6)16
計(jì)算機(jī)與二進(jìn)制數(shù)
在計(jì)算機(jī)中只能使用二進(jìn)制數(shù)。指令、數(shù)據(jù)、字符和地址的表示以及它們的存儲(chǔ)、處理和傳送,都是以二進(jìn)制的形式進(jìn)行。沒有二進(jìn)制也就沒有電子計(jì)算機(jī)。因?yàn)椋海?)二進(jìn)制數(shù)在物理上最容易實(shí)現(xiàn)。例如,可以只用高、低兩個(gè)電平表示"1"和"0",也可以用脈沖的有無或者脈沖的正負(fù)極性表示它們。(2)二進(jìn)制數(shù)用來表示的二進(jìn)制數(shù)的編碼、計(jì)數(shù)、加減運(yùn)算規(guī)則簡單。(3)二進(jìn)制數(shù)的兩個(gè)符號"1"和"0"正好與邏輯命題的"真"和"假"相對應(yīng),為計(jì)算機(jī)實(shí)現(xiàn)邏輯運(yùn)算和程序中的邏輯判斷提供了便利的條件。硬盤中的數(shù)據(jù)示意黑客帝國片段1.位(Bit)指二進(jìn)制的位。2.字節(jié)(Byte)8位二進(jìn)制數(shù)稱為一個(gè)字節(jié)。3.字(Word)字是一臺(tái)計(jì)算機(jī)上所能并行處理的二進(jìn)制數(shù),字的位數(shù)稱為字長。字長是字節(jié)的整數(shù)倍。如:STM32單片機(jī)字長為32位。計(jì)算機(jī)中二進(jìn)制數(shù)的單位定義變量:int
num;//定義了一個(gè)整型變量,名字為numint
a,b,c;//同時(shí)定義了多個(gè)整型變量,名字分別是a、b和c變量賦值1.先定義再賦值,如:int
num;num=100;2.定義的同時(shí)賦值,如:int
num=100;變量及賦值1.2C語言基礎(chǔ)實(shí)際上編譯器的工作分為兩個(gè)步驟,先是預(yù)處理(Preprocess),然后才是編譯。宏定義屬于預(yù)處理步驟,簡單的說,預(yù)處理會(huì)根據(jù)宏定義進(jìn)行替換。比如:#defineN20inta[N];相當(dāng)于int
a[20];宏定義計(jì)算機(jī)中所有的指令、符號都是二進(jìn)制數(shù)。為了表示字符等符號,需要將符號進(jìn)行編碼,這樣計(jì)算機(jī)才能進(jìn)行存儲(chǔ)和處理。ASCII碼是“美國信息交換標(biāo)準(zhǔn)代碼”的簡稱。
ASCII碼數(shù)據(jù)類型(1) 基本類型基本類型主要包括字符型、整型和浮點(diǎn)型。字符型包括char和unsginedchar型,它們都是占一個(gè)字節(jié)空間。無符號字符類型unsignedchar的數(shù)值范圍是0~255,有符號字符類型signedchar,也簡稱為char,它的數(shù)值范圍是-128~+127。整型數(shù)據(jù)是指不帶小數(shù)的數(shù)值。(1) 基本類型浮點(diǎn)型數(shù)據(jù)是指帶小數(shù)的數(shù)值。整型數(shù)據(jù)是指不帶小數(shù)的數(shù)值。(2)構(gòu)造類型為了滿足需要定義多種類型變量的需求,C語言設(shè)置了struct關(guān)鍵字,它擁有自定義類型的能力。比如可以采用兩個(gè)double型組成的結(jié)構(gòu)體變量:struct
complex_struct{doublex,y;};結(jié)構(gòu)體變量的初始化以及成員的訪問用點(diǎn)運(yùn)算符來訪問,比如:
complex_struct.x
=
1.0;
complex_struct.y
=
2.0;
(2)構(gòu)造類型除了上面定義結(jié)構(gòu)體類似使用的方法,C語言還提供了一種采用關(guān)鍵字“typedef”定義結(jié)構(gòu)體的方法。舉例來說:1. typedefstruct2. {3. doublex,y;4. }complex_def;5. 6. complex_defcomplex_struct;(3)指針類型指針變量可以被賦予不同的指針值,可以通過指針變量改變指向(即保存了誰的地址)和間接操作。比如:1.int
i;
3.charc;2.int*pi=&i; 4.char*pc=&c;*就表示是指針變量,而&是取地址運(yùn)算符,&i表示取變量i的地址。int
*pi=&i;表示定義指針變量pi,并用i的地址來初始化pi,也就是pi指向了i。如果我們要獲取指針變量所指向的值,則要再次利用*號,比如:1.*pi=*pi+10;基本運(yùn)算運(yùn)算符主要包括:(1)算術(shù)運(yùn)算符,(2)賦值運(yùn)算符,(3)關(guān)系運(yùn)算符,(4)邏輯運(yùn)算符等。&&表示邏輯與,即為and。當(dāng)運(yùn)算符兩邊的表達(dá)式的結(jié)果都為true時(shí),整個(gè)運(yùn)算結(jié)果才為true,否則,只要有一方為false,則結(jié)果為false。
(0表示false/假,非零的表示True/真)。比如
:12&&23的結(jié)果是1(true)12&&-1
的結(jié)果是1(true)123&&0的結(jié)果是0(false)||
表示邏輯或,即為“or”。
當(dāng)兩個(gè)條件中有任一個(gè)條件滿足,||
的運(yùn)算結(jié)果就為“真”。比如
:12||1
=1(true)12||0
=1(true)0||0
=0(false)邏輯運(yùn)算、按位邏輯運(yùn)算&表示按位與。每一位進(jìn)行與操作,符合1&1=1,1&0=0,0&0=0
。例如,15&127=15因?yàn)?27=
(01111111)2,15=
(00001111)2。(0111
1111)2&(0000
1111)2=(00001111)2=15|表示按位或。每一位進(jìn)行或操作,符合1|1=1,1|0=1,0|0=0
。例如,128|127=255.128=(10000000)2127=(01111111)2(高位用0補(bǔ)齊)
所以128|127=(11111111)2=255邏輯運(yùn)算、按位邏輯運(yùn)算^
表示按位異或。當(dāng)對應(yīng)位不同的為真,相同為假。符合1^1=0,1^0=1,0^0=0。例如:5^7=0101^0111=0010~表示按位取反。按對應(yīng)的二進(jìn)制數(shù)逐位進(jìn)行取反。符合~1=0,~0=1。邏輯運(yùn)算、按位邏輯運(yùn)算分支和循環(huán)語句(1) if語句if(表達(dá)式1){執(zhí)行代碼塊1;}……elseif(表達(dá)式m){執(zhí)行代碼塊m;}……else{執(zhí)行代碼塊n;}分支和循環(huán)語句(1) while循環(huán)while(表達(dá)式){語句;}do{語句;}while(表達(dá)式);(2) do-while循環(huán)for(表達(dá)式1;表達(dá)式2;表達(dá)式3){
語句;}(3)
for循環(huán)例:for(i=1;i<=n;++i)result=result*i;函數(shù)在C語言中使用使用數(shù)學(xué)函數(shù):#include<math.h>#include<stdio.h>intmain(void){ doublepi=3.1416;
printf("sin(pi/2)=%f\n",sin(pi/2)); return0;}函數(shù):可以把一個(gè)規(guī)模較大的問題分解成若干個(gè)較小的組件,這些小組件可以被重復(fù)使用。使用只要給sin函數(shù)輸入相應(yīng)的參數(shù),就可以得到正確的結(jié)果,而不用管具體如何實(shí)現(xiàn)的。使用時(shí)只需在開頭包含響應(yīng)頭文件:“#include<math.h>”。編寫和使用函數(shù)定義一個(gè)函數(shù)square,用來計(jì)算任意整數(shù)的平方。然后,使用該函數(shù)計(jì)算從1到10所有整數(shù)的平方。#include<stdio.h>intsquare(int);voidmain(){intx;for(x=1;x<=10;x++)printf("%d",square(x));}intsquare(inty){returny*y;}聲明函數(shù)使用函數(shù)(調(diào)用函數(shù))定義函數(shù)1491625364964811001.硬件實(shí)驗(yàn)平臺(tái)2.教程配套資料3.KeilMDK及安裝4.編譯及燒錄程序第二章
開發(fā)環(huán)境1.硬件實(shí)驗(yàn)平臺(tái)介紹硬件實(shí)驗(yàn)平臺(tái)包括STM32開發(fā)板、J-Link仿真器、電源適配器、USB轉(zhuǎn)232模塊,直流有刷電機(jī)。STM32開發(fā)板J-Link開發(fā)者在PC電腦上完成程序編寫、編譯后,將得到單片機(jī)可以運(yùn)行的二進(jìn)制文件,并通過J-Link燒錄到單片機(jī)上才能最終運(yùn)行。J-Link驅(qū)動(dòng)安裝J-Link驅(qū)動(dòng)位于配套資料包中:“4.軟件包”文件夾中的“Setup_JLinkARM_V412.exe”文件,點(diǎn)擊安裝。USB轉(zhuǎn)232模塊USB轉(zhuǎn)232模塊——負(fù)責(zé)電腦與單片機(jī)開發(fā)板之間的通信USB轉(zhuǎn)232模塊驅(qū)動(dòng)安裝USB轉(zhuǎn)232模塊驅(qū)動(dòng)位于配套資料包中:“4.軟件包”“USB轉(zhuǎn)串口驅(qū)動(dòng)(64位).exe”或“USB轉(zhuǎn)串口驅(qū)動(dòng)(32位).exe”,2.教程配套資料2.1 文檔資料STM32單片機(jī)學(xué)習(xí)中最為重要的資料:《STM32固件庫使用手冊(中文翻譯版)》,詳細(xì)介紹了官方定義STM32的標(biāo)準(zhǔn)庫函數(shù)STM32中文參考手冊:詳細(xì)解釋了STM32單片機(jī)存儲(chǔ)器和外設(shè)等各部分的詳細(xì)信息《芯片數(shù)據(jù)手冊》,英文Datasheet:包含STM32單片機(jī)技術(shù)特征的基本描述,包含產(chǎn)品的基本配置(如內(nèi)置Flash和RAM的容量、外設(shè)的數(shù)量等),管腳的數(shù)量和分配,電氣特性,封裝信息等。2.1.1 STM32F103標(biāo)準(zhǔn)函數(shù)庫手冊開發(fā)STM32單片機(jī)程序常見方法:直接操作寄存器的方法標(biāo)準(zhǔn)庫函數(shù)方法HAL庫函數(shù)方法實(shí)際:所有的單片機(jī)控制都可以通過直接操作寄存器的方法來實(shí)現(xiàn)!問題:寄存器復(fù)雜:數(shù)量眾多,難以記憶(STM32具有數(shù)百個(gè)寄存器);不同單片機(jī)的寄存器名稱、結(jié)構(gòu)并不相同。開發(fā)的程序包含大量的寄存器名稱英文縮寫,可讀性差。標(biāo)準(zhǔn)庫函數(shù)方法:標(biāo)準(zhǔn)庫函數(shù)方法:將這些寄存器底層操作都封裝起來,提供一整套標(biāo)準(zhǔn)庫函數(shù)供開發(fā)者調(diào)用??刂埔粋€(gè)單片機(jī)引腳輸出低電平
1.voidGPIO_ResetBits(GPIOTypeDef*GPIOx,uint16_tGPIO_Pin)2.{ 3.GPIOx->BRR=GPIO_Pin;4.}只需要調(diào)用GPIO_ResetBits()函數(shù)就可以控制一個(gè)單片機(jī)引腳輸出低電平標(biāo)準(zhǔn)庫函數(shù)舉例標(biāo)準(zhǔn)函數(shù)庫手冊中關(guān)于ADC_DeInit的介紹HAL庫函數(shù)方法:意法半導(dǎo)體新推出的開發(fā)方法,專用開發(fā)軟件生成程序優(yōu)點(diǎn):簡單、方便缺點(diǎn):通用性很差,不能用于除STM32之外單片機(jī)。2.1.2 STM32中文參考手冊需要時(shí)再查找STM32中文參考手冊目錄2.2 開發(fā)板電路原理圖看不懂???讀懂電路圖必備知識——網(wǎng)絡(luò)標(biāo)號電路圖中兩點(diǎn)具有相同網(wǎng)絡(luò)標(biāo)號,就表示:這兩點(diǎn)在實(shí)際電路中是由導(dǎo)線連接在一起的,即使原理圖中沒有導(dǎo)線示意。通過網(wǎng)絡(luò)標(biāo)號這種方式,可以省略很多導(dǎo)線,從而使電路圖看起來不會(huì)過于凌亂。但初學(xué)者由于不明白此概念而導(dǎo)致困惑。讀懂電路圖必備知識——網(wǎng)絡(luò)標(biāo)號讀懂電路圖必備知識——數(shù)據(jù)手冊12V轉(zhuǎn)5V電路不是我們看不懂電路圖中的模塊、芯片,而是因?yàn)槲覀儾涣私膺@些模塊、芯片,所以看不懂電路圖。讀懂電路圖必備知識——數(shù)據(jù)手冊LM2596數(shù)據(jù)手冊讀懂電路圖必備知識——對應(yīng)實(shí)物電路圖與實(shí)物電路中的電機(jī)接口M23KeilMDK及安裝Keil5的安裝Keil5安裝文件位于配套資料包中:“4.工具軟件包”中的“mdk514.exe”,Keil5的破解Keil5破解方法:“4.工具軟件包”中的“如何破解Keil.docx”Keil5破解文件:“4.工具軟件包”中的keygen_new(2032).rar破解時(shí)需以管理員身份運(yùn)行Keil54如何編譯及燒錄程序?qū)纹瑱C(jī)開發(fā)板與J-Link的連接4.2 配置J-Link4.3 編譯程序?qū)W習(xí)單片機(jī)就是學(xué)習(xí)外設(shè)的使用!第三章 通用輸入及輸出(GPIO)1.GPIO簡介2.GPIO輸出實(shí)驗(yàn)3.GPIO輸入實(shí)驗(yàn)第三章 通用輸入及輸出(GPIO)1.GPIO簡介通用輸入輸出——GPIO(General-purposeinput/output)輸出:控制引腳輸出高電平還是低電平,代表邏輯1和邏輯0輸入:檢測引腳的電平是低還是高STM32F103RCT6單片機(jī)STM32F103RCT6單片機(jī)通過分組命名進(jìn)行區(qū)分,從A到G分組:每組0至15共16個(gè)引腳,即PA0-PA15、PB0-PB15……1) 輸入浮空(GPIO_Mode_IN_FLOATING):該模式下輸入電平必須有外部電路確定,根據(jù)具體電路,需加外部上拉電阻或下拉電阻2) 輸入上拉(GPIO_Mode_IPU):打開IO內(nèi)部的上拉電阻3) 輸入下拉(GPIO_Mode_IPD):打開IO內(nèi)部的下拉電阻4) 模擬輸入(GPIO_Mode_AIN):輸入傳統(tǒng)的模擬量信號5) 開漏輸出(GPIO_Mode_Out_OD):輸出端相當(dāng)于三極管的集電極.要得到高電平狀態(tài)需要上拉電阻才行.適合于做電流型的驅(qū)動(dòng),其吸收電流的能力相對強(qiáng)(一般20mA以內(nèi))。6) 推挽輸出(GPIO_Mode_Out_PP):可以提高輸出功率,能更好驅(qū)動(dòng)外部的設(shè)備,該模式下輸出電阻小,帶負(fù)載能力強(qiáng)7) 復(fù)用推挽輸出(GPIO_Mode_AF_OD)8) 復(fù)用開漏輸出(GPIO_Mode_AF_PP)GPIO八種模式不用記!2.GPIO輸出實(shí)驗(yàn)演示。。。實(shí)驗(yàn)原理電路原理圖軟件原理#include
"stm32f10x.h"http://標(biāo)準(zhǔn)外設(shè)庫頭文件
int
main(void)
{
/*********************
LED配置開始*******************************/
//配置GPIO
GPIO_InitTypeDef
GPIO_Initstructure;
//定義GPIO結(jié)構(gòu)體
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
//使能GPIOC時(shí)鐘
GPIO_Initstructure.GPIO_Mode
=
GPIO_Mode_Out_PP;
//配置為輸出模式
GPIO_Initstructure.GPIO_Pin
=
GPIO_Pin_11;
//燈LED2對應(yīng)引腳為PC11
GPIO_Initstructure.GPIO_Speed
=
GPIO_Speed_50MHz;
//GPIO速度50MHz
GPIO_Init(GPIOC,&GPIO_Initstructure);//用GPIO_InITstructure結(jié)構(gòu)體參數(shù),初始化GPIO
/**********************LED配置結(jié)束******************************/
while
(1)//死循環(huán),讓程序持續(xù)運(yùn)行
{
GPIO_SetBits(GPIOC,GPIO_Pin_11);
}
}軟件原理定義變量GPIO_Initstructure,類型為GPIO_InitTypeDef軟件原理STM32單片機(jī)的外設(shè)默認(rèn)關(guān)閉以降低功耗本實(shí)驗(yàn)中使用了組別C的GPIO引腳PC11,所以要通過開啟GPIOC的時(shí)鐘來激活C組GPIO如何使能D組GPIO?TIM2呢?軟件原理成員變量1:GPIO_Mode定義工作在推挽輸出模式成員變量2:GPIO_Pin定義引腳號,本實(shí)驗(yàn)中使用的是PC11,屬于組別C的GPIO第11號引腳成員變量3:GPIO_Speed,它配置的是GPIO引腳電平最快的切換速度,一般可以配置為50MHz、20MHz等。軟件原理第9-11行程序雖然對GPIO_Initstructure成員變量進(jìn)行了賦值,但其實(shí)并沒有正在發(fā)揮作用。函數(shù)GPIO_Init負(fù)責(zé)初始化GPIO相關(guān)的寄存器。第一個(gè)參數(shù)GPIOC,確定了第二個(gè)參數(shù)是對C組GPIO相應(yīng)寄存器進(jìn)行設(shè)置。第二個(gè)參數(shù)“&GPIO_Initstructure”前面的“&”表示取結(jié)構(gòu)體變量GPIO_Initstructure的地址。指針指針復(fù)習(xí)指針變量可以被賦予不同的指針值,可以通過指針變量改變指向(即保存了誰的地址)和間接操作。比如:1.int
i;
3.charc;2.int*pi=&i; 4.char*pc=&c;*就表示是指針變量,而&是取地址運(yùn)算符,&i表示取變量i的地址。int
*pi=&i;表示定義指針變量pi,并用i的地址來初始化pi,也就是pi指向了i。軟件原理第9-11行程序雖然對GPIO_Initstructure成員變量進(jìn)行了賦值,但其實(shí)并沒有正在發(fā)揮作用。函數(shù)GPIO_Init負(fù)責(zé)初始化GPIO相關(guān)的寄存器。第一個(gè)參數(shù)GPIOC,確定了第二個(gè)參數(shù)是對C組GPIO相應(yīng)寄存器進(jìn)行設(shè)置。第二個(gè)參數(shù)“&GPIO_Initstructure”前面的“&”表示取結(jié)構(gòu)體變量GPIO_Initstructure的地址。配置程序小結(jié)#include
"stm32f10x.h"http://標(biāo)準(zhǔn)外設(shè)庫頭文件
int
main(void)
{
/*********************
LED配置開始*******************************/
//配置GPIO
GPIO_InitTypeDef
GPIO_Initstructure;
//定義GPIO結(jié)構(gòu)體
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
//使能GPIOC時(shí)鐘
GPIO_Initstructure.GPIO_Mode
=
GPIO_Mode_Out_PP;
//配置為輸出模式
GPIO_Initstructure.GPIO_Pin
=
GPIO_Pin_11;
//燈LED2對應(yīng)引腳為PC11
GPIO_Initstructure.GPIO_Speed
=
GPIO_Speed_50MHz;
//GPIO速度50MHz
GPIO_Init(GPIOC,&GPIO_Initstructure);//用GPIO_InITstructure結(jié)構(gòu)體參數(shù),初始化GPIO
上述配置部分程序:開啟C組GPIO時(shí)鐘,使能GPIOC;并將C組第11號GPIO引腳指定為GPIO_Mode_Out_PP工作方式,速度為GPIO_Speed_50MHz??刂撇糠周浖韜hile(1)無限循環(huán)避免單片機(jī)程序跑飛GPIO_SetBits(GPIOC,GPIO_Pin_11)使對應(yīng)端口輸出高電平輸出低電平:GPIO_ResetBits函數(shù)軟件原理#include
"stm32f10x.h"http://標(biāo)準(zhǔn)外設(shè)庫頭文件
int
main(void)
{
/*********************
LED配置開始*******************************/
//配置GPIO
GPIO_InitTypeDef
GPIO_Initstructure;
//定義GPIO結(jié)構(gòu)體
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
//使能GPIOC時(shí)鐘
GPIO_Initstructure.GPIO_Mode
=
GPIO_Mode_Out_PP;
//配置為輸出模式
GPIO_Initstructure.GPIO_Pin
=
GPIO_Pin_11;
//燈LED2對應(yīng)引腳為PC11
GPIO_Initstructure.GPIO_Speed
=
GPIO_Speed_50MHz;
//GPIO速度50MHz
GPIO_Init(GPIOC,&GPIO_Initstructure);//用GPIO_InITstructure結(jié)構(gòu)體參數(shù),初始化GPIO
/**********************LED配置結(jié)束******************************/
while
(1)//死循環(huán),讓程序持續(xù)運(yùn)行
{
GPIO_SetBits(GPIOC,GPIO_Pin_11);
}
}程序考核任務(wù)提示:使GPIO輸出低電平的庫函數(shù)為GPIO_ResetBits在理解開發(fā)板原理圖基礎(chǔ)上,修改程序點(diǎn)亮燈LED4(更進(jìn)一步:流水燈)3.GPIO輸入實(shí)驗(yàn)演示輸出:控制引腳輸出高電平還是低電平,代表邏輯1和邏輯0輸入:檢測引腳的電平是低還是高按下USER1按鍵時(shí),開發(fā)板上LED2點(diǎn)亮了再次按下USER2按鍵后,LED2又熄滅實(shí)驗(yàn)原理電路原理圖當(dāng)按鍵沒被按下時(shí),PC12引腳電平為高電平(3.3V)當(dāng)按鍵按下后,PC12引腳電平為低電平(0V)軟件原理#include
"stm32f10x.h"http://標(biāo)準(zhǔn)外設(shè)庫頭文件
int
main(void)
{
GPIO_InitTypeDef
GPIO_InitStructure;
//定義GPIO結(jié)構(gòu)體
/*********************
LED2配置*******************************/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Mode
=
GPIO_Mode_Out_PP;
//配置為輸出模式
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed
=
GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure);
//調(diào)用庫函數(shù)GPIO_Init()初始化GPIO
/**********************按鍵USER1配置******************************/
GPIO_InitStructure.GPIO_Mode
=
GPIO_Mode_IPU;//配置為上拉輸入
GPIO_InitStructure.GPIO_Pin
=
GPIO_Pin_12;
GPIO_Init(GPIOC,
&GPIO_InitStructure);
/**********************按鍵USER2配置******************************/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,
ENABLE);
GPIO_InitStructure.GPIO_Mode
=
GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin
=
GPIO_Pin_9;
GPIO_Init(GPIOB,
&GPIO_InitStructure);
while(1)
{
if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_12)==0)//如果USER1按下,即判斷PC12輸入電平是否為低電平
{
GPIO_SetBits(GPIOC,GPIO_Pin_11);//PC11輸出高電平,點(diǎn)亮LED2
}
else
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==0)//如果USER2按下,即判斷PB11輸入電平是否為低電平
{
GPIO_ResetBits(GPIOC,GPIO_Pin_11);
//PC11輸出低電平,熄滅LED2
}
}
軟件原理將PC12和PB9引腳配置為上拉輸入模式因?yàn)镃組GPIO時(shí)鐘已經(jīng)在第7行使能了,這里無需再次配置。配置部分包含GPIO輸出部分和輸入部分。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 球員合同協(xié)議書怎么寫
- 機(jī)械加工鉗工試題及答案
- 借資入股合同協(xié)議書
- 經(jīng)緯度試題及答案解析
- 二建實(shí)務(wù)考試題型及答案
- 道路檢測員面試題及答案
- 新沂地理中考試題及答案
- 數(shù)字藝術(shù)作品在虛擬現(xiàn)實(shí)領(lǐng)域的創(chuàng)作與版權(quán)保護(hù)分析報(bào)告
- 交接車合同協(xié)議書模板
- 2025年工業(yè)互聯(lián)網(wǎng)平臺(tái)同態(tài)加密技術(shù)在工業(yè)互聯(lián)網(wǎng)安全防護(hù)體系中的應(yīng)用價(jià)值分析報(bào)告
- 近五年安徽中考英語真題及答案2024
- 2024年高校輔導(dǎo)員考試題庫試題及答案
- 現(xiàn)澆箱梁施工培訓(xùn)課件
- 2024年系統(tǒng)分析師考試的重要趨勢發(fā)現(xiàn):試題及答案
- 關(guān)于“高中整本書閱讀教學(xué)策略”的文獻(xiàn)綜述
- 軟著申請流程
- 測繪管理考試試題及答案
- 青馬班面試試題及答案
- 2025年廣東物理中考二輪專題復(fù)習(xí)之質(zhì)量與密度(含答案)
- 2025年山東科技面試試題及答案
- 朋友出去旅游免責(zé)協(xié)議書7篇
評論
0/150
提交評論