在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > C51單片機和電腦串口通信電路圖與源碼

            C51單片機和電腦串口通信電路圖與源碼

            作者: 時間:2011-02-27 來源:網(wǎng)絡(luò) 收藏

            C51和電腦串口通信電路圖與源碼
            51有一個全雙工的串行通訊口,所以和電腦之間可以方便地進行串口通訊。進行串行通訊時要滿足一定的條件,比如電腦的串口是RS232電平的,而單片機的串口是TTL電平的,兩者之間必須有一個電平轉(zhuǎn)換電路,我們采用了專用芯片MAX232進行轉(zhuǎn)換,雖然也可以用幾個三極管進行模擬轉(zhuǎn)換,但是還是用專用芯片更簡單可靠。我們采用了三線制連接串口,也就是說和電腦的9針串口只連接其中的3根線:第5腳的GND、第2腳的RXD、第3腳的TXD。這是最簡單的連接方法,但是對我們來說已經(jīng)足夠使用了,電路如下圖所示,MAX232的第10腳和單片機的11腳連接,第9腳和單片機的10腳連接,第15腳和單片機的20腳連接。


            串口通訊的硬件電路如上圖所示
            在制作電路前我們先來看看要用的MAX232,這里我們不去具體討論它,只要知道它是TTL和RS232電平相互轉(zhuǎn)換的芯片和基本的引腳接線功能就行了。通常我會用兩個小功率晶體管加少量的電路去替換MAX232,可以省一點,效果也不錯,下圖就是MAX232的基本接線圖。



            按圖7-3加上MAX232就可以了。這大熱天的拿烙鐵焊焊,還真的是熱氣迫人來呀:P串口座用DB9的母頭,這樣就可以用買來的PC串口延長線進行和電腦相連接,也可以直接接到電腦com口上。



            為了能夠在電腦端看到單片機發(fā)出的數(shù)據(jù),我們必須借助一個WINDOWS軟件進行觀察,這里我們利用一個免費的電腦串口調(diào)試軟件。本串口軟件在本網(wǎng)站www.mcujl.com可以找到
            軟件界面如上圖,我們先要設(shè)置一下串口通訊的參數(shù),將波特率調(diào)整為4800,勾選十六進制顯示。串口選擇為COM1,當(dāng)然將網(wǎng)站提供的實驗板的串口也要和電腦的COM1連接,將燒寫有以下程序的單片機插入單片機實驗板的萬能插座中,并接通實驗板的電源。

            串口實驗的源程序如下所示:


            ;這是一個S實驗開發(fā)板向PC機的串口單向發(fā)送數(shù)據(jù)AF的演示程序
            ;采用MAX232專用芯片作RS232/TTL電平轉(zhuǎn)換.
            ;通訊波特率為4800KBPS,只要按下一次K1(就是P3.6引腳變成低電平)
            ;就發(fā)送一個16進制的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毫秒消觸點抖動
            JB P3.6,WRIT;去除干擾信號
            JNB P3.6,$;等待按鍵松開
            MOV A,#0AFH;將16進制的字符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ù)據(jù)并顯示
            ; 硬件環(huá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 ; 定義時鐘線引腳定義
            ;---------------------------
            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 ; 給堆棧指針賦初值
            ;--------------------------
            ; 使用定時器1,作為波特率發(fā)生器,設(shè)定波特率=9600,
            ; 定時器初值為:FAH
            ; 串行控制器設(shè)置:SM0=0,SM1=1,SM2=0,REN=1,TB8=0,
            ; RB8=0,TI=0,RI=0 即0101 0000B
            ; 波特率加倍
            ;-----------------------------
            MOV TMOD,#20H ;設(shè)置定時器1,工作方式2
            MOV TH1,#0FAh ;賦初值: FA
            MOV TL1,#0FAh ;賦初值: FA
            MOV SCON, #50h ;設(shè)置串行口控制寄存器
            MOV PCON, #80h ;設(shè)置電源控制寄存器, 讓波特率加倍(2X)
            SETB TR1 ;啟動定時
            ;*****************主程序結(jié)束************************
            LP8: MOV A,R1 ;將1的數(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)延時子程序
            AJMP LP8
            ;=================拆分程序=====================
            SEPERATE: ANL A,#0Fh ;與操作得到個位數(shù)據(jù)
            MOV LED0,A ;個位送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 ; 進棧暫存A值
            MOV R0,#8 ; 循環(huán)8次
            CLR C ;清進位標(biāo)志
            CLR SCL ;時鐘線,先鉗位為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
            ;=============延時子程序===============
            DELAY_1S:
            MOV R7,#0ffH
            LOOP7: MOV R6,#0ffH
            LOOP6: NOP
            NOP
            NOP
            NOP
            NOP
            NOP
            DJNZ R6,LOOP6
            DJNZ R7,LOOP7
            RET
            ;------------------------------
            END

            ;=============兩機串口通訊程序(從機)=====================
            ; 功 能: 使用串行中斷,接收數(shù)據(jù)并顯示
            ; 硬件環(huá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 ; 定義時鐘線引腳定義
            ;---------------------------
            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 ; 給堆棧指針賦初值
            ;--------------------------------------------
            ; 使用定時器1,作為波特率發(fā)生器,設(shè)定波特率=9600,
            ; 定時器初值為:FAH
            ; 串行控制器設(shè)置:SM0=0,SM1=1,SM2=0,REN=1,TB8=0,
            ; RB8=0,TI=0,RI=0 即0101 0000B
            ; 波特率加倍
            ;---------------------------------------------
            MOV TMOD,#20H ;設(shè)置定時器1,工作方式2
            MOV TH1,#0FAh ;賦初值: FA
            MOV TL1,#0FAh ;賦初值: FA
            MOV SCON, #50h ;設(shè)置串行口控制寄存器
            MOV PCON, #80h ;設(shè)置電源控制寄存器, 讓波特率加倍(2X)
            ;---------------------------------------
            SETB EA ; 啟動總中斷
            SETB ES ; 啟動串行中斷
            SETB TR1 ;啟動定時
            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 ;與操作得到個位數(shù)據(jù)
            MOV LED0,A ;個位送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 ; 進棧暫存A值
            MOV R0,#8 ; 循環(huán)8次
            CLR C ;清進位標(biāo)志
            CLR SCL ;時鐘線,先鉗位為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
            ;=============延時子程序===============
            DELAY_1S:
            MOV R7,#0ffH
            LOOP7: MOV R6,#0ffH
            LOOP6: NOP
            NOP
            NOP
            NOP
            NOP
            NOP
            DJNZ R6,LOOP6
            DJNZ R7,LOOP7
            RET
            ;------------------------------
            END

            電路圖符號相關(guān)文章:電路圖符號大全




            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉