單片機(jī)和PC機(jī)串口通訊試驗(yàn)
51單片機(jī)有一個(gè)全雙工的串行通訊口,所以單片機(jī)和電腦之間可以方便地進(jìn)行串口通訊。進(jìn)行串行通訊時(shí)要滿足一定的條件,比如電腦的串口是RS232電平的,而單片機(jī)的串口是TTL電平的,兩者之間必須有一個(gè)電平轉(zhuǎn)換電路,我們采用了專用芯片MAX232進(jìn)行轉(zhuǎn)換,雖然也可以用幾個(gè)三極管進(jìn)行模擬轉(zhuǎn)換,但是還是用專用芯片更簡(jiǎn)單可靠。我們采用了三線制連接串口,也就是說和電腦的9針串口只連接其中的3根線:第5腳的GND、第2腳的RXD、第3腳的TXD。這是最簡(jiǎn)單的連接方法,但是對(duì)我們來說已經(jīng)足夠使用了,電路如下圖所示,MAX232的第10腳和單片機(jī)的11腳連接,第9腳和單片機(jī)的10腳連接,第15腳和單片機(jī)的20腳連接。
串口通訊的硬件電路如上圖所示
在制作電路前我們先來看看要用的MAX232,這里我們不去具體討論它,只要知道它是TTL和RS232電平相互轉(zhuǎn)換的芯片和基本的引腳接線功能就行了。通常我會(huì)用兩個(gè)小功率晶體管加少量的電路去替換MAX232,可以省一點(diǎn),效果也不錯(cuò)(如有興趣可以查看/embed_pic/2006714174051912142.net網(wǎng)站中的相關(guān)資料)。下圖就是MAX232的基本接線圖。
按圖7-3加上MAX232就可以了。這大熱天的拿烙鐵焊焊,還真的是熱氣迫人來呀:P串口座用DB9的母頭,這樣就可以用買來的PC串口延長(zhǎng)線進(jìn)行和電腦相連接,也可以直接接到電腦com口上。
為了能夠在電腦端看到單片機(jī)發(fā)出的數(shù)據(jù),我們必須借助一個(gè)WINDOWS軟件進(jìn)行觀察,這里我們利用一個(gè)免費(fèi)的電腦串口調(diào)試軟件。
; 點(diǎn)擊這里可以下載并運(yùn)行這個(gè)串口調(diào)試軟件,這是一個(gè)綠色的軟件,無需安裝,可以直接在當(dāng)前位置運(yùn)行這個(gè)軟件。軟件界面如上圖,我們先要設(shè)置一下串口通訊的參數(shù),將波特率調(diào)整為4800,勾選十六進(jìn)制顯示。串口選擇為COM1,當(dāng)然將網(wǎng)站提供的51單片機(jī)實(shí)驗(yàn)板的串口也要和電腦的COM1連接,將燒寫有以下程序的單片機(jī)插入單片機(jī)實(shí)驗(yàn)板的萬(wàn)能插座中,并接通51單片機(jī)實(shí)驗(yàn)板的電源。
串口實(shí)驗(yàn)的源程序如下所示:
;這是一個(gè)S51單片機(jī)實(shí)驗(yàn)開發(fā)板向PC機(jī)的串口單向發(fā)送數(shù)據(jù)AF的演示程序
;采用MAX232專用芯片作RS232/TTL電平轉(zhuǎn)換.
;通訊波特率為4800KBPS,只要按下一次K1(就是P3.6引腳變成低電平)
;就發(fā)送一個(gè)16進(jìn)制的AF字符
ORG 0000H
MOV SCON,#50H;設(shè)置成串口1方式
MOV TMOD,#20H;波特率發(fā)生器T1工作在模式2上
MOV PCON,#80H;波特率翻倍為2400x2=4800BPS
MOV TH1,#0F3H;預(yù)置初值(按照波特率2400BPS預(yù)置初值)
MOV TL1,#0F3H;預(yù)置初值(按照波特率2400BPS預(yù)置初值)
SETB TR1;啟動(dòng)定時(shí)器T1
;以上完成通訊初始化設(shè)置
WRIT:JB P3.6,$;判斷K1是否按下,如果沒有按下就等待
ACALL DELAY10;延時(shí)10毫秒消觸點(diǎn)抖動(dòng)
JB P3.6,WRIT;去除干擾信號(hào)
JNB P3.6,$;等待按鍵松開
MOV A,#0AFH;將16進(jìn)制的字符AF發(fā)送到串口去
MOV SBUF,A;將AF通過串口發(fā)送出去
AJMP WRIT
;10毫秒延時(shí)子程序
DELAY10:MOV R4,#20
D2:MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
RET
END
;=============兩機(jī)串口通訊程序(主機(jī))=====================
;
; 功 能: 使用串行中斷,接收數(shù)據(jù)并顯示
; 硬件環(huán)境: 自制單片機(jī)實(shí)驗(yàn)板
; 軟件環(huán)境: 偉福 V3.20
; Create date: 2004_07_26
; First Modify: 2004_07_26
; second Modify:
; Last Modify: 2004_07_26
; Author: Sujiande
;
;===========預(yù)定義===================
LED0 EQU 40H ;預(yù)定義數(shù)碼管
LED1 EQU 41H ;預(yù)定義數(shù)碼管
LED2 EQU 42H ;預(yù)定義數(shù)碼管
LED3 EQU 43H ;預(yù)定義數(shù)碼管
LED4 EQU 44H ;預(yù)定義數(shù)碼管
LED5 EQU 45H ;預(yù)定義數(shù)碼管
LED6 EQU 46H ;預(yù)定義數(shù)碼管
LED7 EQU 47H ;預(yù)定義數(shù)碼管
SDA BIT P0.1 ; 定義數(shù)據(jù)線引腳定義
SCL BIT P0.0 ; 定義時(shí)鐘線引腳定義
;---------------------------
ORG 0000H ;主程序入口
AJMP MAIN ;跳轉(zhuǎn)到主程序
ORG 0100H ;主程序在ROM中存放位置
;===============主程序=====================
MAIN:
MOV LED0,#00H ;賦初值
MOV LED1,#00H
MOV LED2,#16 ;賦初值為16, 數(shù)碼管顯示代碼為: 滅
MOV LED3,#16
MOV LED4,#16
MOV LED5,#16
MOV LED6,#16
MOV LED7,#16
;----------------