|

用分立元件搭建的串口電平轉(zhuǎn)換電路:特點是電路簡單實用,具時效性!使用時只需將TO_MCU的接口接到目標(biāo)單片機板中與相應(yīng)的串口引腳相連!DB通過串口線直接與計算機串口相連接即能完成單片機與計算機之間的通訊!
以下是模塊化之后的PCB版圖:

同時,當(dāng)與計算機通訊之時接利用計算機超級終端軟件或串口調(diào)試助手與單片機進行通訊!
注意計串行通訊學(xué)習(xí)的幾個要點:
1、數(shù)據(jù)流方式:并行和串行,并行特點是傳輸速度快,適合短距離傳輸,同時占用的IO資源多,造價高。串行特點是傳輸速度不及并行,但是能夠完成遠距離的數(shù)據(jù)傳輸,同時占用的資源少。
2、通訊方式:同步和異步,同步是指兩個或多個實體模塊之間采用同一個系統(tǒng)時鐘作為系統(tǒng)驅(qū)動源,異步是指兩個或多個實體模塊之間采用各自的時鐘信號作為自己的驅(qū)動源信號。當(dāng)多個模塊并存時,在同一個系統(tǒng)中可同時存在異步和同步的混合通訊方式。結(jié)合1說法就有了同步并行和異步并行,同步串行和異步串行四種數(shù)據(jù)傳輸通訊方式。
3、重點了解異步串行通訊:
A、通訊方式:單工、半雙工、全雙工!重點學(xué)習(xí)全雙工…
B、通訊方式中掌握波特率的計算方法
C、定時器的在串行通訊中的運用(重點)
D、串行特殊功能寄存器和控制寄存器的運用
E、收發(fā)寄存器SBUF在收與發(fā)過程中的含義 例如:(重點)
SBUF=R;//(發(fā)送) 此時會將并行數(shù)據(jù)+加上幀信息位(起始位,校驗位,停止位)數(shù)據(jù)轉(zhuǎn)化成串行數(shù)據(jù)送出
R=SBUF;//(接收)此時會將發(fā)收到到的串行數(shù)據(jù)(由數(shù)據(jù)位和幀信息位)提取其中的數(shù)據(jù)位并將提取到的數(shù)據(jù)轉(zhuǎn)化成并行數(shù)據(jù)在單片機中進行需要的處理
其中R可以為char R型變量或多重char型指針數(shù)組R
必須重點掌握:可完成通過計算對單片機在工業(yè)控制、數(shù)據(jù)采集、實時監(jiān)測、智能模塊等等的運用!
舉例:
|
- //==========================================================================
- //功能:系統(tǒng)將計算機發(fā)送來的數(shù)據(jù)送給P1口進行顯示或作用到外部設(shè)備,同時系統(tǒng)將
- // 接收到的數(shù)據(jù)返回到計算機中
- //調(diào)試工具:kiel_C 串口調(diào)試助手
- //程序制作人:張建剛
- //時間 :2009年04月26日
- //==========================================================================
- #include<reg52.h>
- #include<stdio.h>
- #define uchar unsigned char
- #define uint unsigned int
- bit flag;
- uchar r;
- void main()
- {
- r=0; //初始化
- TMOD=0x20;//設(shè)置定時器1為工作方式2
- TH1=0xfd; //定時器裝入初值
- TL1=0xfd;
- TR1=1; //啟動定時器
- REN=1; //串行使能
- SM0=0;
- SM1=1; //通訊方式1,可變波特率
- EA=1; //開總中斷
- ES=1; //開串行中斷
- while(1)
- {
- if(flag==1) //等待收到完成標(biāo)志位
- {
- ES=0; //禁止串行中斷
- flag=0; //接收完成標(biāo)志位置0
- SBUF=r; //將輸入的值返回給計算機
- while(!TI); //等待發(fā)送標(biāo)中斷志位置1
- TI=0; //清除發(fā)送標(biāo)中斷志位
- ES=1;// 開啟串行中斷
- }
- }
- }
- void ser() interrupt 4 //串行中斷服務(wù)子程序 當(dāng)接收中斷標(biāo)志被置1
- { //此時程序?qū)䦂?zhí)行中斷服務(wù)程序
- RI=0; //清除接收中斷標(biāo)志
- P1=SBUF; //將接收到的數(shù)據(jù)送到P1口進行顯示或者作用給外部設(shè)備
- r=SBUF; //將接收到的數(shù)據(jù)送給r定義寄存器
- flag=1; //接收完成標(biāo)志置1
- }
復(fù)制代碼
|
|