版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)項(xiàng)目化教程(C語(yǔ)言版)1-1
初識(shí)單片機(jī)一、什么是單片機(jī)單板機(jī)將CPU芯片、存儲(chǔ)器芯片、I/O接口芯片和簡(jiǎn)單的輸入/輸出設(shè)備(小鍵盤(pán)、LED顯示器)等裝配在一塊印刷電路板上,再配上監(jiān)控程序(固化在ROM中),就構(gòu)成了一臺(tái)單板微型計(jì)算機(jī)(簡(jiǎn)稱(chēng)單板機(jī))。單板機(jī)一、什么是單片機(jī)單板機(jī)單板機(jī)的輸入/輸出設(shè)備簡(jiǎn)單,軟件資源少,使用不方便。早期主要用于微型計(jì)算機(jī)原理的教學(xué)及簡(jiǎn)單的測(cè)控系統(tǒng),現(xiàn)在已很少使用。一、什么是單片機(jī)單片機(jī)是指集成在一個(gè)芯片上的微型計(jì)算機(jī),它的各種功能部件,包括CPU、存儲(chǔ)器、基本輸入/輸出(I/O)接口電路、定時(shí)/計(jì)數(shù)器和中斷系統(tǒng)等,都制作在一塊集成芯片上,構(gòu)成一個(gè)完整的微型計(jì)算機(jī)。由于它的結(jié)構(gòu)與指令功能都是按照工業(yè)控制要求設(shè)計(jì),因此單片機(jī)又被稱(chēng)為微控制器(Micro-ControllerUnit,簡(jiǎn)稱(chēng)MCU)。一、什么是單片機(jī)單片機(jī)應(yīng)用系統(tǒng)單片機(jī)+接口電路及外設(shè)等+軟件硬件單片機(jī)應(yīng)用系統(tǒng)由硬件和軟件組成硬件是應(yīng)用系統(tǒng)的基礎(chǔ)軟件是在硬件的基礎(chǔ)上對(duì)其資源進(jìn)行合理調(diào)配和使用,從而完成應(yīng)用系統(tǒng)所要求的任務(wù),二者相互依賴(lài),缺一不可。一、什么是單片機(jī)CPUROM/EPROMRAM定時(shí)/計(jì)數(shù)器并行接口串行接口中斷系統(tǒng)P0P1P2P3TXDRXDINT0INT1T0T1XTAL1XTAL2時(shí)鐘電路內(nèi)中斷外中斷外部事件計(jì)數(shù)64KB總線擴(kuò)展控制器51單片機(jī)內(nèi)部結(jié)構(gòu)二、單片機(jī)的特點(diǎn)(1)體積小、結(jié)構(gòu)簡(jiǎn)單、可靠性高
單片機(jī)把各功能部件集成在一個(gè)芯片上,內(nèi)部采用總線結(jié)構(gòu),減少了各芯片之間的連線,大大提高了單片機(jī)的可靠性與抗干擾能力。另外,其體積小,對(duì)于強(qiáng)磁場(chǎng)環(huán)境易于采取屏蔽措施,適合在惡劣環(huán)境下工作。二、單片機(jī)的特點(diǎn)
(2)控制能力強(qiáng)單片機(jī)雖然結(jié)構(gòu)簡(jiǎn)單,但是它“五臟俱全”,已經(jīng)具備了足夠的控制功能。單片機(jī)具有較多的I/O口,CPU可以直接對(duì)I/O進(jìn)行操作、算術(shù)操作、邏輯操作和位操作,指令簡(jiǎn)單而豐富。所以單片機(jī)也是“面向控制”的計(jì)算機(jī)。二、單片機(jī)的特點(diǎn)(3)優(yōu)異的性能/價(jià)格比
由于單片機(jī)構(gòu)成的硬件結(jié)構(gòu)簡(jiǎn)單、開(kāi)發(fā)周期短、控制功能強(qiáng)、可靠性高,因此,在達(dá)到同樣功能的條件下,用單片機(jī)開(kāi)發(fā)的控制系統(tǒng)比用其它類(lèi)型的微型計(jì)算機(jī)開(kāi)發(fā)的控制系統(tǒng)價(jià)格更便宜。二、單片機(jī)的特點(diǎn)(4)簡(jiǎn)單易學(xué)由于單片機(jī)所需的外部器件很少,因此對(duì)于初學(xué)者只需要花費(fèi)極少時(shí)間學(xué)習(xí)硬件電路的設(shè)計(jì),而把大部分的時(shí)間放在程序設(shè)計(jì)上,這樣大大提高了學(xué)習(xí)效率。簡(jiǎn)單易學(xué)感謝您的觀看Thanks
for
your
attention.
單片機(jī)項(xiàng)目化教程(C語(yǔ)言版)
1-2初識(shí)單片機(jī)一、進(jìn)制十進(jìn)制十進(jìn)制數(shù)是我們最常用的,它的基數(shù)為“十”,所使用的數(shù)碼為0~9共10個(gè)數(shù)字?!胺晔M(jìn)一,借一當(dāng)十”是十進(jìn)制數(shù)的特點(diǎn)。一、進(jìn)制數(shù)字電路中只有兩種電平特性,即高電平和低電平,這也就決定了數(shù)字電路中使用二進(jìn)制。二進(jìn)制二進(jìn)制是使用0和1兩個(gè)數(shù)碼來(lái)表示的數(shù),它的基數(shù)是2,二進(jìn)制的特點(diǎn)是“逢二進(jìn)一,借一當(dāng)二”。一、進(jìn)制二進(jìn)制十進(jìn)制數(shù)1二進(jìn)制數(shù)是1B這里B是表示二進(jìn)制數(shù)的后綴十進(jìn)制數(shù)2二進(jìn)制數(shù)是10B1+1=10B一、進(jìn)制十進(jìn)制的0~15表示成十六進(jìn)制數(shù)分別為0~9,A,B,C,D,E,F(xiàn),即十進(jìn)制的10對(duì)應(yīng)十六進(jìn)制的A,11對(duì)應(yīng)B,12對(duì)應(yīng)C,13對(duì)應(yīng)D,14對(duì)應(yīng)E,15對(duì)應(yīng)F。十六進(jìn)制特點(diǎn)是“逢十六進(jìn)一,借一當(dāng)十六”。是二進(jìn)制的簡(jiǎn)短表示形式。十六進(jìn)制一、進(jìn)制一般在十六進(jìn)制數(shù)后面加上后綴H,表示該數(shù)為十六進(jìn)制數(shù),如90H,ACH。十六進(jìn)制表示方法在C語(yǔ)言編程時(shí)要寫(xiě)成“0x90,0xac”,在數(shù)的最前面加上“0x”表示該數(shù)為十六進(jìn)制數(shù)。一、進(jìn)制二進(jìn)制與十六進(jìn)制的轉(zhuǎn)換當(dāng)二進(jìn)制數(shù)與十六進(jìn)制數(shù)轉(zhuǎn)換時(shí),因?yàn)樗奈欢M(jìn)制數(shù)正好可以表示0`F這16個(gè)數(shù)字,所以轉(zhuǎn)換時(shí)可以從最低位開(kāi)始,每四位二進(jìn)制數(shù)字分為一組,不足四位的用0補(bǔ)齊4位,對(duì)應(yīng)進(jìn)行相互轉(zhuǎn)換即可。例如,二進(jìn)制數(shù)11110100101轉(zhuǎn)換成十六進(jìn)制數(shù):(11110100101)2=(011110100101)2=(7A5)16一、進(jìn)制二進(jìn)制與十六進(jìn)制的轉(zhuǎn)換十進(jìn)制二進(jìn)制十六進(jìn)制十進(jìn)制二進(jìn)制十六進(jìn)制000000810008100011910019200102101010A300113111011B401004121100C501015131101D601106141110E701117151111F一、進(jìn)制我們?cè)谶M(jìn)行單片機(jī)編程時(shí)常常會(huì)用到其他較大的數(shù),這時(shí)我們用Windows系統(tǒng)自帶的計(jì)算器,可以很方便地進(jìn)行二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù)直接的任意轉(zhuǎn)換。感謝您的觀看Thanks
for
your
attention.
單片機(jī)項(xiàng)目化教程(C語(yǔ)言版)
1-2初識(shí)單片機(jī)二進(jìn)制的邏輯運(yùn)算與“與”運(yùn)算是實(shí)現(xiàn)“必須都有,否則就沒(méi)有”這種邏輯關(guān)系的一種運(yùn)算。C語(yǔ)言中運(yùn)算符為“&”,其運(yùn)算規(guī)則如下:0&0=0,0&1=1&0=0,1&1=1。其運(yùn)算符號(hào)如圖所示。二進(jìn)制的邏輯運(yùn)算與0101010110101010&00000000二進(jìn)制的邏輯運(yùn)算或“或”運(yùn)算是實(shí)現(xiàn)“只要其中之一有就有”這種邏輯關(guān)系的一種運(yùn)算。C語(yǔ)言中運(yùn)算符為“︱”其運(yùn)算規(guī)則如下:0︱0=0,0︱1=1︱0=1,1︱1=1。其運(yùn)算符號(hào)如圖所示。二進(jìn)制的邏輯運(yùn)算或0101010110101010|11111111二進(jìn)制的邏輯運(yùn)算非“非”運(yùn)算是實(shí)現(xiàn)“求反”這種邏輯關(guān)系的一種運(yùn)算。C語(yǔ)言中運(yùn)算符為“!”,其運(yùn)算規(guī)則如下:!0=1,!1=0。其運(yùn)算符號(hào)如圖所示。二進(jìn)制的邏輯運(yùn)算非C語(yǔ)言中“~”表示“按位取反”運(yùn)算。例如~01010101=(10101010)而上面講到的“!”運(yùn)算只是對(duì)單一位進(jìn)行運(yùn)算。感謝您的觀看Thanks
for
your
attention.
單片機(jī)項(xiàng)目化教程(C語(yǔ)言版)
1-2初識(shí)單片機(jī)一、單片機(jī)的電平特性數(shù)字電路中只有兩種電平低電平高電平單片機(jī)的輸入和輸出為T(mén)TL電平一、單片機(jī)的電平特性低電平高電平單片機(jī)的輸入和輸出為T(mén)TL電平+5V
0V等價(jià)于邏輯1等價(jià)于邏輯0一、單片機(jī)的電平特性低電平高電平計(jì)算機(jī)的串口為RS-232C電平-12V
+12VRS-232C電平為負(fù)邏輯電平一、單片機(jī)的電平特性計(jì)算機(jī)單片機(jī)一、單片機(jī)的電平特性計(jì)算機(jī)與單片機(jī)之間通訊時(shí)需要加電平轉(zhuǎn)換芯片max232感謝您的觀看Thanks
for
your
attention.
單片機(jī)項(xiàng)目化教程(C語(yǔ)言版)1-3keil軟件使用Keil軟件使用打開(kāi)keil軟件,版本μVision2,μvision3,μvision4都一樣,在這里用μvision4版本,如圖所示。Keil軟件使用Keil軟件使用我們要建立新的工程,選擇Project→newμvisionproject…Keil軟件使用選擇工程要保存的路徑,輸入工程文件名,如圖Keil軟件使用點(diǎn)擊保存后會(huì)彈出一個(gè)對(duì)話框,要求用戶選擇單片機(jī)型號(hào),可以根據(jù)用戶使用的單片機(jī)來(lái)選擇,我們使用的STC89單片機(jī)是兼容51內(nèi)核的,KeilC51幾乎支持所有的51內(nèi)核單片機(jī),51內(nèi)核具有通用型,如果程序用的資源不是太復(fù)雜,我們可以選擇任意一款51單片機(jī)內(nèi)核就行。Keil軟件使用如果出現(xiàn)下面的界面:?jiǎn)螕羰蔷涂梢裕馑际菍纹瑱C(jī)的啟動(dòng)代碼添加到工程,我們不用修改。Keil軟件使用單擊菜單file→new選項(xiàng),或者單擊界面上的快捷圖標(biāo)Keil軟件使用
界面顯示的Text1就是我們剛剛加入的文件,但是這個(gè)文件與我們的工程還沒(méi)有直接聯(lián)系起來(lái),單擊圖標(biāo),保存我們當(dāng)前的text1文件,輸入要保存的文件名,同時(shí)要輸文件擴(kuò)展名,擴(kuò)展名很關(guān)鍵,用C語(yǔ)言編寫(xiě)的程序,則必須為**.c,匯編語(yǔ)言必須為**.asm(**為文件名),文件名是用戶自己取的。填好文件名后單擊保存。Keil軟件使用回到編輯界面,單擊Target1前面的“+”號(hào),然后在SourceGroup1上右鍵單擊,選擇AddFilestoGroupSourceGroup1,選中我們剛才建立的.c文件,這里是ledtest.c,單擊add,只需單擊一次。之后單擊Close就可以。
回到主界面后,單擊SourceGroup1前的“+”號(hào),剛剛添加的文件顯示在里面。建立工程文件Keil軟件使用產(chǎn)生執(zhí)行文件感謝您的觀看Thanks
for
your
attention.
單片機(jī)應(yīng)用技術(shù)項(xiàng)目二學(xué)習(xí)單片機(jī)硬件系統(tǒng)目錄contens任務(wù)一點(diǎn)亮第一個(gè)LED燈任務(wù)二LED燈閃爍任務(wù)三單片機(jī)控制蜂鳴器發(fā)聲教學(xué)目標(biāo)單片機(jī)外部引腳及功能單片機(jī)最小系統(tǒng)單片機(jī)存儲(chǔ)器結(jié)構(gòu)單片機(jī)并行I/O端口重點(diǎn)、難點(diǎn)重點(diǎn):?jiǎn)纹瑱C(jī)外部引腳及功能難點(diǎn):?jiǎn)纹瑱C(jī)并行I/O端口教學(xué)目標(biāo)及重點(diǎn)難點(diǎn)任務(wù)一
點(diǎn)亮第一個(gè)LED燈一、LED燈點(diǎn)亮二、89C51的信號(hào)引腳三、單片機(jī)最小系統(tǒng)電路四、51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)一、LED燈點(diǎn)亮LED燈介紹半導(dǎo)體二極管的一種可以把電能轉(zhuǎn)化成光能;常簡(jiǎn)寫(xiě)為L(zhǎng)ED。發(fā)光二極管與普通二極管一樣是由一個(gè)PN結(jié)組成,也具有單向?qū)щ娦?。由鎵(Ga)與砷(AS)、磷(P)的化合物制成的二極管能發(fā)出不同的光。一、LED燈點(diǎn)亮
紅色貼片LED燈靠電流驅(qū)動(dòng),電壓1.8V~2.2V,電流1到20mA,在1到5mA亮度有所變化,5mA以上亮度基本無(wú)變化。一、LED燈點(diǎn)亮發(fā)光二極管規(guī)律:?jiǎn)蜗驅(qū)щ娦?,通過(guò)5mA左右電流即可發(fā)光,電流越大,亮度越強(qiáng),但若電流過(guò)大會(huì)燒毀二極管,一般控制在3~20mA。工作電壓:
紅色發(fā)光二極管1.7-2.5V
綠色發(fā)光二極管2.0-2.4V
黃色發(fā)光二極管1.9-2.4V
藍(lán)/白色發(fā)光二極管3.0-3.8V一、LED燈點(diǎn)亮1.任務(wù)要求設(shè)計(jì)一個(gè)電路,STC89C51單片機(jī)的P0.0引腳連接一個(gè)LED燈,控制LED閃爍。以單片機(jī)為核心的電子設(shè)計(jì)硬件設(shè)計(jì)軟件設(shè)計(jì)單片機(jī)最小系統(tǒng)加上最簡(jiǎn)單的輸出電路來(lái)驅(qū)動(dòng)LED編程控制P0.0引腳的電平狀態(tài),使其持續(xù)一段時(shí)間的高電平,再持續(xù)一段時(shí)間的低電平2.任務(wù)分析一、LED燈點(diǎn)亮LED燈的工作原理陽(yáng)極陰極1+2.2V0V0一、LED燈點(diǎn)亮10單片機(jī)限流LED燈的工作原理一、LED燈點(diǎn)亮LED燈的工作原理STC89C51
P0.00V單片機(jī)的I/O端口
單片機(jī)驅(qū)動(dòng)一只發(fā)光二極管的原理電路圖一、LED燈點(diǎn)亮限流電阻二極管串聯(lián)電阻的目的是為了防止發(fā)光二極管和P0.0引腳流過(guò)的電流過(guò)大,燒毀二極管或單片機(jī),所以該電阻也稱(chēng)為“限流電阻”。限流電阻的選擇:假設(shè)電源電壓為VCC,發(fā)光二極管的導(dǎo)通壓降為VDD,導(dǎo)通時(shí)流過(guò)二極管的電流為I,則限流電阻R為:R=(VCC-VDD)/I例如,若二極管的導(dǎo)通壓降為2.2V,導(dǎo)通時(shí)流過(guò)的電流為5mA,則限流電阻為560Ω。一、LED燈點(diǎn)亮LED燈點(diǎn)亮程序voidmain(){
while(1) {
LED=1;
//點(diǎn)亮LED
}}#include<reg52.h>
//此文件中定義了單片機(jī)的一些特殊功能寄存器sbitLED=P0^0;
//將單片機(jī)的P0.0端口定義為led如何點(diǎn)亮LED燈?LED=1;如何熄滅LED燈?LED=0;sbit用法:sbit變量名=地址值;一、LED燈點(diǎn)亮LED燈電路連接圖二、89C51的信號(hào)引腳1.89C51單片機(jī)信號(hào)引腳簡(jiǎn)介VCCVSSXTAL2
XTAL1RSTP0.0
P0.1
P0.2P0.3P0.4P0.5P0.6P0.7P1.0
P1.1
P1.2P1.3P1.4P1.5P1.6P1.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0ALEP3.0
P3.1
P3.2P3.3P3.4P3.5P3.6P3.72.振蕩電路:XTAL1、XTAL23.復(fù)位引腳:RST4.并行口:P0、P1、P2、P37.ALE:地址鎖存控制信號(hào)1.電源線:VCC(+5V)、VSS(地)EAPSEN5.EA:訪問(wèn)程序存儲(chǔ)控制信號(hào)6.PSEN:外部ROM讀選通信號(hào)RXD/
TXD/
INT0/INT1/
T0/
T1/
WR/
RD/1
2
3
4
5
6
7
8
9
10111213141516171819
2040
39
38
37
36
35
34
33
32
313029282726252424222180318051875189C51二、89C51的信號(hào)引腳89C51系列單片機(jī)芯片引腳及其功能89C51是標(biāo)準(zhǔn)的40引腳雙列直插封裝(DIP)集成電路芯片1.主電源和時(shí)鐘振蕩電路引腳VCC(40腳) 運(yùn)行和程序校驗(yàn)時(shí)接+5V電源VSS
(20腳) 地線XTAL1(19腳)用作晶體振蕩電路的反相器輸入端,內(nèi)部接至振蕩器的反相放大器。當(dāng)采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳接地;對(duì)于CHMOS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。
XTAL2(18腳)用作晶體振蕩電路的反相器輸出端,內(nèi)部接至?xí)r鐘發(fā)生器。當(dāng)采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳接收振蕩器信號(hào);對(duì)于CHMOS單片機(jī),該引腳懸浮。二、89C51的信號(hào)引腳2.輸入/輸出(I/O)引腳P0.0~P0.7(39腳~32腳):8位漏極開(kāi)路的雙向I/O口
當(dāng)使用片外ROM和RAM時(shí),用作低8位地址和數(shù)據(jù)分時(shí)復(fù)用。P1.0~P1.7(1腳~8腳):8位帶上拉電阻的準(zhǔn)雙向I/O口
在編程/校驗(yàn)期間,用作輸入低8位地址。對(duì)于8052,P1.0是定時(shí)器T2的計(jì)數(shù)輸入端;P1.1是定時(shí)器T2的外部輸入端。
P2.0~P2.7(21腳~28腳):8位帶上拉電阻的準(zhǔn)雙向I/O口
當(dāng)使用片外ROM和RAM時(shí),輸出高8位地址。
P3.0~P3.7(10腳~17腳):8位帶上拉電阻的準(zhǔn)雙向I/O口
P3口具有第二功能在單片機(jī)中,“口”是一個(gè)集數(shù)據(jù)輸入緩沖、輸出驅(qū)動(dòng)及鎖存等多項(xiàng)功能于一體的I/O電路。二、89C51的信號(hào)引腳3.控制信號(hào)引腳RST/VPD(9引腳):RST為復(fù)位信號(hào)輸入端。當(dāng)RST端保持2個(gè)機(jī)器周期以上高電平時(shí),單片機(jī)完成復(fù)位操作。第二功能VPD為內(nèi)部RAM的備用電源輸入端。當(dāng)主電源VCC發(fā)生斷電,降到一定電壓值時(shí),可通過(guò)VPD為單片機(jī)內(nèi)部RAM提供電源,以保護(hù)片內(nèi)RAM中的信息不丟失,上電后能繼續(xù)正常運(yùn)行。ALE /PROG(30引腳):ALE為地址鎖存允許信號(hào)在系統(tǒng)擴(kuò)展時(shí),ALE用于控制把P0口輸出的低8位地址送入鎖存器鎖存起來(lái),以實(shí)現(xiàn)低8位地址和數(shù)據(jù)的分時(shí)傳送。由于ALE是以1/6晶振頻率的固定頻率輸出的正脈沖,故可作為外部時(shí)鐘或外部定時(shí)脈沖使用。ALE可驅(qū)動(dòng)8個(gè)LSTTL門(mén)。第二功能PROG是對(duì)8751內(nèi)部EPROM編程時(shí)的編程脈沖輸入端。二、89C51的信號(hào)引腳PSEN(29引腳):外部程序存儲(chǔ)器(ROM)讀選通信號(hào)訪問(wèn)外部ROM時(shí),PSEN產(chǎn)生負(fù)脈沖作為外部ROM選通信號(hào)。訪問(wèn)外部RAM或內(nèi)部ROM時(shí),不會(huì)產(chǎn)生有效的PSEN信號(hào)。
PSEN可驅(qū)動(dòng)8個(gè)LSTTL門(mén)。EA/VPP(31引腳):EA為訪問(wèn)程序存儲(chǔ)器(ROM)控制信號(hào)對(duì)8051和8751,它們的片內(nèi)有4KB的ROM,當(dāng)EA為高電平時(shí),若訪問(wèn)的地址空間在0~4KB范圍內(nèi),CPU訪問(wèn)片內(nèi)ROM;若訪問(wèn)的地址范圍超過(guò)4KB時(shí),CPU將自動(dòng)訪問(wèn)外部ROM。EA保持低電平,則訪問(wèn)外部ROM。對(duì)于8031,EA必須接地,只能訪問(wèn)外部ROM。二、89C51的信號(hào)引腳P3口的第二功能口線第二功能功能含義P3.0RXD串行數(shù)據(jù)接收P3.1TXD串行數(shù)據(jù)發(fā)送P3.2INT0外部中斷0申請(qǐng)P3.3INT1外部中斷1申請(qǐng)P3.4T0定時(shí)器/計(jì)數(shù)器0計(jì)數(shù)輸入P3.5T1定時(shí)器/計(jì)數(shù)器1計(jì)數(shù)輸入P3.6WR外部RAM寫(xiě)選通P3.7RD外部RAM讀選通三、單片機(jī)最小系統(tǒng)電路三、單片機(jī)最小系統(tǒng)電路三、單片機(jī)最小系統(tǒng)電路1.單片機(jī)時(shí)鐘電路單片機(jī)本身是一個(gè)復(fù)雜的同步時(shí)序電路,為了保證同步工作方式的實(shí)現(xiàn),電路應(yīng)在唯一的時(shí)鐘信號(hào)控制下嚴(yán)格地按時(shí)序協(xié)調(diào)工作。時(shí)鐘電路用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信號(hào)。三、單片機(jī)最小系統(tǒng)電路1.單片機(jī)時(shí)鐘電路時(shí)鐘信號(hào)的產(chǎn)生(內(nèi)部方式時(shí)鐘)89C51芯片內(nèi)部有一個(gè)高增益反相放大器,其輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。外接作為反饋元件的晶體后成為自激振蕩器,晶體呈感性,與微調(diào)電容C1、C2構(gòu)成并聯(lián)諧振回路。
振蕩器的頻率主要取決于晶體,電容有微調(diào)作用。晶體的振蕩頻率范圍通常是1.2~12MHz,電容C1、C2一般取30pF。晶體振蕩頻率越高,系統(tǒng)的時(shí)鐘頻率越高,單片機(jī)運(yùn)行速度越快。三、單片機(jī)最小系統(tǒng)電路1.單片機(jī)時(shí)鐘電路
關(guān)于89C51系列單片機(jī)的時(shí)序概念有4個(gè),可用定時(shí)單位來(lái)說(shuō)明,從小到大依次是:節(jié)拍、狀態(tài)、機(jī)器周期和指令周期,下面分別加以說(shuō)明。1)節(jié)拍把振蕩脈沖的周期定義為節(jié)拍,用P表示,也就是晶振的振蕩頻率fosc。2)狀態(tài)振蕩脈沖fosc經(jīng)過(guò)二分頻后,就是單片機(jī)時(shí)鐘信號(hào)的周期,定義為狀態(tài),用S表示。一個(gè)狀態(tài)包含兩個(gè)節(jié)拍,其前半周期對(duì)應(yīng)的節(jié)拍叫P1,后半周期對(duì)應(yīng)的節(jié)拍叫P2。3)機(jī)器周期
89C51系列單片機(jī)采用定時(shí)控制方式,有固定的機(jī)器周期。規(guī)定一個(gè)機(jī)器周期的寬度為6個(gè)狀態(tài),即12個(gè)振蕩脈沖周期,因此機(jī)器周期就是振蕩脈沖的十二分頻。小提示當(dāng)振蕩脈沖頻率為12MHz時(shí),一個(gè)機(jī)器周期為1μs;當(dāng)振蕩脈沖頻率為6MHz時(shí),一個(gè)機(jī)器周期為2μs。三、單片機(jī)最小系統(tǒng)電路1.單片機(jī)時(shí)鐘電路牢牢記住振蕩周期=晶振頻率fosc的倒數(shù);1個(gè)機(jī)器周期=12個(gè)振蕩周期;1個(gè)指令周期=1、2、4個(gè)機(jī)器周期三、單片機(jī)最小系統(tǒng)電路2.單片機(jī)復(fù)位電路
復(fù)位方式和復(fù)位電路復(fù)位是單片機(jī)的初始化操作,其主要功能是把PC初始化為0000H,使單片機(jī)從0000H單元開(kāi)始執(zhí)行程序。復(fù)位后,單片機(jī)才能開(kāi)始正常工作。RST引腳是復(fù)位信號(hào)的輸入端,在單片機(jī)的RST端加上高電平(持續(xù)2個(gè)機(jī)器周期以上),單片機(jī)即進(jìn)入復(fù)位工作方式。復(fù)位不影響MCS-51單片機(jī)內(nèi)部RAM的狀態(tài),只要RST輸入端保持高電平,將循環(huán)復(fù)位。RST返回低電平后,CPU從0000H地址開(kāi)始執(zhí)行程序。單片機(jī)系統(tǒng)在運(yùn)行出錯(cuò)或進(jìn)入死循環(huán)時(shí),可按復(fù)位鍵重新啟動(dòng)。三、單片機(jī)最小系統(tǒng)電路2.單片機(jī)復(fù)位電路復(fù)位后單片機(jī)有關(guān)寄存器的狀態(tài)寄存器復(fù)位狀態(tài)PC0000HACC00HPSW00HSP07HDPTR0000HIP×××00000BIE0××00000BP0~P3FFHTCON00H寄存器復(fù)位狀態(tài)TMOD00HTL000HTH000HTL100HTH100HSCON00HSBUF未定PCON(HMOS)0×××××××BPCON(CHMOS)0×××0000B三、單片機(jī)最小系統(tǒng)電路2.單片機(jī)復(fù)位電路(PC)=0000H表示復(fù)位后程序的入口地址為0000H;(PSW)=00H,其中RS1(PSW.4)=0,RS0(PSW.3)=0,表示復(fù)位后單片機(jī)選擇工作寄存器第0組;(SP)=07H表示復(fù)位后堆棧在片內(nèi)RAM的08H單元處建立;P0口~P3口鎖存器為全1狀態(tài),說(shuō)明復(fù)位后這些并行接口可以直接作輸入口,無(wú)須向端口寫(xiě)1;定時(shí)器/計(jì)數(shù)器、串行口、中斷系統(tǒng)等特殊功能寄存器復(fù)位后的狀態(tài)對(duì)各功能部件工作狀態(tài)的影響,將在后續(xù)有關(guān)章節(jié)介紹。三、單片機(jī)最小系統(tǒng)電路2.單片機(jī)復(fù)位電路89C51基本復(fù)位電路有3種:上電復(fù)位、按鍵電平復(fù)位和按鍵脈沖復(fù)位。上電自動(dòng)復(fù)位:通過(guò)電容充電來(lái)實(shí)現(xiàn)。接通電源即可完成系統(tǒng)的復(fù)位。按鍵手動(dòng)復(fù)位:按下復(fù)位按鈕即可復(fù)位。分為電平方式和脈沖方式兩種。四、51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)1
2
3
4
5
6
7
8
9
10
11
12
13
1428
27
26
25
24
23
22
2120
19
18
17
16
15EPROM27641
2
3
4
5
6
7
8
9
10
11
12
13
1428
27
26
25
24
23
22
2120
19
18
17
16
15EPROM27641
2
3
4
5
6
7
8
9
10111213141516171819
2040
39
38
37
36
35
34
33
32
31302928272625242422211
2
3
4
5
6
7
8
9
10
11
12
13
1428
27
26
25
24
23
22
2120
19
18
17
16
15RAM62641
2
3
4
5
6
7
8
9
10
11
12
13
1428
27
26
25
24
23
22
2120
19
18
17
16
15RAM6264
存
儲(chǔ)
器80318751805189C51片內(nèi)RAM片內(nèi)ROM256B(字節(jié))4K64K64K四、51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)(1)程序存儲(chǔ)器(ROM)程序存儲(chǔ)器內(nèi)部外部0000H0FFFH(4K)0000HFFFFH(64K)0000H0FFFH(4K)0000H0001H0002H(PC)0000H是程序執(zhí)行的起始單元,
在這三個(gè)單元存放一條
無(wú)條件轉(zhuǎn)移指令中斷5中斷4中斷3中斷2中斷10003H000BH0013H001BH0023H002BH外部中斷0定時(shí)器0中斷外部中斷1定時(shí)器1中斷串行口中斷8位...0FFFH0FFEHEA=1EA=0程序存儲(chǔ)器資源分布中斷入口地址四、51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)(1)程序存儲(chǔ)器(ROM)當(dāng)芯片引腳EA為高電平時(shí),89C51的程序計(jì)數(shù)器PC在0000H~0FFFH(4KB)地址時(shí)從內(nèi)部ROM取指令,超過(guò)4KB時(shí),CPU自動(dòng)轉(zhuǎn)向外部ROM執(zhí)行程序。如果EA為低電平(接地),則所有取指令操作均在外部ROM中進(jìn)行,這時(shí)外部擴(kuò)展的ROM從0000H開(kāi)始編址。四、51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)0000HFFFFH(64K)內(nèi)部外部(2)數(shù)據(jù)存儲(chǔ)器(RAM)數(shù)據(jù)存儲(chǔ)器00HFFH7FH80H(高128B)(低128B)RAM專(zhuān)用
寄存器00H07H08H0FH10H17H18H1FH0區(qū)R0R7R0R7R0R7R0R71區(qū)2區(qū)3區(qū)工作寄存器區(qū)可位尋址區(qū)20H2FH7F78070030H7FH數(shù)據(jù)緩沖區(qū)/堆棧區(qū)內(nèi)部RAM存儲(chǔ)器
11第3區(qū)18H~1FH
01第1區(qū)08H~0FHRS1RS0寄存器區(qū)片內(nèi)RAM地址
00第0區(qū)00H~07H
10第2區(qū)10H~17H工作寄存器區(qū)選擇位RS0、RS1PSW位地址
CYACF0RS1RS0OVF1P四、51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)RAM用于存放運(yùn)算中間結(jié)果,用作緩沖和數(shù)據(jù)暫存,以及設(shè)置特征標(biāo)志等。8051片內(nèi)有256B的RAM空間,片外有64KB的RAM空間,兩個(gè)存儲(chǔ)空間獨(dú)立尋址。內(nèi)部RAM低128字節(jié)地址空間(00H~7FH)為內(nèi)部RAM區(qū),是供用戶使用的數(shù)據(jù)存儲(chǔ)器單元,作為處理問(wèn)題的數(shù)據(jù)緩沖器。高128字節(jié)地址空間(80H~FFH)為特殊功能寄存器區(qū)(SFR區(qū)),共21個(gè)特殊功能寄存器,也就是128個(gè)字節(jié)單元中只有21個(gè)字節(jié)單元能夠被用戶使用。內(nèi)部RAM存儲(chǔ)空間小,僅用8位地址尋址,但存取速度比外部RAM快。(2)數(shù)據(jù)存儲(chǔ)器(RAM)四、51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)RAM用于存放運(yùn)算中間結(jié)果,用作緩沖和數(shù)據(jù)暫存,以及設(shè)置特征標(biāo)志等。8051片內(nèi)有256B的RAM空間,片外有64KB的RAM空間,兩個(gè)存儲(chǔ)空間獨(dú)立尋址。內(nèi)部RAM低128字節(jié)地址空間(00H~7FH)為內(nèi)部RAM區(qū),是供用戶使用的數(shù)據(jù)存儲(chǔ)器單元,作為處理問(wèn)題的數(shù)據(jù)緩沖器。高128字節(jié)地址空間(80H~FFH)為特殊功能寄存器區(qū)(SFR區(qū)),共21個(gè)特殊功能寄存器,也就是128個(gè)字節(jié)單元中只有21個(gè)字節(jié)單元能夠被用戶使用。內(nèi)部RAM存儲(chǔ)空間小,僅用8位地址尋址,但存取速度比外部RAM快。(2)數(shù)據(jù)存儲(chǔ)器(RAM)任務(wù)二
單片機(jī)控制LED燈閃爍一、LED燈閃爍設(shè)計(jì)二、LED閃爍的延時(shí)方法一、LED燈閃爍設(shè)計(jì)如何點(diǎn)亮LED燈?如何熄滅LED燈?單向?qū)ㄐ躁?yáng)極陰極1+3V00VSTC89C51
P0.00V單片機(jī)的I/O端口
單片機(jī)驅(qū)動(dòng)一只發(fā)光二極管的原理電路一、LED燈閃爍設(shè)計(jì)LED燈點(diǎn)亮程序如何點(diǎn)亮LED燈?如何熄滅LED燈?voidmain(){
while(1) {
}}#include<reg52.h>LED=1;//點(diǎn)亮LEDLED=0;//熄滅LEDsbitLED=P0^0;LED=1;LED=0;點(diǎn)亮和熄滅的間隔時(shí)間怎么調(diào)控?二、LED閃爍的延時(shí)方法常用的延時(shí)方法1.非精確延時(shí)方法
1.for(i=0;i<100;i++); 2.i=100;while(i--);2.精確延時(shí)方法
1.利用庫(kù)函數(shù)_nop_();(需要include<intrins.h>) 2.利用定時(shí)器進(jìn)行定時(shí) (后邊的課程進(jìn)行介紹)二、LED閃爍的延時(shí)方法1.非精確控制方法-延時(shí)函數(shù)總循環(huán)次數(shù)已確定的情況下,可采用for語(yǔ)句形式為:for語(yǔ)句的一般形式:
for(循環(huán)變量賦初值;循環(huán)繼續(xù)條件;循環(huán)變量增值)
{
循環(huán)體語(yǔ)句組;
} 分隔符為分號(hào)請(qǐng)問(wèn):下述程序?qū)崿F(xiàn)了什么功能?main(){inti,y=0;for(i=1;i<=10;i++){y=y+i;}}二、LED閃爍的延時(shí)方法1.非精確控制方法-延時(shí)函數(shù)while語(yǔ)句用來(lái)實(shí)現(xiàn)“當(dāng)型”循環(huán),執(zhí)行過(guò)程:首先判斷表達(dá)式,當(dāng)表達(dá)式的值為真(非0)時(shí),反復(fù)執(zhí)行循環(huán)體。為假(0)時(shí)執(zhí)行循環(huán)體外面的語(yǔ)句。循環(huán)體循環(huán)繼續(xù)的條件表達(dá)式下一條語(yǔ)句非0(真)0(假)循環(huán)體語(yǔ)句組while執(zhí)行過(guò)程格式:while(循環(huán)繼續(xù)的條件表達(dá)式)
{
語(yǔ)句組;}花括號(hào)不能丟掉!二、LED閃爍的延時(shí)方法請(qǐng)問(wèn):下述程序?qū)崿F(xiàn)了什么功能?main(){inti,sum=0;while(i<=10) { sum=sum+i; i++; }}1.非精確控制方法-延時(shí)函數(shù)二、LED閃爍的延時(shí)方法延時(shí)子函數(shù)按照規(guī)定的格式,將一個(gè)子任務(wù)編寫(xiě)成一個(gè)函數(shù)。函數(shù)的定義函數(shù)的劃分函數(shù)從形式上劃分,分為無(wú)參數(shù)函數(shù)和有參數(shù)函數(shù)及空函數(shù)。二、LED閃爍的延時(shí)方法延時(shí)子函數(shù)(1)無(wú)參函數(shù):僅完成某個(gè)功能,不需回送到執(zhí)行的具體結(jié)果。例如:無(wú)參數(shù)傳遞的延時(shí)子程序:循環(huán)的次數(shù)決定了你延時(shí)的時(shí)間長(zhǎng)短。形式1:voiddelay(){unsignedinti;for(i=0;i<10000;i++);}形式2:voiddelay(){unsignedinti,j;for(i=0;i<100;i++)for(j=0;j<200;j++);}二、LED閃爍的延時(shí)方法延時(shí)子函數(shù)(2)有參函數(shù):通過(guò)執(zhí)行函數(shù)得到一個(gè)明確的執(zhí)行結(jié)果,該結(jié)果需要回送到調(diào)用函數(shù)中。例如:有參數(shù)傳遞的延時(shí)子程序:可以隨時(shí)改變k的傳遞值以達(dá)到不同的延時(shí)。voiddelay(unsignedintk){ unsignedinti,j; for(i=0;i<k;i++)for(j=0;j<200;j++);}二、LED閃爍的延時(shí)方法函數(shù)定義的格式延時(shí)子函數(shù)函數(shù)類(lèi)型函數(shù)名(類(lèi)型形參1,類(lèi)型形參2,…)
{
說(shuō)明部分語(yǔ)句部分
}二、LED閃爍的延時(shí)方法函數(shù)定義的格式延時(shí)子函數(shù)
1.類(lèi)型符表示函數(shù)的返回值類(lèi)型:
若無(wú)返回值:類(lèi)型符void;若有返回值:函數(shù)名前有類(lèi)型符,且利用return語(yǔ)句將函數(shù)值返回調(diào)用函數(shù)。2.return語(yǔ)句:格式return表達(dá)式;return(表達(dá)式);編寫(xiě)函數(shù)時(shí),若求函數(shù)值,就要用return,若函數(shù)類(lèi)型為void,則不用return語(yǔ)句。二、LED閃爍的延時(shí)方法延時(shí)子函數(shù)功能:return語(yǔ)句先計(jì)算表達(dá)式的值,再將該值作為函數(shù)運(yùn)算的結(jié)果回送給調(diào)用者。如果函數(shù)類(lèi)型與return語(yǔ)句中表達(dá)式類(lèi)型不一致,系統(tǒng)以函數(shù)類(lèi)型為準(zhǔn),返回時(shí)自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換。二、LED閃爍的延時(shí)方法延時(shí)子函數(shù)注意:在這里我使用的變量定義為unsignedint代表的是無(wú)符號(hào)整型,其取值范圍是0~65535,循環(huán)變量的值不要超過(guò)這個(gè)數(shù)值,否則就會(huì)出現(xiàn)死循環(huán),就走不出延時(shí)子程序了。這也是大家經(jīng)常犯的一個(gè)錯(cuò)誤。例:下面就是一個(gè)錯(cuò)誤的實(shí)例。voiddelay(){unsignedintk;for(k=0;k<70000;k++);}該程序錯(cuò)誤的原因是K永遠(yuǎn)加不到70000,所以無(wú)法跳出死循環(huán)。二、LED閃爍的延時(shí)方法基本數(shù)據(jù)類(lèi)型類(lèi)型符號(hào)關(guān)鍵字?jǐn)?shù)的表示范圍所占位數(shù)整型字符型實(shí)型有無(wú)(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsignedint0~65535320~4294967295unsignedlongintunsignedshortint160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無(wú)unsignedchar80~255二、LED閃爍的延時(shí)方法LED燈點(diǎn)亮程序如何點(diǎn)亮LED燈?如何熄滅LED燈?voidmain(){
while(1) {
}}#include<reg52.h>LED=1;//點(diǎn)亮LEDLED=0;//熄滅LEDsbitLED=P0^0;LED=1;LED=0;點(diǎn)亮和熄滅的間隔時(shí)間怎么調(diào)控?好了,現(xiàn)在有了延時(shí)函數(shù)了,那么整個(gè)程序應(yīng)該如何去修改呢?二、LED閃爍的延時(shí)方法LED燈點(diǎn)亮程序#include<reg52.h>sbitLED=P0^0;voiddelay(unsignedinti){ while(i--); }voidmain(){
while(1)
{ LED=1;
//點(diǎn)亮LED delay(10000);LED=0;
//熄滅LEDdelay(10000);
}}任務(wù)三
單片機(jī)控制蜂鳴器發(fā)聲一、蜂鳴器結(jié)構(gòu)認(rèn)識(shí)二、蜂鳴器模塊電路三、單片機(jī)控制蜂鳴器設(shè)計(jì)一、蜂鳴器結(jié)構(gòu)認(rèn)識(shí)蜂鳴器結(jié)構(gòu)認(rèn)識(shí)蜂鳴器從結(jié)構(gòu)上分為有源和無(wú)源,有綠色電路板的一種是無(wú)源蜂鳴器,沒(méi)有電路板而用黑膠封閉的一種是有源蜂鳴器。一、蜂鳴器結(jié)構(gòu)認(rèn)識(shí)蜂鳴器結(jié)構(gòu)認(rèn)識(shí)電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動(dòng)膜片及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號(hào)電流通過(guò)電磁線圈,使電磁線圈產(chǎn)生磁場(chǎng),振動(dòng)膜片在電磁線圈和磁鐵的相互作用下,周期性地振動(dòng)發(fā)聲。壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。多諧振蕩器由晶體管或集成電路構(gòu)成,當(dāng)接通電源后(1.5~15V直流工作電壓),多諧振蕩器起振,輸出1.5~2.5kHZ的音頻信號(hào),阻抗匹配器推動(dòng)壓電蜂鳴片發(fā)聲。一、蜂鳴器結(jié)構(gòu)認(rèn)識(shí)蜂鳴器結(jié)構(gòu)認(rèn)識(shí)在單片機(jī)應(yīng)用的設(shè)計(jì)上,很多方案都會(huì)用到蜂鳴器,大部分都是使用蜂鳴器來(lái)做提示或報(bào)警,比如按鍵按下、開(kāi)始工作、工作結(jié)束或是故障等等。自激蜂鳴器是直流電壓驅(qū)動(dòng)的,不需要利用交流信號(hào)進(jìn)行驅(qū)動(dòng),只需對(duì)驅(qū)動(dòng)口輸出驅(qū)動(dòng)電平并通過(guò)放大電路放大驅(qū)動(dòng)電流就能使蜂鳴器發(fā)出聲音,非常簡(jiǎn)單。一、蜂鳴器結(jié)構(gòu)認(rèn)識(shí)蜂鳴器結(jié)構(gòu)認(rèn)識(shí)改變單片機(jī)引腳輸出波形的頻率,就可以調(diào)整控制蜂鳴器音調(diào),產(chǎn)生各種不同音色、音調(diào)的聲音。改變輸出電平的高低電平占空比,則可以控制蜂鳴器的聲音大小。二、蜂鳴器模塊電路蜂鳴器模塊電路三、單片機(jī)控制蜂鳴器設(shè)計(jì)程序設(shè)計(jì)/************************************************************************
蜂鳴器實(shí)驗(yàn) ************************************************************************/#include"reg52.h" //此文件中定義了單片機(jī)的一些特殊功能寄存器typedefunsignedintu16; //對(duì)數(shù)據(jù)類(lèi)型進(jìn)行聲明定義typedefunsignedcharu8;sbitbeep=P1^5; 三、單片機(jī)控制蜂鳴器設(shè)計(jì)程序設(shè)計(jì)voiddelay(u16i){ while(i--); }voidmain(){ while(1) { beep=~beep;
delay(100);//延時(shí)大約100us通過(guò)修改此延時(shí)時(shí)間達(dá)到不同的發(fā)聲
}}三、單片機(jī)控制蜂鳴器設(shè)計(jì)硬件設(shè)計(jì)蜂鳴器硬件連接1.單片機(jī)的程序計(jì)數(shù)器PC用來(lái)_________________。A.存放指令B.存放正在執(zhí)行的指令地址C.存放下一條指令地址D.存放上一條指令地址練習(xí)題2.PSW中RS1和RS0用來(lái)______________。A.選擇工作寄存器組B.指示復(fù)位C.選擇定時(shí)器D.選擇工作方式3.單片機(jī)上電復(fù)位后,PC的內(nèi)容為_(kāi)__________。A.0x0000B.0x0003C.0x000BD.0x08004.使用單片機(jī)開(kāi)發(fā)系統(tǒng)測(cè)試C語(yǔ)言程序時(shí),首先應(yīng)新建文件,該文件的擴(kuò)展名是___。A..cB..hexC..binD..asm練習(xí)題5.單片機(jī)能夠直接運(yùn)行的程序是_________。A.匯編源程序B.C語(yǔ)言源程序C.高級(jí)語(yǔ)言程序D.機(jī)器語(yǔ)言源程序1.51系列單片機(jī)的存儲(chǔ)器主要由4個(gè)物理存儲(chǔ)空間,即_______、_______、________、________。2.51系列單片機(jī)的應(yīng)用程序一般存放在____________中。感謝您的觀看單片機(jī)項(xiàng)目化教程(C語(yǔ)言版)
3-1控制8個(gè)LED發(fā)光二極管閃爍任務(wù)說(shuō)明本任務(wù)通過(guò)51系列單片機(jī)控制8個(gè)發(fā)光二極管閃爍,熟悉單片機(jī)I/O端口控制及其編程方法。任務(wù)分析用單片機(jī)的P1端口控制8個(gè)發(fā)光二極管,下載編寫(xiě)好的C程序到單片機(jī)中,實(shí)現(xiàn)LED二極管閃爍。電路設(shè)計(jì)采用單片機(jī)P1端口控制8個(gè)發(fā)光二極管閃爍的硬件電路如圖所示電路設(shè)計(jì)單片機(jī)P1口經(jīng)過(guò)限流電阻R直接控制發(fā)光二極管,電阻起到限流作用。8個(gè)發(fā)光二極管的陽(yáng)極并接在一起與電源相聯(lián)接。當(dāng)P1端口的引腳輸出為低電平“0”時(shí),相應(yīng)的發(fā)光二極管被點(diǎn)亮。程序設(shè)計(jì)1#include<reg51.h> //包含頭文件2voiddelay(unsignedinti); //延時(shí)函數(shù)聲明3voidmain() //主函數(shù)4{5while(1){6P1=0xff; //將P1口的八位引腳置1,熄滅八個(gè)LED7delay(1000); //延時(shí)8P1=0x00; //將P1口的八位引腳清0,點(diǎn)亮八個(gè)LED9delay(500); //延時(shí)10}11}12voiddelay(unsignedchari) //延時(shí)函數(shù),無(wú)符號(hào)字符型變量i為形式參數(shù)13{14unsignedcharj,k; //定義無(wú)符號(hào)字符型變量j和k15for(k=0;k<i;k++) //雙重for循環(huán)語(yǔ)句實(shí)現(xiàn)軟件延時(shí)16for(j=0;j<200;j++);17}1.并行I/O端口MCS-51系列單片機(jī)共有四個(gè)8位并行I/O口,分別用P0、P1、P2、P3表示,以實(shí)現(xiàn)數(shù)據(jù)的輸入輸出功能。每個(gè)I/O口既可以使用單個(gè)引腳按位操作,也可以按字節(jié)操作使用8個(gè)引腳。1.并行I/O端口MCS-51是標(biāo)準(zhǔn)的40引腳雙列直插式集成電路芯片,引腳分布如圖3.2所示。P0.0-P0.7P0口8位雙向口線(在引腳的39-32號(hào)端子)。P1.0-P1.7P1口8位雙向口線(在引腳的1-8號(hào)端子)。P2.0-P2.7P2口8位雙向口線(在引腳的21-28號(hào)端子)。P3.0-P3.7P3口8位雙向口線(在引腳的10-17號(hào)端子)。1.并行I/O端口P0口的口線邏輯電路如圖3.3所示。由圖可見(jiàn),P0端口由鎖存器、輸入緩沖器、切換開(kāi)關(guān)、一個(gè)與非門(mén)、一個(gè)與門(mén)及場(chǎng)效應(yīng)管驅(qū)動(dòng)電路構(gòu)成。標(biāo)號(hào)為P0.X引腳的圖標(biāo),表示P0.X引腳可以是P0.0到P0.7的任何一位。(1)P0口①P0口的結(jié)構(gòu)1.并行I/O端口在電路中包含一個(gè)數(shù)據(jù)輸出D鎖存器、兩個(gè)三態(tài)數(shù)據(jù)輸入緩沖器、一個(gè)輸出控制電路和一個(gè)數(shù)據(jù)輸出的驅(qū)動(dòng)電路。輸出控制電路有一個(gè)與門(mén)、一個(gè)非門(mén)和一個(gè)多路開(kāi)關(guān)MUX構(gòu)成;輸出驅(qū)動(dòng)電路由場(chǎng)效應(yīng)晶體管T1和T2組成,受輸出控制電路控制,當(dāng)柵極輸入低電平時(shí),T1、T2截止;當(dāng)柵極輸入高電平時(shí),T1、T2導(dǎo)通。(1)P0口①P0口的結(jié)構(gòu)1.并行I/O端口當(dāng)P0口作為輸出口使用時(shí),內(nèi)部總線將數(shù)據(jù)送入鎖存器,內(nèi)部的寫(xiě)脈沖加在鎖存器時(shí)鐘端CP上,鎖存數(shù)據(jù)到Q端。經(jīng)過(guò)MUX,T2反相后正好是內(nèi)部總線的數(shù)據(jù),送到P0口引腳輸出。當(dāng)P0口作為輸入口使用時(shí),應(yīng)區(qū)分讀引腳和讀端口兩種情況。所謂讀引腳,就是讀芯片引腳的狀態(tài),這時(shí)使用下方的數(shù)據(jù)緩沖器,“讀引腳”信號(hào)把緩沖器打開(kāi),把端口引腳上的數(shù)據(jù)從緩沖器通過(guò)內(nèi)部總線讀進(jìn)來(lái)。讀端口是指通過(guò)上面的緩沖器讀鎖存器Q端的狀態(tài)。讀端口是為了適應(yīng)對(duì)I/O口進(jìn)行“讀-修改-寫(xiě)”操作語(yǔ)句的需要。(1)P0口②P0作為通用I/O端口使用1.并行I/O端口P1口的結(jié)構(gòu)最簡(jiǎn)單,用途也單一,僅作為數(shù)據(jù)輸入/輸出端口使用。輸出的信息有鎖存,輸入有讀引腳和讀鎖存器之分。P1的口線邏輯電路如圖3.4所示。(2)P1口①P1口的結(jié)構(gòu)1.并行I/O端口由圖3.4可見(jiàn),P1端口與P0端口的主要差別在于,P1端口用內(nèi)部上拉電阻R代替了P0端口的場(chǎng)效應(yīng)管T1,并且輸出的信息僅來(lái)自內(nèi)部總線。由內(nèi)部總線輸出的數(shù)據(jù)經(jīng)鎖存器反相和場(chǎng)效應(yīng)管反相后,鎖存在端口線上,因此,P1端口是具有輸出鎖存的靜態(tài)口。注意:P1口是準(zhǔn)雙向口,只能作為通用I/O口使用。P1口作為輸出口使用時(shí),無(wú)需再外接上拉電阻。P1口作為輸入口使用時(shí),應(yīng)區(qū)分讀引腳和讀端口。讀引腳時(shí),必須先向電路中的鎖存器寫(xiě)入“1”,使輸出級(jí)的FET截止。(2)P1口①P1口的結(jié)構(gòu)1.并行I/O端口由圖可見(jiàn),P2端口在片內(nèi)既有上拉電阻,又有切換開(kāi)關(guān)MUX,所以P2端口在功能上兼有P0端口和P1端口的特點(diǎn)。這主要表現(xiàn)在輸出功能上,當(dāng)切換開(kāi)關(guān)向下接通時(shí),從內(nèi)部總線輸出的一位數(shù)據(jù)經(jīng)反相器和場(chǎng)效應(yīng)管反相后,輸出在端口引腳線上;當(dāng)多路開(kāi)關(guān)向上時(shí),輸出的一位地址信號(hào)也經(jīng)反相器和場(chǎng)效應(yīng)管反相后,輸出在端口引腳線上。因此,P2端口的多路開(kāi)關(guān)總是在進(jìn)行切換,分時(shí)地輸出從內(nèi)部總線來(lái)的數(shù)據(jù)和從地址信號(hào)線上來(lái)的地址。因此P2端口是動(dòng)態(tài)的I/O端口,輸出數(shù)據(jù)雖被鎖存,但不是穩(wěn)定地出現(xiàn)在端口線上。在輸入功能方面,P2端口與P0端口相同,有讀引腳和讀鎖存器之分,并且P2端口也是準(zhǔn)雙向口。(3)P2口①P2口的結(jié)構(gòu)1.并行I/O端口注意:P2口是準(zhǔn)雙向口,在實(shí)際應(yīng)用中,可以用于為系統(tǒng)提供高8位地址,也能作為通用I/O口使用。P2口作為通用I/O口的輸出口使用時(shí),與P1口一樣無(wú)需再外接上拉電阻。P2口作為通用I/O口的輸入口使用時(shí),應(yīng)區(qū)分讀引腳和讀端口。讀引腳時(shí),必須先向鎖存器寫(xiě)入“1”。(3)P2口①P2口的結(jié)構(gòu)1.并行I/O端口P3端口和Pl端口的結(jié)構(gòu)相似,區(qū)別僅在于P3端口的各端口線有兩種功能選擇。當(dāng)處于第一功能時(shí),第二輸出功能線為1,此時(shí),內(nèi)部總線信號(hào)經(jīng)鎖存器和場(chǎng)效應(yīng)管輸入/輸出,其作用與P1端口作用相同,也是靜態(tài)準(zhǔn)雙向I/O端口。當(dāng)處于第二功能時(shí),鎖存器輸出1,通過(guò)第二輸出功能線輸出特定的內(nèi)含信號(hào),在輸入方面,即可以通過(guò)緩沖器讀入引腳信號(hào),還可以通過(guò)替代輸入功能讀入片內(nèi)的第二功能信號(hào)。由于輸出信號(hào)鎖存并且有雙重功能,故P3端口為靜態(tài)雙功能端口。(4)P3口①P3口的結(jié)構(gòu)1.并行I/O端口P3端口處于第二功能的條件是:①串行I/O處于運(yùn)行狀態(tài)(RXD,TXD)②打開(kāi)了處部中斷(INT0,INT1)③定時(shí)器/計(jì)數(shù)器處于外部計(jì)數(shù)狀態(tài)(T0,T1)④執(zhí)行讀寫(xiě)外部RAM的指令(RD,WR)在應(yīng)用中,如不設(shè)定P3端口各位的第二功能(WR,RD信號(hào)的產(chǎn)生不用設(shè)置),則P3端口線自動(dòng)處于第一功能狀態(tài),也就是靜態(tài)I/O端口的工作狀態(tài)。在更多的場(chǎng)合是根據(jù)應(yīng)用的需要,把幾條端口線設(shè)置為第二功能,而另外幾條端口線處于第一功能運(yùn)行狀態(tài)。在這種情況下,不宜對(duì)P3端口作字節(jié)操作,需采用位操作的形式。(4)P3口口線
第二功能信號(hào)名稱(chēng)
P3.0RXD串行數(shù)據(jù)接收P3.1
TXD串行數(shù)據(jù)發(fā)送P3.2INT0外部中斷0申請(qǐng)P3.3INT1外部中斷1申請(qǐng)P3.4T0定時(shí)器/計(jì)數(shù)器0計(jì)數(shù)輸入P3.5
T1定時(shí)器/計(jì)數(shù)器1計(jì)數(shù)輸入P3.6WR外部RAM寫(xiě)選通P3.7RD外部RAM讀選通2.簡(jiǎn)單C語(yǔ)言1//功能:控制八個(gè)信號(hào)燈閃爍程序2#include<reg51.h> //包含頭文件3voiddelay(unsignedchari); //延時(shí)函數(shù)聲明4voidmain() //主函數(shù)5{6while(1){7P1=0xf0; //將P1口的高四位引腳置1,低四位置08delay(250); //延時(shí)9P1=0x0f; //將P1口的高四位引腳置0,低四位置110delay(250); //延時(shí)11}12}13voiddelay(unsignedchari) //延時(shí)函數(shù),無(wú)符號(hào)字符型變量i為形式參數(shù)14{15unsignedcharj,k; //定義無(wú)符號(hào)字符型變量j和k16for(k=0;k<i;k++) //雙重for循環(huán)語(yǔ)句實(shí)現(xiàn)軟件延時(shí)17for(j=0;j<200;j++);18}(1)第一個(gè)C語(yǔ)言程序2.簡(jiǎn)單C語(yǔ)言上述程序中,第1行:對(duì)程序進(jìn)行說(shuō)明,包括程序名稱(chēng)和功能?!?/”是單行注釋符號(hào),用來(lái)說(shuō)明相應(yīng)語(yǔ)句的意義,方便程序的編寫(xiě)、調(diào)試及維護(hù)工作,提高程序的可讀性。第二行:#include<reg51.h>是文件包含語(yǔ)句,表示將語(yǔ)句中指定文件的全部?jī)?nèi)容復(fù)制到程序中,reg51.h是KeilC51編譯器提供的頭文件,該文件包含了MCS-51系列單片機(jī)特殊功能寄存器SFR和位名稱(chēng)的定義。reg51.h是為了通知C51編譯器,程序中用到的符號(hào)P1是MCS-51單片機(jī)的P1口。第三行:延時(shí)函數(shù)聲明。在C語(yǔ)言中,函數(shù)遵循先聲明、后調(diào)用的原則。第4-12行:定義主函數(shù)main()。main函數(shù)是C語(yǔ)言中的主函數(shù),也是程序開(kāi)始執(zhí)行的函數(shù)。第13-18行:定義延時(shí)函數(shù)delay(),控制發(fā)光二極管的閃爍速度。(1)第一個(gè)C語(yǔ)言程序2.簡(jiǎn)單C語(yǔ)言一個(gè)C語(yǔ)言源程序是由一個(gè)或若干個(gè)函數(shù)組成,每一個(gè)函數(shù)完成相對(duì)獨(dú)立的功能。每個(gè)C程序都必須有(且僅有)一個(gè)主函數(shù)main(),程序的執(zhí)行總是從主函數(shù)開(kāi)始,調(diào)用其他函數(shù)后返回主函數(shù)main(),不管函數(shù)的排列順序如何,最后在主函數(shù)中結(jié)束整個(gè)程序。一個(gè)函數(shù)有兩部分組成:函數(shù)定義和函數(shù)體。函數(shù)定義部分包括函數(shù)名、函數(shù)類(lèi)型、函數(shù)屬性、函數(shù)參數(shù)名、參數(shù)類(lèi)型等。main()函數(shù)后面大括號(hào)內(nèi)的部分稱(chēng)為函數(shù)體,函數(shù)體由定義數(shù)據(jù)類(lèi)型的說(shuō)明部分和實(shí)現(xiàn)函數(shù)功能的執(zhí)行部分組成。C語(yǔ)言程序中可以有預(yù)處理命令,預(yù)處理命令通常放在源程序的最前面。C語(yǔ)言程序使用“;”作為語(yǔ)句的結(jié)束符,一條語(yǔ)句可以多行書(shū)寫(xiě),也可以一行書(shū)寫(xiě)多條語(yǔ)句。(2)C語(yǔ)言基本結(jié)構(gòu)2.簡(jiǎn)單C語(yǔ)言①簡(jiǎn)潔緊湊、靈活方便,運(yùn)算符豐富②數(shù)據(jù)結(jié)構(gòu)豐富③C是結(jié)構(gòu)式語(yǔ)言④C語(yǔ)法限制不太嚴(yán)格、程序設(shè)計(jì)自由度大⑤C語(yǔ)言適用范圍大,可移植性好。(3)C語(yǔ)句特點(diǎn)2.簡(jiǎn)單C語(yǔ)言C語(yǔ)言程序的執(zhí)行部分由語(yǔ)句組成。C語(yǔ)言提供了豐富的程序控制語(yǔ)句,按照結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),組成各種復(fù)雜程序。這些語(yǔ)句主要包括表達(dá)式語(yǔ)句、復(fù)合語(yǔ)句、選擇語(yǔ)句和循環(huán)語(yǔ)句等。表達(dá)式語(yǔ)句是最基本的C語(yǔ)言語(yǔ)句。表達(dá)式語(yǔ)句由表達(dá)式加上分號(hào)“;”組成,其一般形式如下:表達(dá)式;執(zhí)行表達(dá)式語(yǔ)句就是計(jì)算表達(dá)式的值。在C語(yǔ)言中有一個(gè)特殊的表達(dá)式語(yǔ)句,稱(chēng)為空語(yǔ)句??照Z(yǔ)句中只有一個(gè)分號(hào)“;”,程序執(zhí)行空語(yǔ)句時(shí)需要占用一條指令的執(zhí)行時(shí)間,但是什么也不做。在C51程序中常常把空語(yǔ)句作為循環(huán)體,用于消耗CPU時(shí)間等待事件發(fā)生。把多個(gè)語(yǔ)句用大括號(hào){}括起來(lái),組合在一起形成具有一定功能的模塊,這種由若干條語(yǔ)句組合而成的語(yǔ)句塊稱(chēng)為復(fù)合語(yǔ)句。在程序中應(yīng)把復(fù)合語(yǔ)句看成是單條語(yǔ)句,而不是多條語(yǔ)句。復(fù)合語(yǔ)句在程序運(yùn)行時(shí),{}中的各行單語(yǔ)句是依次順序執(zhí)行的。在C語(yǔ)言的函數(shù)中,函數(shù)體就是一個(gè)復(fù)合語(yǔ)句。(4)C語(yǔ)言表達(dá)式語(yǔ)句和復(fù)合語(yǔ)句3.C語(yǔ)言數(shù)據(jù)單片機(jī)程序中處理的數(shù)據(jù)有常量和變量?jī)煞N形式:常量的值在執(zhí)行期間是不能發(fā)生變化的,而變量的值在程序執(zhí)行期間可以發(fā)生變化。(1)C語(yǔ)言標(biāo)識(shí)符、常量和變量①標(biāo)識(shí)符C語(yǔ)言用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類(lèi)型名、文件名的有效字符序列稱(chēng)為標(biāo)識(shí)符。標(biāo)識(shí)符的長(zhǎng)度可以是一個(gè)或多個(gè)字符。C語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母(A~Z,a~z)、數(shù)字(0~9)和下劃線(_)3種字符組成,而且第一個(gè)字符必須為字母或下劃線。例如,a1、s_1、_3、ggde2f_1、PI都是合法的標(biāo)識(shí)符,而123、d@si、s*b、+d、b>3都是不合法的標(biāo)識(shí)符。3.C語(yǔ)言數(shù)據(jù)(1)C語(yǔ)言標(biāo)識(shí)符、常量和變量①標(biāo)識(shí)符下面列出的是C語(yǔ)言常用的關(guān)鍵字:break case char classconst continue delete dodouble else for friendfloat int if longnew private protected publicreturn short sizeof staticswitch void whlie 3.C語(yǔ)言數(shù)據(jù)(1)C語(yǔ)言標(biāo)識(shí)符、常量和變量②常量與符號(hào)常量常量的數(shù)據(jù)類(lèi)型有整型、浮點(diǎn)型、字符型、字符串型和位類(lèi)型。a.整型常量可以表示為十進(jìn)制,如123,0,-89等。十六進(jìn)制則以0x開(kāi)頭如0x34,-0x3B等。長(zhǎng)整型就在數(shù)字后面加字母L,如104L,034L,0xF340等。b.浮點(diǎn)型常量可分為十進(jìn)制和指數(shù)表示形式。十進(jìn)制由數(shù)字和小數(shù)點(diǎn)組成,如0.888,3345.345,0.0等,整數(shù)或小數(shù)部分為0,可以省略但必須有小數(shù)點(diǎn)。指數(shù)表示形式為[±]數(shù)字[.數(shù)字]e[±]數(shù)字,[]中的內(nèi)容為可選項(xiàng),其中內(nèi)容根據(jù)具體情況可有可無(wú),但其余部分必須有,如125e3,7e9,-3.0e-3。c.字符型常量是單引號(hào)內(nèi)的字符,如‘a(chǎn)',‘d'等,不可以顯示的控制字符,可以在該字符前面加一個(gè)反斜杠"\"組成專(zhuān)用轉(zhuǎn)義字符。3.C語(yǔ)言數(shù)據(jù)(1)C語(yǔ)言標(biāo)識(shí)符、常量和變量②常量與符號(hào)常量d.字符串型常量由雙引號(hào)內(nèi)的字符組成,如"test","OK"等。當(dāng)引號(hào)內(nèi)沒(méi)有字符時(shí)為空字符串。在使用特殊字符時(shí)同樣要使用轉(zhuǎn)義字符如雙引號(hào)。在C中字符串常量是做為字符類(lèi)型數(shù)組來(lái)處理的,在存儲(chǔ)字符串時(shí)系統(tǒng)會(huì)在字符串尾部加上’\o’轉(zhuǎn)義字符以作為該字符串的結(jié)束符。字符串常量"A"和字符常量‘A'是不同的,前者在存儲(chǔ)時(shí)多占用一個(gè)字節(jié)。e.位標(biāo)量,它的值是一個(gè)二進(jìn)制,如1或0。常量可以是數(shù)值型常量,也可以是符號(hào)常量。數(shù)值型常量就是常說(shuō)的常數(shù),如10、1.5、0x16、‘A’等,數(shù)值型常量不用說(shuō)明就可以直接使用。符號(hào)常量是指程序中用標(biāo)識(shí)符代表常量,符號(hào)常量使用前必須用編譯預(yù)處理命令“#define”先進(jìn)行定義。例如:#defineFalse0x0//用預(yù)定義語(yǔ)句可以定義常量constunsignedintc=100;//用const定義c為無(wú)符號(hào)int常量并賦值3.C語(yǔ)言數(shù)據(jù)(1)C語(yǔ)言標(biāo)識(shí)符、常量和變量③變量一個(gè)變量實(shí)質(zhì)上是代表了內(nèi)存中的一個(gè)存儲(chǔ)單元。在程序中,定義了一個(gè)變量a,實(shí)際上是給用a命名的變量分配了一個(gè)存儲(chǔ)單元,用戶對(duì)變量a進(jìn)行的操作就是對(duì)該存儲(chǔ)單元進(jìn)行的操作;給變量a賦值,實(shí)質(zhì)上就是把數(shù)據(jù)存入該變量所代表的存儲(chǔ)單元中。C語(yǔ)言規(guī)定,程序中所有變量必須先定義后使用。變量也有整型變量、實(shí)型變量、字符變量等不同的類(lèi)型。在定義變量的同時(shí)要說(shuō)明其類(lèi)型,系統(tǒng)在編譯時(shí)就能根據(jù)其類(lèi)型為其分配相應(yīng)的存儲(chǔ)單元。定義一個(gè)變量的格式如下:
[存儲(chǔ)種類(lèi)]數(shù)據(jù)類(lèi)型[存儲(chǔ)器類(lèi)型]變量名表在定義格式中除了數(shù)據(jù)類(lèi)型和變量名表是必要的,其它都是可選項(xiàng)。存儲(chǔ)種類(lèi)有四種:自動(dòng)(auto),外部(extern),靜態(tài)(static)和寄存器(register),缺省類(lèi)型為自動(dòng)(auto)。3.C語(yǔ)言數(shù)據(jù)(2)C語(yǔ)言的數(shù)據(jù)類(lèi)型C語(yǔ)言數(shù)據(jù)類(lèi)型基本類(lèi)型數(shù)值型字符型char整型實(shí)型短整型short整型int長(zhǎng)整型long單精度型float
長(zhǎng)實(shí)型longdouble雙精度型double構(gòu)造類(lèi)型
指針類(lèi)型結(jié)構(gòu)體stru共用體union枚舉型enum空類(lèi)型數(shù)組3.C語(yǔ)言數(shù)據(jù)(3)C語(yǔ)言運(yùn)算符和表達(dá)式運(yùn)算符可按其操作數(shù)的個(gè)數(shù)分為三類(lèi),它們是單目運(yùn)算符(一個(gè)操作數(shù))、雙目運(yùn)算符(兩個(gè)操作數(shù))、三目運(yùn)算符(三個(gè)操作數(shù))。運(yùn)算符按其優(yōu)先級(jí)的高低分為15類(lèi)。優(yōu)先級(jí)最高的為1級(jí),其次為2級(jí)等,具體見(jiàn)附錄B。運(yùn)算符按其功能分為算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符、逗號(hào)運(yùn)算符、條件運(yùn)算符等。3.C語(yǔ)言數(shù)據(jù)(3)C語(yǔ)言運(yùn)算符和表達(dá)式①算術(shù)運(yùn)算符和算術(shù)表達(dá)式常見(jiàn)的算術(shù)運(yùn)算符有雙目運(yùn)算符(+、-、*、/、%)和單目運(yùn)算符正負(fù)號(hào)。運(yùn)算規(guī)則與代數(shù)運(yùn)算基本相同,但有以下不同之處:a.除法運(yùn)算(/)兩個(gè)整數(shù)相除,則商為整數(shù),小數(shù)部分舍棄。例如:5/2=2而5.0/2=2.5b.求余數(shù)運(yùn)算(%)參加運(yùn)算的兩個(gè)操作數(shù)均應(yīng)為整數(shù),否則出錯(cuò)。運(yùn)算結(jié)果是整除以后的余數(shù)。在VC++6.0中運(yùn)算結(jié)果的符號(hào)與被除數(shù)相同。3.C語(yǔ)言數(shù)據(jù)(3)C語(yǔ)言運(yùn)算符和表達(dá)式例如:9%5=4-7%3=-17%-3=1用算術(shù)運(yùn)算符和圓括號(hào)將運(yùn)算對(duì)象(也稱(chēng)操作數(shù))連接起來(lái)的、符合C語(yǔ)言語(yǔ)法的式子,稱(chēng)為算術(shù)表達(dá)式。運(yùn)算對(duì)象可以是常量、變量、函數(shù)等。算術(shù)運(yùn)算符和圓括號(hào)的優(yōu)先級(jí)高低次序如下:以上所列的運(yùn)算符中,只有正負(fù)號(hào)運(yùn)算是自右向左的結(jié)合性,其余運(yùn)算符都是自左向右的結(jié)合性。3.C語(yǔ)言數(shù)據(jù)(3)C語(yǔ)言運(yùn)算符和表達(dá)式C語(yǔ)言中,符號(hào)“=”是一個(gè)運(yùn)算符,稱(chēng)為賦值運(yùn)算符,由賦值運(yùn)算符構(gòu)成的表達(dá)式稱(chēng)為賦值表達(dá)式,其基本格式如下;變量名=表達(dá)式;賦值運(yùn)算的功能是先計(jì)算右邊表達(dá)式的值,然后將此值賦給左邊的變量,即存入以該變量為標(biāo)識(shí)的存儲(chǔ)單元中。例如:i=0xff;/*將十六進(jìn)制數(shù)FFH賦予變量K*/d=m;/*將變量m的值賦予變量d*/②賦值運(yùn)算符和賦值表達(dá)式3.C語(yǔ)言數(shù)據(jù)(3)C語(yǔ)言運(yùn)算符和表達(dá)式自增自減運(yùn)算屬于單目運(yùn)算,自增運(yùn)算符是++,使單個(gè)變量的值增1。自減運(yùn)算符是--,使單個(gè)變量的值減1。其表達(dá)式有兩種格式:a.++i、--i(前置運(yùn)算):先自增、減,再參與運(yùn)算;b.i++、i--(后置運(yùn)算):先參與運(yùn)算,再自增、減。自增、自減運(yùn)算符只用于變量,而不能用于常量或表達(dá)式。自增、自減運(yùn)算的結(jié)合方向是“自右向左”(與一般算術(shù)運(yùn)算符不同)。運(yùn)算優(yōu)先級(jí)僅次于圓括號(hào)。③自增自減運(yùn)算符和表達(dá)式3.C語(yǔ)言數(shù)據(jù)(3)C語(yǔ)言運(yùn)算符和表達(dá)式C語(yǔ)言還允許編程者按照自己的需要,把指定的數(shù)據(jù)轉(zhuǎn)換成指定的類(lèi)型,這樣的轉(zhuǎn)換稱(chēng)為“顯式轉(zhuǎn)換”或“強(qiáng)制類(lèi)型轉(zhuǎn)換”。強(qiáng)制類(lèi)型轉(zhuǎn)換的一般格式為:(類(lèi)型標(biāo)識(shí)符)(表達(dá)式)例如:(int)a;(int)(x+y);(float)(a+b);說(shuō)明:a.無(wú)論是隱式轉(zhuǎn)換還是強(qiáng)制轉(zhuǎn)換都是臨時(shí)轉(zhuǎn)換,不改變數(shù)據(jù)本身的類(lèi)型和值。b.強(qiáng)制類(lèi)型轉(zhuǎn)換的結(jié)合方向是“自右向左”。運(yùn)算優(yōu)先級(jí)高于雙目運(yùn)算符,但低于正、負(fù)號(hào)運(yùn)算符。④強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符3.C語(yǔ)言數(shù)據(jù)(3)C語(yǔ)言運(yùn)算符和表達(dá)式a.關(guān)系運(yùn)算符C語(yǔ)言提供了6種關(guān)系運(yùn)算符,它們分別是:<(小于)<=(小于或等于)>(大于)>=(大于或等于)==(等于)!=(不等于)關(guān)系運(yùn)算符是雙目運(yùn)算符,具有自左向右的結(jié)合性。關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符,但高于賦值運(yùn)算符。其中,<、<=、>、>=的優(yōu)先級(jí)相同,==、!=的優(yōu)先級(jí)相同,且前四種的優(yōu)先級(jí)高于后兩種。⑤關(guān)系運(yùn)算符和關(guān)系運(yùn)算表達(dá)式3.C語(yǔ)言數(shù)據(jù)(3)C語(yǔ)言運(yùn)算符和表達(dá)式b.關(guān)系表達(dá)式關(guān)系表達(dá)式就是用關(guān)系運(yùn)算符將合法的表達(dá)式用關(guān)系運(yùn)算符連接起來(lái)的式子。例如:c>a+b 等價(jià)于 c>(a+b)a>b==c 等價(jià)于 (a>b)==ca=b>c 等價(jià)于 a=(b>c)關(guān)系表達(dá)式的值是一個(gè)邏輯值,即“真”或“假”。C語(yǔ)言沒(méi)有邏輯型數(shù)據(jù),以1代表“真”,以0代表“假”⑤關(guān)系運(yùn)算符和關(guān)系運(yùn)算表達(dá)式3.C語(yǔ)言數(shù)據(jù)(3)C語(yǔ)言運(yùn)算符和表達(dá)式a.邏輯運(yùn)算符C語(yǔ)言提供三種邏輯運(yùn)算符,分別是:!邏輯非(相當(dāng)于“否定”,條件為真,運(yùn)算后為“假”,條件為假,運(yùn)算后為“真”)。&&邏輯與(相當(dāng)于“并且”,只在兩條件同時(shí)成立時(shí)為“真”,否則為“假”)。||邏輯或(相當(dāng)于“或者”,兩個(gè)條件只要有一個(gè)成立時(shí)即為“真”,否則為“假”)。其中,“&&”和“||
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年新版中國(guó)刀套項(xiàng)目可行性研究報(bào)告
- 2024-2030年撰寫(xiě):中國(guó)肥料分篩機(jī)項(xiàng)目風(fēng)險(xiǎn)評(píng)估報(bào)告
- 智能餐飲培訓(xùn)課程設(shè)計(jì)
- 旅游專(zhuān)業(yè)托盤(pán)課程設(shè)計(jì)
- 2024-2030年卡車(chē)和公共汽車(chē)后視鏡行業(yè)市場(chǎng)現(xiàn)狀供需分析及重點(diǎn)企業(yè)投資評(píng)估規(guī)劃分析研究報(bào)告
- 2024-2030年北京養(yǎng)老機(jī)構(gòu)行業(yè)發(fā)展動(dòng)態(tài)及前景規(guī)劃研究報(bào)告
- 2024-2030年六氯丙酮搬遷改造項(xiàng)目可行性研究報(bào)告
- 2024-2030年全球機(jī)械密封市場(chǎng)發(fā)展前景與投資風(fēng)險(xiǎn)分析報(bào)告
- 2024-2030年全球及中國(guó)調(diào)酒用糖漿行業(yè)銷(xiāo)售情況及競(jìng)爭(zhēng)前景預(yù)測(cè)報(bào)告
- 2024-2030年全球及中國(guó)聚硅氧烷季銨鹽8行業(yè)產(chǎn)銷(xiāo)需求及投資潛力預(yù)測(cè)報(bào)告
- 公司法(上海財(cái)經(jīng)大學(xué))智慧樹(shù)知到期末考試答案2024年
- 金融數(shù)據(jù)分析 課件 第2章金融時(shí)間序列線性模型
- 軟件工程項(xiàng)目預(yù)算表-模板
- 2023秋國(guó)開(kāi)(專(zhuān))《生產(chǎn)與運(yùn)作管理》歷屆期末考試試題及答案
- 《機(jī)械制圖16螺栓》課件
- 銷(xiāo)售人員招聘計(jì)劃書(shū)
- 產(chǎn)值分析報(bào)告
- 《樹(shù)莓派應(yīng)用開(kāi)發(fā)》課件 第01、2章 樹(shù)莓派介紹、樹(shù)莓派操作系統(tǒng)
- 模具熱分析報(bào)告
- 2024年湖南現(xiàn)代物流職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 多西他賽化療方案
評(píng)論
0/150
提交評(píng)論