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