51單片機(jī)有一個全雙工的串行通訊口,所以單片機(jī)和電腦之間可以方便地進(jìn)行串口通訊。進(jìn)行串行通訊時要滿足一定的條件,比如電腦的串口是RS232電平的,而單片機(jī)的串口是TTL電平的,兩者之間必須有一個電平轉(zhuǎn)換電路,我們采用了專用芯片MAX232進(jìn)行轉(zhuǎn)換,雖然也可以用幾個三極管進(jìn)行模擬轉(zhuǎn)換,但是還是用專用芯片更簡單可靠。我們采用了三線制連接串口,也就是說和電腦的9針串口只連接其中的3根線:第5腳的GND、第2腳的RXD、第3腳的TXD。這是最簡單的連接方法,但是對我們來說已經(jīng)足夠使用了,電路如下圖所示,MAX232的第10腳和單片機(jī)的11腳連接,第9腳和單片機(jī)的10腳連接,第15腳和單片機(jī)的20腳連接。網(wǎng)站提供的帶擴(kuò)展元件的51單片機(jī)實(shí)驗板上已經(jīng)裝配好了全部硬件。
串口通訊的硬件電路如上圖所示
為了能夠在電腦端看到單片機(jī)發(fā)出的數(shù)據(jù),我們必須借助一個WINDOWS軟件進(jìn)行觀察,這里我們利用一個免費(fèi)的電腦串口調(diào)試軟件。
可以到下載頁面下載并運(yùn)行這個串口調(diào)試軟件,這是一個綠色的軟件,無需安裝,可以直接在當(dāng)前位置運(yùn)行這個軟件。軟件界面如上圖,我們先要設(shè)置一下串口通訊的參數(shù),將波特率調(diào)整為4800,勾選十六進(jìn)制顯示。串口選擇為COM1,當(dāng)然將網(wǎng)站提供的51單片機(jī)實(shí)驗板的串口也要和電腦的COM1連接,將燒寫有以下程序的單片機(jī)插入單片機(jī)實(shí)驗板的萬能插座中,并接通51單片機(jī)實(shí)驗板的電源,這時只要按下K1一次,在串口調(diào)試助手軟件的接收區(qū)界面中就會增加一個“AF”字符,表示單片機(jī)向電腦發(fā)送“AF”字符成功。串口實(shí)驗的源程序如下所示:
;這是一個AT89C51單片機(jī)實(shí)驗開發(fā)板向PC機(jī)的串口單向發(fā)送數(shù)據(jù)AF的演示程序 ;采用MAX232專用芯片作RS232/TTL電平轉(zhuǎn)換. ;通訊波特率為4800KBPS,只要按下一次K1(就是P3.6引腳變成低電平) ;就發(fā)送一個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;啟動定時器T1 ;以上完成通訊初始化設(shè)置
WRIT:JB P3.6,$;判斷K1是否按下,如果沒有按下就等待 ACALL DELAY10;延時10毫秒消觸點(diǎn)抖動 JB P3.6,WRIT;去除干擾信號 JNB P3.6,$;等待按鍵松開
MOV A,#0AFH;將16進(jìn)制的字符AF發(fā)送到串口去 MOV SBUF,A;將AF通過串口發(fā)送出去
AJMP WRIT
;10毫秒延時子程序 DELAY10:MOV R4,#20 D2:MOV R5,#248 DJNZ R5,$ DJNZ R4,D2 RET
END
常用的各種波特率設(shè)置表
|