乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      單片機(jī)和Pc機(jī)串口通信<轉(zhuǎn)>_飛鳥(niǎo)留痕

       水無(wú)影 2009-07-18
      單片機(jī)和Pc機(jī)串口通信<轉(zhuǎn)>
      2007-08-01 10:41
      單片機(jī)和Pc機(jī)串口通信<轉(zhuǎn)>
      51單片機(jī)有一個(gè)全雙工的串行通訊口,所以單片機(jī)和電腦之間可以方便地進(jìn)行串口通訊。進(jìn)行串行通訊時(shí)要滿足一定的條件,比如電腦的串口是RS232電平的,而單片機(jī)的串口是TTL電平的,兩者之間必須有一個(gè)電平轉(zhuǎn)換電路,我們采用了專(zhuān)用芯片MAX232進(jìn)行轉(zhuǎn)換,雖然也可以用幾個(gè)三極管進(jìn)行模擬轉(zhuǎ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腳連接。

      串口通訊的硬件電路如上圖所示

      串口通訊的硬件電路如上圖所示


        在制作電路前我們先來(lái)看看要用的MAX232,這里我們不去具體討論它,只要知道它是TTL和RS232電平相互轉(zhuǎn)換的芯片和基本的引腳接線功能就行了。通常我會(huì)用兩個(gè)小功率晶體管加少量的電路去替換MAX232,可以省一點(diǎn),效果也不錯(cuò)(如有興趣可以查看http://www.網(wǎng)站中的相關(guān)資料)。下圖就是MAX232的基本接線圖。





      按圖7-3加上MAX232就可以了。這大熱天的拿烙鐵焊焊,還真的是熱氣迫人來(lái)呀:P串口座用DB9的母頭,這樣就可以用買(mǎi)來(lái)的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è)綠色的軟件,無(wú)需安裝,可以直接在當(dāng)前位置運(yùn)行這個(gè)軟件。軟件界面如上圖,我們先要設(shè)置一下串口通訊的參數(shù),將波特率調(diào)整為4800,勾選十六進(jìn)制顯示。串口選擇為COM1,當(dāng)然將網(wǎng)站提供的51單片機(jī)實(shí)驗(yàn)板的串口也要和電腦的COM1連接,將燒寫(xiě)有以下程序的單片機(jī)插入單片機(jī)實(shí)驗(yàn)板的萬(wàn)能插座中,并接通51單片機(jī)實(shí)驗(yàn)板的電源。



      串口實(shí)驗(yàn)的源程序如下所示:



      ;這是一個(gè)S51單片機(jī)實(shí)驗(yàn)開(kāi)發(fā)板向PC機(jī)的串口單向發(fā)送數(shù)據(jù)AF的演示程序

      ;采用MAX232專(zhuān)用芯片作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是否按下,如果沒(méi)有按下就等待

      ACALL DELAY10;延時(shí)10毫秒消觸點(diǎn)抖動(dòng)

      JB P3.6,WRIT;去除干擾信號(hào)

      JNB P3.6,$;等待按鍵松開(kāi)



      MOV A,#0AFH;將16進(jìn)制的字符AF發(fā)送到串口去

      MOV SBUF,A;將AF通過(guò)串口發(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

      ;--------------------

      ;MOV DPTR,#TABLE ; 賦顯示代碼首地址

      MOV R1,#00H ; 給R1賦初值00H

      ACALL DISPLAY ; 調(diào)顯示子程序

      MOV SP, #30H ; 給堆棧指針賦初值

      ;--------------------------

      ; 使用定時(shí)器1,作為波特率發(fā)生器,設(shè)定波特率=9600,

      ; 定時(shí)器初值為:FAH

      ; 串行控制器設(shè)置:SM0=0,SM1=1,SM2=0,REN=1,TB8=0,

      ; RB8=0,TI=0,RI=0 即0101 0000B

      ; 波特率加倍

      ;-----------------------------

      MOV TMOD,#20H ;設(shè)置定時(shí)器1,工作方式2

      MOV TH1,#0FAh ;賦初值: FA

      MOV TL1,#0FAh ;賦初值: FA

      MOV SCON, #50h ;設(shè)置串行口控制寄存器

      MOV PCON, #80h ;設(shè)置電源控制寄存器, 讓波特率加倍(2X)

      SETB TR1 ;啟動(dòng)定時(shí)

      ;*****************主程序結(jié)束************************

      LP8: MOV A,R1 ;將R1的數(shù)據(jù)裝到A中

      ;-----------------------

      MOV SBUF,A ;將A的數(shù)據(jù)送到緩沖區(qū)

      JNB TI,$ ;等待數(shù)據(jù)發(fā)送完畢

      CLR TI ;清發(fā)送中斷標(biāo)志

      ;-----------------------

      INC R1

      CJNE R1,#99,LP3

      MOV R1,#00H



      LP3: ACALL SEPERATE ;調(diào)拆分程序

      ACALL DISPLAY ;調(diào)顯示子程序

      ACALL DELAY_1S ;調(diào)延時(shí)子程序

      AJMP LP8

      ;=================拆分程序=====================

      SEPERATE: ANL A,#0Fh ;與操作得到個(gè)位數(shù)據(jù)

      MOV LED0,A ;個(gè)位送LED0

      MOV A,R1

      ANL A,#0F0H ;與操作得到十位數(shù)據(jù)

      SWAP A

      MOV LED1,A ;十位送LED1

      RET

      ;===============顯示子程序======================



      DISPLAY:

      MOV DPTR,#TABLE ; 賦顯示代碼首地址



      MOV A,LED0 ;查表數(shù)據(jù)送A

      MOVC A,@A+DPTR ;查表,得到顯示代碼

      ACALL SHIFT ;調(diào)移位子程序



      MOV A,LED1

      MOVC A,@A+DPTR

      ACALL SHIFT



      MOV A,LED2

      MOVC A,@A+DPTR

      ACALL SHIFT



      MOV A,LED3

      MOVC A,@A+DPTR

      ACALL SHIFT



      MOV A,LED4

      MOVC A,@A+DPTR

      ACALL SHIFT



      MOV A,LED5

      MOVC A,@A+DPTR

      ACALL SHIFT



      MOV A,LED6

      MOVC A,@A+DPTR

      ACALL SHIFT



      MOV A,LED7

      MOVC A,@A+DPTR

      ACALL SHIFT

      RET

      ;---------顯示代碼表---------

      TABLE: DB 11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H ;0,1,2,3,4,5,6,7,8,9,

      DB 50H,1CH,39H,16H,38H,78H, 0FFH,0FEH,0EFH ;10,11,12,13,14,15,滅,-



      ;================移位子程序============================

      SHIFT: PUSH A ; 進(jìn)棧暫存A值

      MOV R0,#8 ; 循環(huán)8次

      CLR C ;清進(jìn)位標(biāo)志

      CLR SCL ;時(shí)鐘線,先鉗位為0

      LP2: RLC A

      MOV SDA,C

      NOP

      NOP

      SETB SCL

      NOP

      NOP

      CLR SCL

      NOP

      NOP

      DJNZ R0,LP2

      POP A ; 出?;謴?fù)A值

      RET

      ;=============延時(shí)子程序===============

      DELAY_1S:

      MOV R7,#0ffH

      LOOP7: MOV R6,#0ffH

      LOOP6: NOP

      NOP

      NOP

      NOP

      NOP

      NOP

      DJNZ R6,LOOP6

      DJNZ R7,LOOP7

      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 0023H ;中斷入口地址

      AJMP S_INT ;跳轉(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

      ;------------------------------

      MOV DPTR,#TABLE ; 賦顯示代碼首地址

      ACALL DISPLAY ; 調(diào)顯示子程序

      MOV SP, #30H ; 給堆棧指針賦初值

      ;--------------------------------------------

      ; 使用定時(shí)器1,作為波特率發(fā)生器,設(shè)定波特率=9600,

      ; 定時(shí)器初值為:FAH

      ; 串行控制器設(shè)置:SM0=0,SM1=1,SM2=0,REN=1,TB8=0,

      ; RB8=0,TI=0,RI=0 即0101 0000B

      ; 波特率加倍

      ;---------------------------------------------

      MOV TMOD,#20H ;設(shè)置定時(shí)器1,工作方式2

      MOV TH1,#0FAh ;賦初值: FA

      MOV TL1,#0FAh ;賦初值: FA

      MOV SCON, #50h ;設(shè)置串行口控制寄存器

      MOV PCON, #80h ;設(shè)置電源控制寄存器, 讓波特率加倍(2X)

      ;---------------------------------------

      SETB EA ; 啟動(dòng)總中斷

      SETB ES ; 啟動(dòng)串行中斷

      SETB TR1 ;啟動(dòng)定時(shí)

      AJMP $ ; 等待中斷



      ;*****************主程序結(jié)束************************





      ;===============中斷服務(wù)程序=============================

      S_INT:

      MOV R1, SBUF ;將緩沖區(qū)的數(shù)據(jù)送到R1



      ACALL SEPERATE ;調(diào)拆分程序

      ACALL DISPLAY ;調(diào)顯示子程序

      CLR RI ;清接收中斷標(biāo)志

      RETI ;中斷返回



      ;=================拆分程序=====================

      SEPERATE: MOV A,R1

      ANL A,#0Fh ;與操作得到個(gè)位數(shù)據(jù)

      MOV LED0,A ;個(gè)位送LED0

      MOV A,R1

      ANL A,#0F0H ;與操作得到十位數(shù)據(jù)

      SWAP A ;

      MOV LED1,A ;十位送LED1

      RET







      ;===============顯示子程序======================



      DISPLAY:

      MOV A,LED0 ;查表數(shù)據(jù)送A

      MOVC A,@A+DPTR ;查表,得到顯示代碼

      ACALL SHIFT ;調(diào)移位子程序



      MOV A,LED1

      MOVC A,@A+DPTR

      ACALL SHIFT



      MOV A,LED2

      MOVC A,@A+DPTR

      ACALL SHIFT



      MOV A,LED3

      MOVC A,@A+DPTR

      ACALL SHIFT



      MOV A,LED4

      MOVC A,@A+DPTR

      ACALL SHIFT



      MOV A,LED5

      MOVC A,@A+DPTR

      ACALL SHIFT



      MOV A,LED6

      MOVC A,@A+DPTR

      ACALL SHIFT



      MOV A,LED7

      MOVC A,@A+DPTR

      ACALL SHIFT

      RET

      ;---------顯示代碼表---------

      TABLE: DB 11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H ;0,1,2,3,4,5,6,7,8,9,

      DB 50H,1CH,39H,16H,38H,78H, 0FFH,0FEH,0EFH ;10,11,12,13,14,15,滅,-



      ;================移位子程序============================

      SHIFT: PUSH A ; 進(jìn)棧暫存A值

      MOV R0,#8 ; 循環(huán)8次

      CLR C ;清進(jìn)位標(biāo)志

      CLR SCL ;時(shí)鐘線,先鉗位為0

      LP2: RLC A

      MOV SDA,C

      NOP

      NOP

      SETB SCL

      NOP

      NOP

      CLR SCL

      NOP

      NOP

      DJNZ R0,LP2

      POP A ; 出?;謴?fù)A值

      RET

      ;=============延時(shí)子程序===============

      DELAY_1S:

      MOV R7,#0ffH

      LOOP7: MOV R6,#0ffH

      LOOP6: NOP

      NOP

      NOP

      NOP

      NOP

      NOP

      DJNZ R6,LOOP6

      DJNZ R7,LOOP7

      RET

      ;------------------------------

      END

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類(lèi)似文章 更多