版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)習(xí)情境一顯示系統(tǒng)設(shè)計(jì)與制作第1頁,課件共138頁,創(chuàng)作于2023年2月【訓(xùn)練項(xiàng)目1-1】跑馬燈的設(shè)計(jì)與制作一、項(xiàng)目要求在Proteus仿真軟件和單片機(jī)實(shí)訓(xùn)板上實(shí)現(xiàn)8位LED的跑馬燈效果,跑馬方式可以采用“自上到下的循環(huán)”、“自下到上的循環(huán)”、“兩頭到中間再中間到兩頭循環(huán)”等等。學(xué)生能采用單片機(jī)的P0、P1、P2、P3的任意端口控制8位LED,實(shí)現(xiàn)單燈閃爍和跑馬效果,并能控制它們的速度。第2頁,課件共138頁,創(chuàng)作于2023年2月二、項(xiàng)目實(shí)訓(xùn)儀器、設(shè)備及實(shí)訓(xùn)材料工具、設(shè)備和耗材數(shù)量工具、設(shè)備和耗材數(shù)量工具、設(shè)備和耗材數(shù)量電腦1臺(tái)51單片機(jī)下載線和USB線1根杜邦導(dǎo)線8PKeiluVision41套晶振1只AT89S51/STC60S21片Proteus7.5軟件1套單片機(jī)實(shí)訓(xùn)板1塊穩(wěn)壓電源1臺(tái)三、項(xiàng)目實(shí)施過程及其步驟任務(wù)1控制一個(gè)LED閃爍任務(wù)描述:采用單片機(jī)的P0.x、P1.x、P2.x、P3.x的任意端口控制一個(gè)LED,在Proteus軟件和單片機(jī)實(shí)訓(xùn)板上,實(shí)現(xiàn)LED閃爍,并能控制閃爍速度。第3頁,課件共138頁,創(chuàng)作于2023年2月任務(wù)2
制作8位LED跑馬燈任務(wù)描述:采用單片機(jī)的P0、P1、P2、P3的任意端口控制8位LED,在Proteus軟件和單片機(jī)實(shí)訓(xùn)板上,制作8位LED的跑馬燈,并能控制LED跑馬速度。四、思考與分析(1)調(diào)試程序時(shí),黃色箭頭指向的當(dāng)前行代碼有沒有執(zhí)行?(2)繪制任務(wù)1和2的程序運(yùn)行軌跡,即黃色箭頭在程序代碼行走的軌跡。(3)改變跑馬燈循環(huán)閃爍方式,如:自下向上循環(huán)、自兩頭向中間再向兩頭循環(huán)等。第4頁,課件共138頁,創(chuàng)作于2023年2月1.1什么是單片機(jī)單片微型計(jì)算機(jī)(SingleChipMicrocomputer)簡(jiǎn)稱單片機(jī),是指集成在一個(gè)芯片上的微型計(jì)算機(jī),它的各種功能部件,包括CPU(CentralProcessingUnit)、存儲(chǔ)器(memory)、基本輸入/輸出(Input/Output,簡(jiǎn)稱I/O)接口電路、定時(shí)/計(jì)數(shù)器和中斷系統(tǒng)等,都制作在一塊集成芯片上,構(gòu)成一個(gè)完整的微型計(jì)算機(jī)。由于它的結(jié)構(gòu)與指令功能都是按照工業(yè)控制要求設(shè)計(jì)的,故又稱為微控制器(Micro-ControllerUnit,簡(jiǎn)稱MCU)。第5頁,課件共138頁,創(chuàng)作于2023年2月
CPU
存儲(chǔ)器定時(shí)器/計(jì)數(shù)器
中斷系統(tǒng)P0-P3TxDRxD
TINT并行I/O口串行I/O口單片機(jī)的基本結(jié)構(gòu)第6頁,課件共138頁,創(chuàng)作于2023年2月單片機(jī)種類
◆目前8位單片機(jī)仍是單片機(jī)的主流機(jī)型;◆生產(chǎn)廠商:◆單片機(jī)的發(fā)展經(jīng)歷了由4位機(jī)到8位機(jī),再到16位機(jī)的發(fā)展過程美國(guó)微芯片公司:PIC16C××系列、PIC17C××系列、PIC1400系列,美國(guó)英特爾公司的MCS-48和MCS-51系列,美國(guó)摩托羅拉公司的MC68HC05系列和MC68HC11系列,美國(guó)齊洛格公司的Z8系列,日本電氣公司的μPD78××系列,美國(guó)莫斯特克公司和仙童公司合作生產(chǎn)的F8(3870)系列等。
第7頁,課件共138頁,創(chuàng)作于2023年2月型號(hào)Flash(KB)RAM(B)EEPROM(KB)I/O引腳UART個(gè)數(shù)定時(shí)器個(gè)數(shù)WDTA/D路/位fmax(MHz)AT20512128--1512----24AT89S514128--3212Yes--33AT89S528256---3213Yes--33AT89S82531225623213Yes--33STC011256--1622Yes--35STC044256--4022Yes--35STC60S260128014034Yes8/1035STC12LE16S2161280454034Yes8/1035Atmel和STC單片機(jī)選型比較第8頁,課件共138頁,創(chuàng)作于2023年2月1.28051內(nèi)核單片機(jī)的引腳及內(nèi)部結(jié)構(gòu)P3口線的第二功能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:訪問程序存儲(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第9頁,課件共138頁,創(chuàng)作于2023年2月引腳名稱(序號(hào))第二功能第二功能描述P3.0(10)RXD串行數(shù)據(jù)接收端口P3.1(11)TXD串行數(shù)據(jù)發(fā)送端口P3.2(12)/INT0外部中斷0輸入端口P3.3(13)/INT1外部中斷1輸入端口P3.4(14)T0定時(shí)/計(jì)數(shù)器0的輸入端口P3.5(15)T1定時(shí)/計(jì)數(shù)器1的輸入端口P3.6(16)/WR外部RAM或外部I/O寫選通端口P3.7(17)/RD外部RAM或外部I/O讀選通端口P3端口的第二功能第10頁,課件共138頁,創(chuàng)作于2023年2月1.2.2單片機(jī)的內(nèi)部結(jié)構(gòu)第11頁,課件共138頁,創(chuàng)作于2023年2月單片機(jī)硬件結(jié)構(gòu)時(shí)鐘電路CPUROMRAMT0T1中斷系統(tǒng)串行接口并行接口P0P1P2P3TXDRXDINT0INT1定時(shí)計(jì)數(shù)器中央處理器CPU:8位,運(yùn)算和控制功能內(nèi)部RAM:共256個(gè)RAM單元,用戶使用前128個(gè)單元,用于存放可讀寫數(shù)據(jù),后128個(gè)單元被專用寄存器占用。內(nèi)部ROM:4KB掩膜ROM,用于存放程序、原始數(shù)據(jù)和表格。定時(shí)/計(jì)數(shù)器:兩個(gè)16位的定時(shí)/計(jì)數(shù)器,實(shí)現(xiàn)定時(shí)或計(jì)數(shù)功能。并行I/O口:4個(gè)8位的I/O口P0、P1、P2、P3。串行口:一個(gè)全雙工串行口。中斷控制系統(tǒng):5個(gè)中斷源(外中斷2個(gè),定時(shí)/計(jì)數(shù)中斷2個(gè),串行中斷1個(gè))時(shí)鐘電路:可產(chǎn)生時(shí)鐘脈沖序列,允許晶振頻率6MHZ和12MHZ復(fù)位電路第12頁,課件共138頁,創(chuàng)作于2023年2月8051單片機(jī)的基本組成中央處理器CPU:8位,運(yùn)算和控制功能內(nèi)部RAM:共256個(gè)RAM單元,用戶使用前128個(gè)單元, 用于存放可讀寫數(shù)據(jù),后128個(gè)單元被專用寄存器占用。內(nèi)部ROM:4KB掩膜ROM,用于存放程序、原始數(shù)據(jù)和表格。定時(shí)/計(jì)數(shù)器:兩個(gè)16位的定時(shí)/計(jì)數(shù)器,實(shí)現(xiàn)定時(shí)或計(jì)數(shù)功能。并行I/O口:4個(gè)8位的I/O口P0、P1、P2、P3。串行口:一個(gè)全雙工串行口。中斷控制系統(tǒng):5個(gè)中斷源(外中斷2個(gè),定時(shí)/計(jì)數(shù)中斷2個(gè),串行中斷1個(gè))時(shí)鐘電路:可產(chǎn)生時(shí)鐘脈沖序列,允許晶振頻率6MHZ和12MHZ第13頁,課件共138頁,創(chuàng)作于2023年2月振蕩電路
(1)時(shí)鐘產(chǎn)生方式(a)內(nèi)部方式
(b)外部方式第14頁,課件共138頁,創(chuàng)作于2023年2月(2)基本時(shí)序周期①振蕩周期為晶振的振蕩頻率,則振蕩周期為1/6μs。②時(shí)鐘周期為振蕩周期的兩倍,則時(shí)鐘周期為1/3μs。③機(jī)器周期為時(shí)鐘周期的六倍,則機(jī)器周期為2μs。④指令周期為完成一條指令所花費(fèi)的時(shí)間。一般匯編語言指令周期1~4個(gè)機(jī)器周期,對(duì)于C語言來說,每條語句來花費(fèi)多少個(gè)指令周期是比較難計(jì)算,而且也沒有計(jì)算的意義,所以一般只要大家記住振蕩周期越?。ɑ蛘袷庮l率越高),執(zhí)行C語言語句的時(shí)間就越短。另外,對(duì)于STC12C5A60S2單片機(jī)來說,其是單時(shí)鐘/機(jī)器周期單片機(jī),所以它比AT89S51/52單片機(jī)要快8~12倍。第15頁,課件共138頁,創(chuàng)作于2023年2月單片機(jī)復(fù)位條件:必須使RST引腳持續(xù)2微秒高電平(外部時(shí)鐘12MHz)復(fù)位電路第16頁,課件共138頁,創(chuàng)作于2023年2月1.38051內(nèi)核單片機(jī)的存儲(chǔ)器結(jié)構(gòu)程序存儲(chǔ)器內(nèi)部外部0000H0FFFH(4K)0000HFFFFH(64K)0000H0FFFH(4K)0000H0001H0002H(PC)0000H是程序執(zhí)行的起始單元,
在這三個(gè)單元存放一條
無條件轉(zhuǎn)移指令中斷5中斷4中斷3中斷2中斷10003H000BH0013H001BH0023H002BH外部中斷0定時(shí)器0中斷外部中斷1定時(shí)器1中斷串行口中斷8位...0FFFH0FFEHEA=1EA=0程序存儲(chǔ)器資源分布中斷入口地址(1)程序存儲(chǔ)器第17頁,課件共138頁,創(chuàng)作于2023年2月在單片機(jī)C語言程序設(shè)計(jì)中,用戶無需考慮程序的存放地址,編譯程序會(huì)在編譯過程中按照上述規(guī)定,自動(dòng)安排程序的存放地址。例如:C語言是從main()函數(shù)開始執(zhí)行的,編譯程序會(huì)在程序存儲(chǔ)器的0000H處自動(dòng)存放一條轉(zhuǎn)移指令,跳轉(zhuǎn)到main()函數(shù)存放的地址;中斷函數(shù)也會(huì)按照中斷類型號(hào),自動(dòng)由編譯程序安排存放在程序存儲(chǔ)器相應(yīng)的地址中。因此,讀者只需了解程序存儲(chǔ)器的結(jié)構(gòu)就可以了。第18頁,課件共138頁,創(chuàng)作于2023年2月0000HFFFFH(64K)內(nèi)部外部(2)數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器00HFFH7FH80H(高128B)(低128B)RAM專用
寄存器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~07H10第2區(qū)10H~17H工作寄存器區(qū)選擇位RS0、RS1第19頁,課件共138頁,創(chuàng)作于2023年2月注意:一個(gè)單元地址對(duì)應(yīng)有8個(gè)位地址
MSB——MostSignificantBit(最高有效位)
LSB——LeastSignificantBit(最低有效位)單元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07
MSB
位地址
LSB7E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D057C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A625A524A423A322A221A120A027971696159514941393129211911090178706860585048403830282018100800RAM位尋址區(qū)位地址表第20頁,課件共138頁,創(chuàng)作于2023年2月高128個(gè)單元☆離散分布有21個(gè)特殊功能寄存器SFR?!?/p>
11個(gè)可以進(jìn)行位尋址?!钐貏e提示:對(duì)SFR只能使用直接尋址方式,書寫時(shí)可使用寄存器符號(hào),也可用寄存器單元地址。第21頁,課件共138頁,創(chuàng)作于2023年2月1.4單片機(jī)開發(fā)環(huán)境(a)ISP下載線(b)仿真器第22頁,課件共138頁,創(chuàng)作于2023年2月單片機(jī)實(shí)訓(xùn)板第23頁,課件共138頁,創(chuàng)作于2023年2月實(shí)訓(xùn)板特點(diǎn):
由相對(duì)獨(dú)立的模塊組成,讀者可以將所有模塊進(jìn)行自由組合,構(gòu)建不同功能的單片機(jī)系統(tǒng)。
不僅提供了實(shí)訓(xùn)板硬件電路程序,而且還提供了所有模塊的Proteus仿真電路,讀者可以通過虛實(shí)結(jié)合的方式,快速掌握單片機(jī)應(yīng)用技術(shù)。
不須使用昂貴的仿真器、編程器就可以開發(fā)單片機(jī)系統(tǒng)。采用一條USB線就可以把程序下載到STC單片機(jī)之中,或者采用一條ISP下載線把程序下載到AT89S51/52單片機(jī)之中,既省了購買昂貴的仿真器、編程器,又能方便地開發(fā)單片機(jī)系統(tǒng)。
該實(shí)訓(xùn)板可以兼融多種單片機(jī),如:AT89S51/52、ST12C5A60S2,以及AVR、PIC單片機(jī)(需要加轉(zhuǎn)接板)。
采用USB線供電,不需要外接電源。第24頁,課件共138頁,創(chuàng)作于2023年2月實(shí)訓(xùn)板組成:顯示電路模塊鍵盤電路模塊傳感器電路模塊通信電路模塊其它電路模塊第25頁,課件共138頁,創(chuàng)作于2023年2月【訓(xùn)練項(xiàng)目1-2】數(shù)碼管靜態(tài)顯示系統(tǒng)設(shè)計(jì)與制作一、項(xiàng)目要求在Proteus仿真軟件和單片機(jī)實(shí)訓(xùn)上,采用單片機(jī)的P0、P1、P2、P3的任意端口控制1位共陽極數(shù)碼管,實(shí)現(xiàn)0~F字符循環(huán)顯示,并能控制循環(huán)顯示速度。二、項(xiàng)目實(shí)訓(xùn)儀器、設(shè)備及實(shí)訓(xùn)材料工具、設(shè)備和耗材數(shù)量工具、設(shè)備和耗材數(shù)量工具、設(shè)備和耗材數(shù)量電腦1臺(tái)51單片機(jī)下載線和USB線1根杜邦導(dǎo)線8PKeiluVision41套晶振1只AT89S51/STC60S21片Proteus7.5軟件1套單片機(jī)實(shí)訓(xùn)板1塊穩(wěn)壓電源1臺(tái)第26頁,課件共138頁,創(chuàng)作于2023年2月三、項(xiàng)目實(shí)施過程及其步驟任務(wù)1實(shí)現(xiàn)0~F任意字符顯示任務(wù)描述:采用單片機(jī)的P3端口控制1位數(shù)碼管,在Proteus軟件和單片機(jī)實(shí)訓(xùn)板上,使數(shù)碼管顯示0~F任意字符。然后再改用其它端口控制數(shù)碼管,實(shí)現(xiàn)同樣功能。第27頁,課件共138頁,創(chuàng)作于2023年2月三、項(xiàng)目實(shí)施過程及其步驟任務(wù)2實(shí)現(xiàn)0~F字符循環(huán)顯示任務(wù)描述:在任務(wù)1的基礎(chǔ)上,實(shí)現(xiàn)0~F字符循環(huán)顯示。然后再改用其它端口控制數(shù)碼管,實(shí)現(xiàn)同樣功能。四、思考與分析(1)繪制任務(wù)1和2的程序運(yùn)行軌跡,即黃色箭頭在程序代碼行走的軌跡。(2)采用共陰極數(shù)碼管,實(shí)現(xiàn)0~F字符循環(huán)顯示。(3)采用延時(shí)函數(shù)、數(shù)組定義顯示代碼等方法,減少程序代碼。第28頁,課件共138頁,創(chuàng)作于2023年2月1.5數(shù)碼管的結(jié)構(gòu)與原理
在單片機(jī)應(yīng)用系統(tǒng)中,數(shù)碼管常用來顯示系統(tǒng)的工作狀態(tài)、運(yùn)算結(jié)果等信息,實(shí)現(xiàn)人機(jī)交互。一般數(shù)碼管有1位、3位、2位、4位等組合方式。第29頁,課件共138頁,創(chuàng)作于2023年2月第30頁,課件共138頁,創(chuàng)作于2023年2月顯示字符共陽極數(shù)碼管共陰極數(shù)碼管dpgfedcba字碼dpgfedcba字碼0110000000XC0001111110X3F1111110010XF9000001100X062101001000XA4010110110X5B3101100000XB0010011110X4F4100110010X99011001100X665100100100X92011011010X6D6100000100X82011111010X7D7111110000XF8000001110X078100000000X80011111110X7F9100100000X90011011110X6FA100010000X88011101110X77B100000110X83011111000X7CC110001100XC6001110010X39D101000010XA1010111100X5EE100001100X86011110010X79F100011100X8E011100010X71滅111111110XFF000000000X00第31頁,課件共138頁,創(chuàng)作于2023年2月1.6C語言數(shù)據(jù)類型、運(yùn)算符與表達(dá)式數(shù)據(jù)類型單精度型(float)雙精度型(double)整型(int)實(shí)型(浮點(diǎn)型)字符型(char)基本類型構(gòu)造類型枚舉類型號(hào)(enum)數(shù)組類型結(jié)構(gòu)體類型(struct)共用體類型(union)指針類型空類型(void)第32頁,課件共138頁,創(chuàng)作于2023年2月序號(hào)名稱數(shù)據(jù)類型長(zhǎng)度(位數(shù))值
域1有符號(hào)字符型[signed]char8B-128~+1272無符號(hào)字符型unsignedchar8B0~2553有符號(hào)整型[signed]short16B-32768~+327674無符號(hào)整型unsignedshort16B0~655355有符號(hào)整型[signed]int16B-32768~+327676無符號(hào)整型unsignedint16B0~655357有符號(hào)長(zhǎng)整型[signed]long32B-2147483648~+21474836478無符號(hào)長(zhǎng)整型unsignedlong32B0~42949672959單精度浮點(diǎn)型float32B±1.175494E-38~±3.4022823E+3810雙精度浮點(diǎn)型double64B±1.175494E-38~±3.4022823E+3811指針型*1~24B存儲(chǔ)器地址12位類型bit1B0或113可尋址位sbit1B0或114特殊功能寄存器sfr1B0~255C51編譯器所支持的數(shù)據(jù)類型第33頁,課件共138頁,創(chuàng)作于2023年2月1.6.2變量與常量在程序運(yùn)行的過程中,其值不能改變的量,稱為常量。常量的數(shù)據(jù)類型有整型、浮點(diǎn)型、字符型、位類型和字符串型。數(shù)值常量可以在程序中直接引用,例如:a=15;a=2.65;a=‘c’等;但是符號(hào)常量不能直接使用,在使用之前必須用編譯預(yù)處理命令“#define”先進(jìn)行定義,例如:#definePI3.1415926535898第34頁,課件共138頁,創(chuàng)作于2023年2月在程序運(yùn)行中,其值可以改變的量稱為變量。一個(gè)變量主要由兩部分構(gòu)成,一個(gè)是變量名,另個(gè)是變量值。每個(gè)變量都在內(nèi)存中占據(jù)一定的存儲(chǔ)單元(地址),并在該內(nèi)存單元中存放該變量的值。(1)變量的定義[存儲(chǔ)種類]數(shù)據(jù)類型[存儲(chǔ)器類型]變量名表;第35頁,課件共138頁,創(chuàng)作于2023年2月(2)變量的初始化數(shù)據(jù)類型標(biāo)識(shí)符
變量名1=常量1[,變量名2=常量2,…,變量名n=常量n];第36頁,課件共138頁,創(chuàng)作于2023年2月1.6.3運(yùn)算符和表達(dá)式運(yùn)算符名運(yùn)算符算術(shù)運(yùn)算符+-*/%++--關(guān)系運(yùn)算符><==>=<=!=邏輯運(yùn)算符!&&||位運(yùn)算符<<>>~&|^賦值運(yùn)算符=條件運(yùn)算符?:逗號(hào)運(yùn)算符,指針運(yùn)算符*&求字節(jié)數(shù)運(yùn)算符sizeof強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(類型)下標(biāo)運(yùn)算符[]函數(shù)調(diào)用運(yùn)算符()第37頁,課件共138頁,創(chuàng)作于2023年2月1.運(yùn)算符的優(yōu)先級(jí)和結(jié)合性(1)優(yōu)先級(jí)
優(yōu)先級(jí)是用來標(biāo)志運(yùn)算符在表達(dá)式中的運(yùn)算順序的。求解表達(dá)式時(shí),總是先按運(yùn)算符的優(yōu)先次序由高到低進(jìn)行操作。(2)結(jié)合性
當(dāng)一個(gè)運(yùn)算對(duì)象兩側(cè)的運(yùn)算符優(yōu)先級(jí)相同時(shí),則按運(yùn)算符的結(jié)合性確定表達(dá)式的運(yùn)算順序。第38頁,課件共138頁,創(chuàng)作于2023年2月2.算術(shù)運(yùn)算符與算術(shù)表達(dá)式
+(加法運(yùn)算)-(減法運(yùn)算)*(乘法運(yùn)算符)
/(除法運(yùn)算符)%(求余運(yùn)算符,或稱模運(yùn)算符)如:4%2=0++(變量自加1)--(變量自減1)
注意兩個(gè)整數(shù)相除結(jié)果為整數(shù),如8/5的結(jié)果為1,舍去小數(shù)部分。如果參加運(yùn)算的兩個(gè)數(shù)中有一個(gè)數(shù)為實(shí)數(shù),則結(jié)果是實(shí)型。求余運(yùn)算要求%兩側(cè)都是整型數(shù)據(jù)。第39頁,課件共138頁,創(chuàng)作于2023年2月自增、自減運(yùn)算實(shí)戰(zhàn)演練:請(qǐng)說明程序運(yùn)行完后x,y,z,m,n的值分別是多少?main(){intx=6,y,z,m,n; y=++x; z=x--;m=y/z;n=y%z;}自增運(yùn)算符(++)和自減運(yùn)算符(--):(1)前置運(yùn)算──++變量、--變量 即先增減、后運(yùn)算。(2)后置運(yùn)算──變量++、變量--即先運(yùn)算、后增減。第40頁,課件共138頁,創(chuàng)作于2023年2月賦值運(yùn)算符
賦值語句的作用是把某個(gè)常量或變量或表達(dá)式的值賦值給另一個(gè)變量。符號(hào)為‘=’。這里并不是等于的意思,只是賦值,等于用‘==’表示。賦值語句左邊必須是變量或寄存器,且必須先定義。常量不能出現(xiàn)左邊。第41頁,課件共138頁,創(chuàng)作于2023年2月賦值運(yùn)算符和賦值表達(dá)式簡(jiǎn)單的賦值運(yùn)算符:復(fù)合的賦值運(yùn)算符=+=、-=、*=、%=、/=i+=2等價(jià)于i=i+2a*=b+5等價(jià)于a=a*(b+5)x%=3等價(jià)于x=x%3第42頁,課件共138頁,創(chuàng)作于2023年2月4.關(guān)系運(yùn)算符與賦值表達(dá)式關(guān)系運(yùn)算符優(yōu)先級(jí)
<<=>>===!=低高第43頁,課件共138頁,創(chuàng)作于2023年2月關(guān)系表達(dá)式
用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(可以是算術(shù)表達(dá)式、關(guān)系表達(dá)式、賦值表達(dá)式或邏輯表達(dá)式)連接起來的式子,稱為關(guān)系表達(dá)式。關(guān)系表達(dá)式的值為邏輯值“真”或“假”,以1代表“真”,以0代表“假”。
例如:
(1)關(guān)系表達(dá)式“8==4”的值為
,表達(dá)式的值為
。
(2)關(guān)系表達(dá)式“5>0”的值為
,表達(dá)式的值為
。
第44頁,課件共138頁,創(chuàng)作于2023年2月
邏輯運(yùn)算符優(yōu)先級(jí)
!(邏輯非)
&&(邏輯與)||(邏輯或)注意:邏輯運(yùn)算符與位操作運(yùn)算符的區(qū)別。5.邏輯運(yùn)算符與賦值表達(dá)式第45頁,課件共138頁,創(chuàng)作于2023年2月邏輯表達(dá)式
用邏輯運(yùn)算符將一個(gè)或多個(gè)表達(dá)式連接起來,進(jìn)行邏輯運(yùn)算的式子。邏輯量的真判斷——非0邏輯量的假判斷——0若a=1,b=2,c=3,x=4,y=3,寫出下各個(gè)表達(dá)式的值:(1)a+b>c&&b==c(2)!a<b&&b!=c||x+y<=3(3)!(x=a)&&(y=b)&&0000第46頁,課件共138頁,創(chuàng)作于2023年2月運(yùn)算類型運(yùn)算符優(yōu)先級(jí)結(jié)合性括號(hào)運(yùn)算符()1從左至右邏輯非和按位取反!~2從右至左算術(shù)運(yùn)算*/%3從左至右+-4從左至右左移、右移運(yùn)算<<>>5從左至右關(guān)系運(yùn)算<<=>>=6從左至右==!=7從左至右位運(yùn)算&8從左至右^9從左至右|10從左至右邏輯與&&11從左至右邏輯或||12從左至右賦值運(yùn)算與復(fù)合賦值運(yùn)算
=+=、-=、*=、/=、%=、&=、^=、|=、<<=、>>=14從右至左例如:(1)x<y&&m<n等效于(x<y)&&(m<n)(2)a==b||c==d等效于(a==b)||(c==d)(3)!a&&b>c等效于(!a)&&(b>c)第47頁,課件共138頁,創(chuàng)作于2023年2月與操作按位與操作符:&
格式:x&y
規(guī)則:對(duì)應(yīng)位均為1時(shí)才為1,否則為0
例如,
i=i&0x0f;
等同于
i&=0x0f;主要用途:取(或保留)1個(gè)數(shù)的某(些)位,其余各位置0。6.位運(yùn)算符與位運(yùn)算表達(dá)式第48頁,課件共138頁,創(chuàng)作于2023年2月位運(yùn)算或操作按位或操作符:|
格式:x|y
規(guī)則:對(duì)應(yīng)位均為0時(shí)才為0,否則為1
例如,
i=i|0x0f;
等同于
i|=0x0f;主要用途:將1個(gè)數(shù)的某(些)位置1,其余各位不變第49頁,課件共138頁,創(chuàng)作于2023年2月位運(yùn)算異或操作按位異或操作符:^格式:x^y規(guī)則:對(duì)應(yīng)位相同時(shí)為0,不同時(shí)為1
例如,
i=i^0x0f;
等同于
i^=0x0f;主要用途:使1個(gè)數(shù)的某(些)位翻轉(zhuǎn)(即原來為1的位變?yōu)?,為0的變?yōu)?),其余各位不變。第50頁,課件共138頁,創(chuàng)作于2023年2月位運(yùn)算按位取反操作按位取反操作符:~格式:~x規(guī)則:各位翻轉(zhuǎn),即原來為1的位變成0,原來為0的位變成1
例如,
i=~i;主要用途:間接地構(gòu)造一個(gè)數(shù),以增強(qiáng)程序的可移植性。第51頁,課件共138頁,創(chuàng)作于2023年2月左移運(yùn)算符“<<”的功能,是把“<<”左邊的操作數(shù)的各二進(jìn)制位全部左移若干位,移動(dòng)的位數(shù)由“<<”右邊的常數(shù)指定,高位丟棄,低位補(bǔ)0。例如:“a<<4”是指把a(bǔ)的各二進(jìn)制位向左移動(dòng)4位。如a=00000011B(十進(jìn)制數(shù)3),左移4位后為00110000B(十進(jìn)制數(shù)48)。右移運(yùn)算符“>>”的功能,是把“>>”左邊的操作數(shù)的各二進(jìn)制位全部右移若干位,移動(dòng)的位數(shù)由“>>”右邊的常數(shù)指定。進(jìn)行右移運(yùn)算時(shí),如果是無符號(hào)數(shù),則總是在其左端補(bǔ)“0”位運(yùn)算第52頁,課件共138頁,創(chuàng)作于2023年2月7.逗號(hào)運(yùn)算符與逗號(hào)運(yùn)算表達(dá)式在C語言中逗號(hào)“,”也是一種運(yùn)算符,稱為逗號(hào)運(yùn)算符,其功能是把兩個(gè)表達(dá)式連接起來組成一個(gè)表達(dá)式,稱為逗號(hào)表達(dá)式,其一般形式為:表達(dá)式1,表達(dá)式2,………,表達(dá)式n第53頁,課件共138頁,創(chuàng)作于2023年2月1.7基本語句及結(jié)構(gòu)化程序設(shè)計(jì)1.7.1表達(dá)式語句和復(fù)合語句
表達(dá)式語句是最基本的C語言語句。表達(dá)式語句由表達(dá)式加上分號(hào)“;”組成,其一般形式如下:
表達(dá)式;執(zhí)行表達(dá)式語句就是計(jì)算表達(dá)式的值。在C語言中有一個(gè)特殊的表達(dá)式語句,稱為空語句??照Z句中只有一個(gè)分號(hào)“;”,程序執(zhí)行空語句時(shí)需要占用一條指令的執(zhí)行時(shí)間,但是什么也不做。在C51程序中常常把空語句作為循環(huán)體,用于消耗CPU時(shí)間等待事件發(fā)生的場(chǎng)合。第54頁,課件共138頁,創(chuàng)作于2023年2月1.7.1表達(dá)式語句和復(fù)合語句把多個(gè)語句用大括號(hào){}括起來,組合在一起形成具有一定功能的模塊,這種由若干條語句組合而成的語句塊稱為復(fù)合語句。在程序中應(yīng)把復(fù)合語句看成是單條語句,而不是多條語句。復(fù)合語句在程序運(yùn)行時(shí),{}中的各行單語句是依次順序執(zhí)行的。在C語言的函數(shù)中,函數(shù)體就是一個(gè)復(fù)合語句。第55頁,課件共138頁,創(chuàng)作于2023年2月基本if語句的格式如下:if(表達(dá)式){
語句組;
}if語句執(zhí)行過程:當(dāng)“表達(dá)式”的結(jié)果為“真”時(shí),執(zhí)行其后的“語句組”,否則跳過該語句組,繼續(xù)執(zhí)行下面的語句。
1.7.2選擇語句第56頁,課件共138頁,創(chuàng)作于2023年2月if語句中的“表達(dá)式”通常為邏輯表達(dá)式或關(guān)系表達(dá)式,也可以是任何其他的表達(dá)式或類型數(shù)據(jù),只要表達(dá)式的值非0即為“真”。以下語句都是合法的:
if(3){……}if(x=8){……}if(P3_0){……}在if語句中,“表達(dá)式”必須用括號(hào)括起來。在if語句中,花括號(hào)“{}”里面的語句組如果只有一條語句,可以省略花括號(hào)。如“if(P3_0==0)P1_0=0;”語句,但是為了提高程序的可讀性和防止程序書寫錯(cuò)誤,建議讀者在任何情況下,都加上花括號(hào)。1.7.2選擇語句第57頁,課件共138頁,創(chuàng)作于2023年2月if-else語句的一般格式如下:if(表達(dá)式) {
語句組1;
} else{
語句組2;
}if-else語句執(zhí)行過程:當(dāng)“表達(dá)式”的結(jié)果為“真”時(shí),執(zhí)行其后的“語句組1”,否則執(zhí)行“語句組2”1.7.2選擇語句第58頁,課件共138頁,創(chuàng)作于2023年2月if-else-if語句是由ifelse語句組成的嵌套,用來實(shí)現(xiàn)多個(gè)條件分支的選擇,其一般格式如下:if(表達(dá)式1) {
語句組1;
} elseif(表達(dá)式2){
語句組2;
} …elseif(表達(dá)式n){
語句組n;
}else{
語句組n+1;
}1.7.2選擇語句第59頁,課件共138頁,創(chuàng)作于2023年2月1.7.2選擇語句第60頁,課件共138頁,創(chuàng)作于2023年2月多分支選擇的switch語句,其一般形式如下:
switch(表達(dá)式){ case常量表達(dá)式1:語句組1;break; case常量表達(dá)式2:語句組2;break; …… case常量表達(dá)式n:語句組n;break; default:語句組n+1;}該語句的執(zhí)行過程是:首先計(jì)算表達(dá)式的值,并逐個(gè)與case后的常量表達(dá)式的值相比較,當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),則執(zhí)行對(duì)應(yīng)該常量表達(dá)式后的語句組,再執(zhí)行break語句,跳出switch語句的執(zhí)行,繼續(xù)執(zhí)行下一條語句。如果表達(dá)式的值與所有case后的常量表達(dá)式均不相同,則執(zhí)行default后的語句組。1.7.2選擇語句第61頁,課件共138頁,創(chuàng)作于2023年2月while語句用來實(shí)現(xiàn)“當(dāng)型”循環(huán),執(zhí)行過程:首先判斷表達(dá)式,當(dāng)表達(dá)式的值為真(非0)時(shí),反復(fù)執(zhí)行循環(huán)體。為假(0)時(shí)執(zhí)行循環(huán)體外面的語句。循環(huán)體循環(huán)繼續(xù)的條件表達(dá)式下一條語句非0(真)0(假)循環(huán)體語句組while執(zhí)行過程格式:while(循環(huán)繼續(xù)的條件表達(dá)式)
{語句組;}花括號(hào)不能丟掉!請(qǐng)問:下述程序?qū)崿F(xiàn)了什么功能?main(){inti,sum=0;while(i<=10){sum=sum+i;i++;}}1.7.3循環(huán)語句第62頁,課件共138頁,創(chuàng)作于2023年2月do-while語句用來實(shí)現(xiàn)“直到型”循環(huán)執(zhí)行過程:先無條件執(zhí)行一次循環(huán)體,然后判斷條件表達(dá)式,當(dāng)表達(dá)式的值為真(非0)時(shí),返回執(zhí)行循環(huán)體直到條件表達(dá)式為假(0)為止。絕對(duì)不能少分號(hào)!循環(huán)體格式:do{
循環(huán)體語句組;
}while(循環(huán)繼續(xù)條件);花括號(hào)不能丟掉!循環(huán)繼續(xù)的條件表達(dá)式下一條語句非0(真)0(假)循環(huán)體語句組請(qǐng)問:下述程序?qū)崿F(xiàn)了什么功能?main(){inti,sum=0;do{sum=sum+i;i++;}while(i<=100);}1.7.3循環(huán)語句第63頁,課件共138頁,創(chuàng)作于2023年2月總循環(huán)次數(shù)已確定的情況下,可采用for語句形式為:for語句的一般形式:
for(循環(huán)變量賦初值;循環(huán)繼續(xù)條件;循環(huán)變量增值)
{
循環(huán)體語句組;
} 分隔符為分號(hào)請(qǐng)問:下述程序?qū)崿F(xiàn)了什么功能?main(){inti,y=0;for(i=1;i<=10;i++){y=y+i;}}1.7.3循環(huán)語句第64頁,課件共138頁,創(chuàng)作于2023年2月循環(huán)繼續(xù)條件for的下一條語句非0(真)0(假)循環(huán)體語句組循環(huán)變量賦初值循環(huán)變量增值for語句循環(huán)執(zhí)行過程只求解一次要執(zhí)行若干次,具體次數(shù)由“循環(huán)繼續(xù)條件”決定for語句不僅可用于循環(huán)次數(shù)已經(jīng)確定的情況,也可用于循環(huán)次數(shù)雖不確定,但給出了循環(huán)繼續(xù)條件的情況,它完全可以代替while語句和do-while語句。for(循環(huán)變量賦初值;循環(huán)繼續(xù)條件;循環(huán)變量增值)
{循環(huán)體語句組;} 第65頁,課件共138頁,創(chuàng)作于2023年2月1.8單片機(jī)I/O端口及其應(yīng)用單片機(jī)共有四個(gè)8位并行I/O口,分別用P0、P1、P2、P3表示。每個(gè)I/O口既可以按位操作使用單個(gè)引腳,也可以按字節(jié)操作使用8個(gè)引腳。第66頁,課件共138頁,創(chuàng)作于2023年2月P0口的結(jié)構(gòu)
輸出控制電路輸出驅(qū)動(dòng)電路
P0口邏輯電路第67頁,課件共138頁,創(chuàng)作于2023年2月
當(dāng)P0口作為輸出口使用時(shí),內(nèi)部總線將數(shù)據(jù)送入鎖存器,內(nèi)部的寫脈沖加在鎖存器時(shí)鐘端CP上,鎖存數(shù)據(jù)到Q、端。經(jīng)過MUX,T2反相后正好是內(nèi)部總線的數(shù)據(jù),送到P0口引腳輸出。當(dāng)P0口作為輸入口使用時(shí),應(yīng)區(qū)分讀引腳和讀端口兩種情況,所謂讀引腳,就是讀芯片引腳的狀態(tài),這時(shí)使用下方的數(shù)據(jù)緩沖器,由“讀引腳”信號(hào)把緩沖器打開,把端口引腳上的數(shù)據(jù)從緩沖器通過內(nèi)部總線讀進(jìn)來。讀端口是指通過上面的緩沖器讀鎖存器Q端的狀態(tài)。讀端口是為了適應(yīng)對(duì)I/O口進(jìn)行“讀-修改-寫”操作語句的需要。例如下面的C51語句:
P0=P0&0xf0; //將P0口的低4位引腳清0輸出P0口的結(jié)構(gòu)第68頁,課件共138頁,創(chuàng)作于2023年2月
除了I/O功能以外,在進(jìn)行單片機(jī)系統(tǒng)擴(kuò)展時(shí),P0口是作為單片機(jī)系統(tǒng)的地址/數(shù)據(jù)線使用的,一般稱為地址/數(shù)據(jù)分時(shí)復(fù)用引腳。當(dāng)輸出地址或數(shù)據(jù)時(shí),由內(nèi)部發(fā)出控制信號(hào),使“控制”端為高電平,打開與門,并使多路開關(guān)MUX處于內(nèi)部地址/數(shù)據(jù)線與驅(qū)動(dòng)場(chǎng)效應(yīng)管柵極反相接通狀態(tài)。此時(shí),輸出驅(qū)動(dòng)電路由于兩個(gè)FET處于反相,形成推拉式電路結(jié)構(gòu),使負(fù)載能力大為提高。輸入數(shù)據(jù)時(shí),數(shù)據(jù)信號(hào)直接從引腳通過輸入緩沖器進(jìn)入內(nèi)部總線。P0口的結(jié)構(gòu)第69頁,課件共138頁,創(chuàng)作于2023年2月P1口的結(jié)構(gòu)
P1口邏輯電路第70頁,課件共138頁,創(chuàng)作于2023年2月P1口是準(zhǔn)雙向口,只能作為通用I/O口使用。P1口作為輸出口使用時(shí),無需再外接上拉電阻。P1口作為輸入口使用時(shí),應(yīng)區(qū)分讀引腳和讀端口。讀引腳時(shí),必須先向電路中的鎖存器寫入“1”,使輸出級(jí)的FET截止。P1口的結(jié)構(gòu)第71頁,課件共138頁,創(chuàng)作于2023年2月P2口的結(jié)構(gòu)
P2口邏輯電路第72頁,課件共138頁,創(chuàng)作于2023年2月P2口是準(zhǔn)雙向口,在實(shí)際應(yīng)用中,可以用于為系統(tǒng)提供高8位地址,也能作為通用I/O口使用。P2口作為通用I/O口的輸出口使用時(shí),與P1口一樣無需再外接上拉電阻。P2口作為通用I/O口的輸入口使用時(shí),應(yīng)區(qū)分讀引腳和讀端口。讀引腳時(shí),必須先向鎖存器寫入“1”。P2口的結(jié)構(gòu)第73頁,課件共138頁,創(chuàng)作于2023年2月P3口的結(jié)構(gòu)
P3口邏輯電路第74頁,課件共138頁,創(chuàng)作于2023年2月P3口是準(zhǔn)雙向口,可以作為通用I/O口使用,還可以作為第二功能使用。作為第二功能使用的端口,不能同時(shí)當(dāng)作通用I/O口使用,但其他未被使用的端口仍可作為通用I/O口使用。P3口作為通用I/O的輸出口使用時(shí),不用外接上拉電阻。P3口的結(jié)構(gòu)第75頁,課件共138頁,創(chuàng)作于2023年2月【訓(xùn)練項(xiàng)目1-3】數(shù)碼管動(dòng)態(tài)顯示系統(tǒng)設(shè)計(jì)與制作一、項(xiàng)目要求在Proteus仿真軟件和單片機(jī)實(shí)訓(xùn)上,采用單片機(jī)的P0、P1、P2、P3的任意端口控制2個(gè)4位一體的共陽極數(shù)碼管,實(shí)現(xiàn)任意數(shù)字顯示,然后再修改程序?qū)崿F(xiàn)簡(jiǎn)易時(shí)鐘顯示,顯示格式為:□□—□□—□□,即“時(shí)”—“分”—“秒”。第76頁,課件共138頁,創(chuàng)作于2023年2月二、項(xiàng)目實(shí)訓(xùn)儀器、設(shè)備及實(shí)訓(xùn)材料工具、設(shè)備和耗材數(shù)量工具、設(shè)備和耗材數(shù)量工具、設(shè)備和耗材數(shù)量電腦1臺(tái)51單片機(jī)下載線和USB線1根杜邦導(dǎo)線8PKeiluVision41套晶振1只AT89S51/STC60S21片Proteus7.5軟件1套單片機(jī)實(shí)訓(xùn)板1塊穩(wěn)壓電源1臺(tái)三、項(xiàng)目實(shí)施過程及其步驟任務(wù)1實(shí)現(xiàn)任意數(shù)字顯示任務(wù)描述:采用單片機(jī)的P0和P2端口分別作為數(shù)碼管的數(shù)據(jù)和驅(qū)動(dòng)端口,在Proteus軟件和單片機(jī)實(shí)訓(xùn)板上,使數(shù)碼管顯示任意數(shù)字。然后再改用其它端口控制數(shù)碼管,實(shí)現(xiàn)同樣功能。第77頁,課件共138頁,創(chuàng)作于2023年2月第78頁,課件共138頁,創(chuàng)作于2023年2月任務(wù)2實(shí)現(xiàn)簡(jiǎn)易時(shí)鐘顯示任務(wù)描述:在任務(wù)1的基礎(chǔ)上,實(shí)現(xiàn)簡(jiǎn)易時(shí)鐘功能。然后再改用其它端口控制數(shù)碼管,實(shí)現(xiàn)同樣功能。第79頁,課件共138頁,創(chuàng)作于2023年2月四、思考與分析(1)繪制任務(wù)1和2的程序運(yùn)行軌跡,即黃色箭頭在程序代碼行走的軌跡。(2)采用共陰極數(shù)碼管,實(shí)現(xiàn)任意數(shù)字顯示。第80頁,課件共138頁,創(chuàng)作于2023年2月1.9數(shù)組第81頁,課件共138頁,創(chuàng)作于2023年2月分隔符為分號(hào)數(shù)組的概念
數(shù)組屬于常用的數(shù)據(jù)類型,數(shù)組中的元素有固定數(shù)目和相同類型,數(shù)組元素的數(shù)據(jù)類型就是該數(shù)組的基本類型。例如,整型數(shù)據(jù)的有序集合稱為整型數(shù)組,字符型數(shù)據(jù)的有序集合稱為字符型數(shù)組。數(shù)組還分為一維、二維、三維和多維數(shù)組等,常用的是一維、二維和字符數(shù)組。
1.9數(shù)組第82頁,課件共138頁,創(chuàng)作于2023年2月數(shù)組的基本特點(diǎn)構(gòu)造類形數(shù)據(jù):由基本類型數(shù)據(jù)按照一定規(guī)則組成。數(shù)組:是有序數(shù)據(jù)的集合;數(shù)組中的每一個(gè)元素都屬于同一個(gè)數(shù)據(jù)類型,用一個(gè)統(tǒng)一的數(shù)組名和下標(biāo)來唯一地確定數(shù)組中的元素。應(yīng)用場(chǎng)合:需要處理的數(shù)據(jù)為數(shù)量已知的若干相同類型的數(shù)據(jù)時(shí)。
注意:先定義,后使用。第83頁,課件共138頁,創(chuàng)作于2023年2月一維數(shù)組的定義和引用一維數(shù)組的定義:一般格式:類型標(biāo)識(shí)符數(shù)組名[常量表達(dá)式];
int
array[10];
unsignedchar
num[7];說明:數(shù)組名——見名知意;數(shù)組名中存放的是一個(gè)地址常量,它代表整個(gè)數(shù)組的首地址。同一數(shù)組中的所有元素,按其下標(biāo)的順序占用一段連續(xù)的存儲(chǔ)單元。方括弧而非圓括??;常量表達(dá)式:可以是常量或符號(hào)常量;表示數(shù)組元素的個(gè)數(shù)(也稱數(shù)組長(zhǎng)度)。不允許對(duì)數(shù)組大小作動(dòng)態(tài)定義。數(shù)組元素下標(biāo)從0開始。array[0],array[1],…array[9];遵循標(biāo)識(shí)符命名規(guī)則第84頁,課件共138頁,創(chuàng)作于2023年2月數(shù)組元素的表達(dá)形式:數(shù)組名[下標(biāo)表達(dá)式]Array[4]=100;array[8]=34;array[10]=56;注意:數(shù)組下標(biāo)不能越界!一個(gè)數(shù)組元素具有和相同類型單個(gè)變量一樣的屬性,可以對(duì)它賦值和參與各種運(yùn)算。一維數(shù)組的引用第85頁,課件共138頁,創(chuàng)作于2023年2月一般格式:
數(shù)據(jù)類型數(shù)組名[常量表達(dá)式]={初值表}1.定義時(shí)賦初值;intscore[5]={1,2,3,4,5};2.給一部分元素賦值;intscore[5]={1,2};3.使所有元素為0;intscore[5]={0};4.給全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度;
intscore[]={1,2,3,4,5};一維數(shù)組的初始化第86頁,課件共138頁,創(chuàng)作于2023年2月1.10函數(shù)C語言程序都是由多個(gè)函數(shù)組成的,一般至少有一個(gè)主函數(shù)main(),函數(shù)是C語言程序的基本模塊,通過對(duì)函數(shù)模塊的調(diào)用來實(shí)現(xiàn)程序的功能。C語言不僅提供了豐富的庫函數(shù),而且還允許定義自己的函數(shù),所以C語言程序都由各類不同功能的函數(shù)組成的。第87頁,課件共138頁,創(chuàng)作于2023年2月函數(shù)的分類標(biāo)準(zhǔn)庫函數(shù)用戶自定義函數(shù)(1)從函數(shù)是否具有返回值的角度分類①有返回值函數(shù)②無返回值函數(shù)(2)從函數(shù)是否帶有參數(shù)角度分類
①無參函數(shù)
②有參函數(shù)第88頁,課件共138頁,創(chuàng)作于2023年2月函數(shù)定義C語言函數(shù)定義形式:[數(shù)據(jù)類型說明符]函數(shù)名([形參定義表]){ 執(zhí)行語句; //“{}”中的內(nèi)容稱為函數(shù)體}第89頁,課件共138頁,創(chuàng)作于2023年2月函數(shù)的調(diào)用1.函數(shù)調(diào)用方式函數(shù)調(diào)用的一般形式為:[變量=]函數(shù)名([實(shí)參表])第90頁,課件共138頁,創(chuàng)作于2023年2月2.對(duì)被調(diào)函數(shù)的聲明C語言程序中一個(gè)函數(shù)調(diào)用另一個(gè)函數(shù)需要具備以下條件:①被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù),是庫函數(shù)或用戶自定義的函數(shù)。②如果調(diào)用庫函數(shù),一般要在程序文件的開關(guān)用include命令,包含有關(guān)庫函數(shù)所在的頭文件。③如果調(diào)用用戶自定義的函數(shù),并且該函數(shù)與調(diào)用它的函數(shù)在同一個(gè)程序文件中,一般還應(yīng)該在主調(diào)函數(shù)中對(duì)被函數(shù)作聲明。即向編譯系統(tǒng)聲明將要調(diào)用此函數(shù),并將有關(guān)信息通知編譯。第91頁,課件共138頁,創(chuàng)作于2023年2月數(shù)組作為函數(shù)的參數(shù)
1.數(shù)組元素作為函數(shù)的參數(shù)
數(shù)組元素可以作為函數(shù)的實(shí)參,這時(shí)對(duì)應(yīng)的形參是變量,與變量作實(shí)參一樣,把數(shù)組元素的值傳遞到形參變量所在存儲(chǔ)單元中,是單向的值傳遞。
第92頁,課件共138頁,創(chuàng)作于2023年2月2.數(shù)組名作為函數(shù)的參數(shù)
可以用數(shù)組名作為函數(shù)的實(shí)參,對(duì)應(yīng)的形參也應(yīng)該是數(shù)組名。
#include“reg51.h”voidsort(intx[],intn){ inti,j,tk; for(i=0;i<n-1;i++) //選擇排序法對(duì)n個(gè)數(shù)進(jìn)行降序排列
{ k=i; for(j=i+1;j<n;j++) //找出最大的元素
if(x[k]<x[j])k=j;if(k!=i){ t=x[i];x[i]=x[k];x[k]=t;} }}voidmain(){ intcj[10]={76,80,65,60,58,91,47,63,70,85}; sort(a,10);}第93頁,課件共138頁,創(chuàng)作于2023年2月局部變量和全局變量第94頁,課件共138頁,創(chuàng)作于2023年2月1.局部變量第95頁,課件共138頁,創(chuàng)作于2023年2月2.全局變量第96頁,課件共138頁,創(chuàng)作于2023年2月內(nèi)部函數(shù)和外部函數(shù)1.內(nèi)部函數(shù)static類型標(biāo)識(shí)符
函數(shù)名
([形參定義]){
函數(shù)體}2.外部函數(shù)[extern]類型標(biāo)識(shí)符
函數(shù)名
([形參定義]){
函數(shù)體}第97頁,課件共138頁,創(chuàng)作于2023年2月【訓(xùn)練項(xiàng)目1-4】LED點(diǎn)陣顯示屏設(shè)計(jì)與制作一、項(xiàng)目要求在Proteus仿真軟件和實(shí)訓(xùn)板上,采用單片機(jī)的P0、P1、P2、P3的任意端口控制單色和雙色兩種8*8點(diǎn)陣屏模塊,實(shí)現(xiàn)一些特定的文字或圖形顯示。第98頁,課件共138頁,創(chuàng)作于2023年2月二、項(xiàng)目實(shí)訓(xùn)儀器、設(shè)備及實(shí)訓(xùn)材料工具、設(shè)備和耗材數(shù)量工具、設(shè)備和耗材數(shù)量工具、設(shè)備和耗材數(shù)量電腦1臺(tái)51單片機(jī)下載線和USB線1根杜邦導(dǎo)線8PKeiluVision41套晶振1只AT89S51/STC60S21片Proteus7.5軟件1套單片機(jī)實(shí)訓(xùn)板1塊單、雙色8*8點(diǎn)陣屏各1塊三、項(xiàng)目實(shí)施過程及其步驟任務(wù)1
單色LED點(diǎn)陣顯示屏設(shè)計(jì)與制作任務(wù)描述:要求在8*8LED點(diǎn)陣屏上循環(huán)顯示▲
◆□■5個(gè)圖形。第99頁,課件共138頁,創(chuàng)作于2023年2月第100頁,課件共138頁,創(chuàng)作于2023年2月任務(wù)2雙色LED點(diǎn)陣顯示屏設(shè)計(jì)與制作任務(wù)描述:要求在8*8LED雙色點(diǎn)陣屏上顯示綠色、紅色、橙色的“心”圖形。第101頁,課件共138頁,創(chuàng)作于2023年2月“心”圖形實(shí)際顯示效果四、思考與分析(1)在點(diǎn)陣屏上實(shí)現(xiàn)1~9數(shù)字顯示。(2)在任務(wù)2中,第84行用于防止重影,若沒有這行代碼,顯示現(xiàn)象怎樣?第102頁,課件共138頁,創(chuàng)作于2023年2月1.11LED點(diǎn)陣模塊結(jié)構(gòu)及原理1.11.1LED點(diǎn)陣模塊的種類及結(jié)構(gòu)(a)8*8LED點(diǎn)陣模塊實(shí)物外形(b)共陰8*8LED點(diǎn)陣(c)共陽8*8LED雙色點(diǎn)陣第103頁,課件共138頁,創(chuàng)作于2023年2月【訓(xùn)練項(xiàng)目1-5】字符型LCD顯示系統(tǒng)設(shè)計(jì)與制作一、項(xiàng)目要求在Proteus仿真軟件和實(shí)訓(xùn)板上,采用單片機(jī)的P0、P1、P2、P3的任意端口控制LCD1602字符型液晶屏,實(shí)現(xiàn)任意字符顯示。然后再制作一個(gè)簡(jiǎn)易電子鐘,要求整點(diǎn)能發(fā)出報(bào)警聲音,顯示格式為:□□:□□:□□,即“時(shí)”—“分”—“秒”。第104頁,課件共138頁,創(chuàng)作于2023年2月二、項(xiàng)目實(shí)訓(xùn)儀器、設(shè)備及實(shí)訓(xùn)材料工具、設(shè)備和耗材數(shù)量工具、設(shè)備和耗材數(shù)量工具、設(shè)備和耗材數(shù)量電腦1臺(tái)51單片機(jī)下載線和USB線1根杜邦導(dǎo)線8PKeiluVision41套晶振12M1只AT89S51/STC60S21片Proteus7.5軟件1套單片機(jī)實(shí)訓(xùn)板1塊LCD1602液晶屏1塊三、項(xiàng)目實(shí)施過程及其步驟任務(wù)1實(shí)現(xiàn)任意字符顯示任務(wù)描述:采用單片機(jī)的P0和P2端口分別作為L(zhǎng)CD的數(shù)據(jù)和控制端口,在Proteus軟件和單片機(jī)實(shí)訓(xùn)板上,實(shí)現(xiàn)任意字符顯示。然后再改用其它端口,實(shí)現(xiàn)同樣功能。第105頁,課件共138頁,創(chuàng)作于2023年2月第106頁,課件共138頁,創(chuàng)作于2023年2月實(shí)訓(xùn)板上顯示效果第107頁,課件共138頁,創(chuàng)作于2023年2月任務(wù)2制作簡(jiǎn)易電子鐘任務(wù)描述:在任務(wù)1的基礎(chǔ)上,使LCD顯示具有“時(shí)、分、秒”的簡(jiǎn)易電子鐘。四、思考與分析(1)采用其它端口作為液晶屏的數(shù)據(jù)線或控制線,如何實(shí)現(xiàn)任務(wù)1和任務(wù)2?(2)在任務(wù)2中,如何使“AM”在12正點(diǎn)來時(shí)自動(dòng)變?yōu)椤癙M”,又在00點(diǎn)來時(shí)自動(dòng)變?yōu)椤癆M”?實(shí)訓(xùn)板上顯示效果第108頁,課件共138頁,創(chuàng)作于2023年2月1.12字符型LCD屏的種類及工作原理第109頁,課件共138頁,創(chuàng)作于2023年2月1.引腳定義引腳號(hào)引腳名稱引腳功能1VSS接地2VDD電源腳(+5V)3VO液晶屏驅(qū)動(dòng)電源(0~5V),可接電位器4RS數(shù)據(jù)和指令選擇控制端;當(dāng)RS=0時(shí),命令狀態(tài);當(dāng)RS=1時(shí),數(shù)據(jù)狀態(tài)5R/
讀寫控制端;當(dāng)R/=0時(shí),寫操作;當(dāng)R/=1時(shí),讀操作6E數(shù)據(jù)讀寫操作控制位,E線向LCD模塊發(fā)送一個(gè)脈沖(下降沿有效),LCD模塊與單片機(jī)之間將進(jìn)行一次數(shù)據(jù)交換7~14 DB0~DB7(1)數(shù)據(jù)總線以8位數(shù)據(jù)讀/寫方式,DB0~DB7均有效(2)數(shù)據(jù)總線以4位數(shù)據(jù)讀/寫方式,DB4~DB7有效,而DB0~DB3懸空不接,節(jié)約單片機(jī)資源(3)BD7除了為雙向數(shù)據(jù)線,另外還為BF忙碌BF標(biāo)志位
15A背光控制正電源(很多液晶屏上沒有安裝背光燈,所以此腳為空)16K背光控制地(很多液晶屏上沒有安裝背光燈,所以此腳為空)第110頁,課件共138頁,創(chuàng)作于2023年2月2.LCD模塊三個(gè)控制引腳的基本操作第111頁,課件共138頁,創(chuàng)作于2023年2月LCD寫操作時(shí)序LCD讀操作時(shí)序第112頁,課件共138頁,創(chuàng)作于2023年2月第113頁,課件共138頁,創(chuàng)作于2023年2月4.字符型LCD寫數(shù)據(jù)操作第114頁,課件共138頁,創(chuàng)作于2023年2月1.13指針對(duì)于變量要弄清楚兩個(gè)概念:一個(gè)是變量名,另個(gè)是變量值。前者是一個(gè)數(shù)據(jù)的標(biāo)號(hào),后者是一個(gè)數(shù)據(jù)的內(nèi)容。而對(duì)內(nèi)存單元,也要弄清楚兩個(gè)概念:一個(gè)是內(nèi)存單元的地址,另個(gè)是內(nèi)存單元的內(nèi)容。前者是內(nèi)存對(duì)該單元的編號(hào),表示該單元在整個(gè)內(nèi)存中的位置,后者指的是在該內(nèi)存單元中存放的數(shù)據(jù)。第115頁,課件共138頁,創(chuàng)作于2023年2月1.指針變量的定義類型識(shí)別符*指針變量名char*cp1,*cp2;int*p1,*p2;在定義指針變量時(shí)要注意:(1)指針變量前面的“*”表示該變量的類型為指針型變量,指針變量名是p1、p2,而不是*p1、*p2,這與前面介紹的變量定義形式有所區(qū)別。(2)指針變量名的命名規(guī)則與變量名命名規(guī)則相同,遵循標(biāo)識(shí)符命名規(guī)則。(3)在定義指針變量時(shí)必須指定其“基類型”,因?yàn)椴煌愋偷臄?shù)據(jù)在內(nèi)存中占用的字節(jié)數(shù)不一樣長(zhǎng)。第116頁,課件共138頁,創(chuàng)作于202
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)動(dòng)車保險(xiǎn)代理合同范例
- 景觀花卉盆栽合同范例
- 銅仁幼兒師范高等專科學(xué)?!度诤闲侣劦睦碚撆c實(shí)務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 完整版100以內(nèi)加減法混合運(yùn)算4000道72
- 同濟(jì)大學(xué)浙江學(xué)院《油畫人物全身像》2023-2024學(xué)年第一學(xué)期期末試卷
- 通化師范學(xué)院《土壤地理學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 小學(xué)數(shù)學(xué)二年級(jí)第二學(xué)期口算計(jì)算共5184道題
- 鐵嶺師范高等??茖W(xué)?!毒酆衔锍尚图庸せA(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 天水師范學(xué)院《語文教學(xué)設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 天門職業(yè)學(xué)院《水工建筑物(上)》2023-2024學(xué)年第一學(xué)期期末試卷
- 鉛鋅礦礦山供電系統(tǒng)設(shè)計(jì)與節(jié)能改造研究
- 國(guó)開可編程控制器應(yīng)用形考實(shí)訓(xùn)任務(wù)四
- DZ∕T 0211-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 重晶石、毒重石、螢石、硼(正式版)
- MOOC 作物育種學(xué)-四川農(nóng)業(yè)大學(xué) 中國(guó)大學(xué)慕課答案
- 變電站隱患排查治理總結(jié)報(bào)告
- 異彩紛呈的民族文化智慧樹知到期末考試答案2024年
- 國(guó)標(biāo)《電化學(xué)儲(chǔ)能電站檢修試驗(yàn)規(guī)程》
- 車輛救援及維修服務(wù)方案
- 三體讀書分享
- 天津市長(zhǎng)期護(hù)理保險(xiǎn)護(hù)理服務(wù)項(xiàng)目和標(biāo)準(zhǔn)
- 2024年內(nèi)蒙古巴彥淖爾市交通投資集團(tuán)有限公司招聘筆試參考題庫含答案解析
評(píng)論
0/150
提交評(píng)論