單片機C語言-第6章串行口的C51編程3課件_第1頁
單片機C語言-第6章串行口的C51編程3課件_第2頁
單片機C語言-第6章串行口的C51編程3課件_第3頁
單片機C語言-第6章串行口的C51編程3課件_第4頁
單片機C語言-第6章串行口的C51編程3課件_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、6.3 串行口的應用舉例6.3.1 初始化 設定SCON的SM0、SM1兩位二進制編碼。對于方式2或3,應根據需要在TB8中寫入待發(fā)送的第9位數據。若選定的操作方式不是方式0,還需設定發(fā)送的波特率:設定SMOD的狀態(tài),以控制波特率是否加倍。若選定操作方式1或3,則應對定時器T1進行初始化,以設定其溢出率。 6.3 串行口的應用舉例6.3.1 初始化6.3.2 編程步驟(1)設定波特率 串行接口的波特率設定方式有兩種:固守波特率和可變波特率。當采用可變波特率時,應先確定T1的計數初值,并對T1進行初始化。當采用固定波特率(工作方式0和工作方式2)時,該步可以省略。 (2)填寫控制字設定串行口控制

2、寄存器SCON和波特率倍增控制寄存器PCON。6.3.2 編程步驟(1)設定波特率 6.3.2 編程步驟(3)串行通信可采用兩種方式:查詢方式和中斷方式。 查詢方式發(fā)送數據(先發(fā)后查) :發(fā)送一個數據、查詢 TI、發(fā)送下一個數據。 查詢方式接收數據(先查后收) :查詢 RI、讀入一個數據、查詢 RI、讀入下一個數據。 中斷方式發(fā)送數據:發(fā)送一個數據、等待中斷,在中斷中再發(fā)送下一個數據。 中斷方式接收數據:等待中斷、在中斷中接收一個數據。 兩種方式中,發(fā)送與接收數據后都要將TI或RI清零。 6.3.2 編程步驟(3)串行通信可采用兩種方式:查詢方式【例6-9】波特率計算及初始化編程設某51單片機

3、系統(tǒng),其串行口工作于方式3,要求傳送波特率為1200。作為波特率發(fā)生器的定時器T1工作在模式2時,請求出計數初值為多少?設單片機的振蕩頻率為6MHz。 X=256-(2SMODfosc)/(384波特率)TH1=256fosc/(波特率1232/2SMOD) =256-2SMOD13當SMOD=0時:TH1=25613=243=0F3H。當SMOD=1時:TH1=256213=230=0E6H?!纠?-9】波特率計算及初始化編程設某51單片機系統(tǒng),其串行【例6-10】編程:高4位燈和低4位燈以1s亮1s滅的頻率進行閃爍?!纠?-10】編程:高4位燈和低4位燈以1s亮1s滅的頻率進分析:(1)4

4、位亮、4位滅的交替數據為11110000B和00001111B;(2)串行口采用方式0,SCON=00H;(3)1s由定時器T0產生:硬件定時50ms,軟件計數20次;T0定時器方式、模式1、初值為:50000=65536-X X=15536=3CB0H(4)1s采用中斷的方式,20次中斷到,將輸出的數據取反操作。分析:(1)4位亮、4位滅的交替數據為11110000B和0#includeunsigned char data i, a;void main( ) SCON=0; TMOD=0X01; TH0=-50000/256; TL0=-50000%256; i=20; EA=1; ET0=

5、1; TR0=1; a=0 x0f; SBUF=a; while(1);#includevoid t0int( ) interrupt 1 TH0=-50000/256; TL0=-50000%256; i=i-1; while(i=0) i=20; a=a; SBUF=a; 修改:將上述程序改為流水燈形式。void t0int( ) interrupt 1【例6-11】串行口自收自發(fā) 將51單片機的TXD接RXD,實現單片機串行口數據自發(fā)自收,并將接收的數據通過P1口輸出到發(fā)光二極管顯示。系統(tǒng)時鐘頻率為11.0592MHz,自發(fā)自收的波特率為2400bps。編寫程序,要求:單片機串行口工作在

6、方式1,從TXD發(fā)送數據0 x55,從RXD將該數據讀回,并送P1口通過8個發(fā)光二極管顯示。 【例6-11】串行口自收自發(fā) 將51單片機的TX單片機C語言-第6章串行口的C51編程3#include#define uchar unsigned char#define uint unsigned intvoid main( )uchar i=0 x0F;uint j=0;TMOD=0X20; /設定定時器1,模式2TL1=TH1=0XF4;PCON=0X00;SCON=0X50;TR1=1;while(1) TI=0; SBUF=i; /發(fā)送數據#includewhile(TI=0);TI=0;

7、RI=0; while(RI=0); i=SBUF; /讀取接收數據 RI=0; P1=i;i=i;for(j=0;j12500;j+); /延時while(TI=0);【例6-12】兩個單片機串行通信 在某控制系統(tǒng)中有甲、乙兩個單片機,甲單片機首先將P1口撥動開關數據裝入SBUF,然后經由TXD將數據發(fā)送給乙單片機。乙單片機將接收數據存入SBUF,再由SBUF載入累加器,并輸出至P1,點亮相應端口的LED。PROTEUS仿真電路如圖所示?!纠?-12】兩個單片機串行通信 在某控制系統(tǒng)中單片機C語言-第6章串行口的C51編程3#include /單片機1的C51源程序#define uint

8、unsigned int#define uchar unsigned charvoid main( ) uchar i; TMOD=0 x20; TH1=TL1=0 xff; SCON=0 x50; PCON=0 x80; TR1=1; P1=0 xff; while(1) P1=0 xff; i=P1; SBUF=i; while(TI=0); TI=0; #include /單片機1的C51源/單片機2的C51源程序:#include#define uint unsigned int#define uchar unsigned charvoid main( )uchar i=0;TMOD=

9、0 x20;TH1=TL1=0 xff;SCON=0 x50;PCON=0 x80;TR1=1;while(1) while(RI=0);RI=0;i=SBUF;P1=i;/單片機2的C51源程序:實驗1 串行口控制的流水燈實驗實驗目的:掌握51單片機串行口的基本應用,掌握51單片機串行口擴展為并行口的基本應用。電路與內容:通過74LS164擴展一個8位的輸出口,輸出接8個LED指示燈,編程實現流水燈的控制。閃爍間隔為1s。1s由定時器/計數器產生。實驗1 串行口控制的流水燈實驗實驗目的:掌握51單片機串行#includeunsigned char i=0;unsigned char i1=0

10、 xfe;void main( ) SCON=0 x00; /初始化串口方式0 TMOD=0X01; TH0=-20000/256; TL0=-20000%256; EA=1;ET0=1;TR0=1; SBUF=i1; while(1);#includevoid t0int() interrupt 1 unsigned char i2,i3; TH0=-20000/256; TL0=-20000%256; i+; if(i=50) i=0; SBUF=i1; i2=i17; i3=i11; i1=i2|i3; while(TI) TI=0; void t0int() interrupt 1實驗2 串行口控制的8段LED顯示器實驗目的:掌握51單片機串行口擴展為并行口的基本應用,掌握51單片機串行口控制8位LED顯示器的應用。電路與內容: 51單片機外部通過串行口擴展兩片74LS164, 每片74LS164連接一個共陽極8段LED數碼管,編程實現顯示12。實驗2 串行口控制的8段LED顯示器實驗目的:掌握51單片#includeunsigned char dis_buf2;unsigned char code table10=0 x0c0,0 x0f9,0 x0a4,0 x0b0,0 x99,0 x92,0 x82,0 x0f8,0 x80,0 x9

溫馨提示

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

評論

0/150

提交評論