第06章 單片機串行通信系統(tǒng) 習題解答_第1頁
第06章 單片機串行通信系統(tǒng) 習題解答_第2頁
第06章 單片機串行通信系統(tǒng) 習題解答_第3頁
第06章 單片機串行通信系統(tǒng) 習題解答_第4頁
第06章 單片機串行通信系統(tǒng) 習題解答_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第6章 單片機串行通信系統(tǒng) 習題解答一、填空題1在串行通信中,把每秒中傳送的二進制數的位數叫 波特率 。2當SCON中的M0M1=10時,表示串口工作于方式 2 ,波特率為 fosc/32或fosc/64 。3SCON中的REN=1表示 允許接收 。4PCON 中的SMOD=1表示 波特率翻倍 。5SCON中的TI=1表示 串行口發(fā)送中斷請求 。6MCS-51單片機串行通信時,先發(fā)送 低 位,后發(fā)送 高 位。7MCS-51單片機方式2串行通信時,一幀信息位數為 11 位。8設T1工作于定時方式2,作波特率發(fā)生器,時鐘頻率為11.0592MHz,SMOD=0,波特率為2.4K時,T1的初值為 F

2、AH 。9MCS-51單片機串行通信時,通常用指令 MOVSBUF,A 啟動串行發(fā)送。10MCS-51單片機串行方式0通信時,數據從 P3.0 引腳發(fā)送/接收。二、簡答題 1串行口設有幾個控制寄存器?它們的作用是什么?答:串行口設有2個控制寄存器,串行控制寄存器SCON和電源控制寄存器PCON。其中PCON中只有PCON.7的SMOD與串行口的波特率有關。在SCON中各位的作用見下表:SCOND7D6D5D4D3D2D1D0位名稱SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能工作方式選擇多機通信控制接收 允許發(fā)送 第9位接收 第9位發(fā)送

3、中斷接收 中斷2MCS-51單片機串行口有幾種工作方式?各自的特點是什么?答:有4種工作方式。各自的特點為:SM0SM1方式功能波特率00方式0移位寄存器方式fosc/1201方式18位異步通信方式可變10方式29位異步通信方式fosc/32或fosc/6411方式39位異步通信方式可變3MCS-51單片機串行口各種工作方式的波特率如何設置,怎樣計算定時器的初值?答:串行口各種工作方式的波特率設置:工作方式O:波特率固定不變,它與系統(tǒng)的振蕩頻率fosc的大小有關,其值為fosc/12。工作方式1和方式3:波特率是可變的,波特率=(2SMOD/32)×定時器T1的溢出率工作方式2:波特

4、率有兩種固定值。當SM0D=1時,波特率=(2SM0D/64)×fosc=fosc/32當SM0D=0時,波特率=(2SM0D/64)×fosc=fosc/64計算定時器的初值計算:4若fosc = 6MHz,波特率為2400波特,設SMOD =1,則定時/計數器T1的計數初值為多少?并進行初始化編程。 答:根據公式N=256-2SMOD×fosc /(2400×32×12)= 242.98243 =F3HTXDA: MOV TMOD,#20H;置T1定時器工作方式2 MOV TL1,#0F3H ;置T1計數初值. MOV TH1,#0F3H

5、MOV PCON,#80H ;置SMOD =15用8051串行口外接CD4094擴展8位并行輸出口,驅動8個LED發(fā)光二極管。畫出硬件電路圖,編寫程序,使LED發(fā)光二極管從左到右依次閃亮。答:電路圖如下LED發(fā)光二極管從左到右循環(huán)點亮的C51參考程序:#include<reg51.h> /包含51單片機寄存器定義的頭文件#include<intrins.h> /包含函數_nop_()定義的頭文件unsigned char code Tab=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;/流水燈控制碼,該數組被定義為全局變量sbit P1

6、7=P17;void delay(void) unsigned char m,n; for(m=0;m<200;m+) for(n=0;n<250;n+) ; /*函數功能:發(fā)送一個字節(jié)的數據*/void Send(unsigned char dat) P17=0; /P1.7引腳輸出鎖存信號,對cd4094鎖存 nop_(); /延時一個機器周期 _nop_(); /延時一個機器周期,保證鎖存完成 P17=1; /結束對cd4094的鎖存 SBUF=dat; /將數據寫入發(fā)送緩沖器,啟動發(fā)送 while(TI=0) /若沒有發(fā)送完畢,等待 ; TI=0; /發(fā)送完畢,TI被置“1

7、”,需將其清0/*函數功能:主函數*/void main(void) unsigned char i; SCON=0x00; /SCON=0000 0000B,使串行口工作于方式0 while(1) for(i=0;i<8;i+) Send(Tabi); /發(fā)送數據 delay(); /延時 三、Proteus仿真Proteus仿真1.在Proteus下,仿真實現6.6節(jié)內容。答:全自動洗衣機串行方式時間顯示Proteus仿真為節(jié)省單片機并口資源,全自動洗衣機時間顯示可用串口實現。一次洗衣時間一般不會超過99分鐘,用2位LED數碼管顯示時間即可。電路如圖6-9所示。圖6-9 全自動洗衣機

8、串行方式時間顯示電路 圖6-9中用AT89C51單片機串行口擴展2個并行口,接2位數碼管組成顯示電路。串行口工作于方式0,與外接的2片移位寄存器74LS164連接。74LS164是一個8位串入并出的移位寄存器,功能是接收AT89C51單片機串行通信口輸出的串行數據并轉換成并行數據輸出,從而驅動LED數碼管顯示。74LS164的1、2腳為數據輸入端,接單片機串行口的RXD端(P3.0腳),74LS164的第8腳為時鐘脈沖輸入端(CLK),接單片機串行口的TXD端(P3.1腳),第9腳R為清零端,低電平清零,正常工作時接高電平。兩只LED數碼管采用共陰極靜態(tài)顯示方式。下列程序實現串行兩位LED數碼

9、管時間顯示,顯示范圍為0099分鐘。使用串行口進行信息傳送,程序編寫相當簡單,用戶只需將需要顯示的數據直接送串口發(fā)送緩沖器,等待串行中斷即可。匯編語言參考程序:ORG 0000H ;在0000H單元存放轉移指令LJMP NAIN ;轉移到主程序ORG 000BH ;定時器T0的中斷入口地址 LJMP INTERRUPT ;轉移到中斷子程序ORG 0200H ;主程序從0200H開始MAIN: MOV TMOD,#01H ;使用定時器T0,工作方式1MOV TH0, #3CH ;置初T0值50msMOV TL0, #0B0HH MOV R0,#0 ;用于存1秒的計數次數SETB EA ;開中斷總

10、允許SETB ET0 ;允許T0中斷 SETB TR0 ;啟動計時LOOP: LCALL Display ;循環(huán)調用顯示子程序 SJMP LOOPTAB: DB 3FH,06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH ;09的共陰極段碼DISPLAY: ;顯示子程序(顯示分鐘)MOV DPTR, #TAB ;將表首地址賦給DPTRMOV A, 30H ;將30H中存放的分計數賦給累加器AMOV B, #0AH ;將10賦給累加器BDIV AB ;分計數除以10得十位數放在A中,個位數放在B中MOVX A, A+DPTR ;查表得十位數的顯示段碼MOV S

11、BUF, A ;發(fā)送十位數L1: JBC TI, L2 ;判是否發(fā)送完,未發(fā)完循環(huán)等待,若發(fā)完則轉L2SJMP L1L2: MOV A, B ;將個位數賦給累加器AMOVX A, A+DPTR ;查表得個位數的顯示段碼MOV SBUF, A ;發(fā)送個位數L3: JBC TI, L4 ;判是否發(fā)送完,未發(fā)完循環(huán)等待,若發(fā)完則轉L4SJMP L3L4: RET ;子程序返回INTERRUPT: ;中斷服務子程序INC R0 ;每中斷一次(50ms)加1CJNE R0, #20, L5 ;判是否中斷20次,若不是則轉L5中斷返回,若是則順序執(zhí)行CLR R0 ;到1秒鐘,清R0INC R1 ;秒計數加

12、1CJNE R1, #60, L5 ;判秒是否計滿60次,若未滿則轉L5中斷返回,若滿則順序執(zhí)行CLR R1 ;如果秒計滿60,將秒計數單元內容清0INC 30H ;分鐘計數單元30H內容加1CJNE 30H, #99, L5 ;判分是否計滿99次,若未滿則轉L5中斷返回,若滿則順序執(zhí)行CLR R1 ;如果分計滿99,將秒計數單元內容清0CLR 30H ;同時將分計數單元內容清0L5: MOV TH0, #3CH ; 定時器重新賦初值MOV TL0, #0B0HH RETI ;中斷返回C語言參考程序:#include<reg51.h> / 包含51單片機寄存器定義的頭文件unsig

13、ned char Tab =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /數組Tab放09的共陰極字段碼unsigned char int_time; /設中斷次數計數變量unsigned char second; /秒計數變量unsigned char minute; /分鐘計數變量void delay(void) /延時函數 unsigned char n,j; /設計數循環(huán)變量for(j=0;j<200;j+); /通過循環(huán)延時for(n=0;n<200;n+); /通過循環(huán)延時 void DisplayMinute(

14、unsigned char m) /顯示函數 unsigned char ge, si; /定義變量ge、si,用于存放個位、十位 si=Tabm/10; /計算出十位的值,查表轉換成相應的段碼送變量si SBUF=si; /發(fā)送顯示十位while(TI=0); /等待發(fā)送完畢 TI=0; /發(fā)送完后清中斷標志 ge=Tabm%10; /計算出十位的值,查表轉換成相應的段碼送變量ge SBUF=ge; /發(fā)送顯示個位while(TI=0); /等待發(fā)送完畢 TI=0; /發(fā)送完后清中斷標志 delay(); /調延時函數,是數碼管顯示有一定的亮度 delay(); void main(void

15、) /主函數 TMOD=0x01; /使用定時器T0,工作方式1 EA=1; /開中斷總允許ET0=1; /允許T0中斷TH0=(65536-46083)/256; /定時器高八位賦初值(50ms)TL0=(65536-46083)%256; /定時器低八位賦初值TR0=1; /啟動計時 PCON=0x00; /置SMOD=0 SCON=0x00; /串行口工作在方式0 while(1) /無限循環(huán)體 DisplayMinute(minute); /調用分鐘顯示子程序 void interserve(void ) interrupt 1 /計數器T0中斷函數 int_time+; /每中斷一次

16、(50ms)加1if(int_time=20) / 50ms記20次為1秒(仿真時可將次數改小,減少等待時間)。 int_time=0; /中斷計數變量清0 second+; /秒計數變量加1 if(second=60) /判是否到了60秒(仿真時可將次數改小,減少等待時間)。 second=0; /如果秒計滿60,將秒計數變量清0 minute+; /分鐘計數變量加1 if(minute=99) /判分鐘是否等于99 minute=0; /如果分鐘計滿99,將分鐘計數變量清0秒計數變量清0second=0; /將秒計數變量清0 TH0=(65536-46083)/256; /定時器重新賦初值

17、TL0=(65536-46083)%256; 2.在Proteus下,仿真實現例6-2內容。答:電路如圖6-8所示,試編制程序輸入K1K8的狀態(tài)信息,并存入內部RAM 40H。 圖6-8 串行通訊方式0應用4014 是一個并入串出轉換芯片,Q8端為串行數據輸出端,CLK為時鐘脈沖輸入端,P/S為操作控制端,P/S=1:鎖存并行輸入數據,P/S=0:允許串行移位操作。要完成題目的要求,應先將開關狀態(tài)鎖存,然后串行傳送給單片機。在Proteus下畫出電路圖。匯編語言參考程序如下: ORG 0000H ;上電后程序從00000H開始,在0000H單元存放轉移指令LJMP KIN ;轉移到主程序ORG 0100H ;主程序從0100H開始KIN: MOV SCON,#00H ;設定串行口為方式0 CLR ES ;禁止串行中斷 SETB P1.0 ;鎖存并行輸入數據 CLR P1.0 ;允許串行移位操作 SETB REN ;允許并啟動接收(TXD發(fā)送移位脈沖) JNB RI,$ ;等待接收完畢 MOV 40H,SBUF ;存入

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論