單片機(jī)原理與實(shí)踐 第6章 MCS-51單片機(jī)功能模塊的原理及應(yīng)用.ppt_第1頁(yè)
單片機(jī)原理與實(shí)踐 第6章 MCS-51單片機(jī)功能模塊的原理及應(yīng)用.ppt_第2頁(yè)
單片機(jī)原理與實(shí)踐 第6章 MCS-51單片機(jī)功能模塊的原理及應(yīng)用.ppt_第3頁(yè)
單片機(jī)原理與實(shí)踐 第6章 MCS-51單片機(jī)功能模塊的原理及應(yīng)用.ppt_第4頁(yè)
單片機(jī)原理與實(shí)踐 第6章 MCS-51單片機(jī)功能模塊的原理及應(yīng)用.ppt_第5頁(yè)
已閱讀5頁(yè),還剩77頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、6. MCS-51單片機(jī)功能模塊的原理及應(yīng)用,輸出,6.1 MCS-51單片機(jī)的通用輸入輸出端口,6.1 MCS-51單片機(jī)的通用輸入輸出端口,輸入,6.1 MCS-51單片機(jī)的通用輸入輸出端口,輸出“1”,6.1 MCS-51單片機(jī)的通用輸入輸出端口,MOVX 或 MOVC,6.1 MCS-51單片機(jī)的通用輸入輸出端口,6.1 MCS-51單片機(jī)的通用輸入輸出端口,6.1 MCS-51單片機(jī)的通用輸入輸出端口,MOVX 或 MOVC,6.1 MCS-51單片機(jī)的通用輸入輸出端口,6.1.2 MCS-51單片機(jī)外部存儲(chǔ)器的擴(kuò)展,6.1.2 MCS-51單片機(jī)外部存儲(chǔ)器的擴(kuò)展,6.1.3 MCS

2、-51單片機(jī)輸入輸出接口的擴(kuò)展,擴(kuò)展方式 總線擴(kuò)展 非總線擴(kuò)展 并行接口和串行接口 模擬接口和數(shù)字接口 輸入接口 鍵盤(pán) 模數(shù)轉(zhuǎn)換器 Analog-to-Digital converter,ADC、AD 或A to D 溫度傳感器,6.1.3 MCS-51單片機(jī)輸入輸出接口的擴(kuò)展,輸出接口 LED顯示器 段單色 點(diǎn)陣單色、多色、彩色 LCD顯示器 字符/點(diǎn)陣 單色、偽彩色(STN)、彩色(TFT) 數(shù)模轉(zhuǎn)換器 Digital-to-Analog converter,DAC、DA 或D to A 打印機(jī),6.1.3 MCS-51單片機(jī)輸入輸出接口的擴(kuò)展,Intel的可編程輸入輸出接口芯片,大都可與

3、MCS-51單片機(jī)直接連接 并行輸入輸出接口芯片8255和8155 可編程串行通信接口芯片8250和8251 鍵盤(pán)顯示接口8279 定時(shí)計(jì)數(shù)接口芯片8253 常用的模擬接口有AD轉(zhuǎn)換接口芯片0809、 DA轉(zhuǎn)換接口芯片0832等,6.1.3 MCS-51單片機(jī)輸入輸出接口的擴(kuò)展,8 + 1 = 16,輸入輸出端口操作的讀修改寫(xiě)特性,MCS-51兩種讀端口的操作 讀引腳直接讀取單片機(jī)引腳的邏輯電平 讀端口寄存器 讀修改寫(xiě)(read-modify-write) 讀端口寄存器修改寫(xiě)端口寄存器 讀修改寫(xiě)的主要特征 目的操作數(shù)為端口或端口的某個(gè)位,且操作結(jié)果與這些端口或端口的某個(gè)位的原數(shù)據(jù)有關(guān),6.2

4、MCS-51單片機(jī)的定時(shí)器計(jì)數(shù)器,計(jì)數(shù):外部信號(hào),定時(shí):系統(tǒng)時(shí)鐘,中斷標(biāo)志,自動(dòng)重裝允許,計(jì)數(shù)初值,軟件重裝,硬件自動(dòng)重裝,硬件自動(dòng)重裝,軟件重裝,計(jì)數(shù)初值 = 2n 計(jì)數(shù)長(zhǎng)度,6.2.2 MCS-51單片機(jī)的定時(shí)器計(jì)數(shù)器的工作原理,定時(shí)器計(jì)數(shù)器0,1的模式0/1,MCS-51,模式1為8bits,C8051F,定時(shí)器計(jì)數(shù)器0,1的模式0/1,MCS-51無(wú)此SFR,固定為SYSCLK/12,定時(shí)器計(jì)數(shù)器0,1的模式2,定時(shí)器計(jì)數(shù)器0,1的模式3,計(jì)數(shù)器/定時(shí)器0有效,計(jì)數(shù)器/定時(shí)器1為停止運(yùn)行,定時(shí)器計(jì)數(shù)器2,帶捕捉功能的16位的定時(shí)器計(jì)數(shù)器 帶重裝功能的16位的定時(shí)器計(jì)數(shù)器 通用異步收發(fā)器

5、的波特率發(fā)生器,帶捕捉功能的16位定時(shí)器計(jì)數(shù)器,帶重裝功能的16位定時(shí)器計(jì)數(shù)器,定時(shí)器計(jì)數(shù)器的應(yīng)用,TMOD、TCON,定時(shí)器計(jì)數(shù)器0,1 T2CON,定時(shí)器計(jì)數(shù)器2,TMOD,TCON,T2CON,6.2.3 定時(shí)器計(jì)數(shù)器的應(yīng)用編程,確定定時(shí)器的工作模式 計(jì)算定時(shí)器的初值 對(duì)于周期性的定時(shí),一般應(yīng)使用具有定時(shí)初值硬件自動(dòng)重裝的功能。 定時(shí)時(shí)間不能超出特定定時(shí)器的工作模式下的最長(zhǎng)定時(shí)時(shí)間 最長(zhǎng)定時(shí)時(shí)間 = 系統(tǒng)時(shí)鐘周期 12 2n,6.2.3 定時(shí)器計(jì)數(shù)器的應(yīng)用編程,程序 65 250s定時(shí) #include #define SYSCLK 12000000 #define c_tmr0 -(S

6、YSCLK/12)*250/1000000 / -(SYSCLK/12)/1000/4 sbit P1_0 = P10; void main (void) TMOD |= 2; TH0 = c_tmr0; TR0 = 1; ET0 = 1; EA = 1; while (1); void tmr0_ISR(void) interrupt 1 P1_0 =P1_0; ,6.2.3 定時(shí)器計(jì)數(shù)器的應(yīng)用編程,程序 66 20ms定時(shí) #include #define SYSCLK 12000000 #define c_tmr0 -(SYSCLK/12)*20/1000 void ini_tmr0_c

7、 (void); void main (void) TMOD |= 1;ini_tmr0_c ();ET0 = 1;EA = 1; while (1); void tmr0_ISR(void) interrupt 1 ini_tmr0_c (); void ini_tmr0_c (void) TR0 = 0; TL0 = c_tmr0;TH0 = c_tmr08; TR0 = 1; ,6.2.3 定時(shí)器計(jì)數(shù)器的應(yīng)用編程,程序 69 1s定時(shí) #include #define SYSCLK 12000000 #define c_tmr0 -(SYSCLK/12)*50/1000 unsigned

8、 char data sec_count = 20; void ini_tmr0_c (void); void main (void) TMOD |= 1;ini_tmr0_c ();ET0 = 1;EA = 1;while (1); void tmr0_ISR(void) interrupt 1 EA = 0;ini_tmr0_c ();EA = 1; if (-sec_count = 0) sec_count = 20; void ini_tmr0_c (void) unsigned int i; TR0 = 0;i = c_tmr0 + TL0 + 11;TL0 = i;TH0 = i8

9、;TR0 = 1; ,6.2.3 定時(shí)器計(jì)數(shù)器的應(yīng)用編程,程序 613 #include sbit P1_0 = P10; void main (void) TMOD |= 6; TH0 = 250; TL0 = 250; TR0 = 1; ET0 = 1; EA = 1; while (1); void tmr0_ISR(void) interrupt 1 P1_0 =P1_0; ,6.2.3 定時(shí)器計(jì)數(shù)器的應(yīng)用編程,程序 614 define button P3.4 PULSE,POUT ()“ /在“Toolbox”增加啟動(dòng)信號(hào)函數(shù)的按鈕 signal void POUT (void)

10、/信號(hào)函數(shù) while (1) PORT3 ,6.2.3 定時(shí)器計(jì)數(shù)器的應(yīng)用編程,程序 615 12分頻 #include sfr16 RCAP2 = 0 xca; sfr16 TMR2 = 0 xcc; sbit P2_0 = P20; void main (void) RCAP2 = -6; TMR2 = -6; C_T2 = 1; TR2 = 1; ET2 = 1; EA = 1; while (1); void tmr2_ISR(void) interrupt 5 TF2 = 0; P2_0 =P2_0; ,6.2.3 定時(shí)器計(jì)數(shù)器的應(yīng)用編程,程序 616 define button

11、P1.0 PULSE,POUT () /在“Toolbox”增加啟動(dòng)信號(hào)函數(shù)的按鈕 signal void POUT (void) /信號(hào)函數(shù) while (1) PORT1 ,測(cè)量信號(hào)的頻率 高頻信號(hào) 最高頻率=SYSCLK/4 最低頻率=測(cè)量次數(shù)/測(cè)量精度,6.2.3 定時(shí)器計(jì)數(shù)器的應(yīng)用編程,測(cè)量信號(hào)的周期 低頻信號(hào) 最高頻率=(SYSCLK/預(yù)分頻系數(shù))測(cè)量精度 最低頻率沒(méi)有限制 被測(cè)信號(hào)經(jīng)過(guò)2分頻 定時(shí)器的時(shí)鐘為SYSCLK/預(yù)分頻系數(shù),6.2.3 定時(shí)器計(jì)數(shù)器的應(yīng)用編程,6.3 MCS-51單片機(jī)的通用異步收發(fā)器UART,同步/異步傳輸?shù)拇薪涌?同步方式為半雙工方式 異步可以工作在

12、全雙工方式 用一個(gè)SFR(SBUF)地址訪問(wèn)接/發(fā)寄存器 允許在未讀取接收數(shù)據(jù)時(shí)開(kāi)始新的接收 寫(xiě)發(fā)送寄存器即重新啟動(dòng)發(fā)送過(guò)程,6.3.1 MCS-51單片機(jī)的UART的工作原理,為兼容避免使用定時(shí)器2作為波特率發(fā)生器,UART的模式0:同步半雙工方式,RX為漏極開(kāi)路 清RI,啟動(dòng)接收 寫(xiě)SBUF,啟動(dòng)發(fā)送,UART的模式0的應(yīng)用,UART的模式1/2/3:異步全雙工方,模式1:8位波特率可變 模式2:9位波特率固定 模式3:9位波特率可變 第9位可用于校驗(yàn)(奇/偶校驗(yàn))或多機(jī)通信,MCS-51單片機(jī)的UART的波特率發(fā)生器,模式0的波特率 固定為系統(tǒng)時(shí)鐘頻率的1/12 模式2的波特率 由電源控

13、制寄存器(PCON)的SMOD位來(lái)決定是否倍速 SMOD=0,固定為系統(tǒng)時(shí)鐘頻率的1/64 SMOD=1,固定為系統(tǒng)時(shí)鐘頻率的1/32 波特率 = 系統(tǒng)時(shí)鐘頻率3221-SMOD,PCON,MCS-51單片機(jī)的UART的波特率發(fā)生器,模式1和模式3的波特率 單獨(dú)使用定時(shí)器計(jì)數(shù)器1,或 單獨(dú)使用定時(shí)器計(jì)數(shù)器2 ,或 兩者都使用使接/發(fā)波特率不相等 波特率 = (系統(tǒng)時(shí)鐘頻率K)定時(shí)器的計(jì)數(shù)長(zhǎng)度,MCS-51單片機(jī)的UART的波特率發(fā)生器,K=216=32,K=1221-SMOD16 =19221-SMOD,MCS-51單片機(jī)的UART的波特率發(fā)生器,計(jì)數(shù)初值 = (系統(tǒng)時(shí)鐘頻率K)波特率 使用定

14、時(shí)器計(jì)數(shù)器2時(shí),K = 32 使用定時(shí)器計(jì)數(shù)器1時(shí),K = 19221-SMOD,MCS-51單片機(jī)的UART的波特率發(fā)生器,程序 623:定時(shí)器計(jì)數(shù)器1作為波特率發(fā)生器的初始化 #include #define SYSCLK 11059200 #define BAUD 19200 #define c_tmr1 -(SYSCLK/192)/BAUD void BAUD_INI (void); void main (void) SCON = 0 x50;BAUD_INI ();while (1); void BAUD_INI (void) PCON |= 0 x80; TMOD |= 32; T

15、H1 = c_tmr1;TL1 = c_tmr1;TR1 = 1; ,MCS-51單片機(jī)的UART的波特率發(fā)生器,程序 624:定時(shí)器計(jì)數(shù)器2作為波特率發(fā)生器的初始化 #include #define SYSCLK 11059200 #define BAUD 19200 #define c_tmr2 -(SYSCLK/32)/BAUD sfr16 RCAP2 = 0 xca;sfr16 TMR2 = 0 xcc; void BAUD_INI (void); void main (void) SCON = 0 x50;BAUD_INI ();while (1); void BAUD_INI (v

16、oid) RCAP2 = c_tmr2;TMR2 = c_tmr2; RCLK = 1;TCLK = 1;TR2 = 1; ,MCS-51單片機(jī)的UART的控制方式,SCON,SM2,第9位處理方式的控制位 模式0沒(méi)有第9位,SM2必須為0 其他模式 SM21,第9位必須為1 在模式1中檢測(cè)停止位,必須接收到正確的停止位 在模式2和模式3中,第9位必須是1 SM20 ,第9位任意 SM2通常作為多機(jī)通信的控制位,用于區(qū)別地址幀或數(shù)據(jù)幀,SCON,TB8 只有在模式2和模式3中有效 發(fā)送的第9位數(shù)據(jù),在開(kāi)始發(fā)送前由軟件設(shè)定 校驗(yàn)位或多機(jī)通信中地址幀/數(shù)據(jù)幀的標(biāo)志位 RB8 只有在模式1、模式2和

17、模式3中有效 接收到的停止位或第9位數(shù)據(jù),SCON,RI 接收中斷標(biāo)志位,置位表示接收到一幀數(shù)據(jù) 模式 0,接收完第8位數(shù)據(jù)后由硬件置位 其它模式,在停止位的中間時(shí)刻由硬件置位(例外情況見(jiàn)SM2的說(shuō)明) 必須用軟件清0 只有當(dāng)RI=0且滿足其他接收條件時(shí),第9位才進(jìn)入RB8,8位數(shù)據(jù)才能進(jìn)入接收緩沖器,并由硬件置位中斷標(biāo)志RI;否則信息丟失。,SCON,TI 發(fā)送中斷標(biāo)志,置位表示一幀數(shù)據(jù)已發(fā)送完 模式0,第8位發(fā)送結(jié)束由硬件置位 其它模式,發(fā)送停止位前由硬件置位 TI必須用軟件清0,MCS-51單片機(jī)的UART的應(yīng)用,例 67: 時(shí)鐘頻率=11.0592MHz SMOD=1,波特率=1920

18、0bps 使用定時(shí)器計(jì)數(shù)器1作為波特率發(fā)生器 UART為模式1,8位數(shù)據(jù),允許接收,MCS-51單片機(jī)的UART的應(yīng)用,程序 627:使用“printf”完成發(fā)送 #include #include #define SYSCLK 11059200 #define BAUD 19200 #define c_tmr1 -(SYSCLK/192)/BAUD void BAUD_INI (void); void Uart_Init(void);,程序 627,void main (void) BAUD_INI (); Uart_Init(); while (1) TI = 1; printf (Hel

19、lo World!n); while (TI = 0); ,程序 627,void BAUD_INI (void) PCON |= 0 x80; TMOD |= 32; TH1 = c_tmr1; TL1 = c_tmr1; TR1 = 1; void Uart_Init(void) SCON = 0 x50; ,程序 628,程序 628:使用“TI”查詢完成發(fā)送 #include #define SYSCLK 11059200 #define BAUD 19200 #define c_tmr1 -(SYSCLK/192)/BAUD #define uchar unsigned char u

20、char code trdata = Hello World!n; uchar code *data point; void BAUD_INI (void); void Uart_Init(void);,程序 628,void main (void) BAUD_INI (); Uart_Init(); point = trdata; TI = 1; while (1) if (TI) TI = 0; SBUF = *point; if (*+point = 0) point = trdata; ,程序 628,void BAUD_INI (void) PCON |= 0 x80; TMOD |

21、= 32; TH1 = c_tmr1; TL1 = c_tmr1; TR1 = 1; void Uart_Init(void) SCON = 0 x50; ,程序 629,程序 629:使用中斷完成發(fā)送 void main (void) BAUD_INI (); Uart_Init(); point = trdata; TI = 1; while (1); ,程序 629,void UART_ISR (void) interrupt 4 if (RI) RI = 0; if (TI) TI = 0; SBUF = *point; if (*+point = 0) point = trdata;

22、 ,程序 629,void BAUD_INI (void) PCON |= 0 x80; TMOD |= 32; TH1 = c_tmr1;TL1 = c_tmr1; TR1 = 1; void Uart_Init(void) SCON = 0 x50; ES = 1;EA = 1; ,MCS-51單片機(jī)的UART的應(yīng)用,波特率最大誤差,波特率的誤差,波特率最大誤差 =定時(shí)器溢出頻率的誤差 +振蕩器的誤差 波特率最大誤差50%10=5% (8位數(shù)據(jù)或9位數(shù)據(jù)忽略停止位) 或 波特率最大誤差50%11=4.545% (9位數(shù)據(jù)不忽略停止位),波特率的誤差,SYSCLK1105920012000000 BAUD 19200 19200 (SYSCLK/192)/BAUD3 3 定時(shí)器溢出頻率的誤差0 8.5%,波特率的誤差,例 64:當(dāng)系統(tǒng)時(shí)鐘頻率=12MHz,波特率=4800bps,采用定時(shí)器計(jì)數(shù)器1的模式2作為波特率發(fā)生器時(shí),求最佳的計(jì)數(shù)初值。 SMOD=0,K = 1221-016 = 384 計(jì)數(shù)初值 = (12000000384)4800 =6.510 取6或7 SMOD=1,K = 1221

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論