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