前言:站長在學(xué)習(xí)這個單片機(jī)和PC串口通訊實(shí)驗(yàn)共花費(fèi)了整整3個星期的時間,期間翻了好幾本書和上網(wǎng)搜索了不少相關(guān)資料,這也是我自學(xué)單片機(jī)過程中的一個里程碑。串口通訊對單片機(jī)而言意義重大,不但可以實(shí)現(xiàn)將單片機(jī)的數(shù)據(jù)傳輸?shù)诫娔X端,而且也能實(shí)現(xiàn)電腦對單片機(jī)的控制,比如可以很直觀地把紅外遙控器鍵值的數(shù)據(jù)碼顯示在電腦上,可以使編寫紅外遙控程序時方便不少,起到仿真器的某些功效。
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腳連接。電子制作實(shí)驗(yàn)室網(wǎng)站的提供的帶擴(kuò)展元件的51單片機(jī)實(shí)驗(yàn)板上已經(jīng)裝配好了全部硬件。
九針串口Serial (PC 9)
|
|
1 |
CD |
載波檢測 |
2 |
RXD |
接收數(shù)據(jù) |
3 |
TXD |
發(fā)送數(shù)據(jù) |
4 |
DTR |
數(shù)據(jù)終端準(zhǔn)備好 |
5 |
GND |
地 |
6 |
DSR |
設(shè)備準(zhǔn)備好 |
7 |
RTS |
發(fā)送請求 |
8 |
CTS |
清除發(fā)送 |
9 |
RI |
鈴聲指示 |
為了能夠在電腦端看到單片機(jī)發(fā)出的數(shù)據(jù),所以我們還要借助一個電腦串口調(diào)試軟件,好在網(wǎng)絡(luò)上已經(jīng)有了現(xiàn)成的的調(diào)試軟件,點(diǎn)擊這里可以下載這個串口調(diào)試軟件。
;這是一個89C51單片機(jī)向PC串口單向發(fā)送數(shù)據(jù)AF的程序 ;通過MAX232專用芯片作RS232/TTL電平轉(zhuǎn)換. ;波特率4800KBPS,只要P3.2引腳變成低電平(也就是按下紅外遙控器的任意鍵),就連續(xù)發(fā)送16進(jìn)制的AF字符(就是一個8位2進(jìn)制的數(shù)值) ORG 0000H AJMP MAIN;轉(zhuǎn)入主程序 ORG 0003H ;外部中斷P3.2腳INT0入口地址 AJMP INT ;轉(zhuǎn)入外部中斷服務(wù)子程序(解碼程序) ;以下為主程序進(jìn)行CPU中斷方式設(shè)置 MAIN:SETB EA ;打開CPU總中斷請求 SETB IT0 ;設(shè)定INT0的觸發(fā)方式為脈沖負(fù)邊沿觸發(fā) SETB EX0 ;打開INT0中斷請求 AJMP $ INT: CLR EA ;暫時關(guān)閉CPU的所有中斷請求
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 MOV A,#0AFH;將16進(jìn)制的字符AF發(fā)送到串口去 MOV SBUF,A;將遙控器鍵值通過串口發(fā)送出去 SETB EA ;允許中斷 RETI ;退出解碼子程序 END |