




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1單片機(jī)原理及應(yīng)用學(xué)習(xí)指導(dǎo)趙志衡2本講的主要內(nèi)容1 課程主要內(nèi)容2 課程學(xué)習(xí)要點(diǎn)3 典型應(yīng)用31 課程主要內(nèi)容單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)MCS51硬件結(jié)構(gòu)匯編程序的編寫功率接口MCS51指令系統(tǒng)仿真調(diào)試抗干擾設(shè)計(jì)MCS51定時(shí)計(jì)數(shù)器MCS51串行通訊MCS51中斷系統(tǒng)MCS51存儲(chǔ)器擴(kuò)展MCS51 I/O擴(kuò)展MCS51鍵盤顯示擴(kuò)展MCS-51 A/D、D/A擴(kuò)展42 學(xué)習(xí)要點(diǎn)2.1 MCS-51的硬件結(jié)構(gòu)2.2 MCS-51的指令系統(tǒng)2.3 定時(shí)/計(jì)數(shù)器2.4 串行通訊2.5 中斷系統(tǒng)2.6 外擴(kuò)存儲(chǔ)器程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器2.7 外擴(kuò)I/O8255、8155及TTL芯片2.8 外擴(kuò)A/D、D/A52
2、.1 硬件結(jié)構(gòu)單片機(jī):將組成微型計(jì)算機(jī)的各功能部件:中央處理器CPU、存儲(chǔ)器RAM、ROM、EPROM、定時(shí)/計(jì)數(shù)器、串行口、I/O接口電路等集成在一塊硅片上,這樣的一塊芯片具有一臺(tái)計(jì)算機(jī)的屬性,因而被稱為單片微型計(jì)算機(jī),簡(jiǎn)稱單片機(jī)。單片機(jī)又稱為微控制器或嵌入式控制器6功能部件MCS-51系列單片機(jī)提供的主要資源 微處理器 CPU:可進(jìn)行字節(jié)及位數(shù)據(jù)處理 數(shù)據(jù)存儲(chǔ)器RAM 串行通訊 定時(shí)/計(jì)數(shù)器 中斷系統(tǒng) 特殊功能存放器SFR IO口 P0口、Pl口、P2口、P3口 有的型號(hào)含程序存儲(chǔ)器ROM/EPROM7芯片的根本情況屬于三總線結(jié)構(gòu)芯片 管腳分別屬于 數(shù)據(jù)總線 地址總線 控制總線 此外,還有
3、時(shí)鐘、電源、地等管腳8需要理解的控制管腳 ALE :address latch enable RST:reset復(fù)位 PSEN:Program strobe enable29腳,程序存儲(chǔ)器允許輸出控制端 PROGramming,編程脈沖輸入端 EA:enable address31腳,內(nèi)外程序存儲(chǔ)器選擇控制端,高電平時(shí)內(nèi),PC超過0FFFH時(shí)自動(dòng)轉(zhuǎn)向外低電平只外 WR: RD:9EA:接高電平時(shí)單片機(jī)訪問內(nèi)部程序存儲(chǔ)器,當(dāng)PC程序計(jì)數(shù)器值超過0FFFH時(shí),將自動(dòng)轉(zhuǎn)向執(zhí)行外部程序存儲(chǔ)器。EA 接低電平時(shí)直接訪問外部程序存儲(chǔ)器。PSEN:接外部程序存儲(chǔ)器的讀選通端 RD:接外部數(shù)據(jù)存儲(chǔ)器的讀選通端
4、WR:接外部數(shù)據(jù)存儲(chǔ)器的寫選通端10硬件結(jié)構(gòu):時(shí)序 每2個(gè)時(shí)鐘振蕩周期作為1個(gè)狀態(tài)周期,每個(gè)狀態(tài)周期分為2個(gè)時(shí)相P1、P2,每6個(gè)狀態(tài)周期作為1個(gè)機(jī)器周期。需要掌握: 12個(gè)振蕩周期為1個(gè)機(jī)器周期 ALE的頻率約為外部晶振頻率的1/6 RST管腳施加持續(xù)時(shí)間大于2個(gè)機(jī)器周期24個(gè)振蕩周期的高電平,將引起MCS-51的復(fù)位11硬件結(jié)構(gòu):存儲(chǔ)器結(jié)構(gòu)12特殊功能存放器SFR 特殊功能存放器反映了MCS51的狀態(tài),實(shí)際上是MCS51的狀態(tài)字及控制字存放器。51單片機(jī)通過寫SFR來(lái)控制相應(yīng)功能部件定時(shí)器、串口、中斷等的工作方式,同時(shí)SFR也綜合的、實(shí)際的反映了整個(gè)單片機(jī)根本系統(tǒng)內(nèi)部的工作狀態(tài).13RAM
5、及SFR的分布51系列: RAM共128字節(jié),分布于地址00H-7FH空間 SFR離散分布于地址80H-FFH的空間,采用直接尋址方式訪問52系列: RAM共256字節(jié),分布于地址00H-FFH空間,80H-FFH空間采用間接尋址方式訪問 SFR離散分布于地址80H-FFH的空間,采用直接尋址方式14位地址空間 211個(gè)128個(gè)+83個(gè)尋址位。位地址范圍為:00HFFH。 內(nèi)部RAM的可尋址位128個(gè)(字節(jié)地址20H2FH)。 特殊功能存放器SFR為83個(gè)可尋址位。15表 內(nèi)部的可尋址位及位地址16 SFR中的位地址分布17工作存放器區(qū)的選擇 181FH3組1 11017H2組1 0080FH
6、1組0 10007H0組0 0R0R7地址寄存器組RS1 RS0復(fù)位后,默認(rèn)第0組處于工作狀態(tài)18硬件結(jié)構(gòu):存儲(chǔ)器結(jié)構(gòu)的特點(diǎn)地址重疊性程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器操作指令不同位地址空間共有兩個(gè)區(qū)域片外數(shù)據(jù)存儲(chǔ)器與I/O口統(tǒng)一編址19幾個(gè)問題: 如何對(duì)SFR中的內(nèi)容進(jìn)行讀寫? mov a,90h;直接尋址方式訪問或者 mov a,p1;直接使用SFR的名稱。如何對(duì)52系列單片機(jī)的高128字節(jié)RAM進(jìn)行讀寫? mov r0,#90h mov a,r0;間接尋址方式訪問 如何讀出片外數(shù)據(jù)存儲(chǔ)器字節(jié)地址為2000H中的內(nèi)容? mov dptr,#2000h movx a,dptr20硬件結(jié)構(gòu):存儲(chǔ)器結(jié)構(gòu)21
7、硬件結(jié)構(gòu):I/O口 P0口是三態(tài)雙向口,作為數(shù)據(jù)總線和地址總線低8位的分時(shí)復(fù)用口,由ALE信號(hào)作為地址鎖存。 P1口準(zhǔn)雙向口,供用戶使用。 P2口準(zhǔn)雙向口,作為地址總線的高8位使用。 P3口準(zhǔn)雙向口,即可作為一般I/O口使用,也可作為第二功能口使用,P3.6、P3.7為讀寫信號(hào)線。注意:P1、P3口如果作為輸出,就只對(duì)其進(jìn)行寫操作;如果作為輸入,就只對(duì)其進(jìn)行讀操作。222.2 指令系統(tǒng)注意指令的書寫標(biāo)準(zhǔn) 標(biāo)號(hào):操作碼助記符 第1操作數(shù),第2操作數(shù);注釋Loop1: mov a, #0ffh; 累計(jì)器A賦值為ff 標(biāo)號(hào):表示該指令所在的符號(hào)地址,一般由字母和數(shù)字組成, 第一位為字母,其余位為字母
8、、數(shù)字任選。操作碼助記符、第1操作數(shù)和 第2操作數(shù):指令的核心局部。對(duì)于某些指令可能不存在完整的兩個(gè)操作數(shù)。注釋:是由用戶參加的文本,對(duì)匯編程序不起任何作用,只是方便閱讀。 * 第1操作數(shù)又稱目的操作數(shù),第2操作數(shù)又稱源操作數(shù) * 51不區(qū)分大小寫 * 注意立即數(shù)的書寫要求23指令系統(tǒng)尋址方式: 1存放器尋址:mov a,#20h 2直接尋址:mov a,20h 3存放器間接尋址:mov a,r0 4立即尋址:mov a,#0ffh 5基址存放器加變址存放器間接尋址 movc a,a+dptr24指令系統(tǒng)按功能分類: 數(shù)據(jù)傳送類 算數(shù)操作類 邏輯運(yùn)算類 控制轉(zhuǎn)移類 位操作類25指令系統(tǒng)常用的指
9、令 mov jbc jb jnb movc mov a,r0 movx rl djnz cjne26常用的局部偽指令ORG END EQUDB 27偽指令簡(jiǎn)介 ORG 起點(diǎn)指令 ORG addr16 org 0000h ORG指令用于指明程序代碼或數(shù)據(jù)塊在存儲(chǔ)器中的起始地址。addr16代表一個(gè)16位地址,即程序或數(shù)據(jù)塊的首地址。 EQU 等值指令 標(biāo)號(hào) EQU 表達(dá)式 aaa equ 30h bbb equ 40H EQU指令用于為程序中的任意標(biāo)號(hào)賦值。 程序中的常量通常可以用標(biāo)號(hào)代替,便于修改。 主程序前要先用equ指令為常量標(biāo)號(hào)賦值。28偽指令簡(jiǎn)介 DB 定義字節(jié)指令 標(biāo)號(hào): DB 數(shù)據(jù)
10、列表 DB指令用于定義字節(jié)型數(shù)據(jù)或數(shù)據(jù)串,并將數(shù)據(jù)作為常數(shù)填入指定的存儲(chǔ)器單元中。 END 結(jié)束匯編指令 標(biāo)號(hào):END END指令置于程序結(jié)尾處,作為源程序結(jié)束的標(biāo)志。292.3 定時(shí)/計(jì)數(shù)器兩個(gè)16位定時(shí)/計(jì)數(shù)器存放初值的SFR T0: TH0、TL0 T1: TH1、TL1其它相關(guān)的SFR: TMOD工作方式控制存放器 TCON控制存放器 定時(shí)功能時(shí),每個(gè)機(jī)器周期定時(shí)器加1 計(jì)數(shù)功能時(shí),在外部相應(yīng)輸入腳T0和T1有下降沿時(shí),計(jì)數(shù)器加1。 30 定時(shí)/計(jì)數(shù)器的工作方式31定時(shí)/計(jì)數(shù)器幾種工作方式的區(qū)別定時(shí)器的啟動(dòng)、定時(shí)時(shí)間到的判斷初值的計(jì)算典型應(yīng)用32定時(shí)計(jì)數(shù)器的結(jié)構(gòu)框圖33定時(shí)器的控制字工
11、作方式控制存放器TMOD(89H) GATE C/T M1 M0 GATE C/T M1 M0注意:TMOD不能位尋址控制存放器TCON (88H)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0復(fù)位后兩個(gè)存放器的狀態(tài)均為00H。 34TMOD:工作方式控制存放器 GATE:門控位 GATE1,T0、T1是否工作受外部引腳輸入電平的控制,INT0(12#)引腳控制T0運(yùn)行,INT1(13#)引腳控制T1運(yùn)行??捎糜跍y(cè)量在INT0或INT1引腳出現(xiàn)的正脈沖的寬度。 GATE=0,定時(shí)/計(jì)數(shù)器的運(yùn)行不受外部引腳INT0或INT1的控制。 C/T位:計(jì)數(shù)器模式和定時(shí)器模式的選擇位 C/
12、T=0,為定時(shí)器模式。內(nèi)部計(jì)數(shù)器對(duì)晶振頻率12分頻后的脈沖計(jì)數(shù)該脈沖的周期等于機(jī)器周期,每個(gè)周期計(jì)數(shù)值加1。假設(shè)選擇12MHz晶振,那么計(jì)數(shù)頻率為1MHz。從計(jì)數(shù)值便可求得計(jì)數(shù)的時(shí)間,所以稱為定時(shí)器模式; C/T=1,設(shè)置為計(jì)數(shù)器模式,計(jì)數(shù)器對(duì)由引腳T0P3.4腳或T1P3.5腳輸入的外部脈沖負(fù)跳變計(jì)數(shù),允許最高計(jì)數(shù)頻率為晶振頻率的1/24。35定時(shí)/計(jì)數(shù)器控制存放器TCONTF1位:T1計(jì)數(shù)溢出標(biāo)志位。當(dāng)T1計(jì)數(shù)溢出時(shí),由硬件置1,申請(qǐng)中斷。進(jìn)入中斷效勞程序后被硬件自動(dòng)清0。TR1位:T1計(jì)數(shù)運(yùn)行控制位。由軟件置1或清0。當(dāng)GATE位TMOD.70時(shí),假設(shè)TR1=1,允許T1計(jì)數(shù);TR1=0
13、時(shí),禁止T1計(jì)數(shù)。當(dāng)GATE位=1時(shí),TR11且INT1=1時(shí),允許T1計(jì)數(shù)。TF0位:T0計(jì)數(shù)溢出標(biāo)志位,功能同TF1。TR0位:T0計(jì)數(shù)運(yùn)行控制位,由軟件置1或清0。當(dāng)GATE位TMOD.30時(shí),假設(shè)TR0=1,允許T0計(jì)數(shù);TR0=0時(shí),禁止T0計(jì)數(shù)。當(dāng)GATE位=1時(shí),TR01且INT0=1時(shí),允許T0計(jì)數(shù)。36定時(shí)/計(jì)數(shù)器的4種工作方式方式0、方式113位、16位定時(shí)計(jì)數(shù)方式 T1工作于方式0的等效框圖M1M0=00、01GATE=0、A=1、TR1=1GATE=1、INT1=1、TR1=1。注意定時(shí)器初值與定時(shí)時(shí)間的不同37方式0、方式1的說明定時(shí)/計(jì)數(shù)器T1工作在方式0時(shí),為13
14、位的計(jì)數(shù)器,由TL1的低5位和TH1的8位所構(gòu)成。TL1低5位溢出向TH1進(jìn)位,TH1計(jì)數(shù)溢出置位TCON中的溢出標(biāo)志位TF1。 GATE位的狀態(tài)決定定時(shí)/計(jì)數(shù)器運(yùn)行控制取決于TR1一個(gè)條件還是TR1和INT1引腳這兩個(gè)條件。 當(dāng)GATE=0時(shí),A點(diǎn)電位恒為1,那么只要TR1被置為1,B點(diǎn)電位即為1,定時(shí)/計(jì)數(shù)器被控制為允許計(jì)數(shù)(定時(shí)/計(jì)數(shù)器的計(jì)數(shù)控制僅由TR1的狀態(tài)確定,TR1=1計(jì)數(shù),TR1=0停止計(jì)數(shù))。 當(dāng)GATE=1時(shí),B點(diǎn)電位由INT1輸入的電平和TR1的狀態(tài)確定,當(dāng)TR1=1,且INT1=1時(shí),B點(diǎn)電平才為1,才允許定時(shí)器/計(jì)數(shù)器計(jì)數(shù)(計(jì)數(shù)控制由TR1和INT1二個(gè)條件控制)。
15、方式1時(shí),TL1的8位都參與計(jì)數(shù),因而屬于16位定時(shí)/計(jì)數(shù)器。其控制方式,等效電路與方式0完全相同。38方式2(自動(dòng)恢復(fù)初值)T1工作于方式2的等效圖39方式2的說明TL1作為計(jì)數(shù)器,當(dāng)TL1計(jì)數(shù)溢出時(shí),在置1溢出標(biāo)志TF1的同時(shí),還自動(dòng)的將TH1中的常數(shù)送至TL1,使TL1從初值開始重新計(jì)數(shù)。 這種工作方式可以省去用戶軟件中重裝常數(shù)的程序,簡(jiǎn)化定時(shí)常數(shù)的計(jì)算方法確定計(jì)數(shù)初值,可以相當(dāng)精確確實(shí)定定時(shí)時(shí)間。40定時(shí)器的工作方式總結(jié)方式0:13位定時(shí)計(jì)數(shù)器注意:TLx的低5位和THx共同組成方式1: 16位定時(shí)計(jì)數(shù)器方式2: 自動(dòng)重裝入的8位定時(shí)計(jì)數(shù)器溢出后TFx=1,同時(shí)由THxTLx方式3:T
16、0成為兩個(gè)獨(dú)立的8位計(jì)數(shù)器TL0作為定時(shí)計(jì)數(shù)器;TH0僅作定時(shí)器用TL0的控制用原T0的,TH0占用原T1的控制位TR1和TF1,同時(shí)占用定時(shí)器T1的中斷源此時(shí),T1可工作于方式02,溢出時(shí)送串行口,經(jīng)常作為串行口波特率發(fā)生器41定時(shí)/計(jì)數(shù)器的輸入信號(hào) 工作于定時(shí)器方式:對(duì)內(nèi)部時(shí)鐘信號(hào)計(jì)數(shù),內(nèi)部時(shí)鐘信號(hào)的頻率為時(shí)鐘振蕩頻率的1/12,即每個(gè)機(jī)器周期計(jì)數(shù)值加1。 例:采用12MHz頻率的晶體時(shí),每1微秒計(jì)數(shù)值將加1。 由于定時(shí)的精度決定于輸入脈沖的周期,因此當(dāng)需要高分辨率的定時(shí)時(shí),應(yīng)盡量選用頻率較高的晶體MCS51最高為12MHz。42定時(shí)/計(jì)數(shù)器的輸入信號(hào)工作于計(jì)數(shù)器方式:當(dāng)定時(shí)/計(jì)數(shù)器用作計(jì)
17、數(shù)器時(shí),計(jì)數(shù)脈沖來(lái)自外部輸入引腳T0或T1。當(dāng)輸入信號(hào)產(chǎn)生由1至0的跳變即下跳變時(shí),計(jì)數(shù)器的值增1。需要注意:每個(gè)機(jī)器周期的S5P2期間,對(duì)外部輸入進(jìn)行采樣。如在第一個(gè)周期中采得的值為1,而在下一個(gè)周期中采得的值為0,那么計(jì)數(shù)器加1。由于確認(rèn)一次下跳變至少要用兩個(gè)機(jī)器周期,即24個(gè)振蕩周期,因此外部輸入的計(jì)數(shù)脈沖的最高頻率為振蕩器頻率的1/24,同時(shí)輸入信號(hào)的高、低電平保持一個(gè)機(jī)器周期以上。例如:選用6MHz頻率的晶體,允許輸入的脈沖頻率為250kHz;如果選用12MHz頻率的晶體,那么可輸入500kHz的外部脈沖。43定時(shí)/計(jì)數(shù)器的輸入信號(hào)理想的計(jì)數(shù)器輸入信號(hào):脈沖信號(hào)的高、低電平至少要各保
18、持一個(gè)機(jī)器周期以上,確保電平在變化之前能被采樣一次。44定時(shí)器/計(jì)數(shù)器的編程初始化1 根據(jù)要求給方式存放器TMOD送一個(gè)方式控制字,以設(shè)定定時(shí)器的工作方式;2 根據(jù)需要給TH和TL選送初值,以確定需要的定時(shí)時(shí)間或計(jì)數(shù)的初值;3 根據(jù)需要給中斷允許存放器IE送中斷控制字,以開放相應(yīng)的中斷和設(shè)定中斷優(yōu)先級(jí); 也可用查詢方式來(lái)響應(yīng)定時(shí)器。4 給TCON送命令字以啟動(dòng)或禁止定時(shí)/計(jì)數(shù)器的運(yùn)行。45定時(shí)器/計(jì)數(shù)器的編程初值的計(jì)算計(jì)數(shù)器初值: 設(shè)計(jì)數(shù)模值為M,所需的計(jì)數(shù)值為C,計(jì)數(shù)初值設(shè)定為TC,那么:TC = M -C M=213,216,28定時(shí)器初值: 定時(shí)器的模值為M,需要的定時(shí)時(shí)間為T, 定時(shí)器
19、的初值TC為: TC=M-T/t機(jī)器周期 46編程方式采用查詢方式:程序一直檢測(cè)TF0TF1),假設(shè)TF01(TF1=1),說明定時(shí)時(shí)間到或計(jì)滿數(shù),需要軟件去除溢出標(biāo)志位TFx。采用中斷方式:程序初始化時(shí),設(shè)置定時(shí)器溢出中斷允許后,內(nèi)部硬件自動(dòng)檢測(cè)到TF01(TF1=1)時(shí),自動(dòng)響應(yīng)中斷,進(jìn)入中斷效勞程序。由硬件自動(dòng)去除TFx。47例1:T0計(jì)數(shù)、T1定時(shí)工作于方式2從P3.4 T0輸入低頻脈沖,要求該脈沖每發(fā)生一次跳變時(shí)由P1.0輸出一個(gè)500us的負(fù)脈沖,與此同時(shí)由P1.1輸出一個(gè)寬為1ms的正脈沖6MHz晶振。 先設(shè)T0為計(jì)數(shù)方式,工作于方式2,初值設(shè)為FFH,即加1即刻產(chǎn)生溢出。當(dāng)外部
20、輸入一個(gè)負(fù)跳變脈沖時(shí),計(jì)數(shù)加1,并產(chǎn)生溢出,TF0=1;引起CPU的T0中斷。中斷效勞程序內(nèi),對(duì)定時(shí)器T1設(shè)定初值,T1也工作于方式2。48含中斷的定時(shí)/計(jì)數(shù)器響應(yīng)程序ORG 0HSJMP BEGIN ORG 000BHAJMP TT1ORG 0030HBEGIN:MOV TMOD,#26HMOV TH0,#0FFHMOV TL0,#0FFHCLR P1.1Setb ET0 ;允許T0中斷Setb EA ;CPU開中斷 SETB P1.0SETB TR0SJMP $工作于方式2的定時(shí)/計(jì)數(shù)器49中斷效勞程序 ORG 300HTT1: MOV TH1,#06H MOV TL1,#06H SETB
21、 P1.1 CLR P1.0 SETB TR1DEL2:JBC TF1,RP1 SJMP DEL2RP1: SETB P1.0DEL3: JBC TF1, RP2 SJMP DEL3RP2: CLR P1.1 CLR TR1 RETI502.4 串行通訊全雙工串行通訊口有關(guān)的SFR SBUF、SCON、PCON幾種工作方式的區(qū)別串行通訊波特率的設(shè)定雙機(jī)通訊的實(shí)現(xiàn)51串行口的SFR串行數(shù)據(jù)緩沖器SBUF(99H) 串行口有兩個(gè)8位數(shù)據(jù)緩沖器,一個(gè)是發(fā)送數(shù)據(jù)緩沖器SBUF,一個(gè)是接收數(shù)據(jù)緩沖器SBUF。它們共用一個(gè)地址99H,發(fā)送SBUF只能寫入,而接收SBUF只能讀出。 通過指令區(qū)分:MOV S
22、BUF,A MOV A,SBUF控制存放器SCON (98H)SM0 SM1 SM2 REN TB8 RB8 TI RI節(jié)電控制存放器PCON(87H) SMOD (D7)復(fù)位后狀態(tài)均為00H 52串行口控制存放器SCON SM0、SM1:串行口4種工作方式選擇位 SM2:方式2和方式3中的多機(jī)通信控制位。在方式2和方式3中,如SM2=1,那么當(dāng)接收到的第9位數(shù)據(jù)(RB8)為0時(shí),不激活接收中斷標(biāo)志RI(RI=1)。在方式1中,如SM2=1,那么只有當(dāng)接收到有效停止位時(shí)才激活RI,假設(shè)沒有接收到有效停止位,那么RI清0。在方式0中,SM2必須為0。 REN:允許串行接收位。REN=1允許接收;
23、 REN=0禁止接收,由軟件置位或清零。 TB8:是工作在方式2和3時(shí),要發(fā)送的第9位數(shù)據(jù)??捎绍浖?或清0。在許多的通訊協(xié)議中該位是奇偶校驗(yàn)位。在多機(jī)通訊中用來(lái)表示是地址幀還是數(shù)據(jù)幀,TB8=1為地址幀,TB80為數(shù)據(jù)幀。53串行口控制存放器SCONRB8:當(dāng)工作在方式2和3時(shí),為接收到的第9位數(shù)據(jù)。TI:發(fā)送中斷標(biāo)志位,在方式0串行發(fā)送第8位數(shù)據(jù)結(jié)束時(shí)由硬件置1,或在其它方式串行發(fā)送停止位后置1,并申請(qǐng)中斷。CPU響應(yīng)中斷后,可發(fā)送下一幀數(shù)據(jù),TI必須由軟件清0。RI:為接收結(jié)束中斷標(biāo)志。在方式0中,當(dāng)接收到一幀數(shù)據(jù)的第8位結(jié)束時(shí),RI=1。在其他方式中,接收到停止位后,RI=1,表示可
24、讀取接收SBUF中的內(nèi)容。RI必須用軟件清0。 每次發(fā)送和接收前,要注意先將TI和RI標(biāo)志位清0 。 串行口作為一個(gè)中斷源,中斷入口地址只有一個(gè)(0023H),當(dāng)用中斷方式同時(shí)進(jìn)行發(fā)送和接收時(shí),可通過查詢TI和RI狀態(tài),確定是發(fā)送還是接收結(jié)束引起的中斷。 54節(jié)電控制存放器PCON PCON主要用于節(jié)電運(yùn)行方式控制, PCON.7用做串行口波特率加倍控制位。當(dāng)設(shè)定SMOD=1時(shí),波特率加倍,當(dāng)SMOD=0時(shí),波特率不加倍。 55串行口的工作方式SCON中:SM0、SM1工作方式選擇位56方式1、方式3 串行口方式3為9位數(shù)據(jù)全雙工異步通信方式,比串行口方式1增加了第9位數(shù)據(jù)位。TXD為發(fā)送數(shù)據(jù)
25、端,RXD為接收數(shù)據(jù)端。一幀信息有11位,包括9位數(shù)據(jù)位,1個(gè)起始位“0和1個(gè)停止位“1。發(fā)送數(shù)據(jù)的第9位在TB8中,接收數(shù)據(jù)的第9位存入RB8中。第9位數(shù)據(jù)位也稱為可編程位,常用做奇偶校檢位或多機(jī)通信中的地址/數(shù)據(jù)識(shí)別位。 方式3的波特率與方式1的相同,計(jì)算式為:(2SMOD/32)T1溢出率。 57方式3的時(shí)序58方式3的功能說明發(fā)送時(shí),應(yīng)先將發(fā)送數(shù)據(jù)的第9位送入TB8,再寫入8位數(shù)據(jù)到發(fā)送SBUF,使發(fā)送器啟動(dòng)一次發(fā)送,將一幀數(shù)據(jù)逐位送到TXD引腳:發(fā)送起始位“0之后,再發(fā)送SBUF中的8位數(shù)據(jù),接著發(fā)送TB8中的第9位,最后發(fā)送停止位“1。一幀發(fā)送結(jié)束,置位TI標(biāo)志,申請(qǐng)串行口中斷。方
26、式3的接收過程和方式1的接收過程根本相同,但RB8中裝入的是接收數(shù)據(jù)的第9位,而不是停止位。接收有效必須同時(shí)滿足的兩個(gè)條件改為:RI=0,且接收的第9位數(shù)據(jù)位為1(或SM2=0)。當(dāng)正確接收到一幀數(shù)據(jù)后,前面8位數(shù)據(jù)進(jìn)入接收SBUF,第9位數(shù)據(jù)進(jìn)入RB8。 59波特率波特率的定義:串行口每秒鐘發(fā)送或者接收數(shù)據(jù)的位數(shù)。串行口方式0的波特率是固定的,為系統(tǒng)時(shí)鐘的12分頻(fosc/12),即每個(gè)機(jī)器周期傳送一位數(shù)據(jù)位。串行口方式2工作時(shí),波特率為(2SMOD/64)fosc 。SMOD為PCON中的D7位,即波特率加倍選擇位。方式2可有兩種波特率供選擇,當(dāng)SMOD=0時(shí),波特率為fosc/64;當(dāng)
27、SMOD=1時(shí),波特率那么為fosc/32 。串行口方式1和方式3用定時(shí)器T1作為波特率發(fā)生器,其波特率有多種選擇,與T1的溢出率有關(guān)。 波特率= (2SMOD32)T1溢出率 60定時(shí)器T1產(chǎn)生波特率的計(jì)算T1溢出率:T1溢出時(shí)間的倒數(shù)。T1用于波特率發(fā)生器時(shí)一般工作于方式2,即常數(shù)自動(dòng)重裝入方式。 TH1 = TL1為T1的時(shí)間常數(shù) 61波特率計(jì)算的幾點(diǎn)本卷須知:1波特率的相對(duì)誤差不大于2.5%2注意SMOD位對(duì)波特率的影響例如:通訊波特率設(shè)為2400,晶振頻率為6MHz,計(jì)算T1的計(jì)時(shí)常數(shù)。當(dāng)SMOD=0時(shí),計(jì)時(shí)常數(shù)約為249,相對(duì)誤差7%。當(dāng)SMOD=1時(shí),計(jì)時(shí)常數(shù)約為243,相對(duì)誤差
28、0.16%。62T1產(chǎn)生的常用波特率通訊時(shí),盡量選用11.0592M的晶振63串行口的編程舉例設(shè)定波特率設(shè)定串行口的工作方式設(shè)計(jì)中斷效勞程序或查詢程序 注意對(duì)TI、RI的處理硬件置位、軟件清零64MCS-51雙機(jī)串行通訊的實(shí)現(xiàn)如何進(jìn)行物理連線?波特率的選擇?工作方式的選擇?如何編程實(shí)現(xiàn)?65雙機(jī)串行通訊的實(shí)現(xiàn)-1正確進(jìn)行物理接線66雙機(jī)串行通訊的實(shí)現(xiàn)-2設(shè)定一致的波特率設(shè)定一致的串行口工作方式分別設(shè)計(jì)中斷效勞程序或查詢程序 注意對(duì)TI、RI的處理 硬件置位、軟件清零67方式3發(fā)送50H5FH的內(nèi)容待發(fā)送的16個(gè)字節(jié)存放在片內(nèi)RAM中 地址為50H5FH串行口波特率為2400波特率發(fā)生器T1工作
29、于方式2, 且SMOD=0晶振為11.0592MHz計(jì)算得到TL1的初值為F4H。串行口工作于方式3第9位發(fā)送奇偶校驗(yàn)位68程序狀態(tài)存放器:PSWPSW.1是保存位,未用。CyPSW.7進(jìn)位標(biāo)志位,在執(zhí)行算術(shù)和邏輯指令時(shí),可以被硬件或軟件置位或去除,在位處理器中,它是位累加器。AcPSW.6輔助進(jìn)位標(biāo)志位。F0PSW.5標(biāo)志位,它是由用戶使用的一個(gè)狀態(tài)標(biāo)志位。RS1、RS0PSW.4、PSW.3:存放器區(qū)選擇控制位OVPSW.2:溢出標(biāo)志位。PPSW.0奇偶標(biāo)志位。每個(gè)指令周期都由硬件來(lái)置位或去除,以表示累加器A中值為1的位數(shù)的奇偶數(shù)。69例2:方式3發(fā)送50H5FH中內(nèi)容-1 ORG0000
30、H;復(fù)位入口AJMPMAINORG0023H;串行口中斷入口AJMPL1ORG0100H;主程序入口MAIN: MOVSCON,#0C0H;串行口初始化,用方式3發(fā)送,TI=0 MOV PCON,#00H;SMOD=0 MOV TMOD,#20H ;T1方式2定時(shí)MOV TL1,#0F4H ;寫入T1時(shí)間常數(shù) MOVTH1,#0F4H SETBTR1;啟動(dòng)T1SETBEASETBES;允許串行口中斷MOVR0,#50H;設(shè)數(shù)據(jù)指針 MOV R7,#10H;數(shù)據(jù)長(zhǎng)度LOOP: MOV A,R0;取一個(gè)字符 MOV C,P;加奇偶校驗(yàn) MOV TB8,C MOV SBUF,A;發(fā)送一個(gè)字符HERE
31、: SJMPHERE;CPU原地循環(huán),等待發(fā)送結(jié)束70例2:方式3發(fā)送50H5FH中內(nèi)容-2L1: CLRTI ;中斷效勞程序, 發(fā)送結(jié)束標(biāo)志位清0 DJNZR7,NEXT;發(fā)送完全部字符? CLRES ;已發(fā)送完,關(guān)閉串行口中斷 SJMPTENDNEXT: INC R0 ;未發(fā)送完,修改指針MOV A,R0 ;取下一個(gè)字符MOV C,P ;加奇偶校驗(yàn)MOV TB8,C MOV SBUF,A;再次發(fā)送一個(gè)字符TEND: RETI ;中斷返回主程序712.5 中斷系統(tǒng)有關(guān)的SFR IE、IP、TCON中斷源、中斷允許控制、中斷優(yōu)先級(jí)外中斷觸發(fā)方式的設(shè)定電平觸發(fā)、邊沿觸發(fā)中斷的響應(yīng)及返回典型應(yīng)用7
32、2中斷系統(tǒng)中斷的概念 在執(zhí)行程序的過程中,由于某種外界的原因,必須盡快終止當(dāng)前的程序執(zhí)行,而去執(zhí)行相應(yīng)的處理程序,待處理結(jié)束后,再回來(lái)繼續(xù)執(zhí)行被終止的程序。這個(gè)過程叫中斷。 7374中斷優(yōu)先級(jí)如同時(shí)發(fā)生多件事件,按照需響應(yīng)事件的重要性選擇事件處理,稱之為中斷優(yōu)先級(jí)。中斷系統(tǒng)的功能: 中斷優(yōu)先權(quán)排隊(duì) 實(shí)現(xiàn)中斷嵌套 自動(dòng)響應(yīng)中斷 實(shí)現(xiàn)中斷返回75 8051 的中斷系統(tǒng) 5個(gè)中斷源,具有二個(gè)中斷優(yōu)先級(jí),可實(shí)現(xiàn)二級(jí)中斷效勞程序的嵌套。 每個(gè)中斷源均可軟件編程為允許或禁止向CPU請(qǐng)求中斷、高優(yōu)先級(jí)或低優(yōu)先級(jí)中斷。 中斷源為:INT0、C/T0、INT1、C/T1、串行口76中斷系統(tǒng)結(jié)構(gòu)圖77 中斷源外部
33、中斷源 INT0、INT1:中斷標(biāo)志和觸發(fā)方式控制位在TCON的低四位。IE0IE1=1表示正在向CPU申請(qǐng)中斷。響應(yīng)后由硬件自動(dòng)清零。 IT0IT1=0:電平低電平觸發(fā); IT0IT1=1:邊沿下跳沿觸發(fā)。78中斷源內(nèi)部中斷源T0:TF0 定時(shí)器T0的溢出中斷請(qǐng)求T1:TF1 定時(shí)器T1的溢出中斷請(qǐng)求串行口中斷:發(fā)送中斷TI和接收中斷RI邏輯“或后,做為內(nèi)部的一個(gè)中斷源。注意:響應(yīng)串行口中斷后,CPU并不清零中斷標(biāo)志位SCON的低兩位 ,必須軟件清0。響應(yīng)定時(shí)計(jì)數(shù)器中斷后,TF0、TF1由硬件清0。79中斷控制中斷使能控制IEA8H)EA ES ET1 EX1 ET0 EX0實(shí)現(xiàn)兩級(jí)管理注意
34、:復(fù)位時(shí),各位均為0,禁止所有中斷。 EA:中斷開放標(biāo)志,“1表示開放中斷。 ES:串行口中斷允許位,“1有效。 ET1、ET0:定時(shí)器中斷允許位,“1有效。 EX1、EX0:外部中斷允許位,“1有效。80中斷優(yōu)先級(jí)控制 IP(B8H) PS PT1 PX1 PT0 PX0每一中斷源可編程為高優(yōu)先級(jí)或低優(yōu)先級(jí)中斷,以實(shí)現(xiàn)二級(jí)嵌套。是5個(gè)中斷源的優(yōu)先級(jí)控制位,“1為高優(yōu)先級(jí) PS:串行通訊中斷優(yōu)先級(jí)控制位;PT1:計(jì)數(shù)/定時(shí)器T1中斷優(yōu)先級(jí)控制位;PX1:外部中斷1INT1優(yōu)先級(jí)控制位;PT0:計(jì)數(shù)/定時(shí)器T0中斷優(yōu)先級(jí)控制位;PX0:外部中斷0INT0優(yōu)先級(jí)控制位;默認(rèn)的優(yōu)先次序?yàn)椋篒NT0、
35、C/T0、INT1、C/T1、串行口中斷依次從高到低81中斷的響應(yīng)過程 每個(gè)機(jī)器周期都順序檢查每一個(gè)中斷源,當(dāng)查詢到某個(gè)中斷標(biāo)志位為1時(shí),如果不被下述條件所阻止,那么將在下一個(gè)機(jī)器周期的S1期間,響應(yīng)優(yōu)先級(jí)最高的中斷請(qǐng)求。 阻止條件: 1CPU正在處理相同或更高級(jí)的中斷請(qǐng)求; 2現(xiàn)在的機(jī)器周期不是執(zhí)行指令的最后一個(gè)機(jī)器周期如:雙機(jī)器周期指令MOV R1,20H 3正在執(zhí)行的指令是RETI或?qū)E、IP的寫操作指令。執(zhí)行這些指令后,至少再執(zhí)行一條指令后才會(huì)響應(yīng)中斷82CPU響應(yīng)中斷時(shí)完成工作 置位相應(yīng)的優(yōu)先級(jí)狀態(tài)觸發(fā)器該觸發(fā)器指出CPU處理的中斷優(yōu)先級(jí)別 執(zhí)行一條硬件子程序調(diào)用內(nèi)部,使控制轉(zhuǎn)移到
36、相應(yīng)的中斷入口地址; 硬件子程序調(diào)用是指: PC的內(nèi)容進(jìn)棧;斷點(diǎn)地址 被響應(yīng)的中斷效勞程序的入口地址送PC83注意:不同中斷源中斷入口地址不同 中斷源入口地址外部中斷0定時(shí)器/計(jì)數(shù)器T0外部中斷1定時(shí)器/計(jì)數(shù)器T1串行口中斷 0003H 000BH 0013H 001BH 0023H0000H0003H RETI外部中斷0響應(yīng)過程84中斷程序的返回RETI 該指令為中斷程序的最后一條指令,CPU執(zhí)行這一條指令時(shí),將響應(yīng)中斷時(shí)的優(yōu)先級(jí)狀態(tài)觸發(fā)器清零,然后從堆棧中彈出兩個(gè)字節(jié)送入程序計(jì)數(shù)器PC。 CPU執(zhí)行完該指令后,將從原先的斷點(diǎn)處繼續(xù)執(zhí)行被中斷的程序。85 中斷系統(tǒng)的編程開放相應(yīng)的中斷源;IE
37、)設(shè)定中斷優(yōu)先級(jí);(IP)假設(shè)為外部中斷,設(shè)定外部中斷的觸發(fā)方式TCON 在相應(yīng)的中斷入口處寫入中斷程序中斷子程序的最后一條指令為RETI86例3: 中斷初始化 CLR IT1 SETB PX1 SETB EX1 SETB EAORL IP,#04HANL TCON ,#0FBHMOV IE,#84H 中斷使能控制IEA8H)EA ES ET1 EX1 ET0 EX0TCONTF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 中斷優(yōu)先級(jí)控制 IP(B8H) PS PT1 PX1 PT0 PX0878051單片機(jī)的P1口控制8個(gè)LED燈,要求8個(gè)燈加1移位點(diǎn)亮,當(dāng)INT0引腳有下跳沿
38、時(shí),燈全滅后全亮,然后燈繼續(xù)加1移位點(diǎn)亮。例 4:外部中斷0的應(yīng)用88 ORG 0000H AJMP ST ORG 0003H AJMP EXT0 ORG 0030HST:MOV SP,#70H MOV TCON,#01H MOV IP,#01H MOV IE,#81HRES: MOV A,#0FFHLoop:MOV P1,A DEC A LCALL Delay LCALL Delay JNZ Loop SJMP RES Delay: mov r6,#0ffh mov r7,#0ffhDelay1:Djnz r6,Delay1 Djnz r7,Delay1 RET主程序89中斷效勞程序EXT0
39、: PUSH A PUSH PSW setb rs1 ;使用第2組工作存放器 MOV A,#00 MOV P1,A LCALL Delay LCALL Delay CPL A MOV P1,A LCALL Delay LCALL Delay POP PSW POP A RETI902.6 MCS-51存儲(chǔ)器擴(kuò)展分配地址的方法:線選法、譯碼法外擴(kuò)程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器的實(shí)現(xiàn)熟悉2764、6264、74LS373/573、74LS138/139等芯片的功能91MCS-51單片機(jī)外部存儲(chǔ)器結(jié)構(gòu):哈佛結(jié)構(gòu) 。MCS-51 RAM和ROM的最大擴(kuò)展空間各為64KB。系統(tǒng)擴(kuò)展首先要構(gòu)造系統(tǒng)總線。按功能把系
40、統(tǒng)總線分為三組: 1.地址總線Adress Bus,簡(jiǎn)寫AB 2.數(shù)據(jù)總線 (Data Bus,簡(jiǎn)寫DB) 3.控制總線Control Bus,簡(jiǎn)寫CB 92構(gòu)造系統(tǒng)總線93 1. 以P0口作為數(shù)據(jù)總線8位。 2. 以P0口經(jīng)8位鎖存器鎖存后的信號(hào)作為地址總線的低8位。 3以P2口作為地址總線高8位。 4.控制信號(hào)線。*ALE 低8位地址鎖存信號(hào)。*PSEN* 擴(kuò)展程序存儲(chǔ)器讀選通信號(hào)。*EA* 內(nèi)外程序存儲(chǔ)器選擇信號(hào)。*RD*和WR* 擴(kuò)展RAM和I/O口的讀選通、 寫選通信號(hào)。 94存儲(chǔ)器擴(kuò)展方法擴(kuò)展存儲(chǔ)器即分配地址空間給每個(gè)芯片,注意要防止地址和數(shù)據(jù)的沖突芯片的片選端口為防止數(shù)據(jù)的沖突提
41、供了方便,通過MCS51的地址線產(chǎn)生片選信號(hào)是防止地址沖突的有效途徑。片選控制線選法適用于系統(tǒng)芯片數(shù)目較少利用高端地址線未用到的地址線直接作為外擴(kuò)芯片的片選線,線路簡(jiǎn)單地址空間有重疊,即同一存儲(chǔ)空間可能對(duì)應(yīng)多個(gè)地址譯碼選通法適用于多片存儲(chǔ)器擴(kuò)展高端地址線經(jīng)譯碼器譯碼后作為存儲(chǔ)器片選線,線路需增加譯碼器芯片地址空間連續(xù),存儲(chǔ)芯片空間對(duì)應(yīng)地址唯一95強(qiáng)調(diào):MCS51外擴(kuò)存儲(chǔ)器應(yīng)注意的問題程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器空間獨(dú)立,各擁有64k尋址空間數(shù)據(jù)存儲(chǔ)器擴(kuò)展與I/O口擴(kuò)展占用數(shù)據(jù)64k空間,統(tǒng)一編址數(shù)據(jù)總線與低8位地址總線復(fù)用,必須使用地址鎖存器實(shí)現(xiàn)低8位地址總線和數(shù)據(jù)總線的別離。96存儲(chǔ)器擴(kuò)展實(shí)例設(shè)計(jì)
42、包括程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的51擴(kuò)展系統(tǒng),其中要求程序存儲(chǔ)器選用2片2764,數(shù)據(jù)存儲(chǔ)器選用2片6264。繪出設(shè)計(jì)原理圖,并指出各芯片所在地址。97硬件電路原理圖2764地址:IC10000h1fffh IC22000h3fffh6264地址:IC35000h5fffh IC46000h7fffh982.7 I/O口擴(kuò)展8255、8155的使用根本輸入輸出簡(jiǎn)單I/O口擴(kuò)展: 通過74LS377擴(kuò)展輸出口、74LS244擴(kuò)展輸入口99 8255A 擴(kuò)展實(shí)例8255A與8031接口電路1008255A的接口應(yīng)用舉例1.硬件接口電路 8031擴(kuò)展1片8255A的電路圖。74LS373是地址鎖存器,P
43、0.1、P0.0經(jīng)74LS373與8255A的地址線A1、A0連接; P0.7經(jīng)74LS373與片選端相連,其他地址線懸空。2.端口地址確定8255A各端口存放器的地址為:A口: FF7CHB口: FF7DHC口: FF7EH控制存放器: FF7FH101 3.軟件編程要求8255A工作在方式0,且A口作為輸入,B口、 C口作為輸出,程序如下:MOV A,#90H ;A口方式0輸入,B口、 ;C口輸出的控制字送AMOVDPTR,#0FF7FH ;控制存放器地址DPTRMOVX DPTR,A ;方式控制字控制存放器MOVDPTR,#0FF7CH ;A口地址DPTRMOVX A,DPTR ;從A口
44、讀數(shù)據(jù)MOV DPTR,#0FF7DH ;B口地址DPTRMOV A,#55H ;要輸出的數(shù)據(jù)55HAMOVX DPTR,A ;將55H送B口輸出MOV DPTR,#0FF7EH ;C口地址DPTRMOV A,#60H ;60HAMOVX DPTR,A ;將60H送C口輸出10274LS377作為輸出口功能說明: 74LS377是8D鎖存器, 8個(gè)輸入D0D7、 8個(gè)輸出Q0Q7、 1個(gè)片選E、1個(gè)鎖存端CLK上升沿有效, 還有電源、地。10374LS377擴(kuò)展為輸出口 74LS377作為輸出口,試確定其地址,E接P2.7;CLK接WR,377的輸入端接8031的數(shù)據(jù)口,輸出端接8個(gè)發(fā)光二極管
45、。 地址:7FFFHMov dptr,#7fffhMov a,#00hMovx dptr,a104 LED顯示器原理及顯示碼LED顯示器數(shù)碼管分類常用的數(shù)碼管可分為7段和“米字段兩種從電氣特性上可分為“共陰極和“共陽(yáng)極兩種LED結(jié)構(gòu)及外形圖abcdefg LED顯示電路設(shè)計(jì)105 為使LED顯示不同的符號(hào)或數(shù)字,要為L(zhǎng)ED提供段碼或稱字型碼。 提供給LED顯示器的段碼字型碼正好是一個(gè)字節(jié)8段。各段與字節(jié)中各位對(duì)應(yīng)關(guān)系如下:按上述格式,8段LED的段碼如下表所示。106顯示字符共陰極段碼共陽(yáng)極段碼顯示字符共陰極段碼共陽(yáng)極段碼03FHC0Hc39HC6H106HF9Hd5EHA1H25BHA4HE
46、79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8Hy6EH91H87FH80HH76H89H96FH90HL38HC7HA77FH88H“滅”00HFFHb7CH83HLED段碼表8段107那么 “0的段碼為7EH共陰。字型及段碼由設(shè)計(jì)者自行設(shè)定,習(xí)慣上還是以“a段對(duì)應(yīng)段碼的最低位。注意:段碼是相對(duì)的,它由各字段在字節(jié)中所處的位決定。例如前面表中8段LED段碼是按格式:而形成的, “0的段碼為3FH共陰。反之,如將格式改為以下格式:108 LED的靜態(tài)顯示根本原理多個(gè)數(shù)碼管顯示時(shí),同時(shí)點(diǎn)亮顯示,每一位數(shù)碼管
47、恒定的顯示,不閃爍。顯示程序簡(jiǎn)單,但是要求較多的I/O口線驅(qū)動(dòng)電流較小109 鍵盤接口的設(shè)計(jì)鍵盤的分類 編 碼 式:由專門的硬件8279等識(shí)別按下的鍵碼。 非編碼式:依靠軟件實(shí)現(xiàn)鍵碼的識(shí)別。非編碼鍵盤的結(jié)構(gòu)獨(dú)立式鍵盤矩陣式鍵盤軟件實(shí)現(xiàn)按鍵識(shí)別的方法掃描法鍵盤使用中的本卷須知鍵盤的抖動(dòng)要點(diǎn):110 鍵盤接口的工作原理獨(dú)立式鍵盤接口和矩陣式鍵盤接口。 1.獨(dú)立式鍵盤接口 各鍵相互獨(dú)立,每個(gè)按鍵各接一根輸入線,通過檢測(cè)輸入線的電平狀態(tài)可很容易判斷那個(gè)鍵被按下。 此種接口適于鍵數(shù)較少或操作速度較高的場(chǎng)合。 111獨(dú)立式鍵盤的檢測(cè)方式112鍵盤的抖動(dòng)問題鍵盤的抖動(dòng)抖動(dòng)時(shí)間一般為510ms。為了保證CPU
48、對(duì)鍵的閉合作一次,而且是僅作一次處理,必須消除抖動(dòng)可采用軟、硬件方法消除抖動(dòng)。*軟件消抖原理1判斷是否有鍵按下;2假設(shè)有鍵按下,調(diào)用延時(shí)程序延時(shí)時(shí)間大于10ms;3再次判斷是否有鍵按下,并讀入相應(yīng)的鍵值.鍵盤工作時(shí)輸出的電壓波形113 獨(dú)立式鍵盤編程1每個(gè)按鍵占用一根口線2電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單。3適用于按鍵較少的場(chǎng)合。 特點(diǎn):可直接判斷哪個(gè)鍵按下;-;獨(dú)立式鍵盤的處理程序?qū)嶋H應(yīng)用時(shí)要加延時(shí)消除抖動(dòng);-LOOP:MOVA,P1;讀P1口電平狀態(tài)ANLA,#0FH;取P1口低4位CJNEA,#0FH,KEY;判斷是否有鍵按下SJMPLOOP;如沒有鍵按下,重新掃描KEY:CJNEA,#0EH
49、,NEXT1;判斷是否為一號(hào)鍵按下ACALLKEY1;調(diào)用一號(hào)鍵處理子程序SJMPLOOPNEXT1:CJNEA,#0DH,NEXT2 ;判斷是否為2號(hào)鍵按下ACALLKEY21148255A擴(kuò)展I/O口的獨(dú)立式按鍵接口電路PA0PA1PA2PA3PA4PA5PA6PA7*8255A工作于根本輸入輸出方式*PA口地址7FFCH115 矩陣式 (行列式鍵盤接口 用于按鍵數(shù)目較多的場(chǎng)合,由行線和列線組成,按鍵位于行、列的交叉點(diǎn)上,如以下圖。*在需要按鍵數(shù)目較多的場(chǎng)合,矩陣式鍵盤與獨(dú)立式鍵盤相比,要節(jié)省較多的I/O口線。116矩陣式鍵盤的工作過程鍵沒有按下時(shí)行線和列線是分開的,鍵按下將相應(yīng)的行線列線
50、短接。連接行線的管腳作為輸入口,沒有鍵按下時(shí),被外電路拉高為“1連接列線的管腳作為輸出口,需要掃描鍵盤時(shí),逐次輸出低電平,假設(shè)此時(shí)有鍵按下,那么與其交叉的行線回讀值為“0,否那么為“1。根據(jù)當(dāng)前的掃描列線和回讀電平為“0的行線可確定按下的鍵值。117矩陣式鍵盤鍵碼的判別對(duì)于一個(gè)規(guī)那么編碼的矩陣式鍵盤,可以通過對(duì)鍵盤的列線依次進(jìn)行掃描輸出低電平,然后回讀行線,如果哪一行的電平為低,說明該行、該列的鍵被按下。該鍵的鍵碼為: 鍵碼=該行首鍵碼+該列號(hào)0行1行2行3行 0列 1列 2列 3列118矩陣式按鍵的識(shí)別方法(掃描法)掃描法依次置低鍵盤的列掃描線回讀鍵盤的行線根據(jù)鍵盤的行、列線狀態(tài)來(lái)計(jì)算按下鍵
51、的鍵號(hào)矩陣式鍵盤示意圖119鍵盤的掃描方式程序控制掃描方式當(dāng)單片機(jī)空閑時(shí),才調(diào)用鍵盤掃描程序定時(shí)掃描方式每隔一定時(shí)間對(duì)鍵盤掃描一次,通常采用單片機(jī)內(nèi)定時(shí)器確定鍵盤掃描時(shí)間間隔中斷掃描方式利用按鍵操作產(chǎn)生的中斷來(lái)掃描鍵盤,優(yōu)點(diǎn)是及時(shí)響應(yīng)鍵盤操作,節(jié)省CPU時(shí)間120矩陣式按鍵的識(shí)別方法(掃描法)121鍵盤程序設(shè)計(jì)設(shè)計(jì)要求判別鍵盤上有無(wú)鍵閉合去除鍵盤的機(jī)械抖動(dòng)判別閉合鍵的鍵號(hào)使處理器對(duì)鍵的一次閉合僅作一次處理程序流程鍵盤處理子程序流程1221231241252.8 A/D、D/A轉(zhuǎn)換MCS-51外擴(kuò)ADC0809MCS-51外擴(kuò)DAC0832126ADC0809編程要點(diǎn)選通模擬量輸入通道發(fā)出啟動(dòng)信
52、號(hào)用延時(shí)、查詢或中斷方法等待轉(zhuǎn)換結(jié)束初學(xué)階段建議采用延時(shí)的方法讀取轉(zhuǎn)換結(jié)果127ADC0809與8031接口電路設(shè)計(jì)*啟動(dòng)AD接口設(shè)計(jì)*轉(zhuǎn)換時(shí)鐘的提供,51單片機(jī)晶振6M*轉(zhuǎn)換完成判斷*模擬通道的選擇128ADC0809接口電路編程要求:設(shè)計(jì)程序?qū)崿F(xiàn)對(duì)8路模擬信號(hào)的采樣,并把數(shù)據(jù)存儲(chǔ)在RAM區(qū)30H37H中。 ;-;ADC0809的07模擬通道對(duì)應(yīng)地址7FF8H7FFFH;-ORG0000HMAIN:MOVR1,#30H;置數(shù)據(jù)存儲(chǔ)區(qū)首地址MOVDPTR,#7FF8H;指向ADC0809的0通道MOVR7,#08H;置通道數(shù)LOOP:MOVXDPTR,A;啟動(dòng)轉(zhuǎn)換ACALLDELAY_130u
53、s;等待130usMOVXA,DPTR;讀取轉(zhuǎn)換結(jié)果MOVR1,A;保存轉(zhuǎn)換結(jié)果INCDPTR;指向下一個(gè)轉(zhuǎn)換通道INCR1;指向下一個(gè)存儲(chǔ)空間DJNZR7,LOOP;判斷8個(gè)通道采樣是否完成?129DAC0832與8031單緩沖接口硬件設(shè)計(jì)0832地址8000HDAC0832單緩沖方式應(yīng)用原理圖130 鋸齒波的產(chǎn)生 ORG 2000H START:MOV DPTR,#8000H;DAC地址8000H R0 MOV A,#00H;數(shù)字量A LOOP: MOVX DPTR,A ;數(shù)字量D/A轉(zhuǎn)換器 INC A ;數(shù)字量逐次加1 SJMP LOOP累加器A的值從0開始輸出模擬量為0V,逐次加1,到
54、FFH時(shí)模擬量為5V,再加1那么A又變?yōu)?模擬量又為0V,程序循環(huán)后得到鋸齒波。131三、MCS-51 單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)設(shè)計(jì)一個(gè)單片機(jī)測(cè)控系統(tǒng),一般可分為四個(gè)步驟:1需求分析,方案論證和總體設(shè)計(jì)階段需求分析:被測(cè)控參數(shù)的形式電量、非電量、模擬量、數(shù)字量等、被測(cè)控參數(shù)的范圍、性能指標(biāo)、系統(tǒng)功能、工作環(huán)境、顯示、報(bào)警、打印要求等。方案論證:根據(jù)要求,設(shè)計(jì)出符合現(xiàn)場(chǎng)條件的軟硬件方案,力求系統(tǒng)簡(jiǎn)單、經(jīng)濟(jì)、可靠,這是進(jìn)行方案論證與總體設(shè)計(jì)一貫堅(jiān)持的原那么。1322器件選擇,電路設(shè)計(jì)制作,數(shù)據(jù)處理,軟件的編制階段。3系統(tǒng)調(diào)試與性能測(cè)定。4文件編制133(1)單片機(jī)系統(tǒng)的擴(kuò)展局部設(shè)計(jì)包括存儲(chǔ)器擴(kuò)展和I/
55、O接口擴(kuò)展。存儲(chǔ)器的擴(kuò)展指EPROM、EEPROM和RAM的擴(kuò)展,I/O接口擴(kuò)展是指8255、8155以及其它I/O功能器件的擴(kuò)展。(2)各功能模塊的設(shè)計(jì)如信號(hào)測(cè)量功能模塊、控制功能模塊、人機(jī)對(duì)話功能模塊、通訊功能模塊等,根據(jù)系統(tǒng)功能要求配置相應(yīng)的A/D、D/A、鍵盤、顯示器、打印機(jī)等外圍設(shè)備。a盡可能采用功能強(qiáng)的芯片。b.單片機(jī)可優(yōu)先考慮選用片內(nèi)帶有閃爍存儲(chǔ)器的產(chǎn)品。例如ATMEL公司的89C51/89C52??墒箶U(kuò)展程序存儲(chǔ)器的工作省去,從而減少芯片的數(shù)目,縮小體積。c. EPROM空間和RAM空間。目前EPROM容量越來(lái)越大,一般盡量選用容量大的EPROM。 d. I/O端口,要留有余量
56、。e. A/D和D/A通道,要留有余量。(3)工藝設(shè)計(jì) 機(jī)箱、面板、配線等 3.1 應(yīng)用系統(tǒng)的硬件設(shè)計(jì)1343.2 應(yīng)用系統(tǒng)的軟件設(shè)計(jì)1根據(jù)軟件功能要求,將系統(tǒng)軟件分成假設(shè)干個(gè)相對(duì)獨(dú)立的局部。2各功能程序?qū)嵭心K化、子程序化。既便于調(diào)試、鏈接,又便于移植、修改、維護(hù)。3編應(yīng)用軟件前,應(yīng)繪制出程序流程圖。這不僅是程序設(shè)計(jì)的一個(gè)重要組成局部,而且是決定成敗的關(guān)鍵局部。4要合理分配系統(tǒng)資源,包括ROM、RAM、定時(shí)器/計(jì)數(shù)器、中斷源等。 *其中最關(guān)鍵的是片內(nèi)RAM分配,對(duì)8031來(lái)講,片內(nèi)RAM指00H7FH單元,這128個(gè)字節(jié)的功能不完全相同,分配時(shí)應(yīng)充分發(fā)揮其特長(zhǎng),做到物盡其用。135 3.3
57、MCS-51單片機(jī)系統(tǒng)舉例 介紹單片機(jī)應(yīng)用系統(tǒng),供設(shè)計(jì)時(shí)參考。 8031的最小系統(tǒng)8031無(wú)片內(nèi)程序存儲(chǔ)器,因此,其最小應(yīng)用系統(tǒng)必須在片外擴(kuò)展EPROM,必須有復(fù)位及時(shí)鐘電路。以下圖為89C51/2的最小應(yīng)用系統(tǒng)。該系統(tǒng)僅完成數(shù)字量的輸入和輸出控制。13689C51的最小系統(tǒng)1374.以單片機(jī)為核心的數(shù)據(jù)采集系統(tǒng)一數(shù)據(jù)采集系統(tǒng)的組成數(shù)據(jù)采集系統(tǒng)一般由信號(hào)調(diào)理電路、多路切換電路、采樣保持電路、A/D、CPU、RAM、EPROM組成。138數(shù)據(jù)采集系統(tǒng)各局部說明1 信號(hào)調(diào)理電路傳感器與A/D之間的橋梁,是測(cè)控系統(tǒng)中重要組成局部。主要功能:a目前標(biāo)準(zhǔn)化工業(yè)儀表通常采用010mA,420 mA信號(hào),為了和A/D的輸入形式相適應(yīng),經(jīng)I/V轉(zhuǎn)換器變換成電壓信號(hào)。b某些測(cè)量信號(hào)可能是非電量,這些非
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字足跡與可持續(xù)發(fā)展-全面剖析
- 工程項(xiàng)目合作會(huì)議合同
- 【高考真題二次開發(fā)專題】2020年全國(guó)I閱讀理解B 高頻詞匯強(qiáng)化訓(xùn)練-2021屆高三英語(yǔ)三輪沖刺(學(xué)生版)
- 萬(wàn)科房地產(chǎn)集團(tuán)公司售后服務(wù)流程
- 一年級(jí)語(yǔ)文線上線下教學(xué)資源整合實(shí)施計(jì)劃
- 建筑項(xiàng)目物資需求計(jì)劃
- 關(guān)于電商行業(yè)的求職信范文(13篇)
- 2025版數(shù)學(xué)新課標(biāo)對(duì)英語(yǔ)學(xué)習(xí)的影響心得體會(huì)
- 農(nóng)貿(mào)市場(chǎng)新冠防控管理職責(zé)
- 鋼筋工程施工中的技術(shù)創(chuàng)新措施
- 第16課《有為有不為 》課件-2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)下冊(cè)
- 火鍋店創(chuàng)業(yè)計(jì)劃書:營(yíng)銷策略
- 交通大數(shù)據(jù)分析-深度研究
- 基礎(chǔ)護(hù)理學(xué)試題及標(biāo)準(zhǔn)答案
- DB11-T 1754-2024 老年人能力綜合評(píng)估規(guī)范
- 招聘團(tuán)隊(duì)管理
- 【課件】用坐標(biāo)描述簡(jiǎn)單幾何圖形+課件人教版七年級(jí)數(shù)學(xué)下冊(cè)
- 電商運(yùn)營(yíng)崗位聘用合同樣本
- 2023年浙江省杭州市上城區(qū)中考數(shù)學(xué)一模試卷
- 租賃鉆桿合同范例
- 消毒管理辦法
評(píng)論
0/150
提交評(píng)論