導航:首頁 > 操作系統 > 單片機串口菜單設計實驗

單片機串口菜單設計實驗

發布時間:2023-08-08 23:03:33

1. 單片機雙機串口通信程序設計

初始化程序:
BTLEQU2FH;波特率放在內部RAM的2FH單元
MOVTMOD,#21H;T0方式1,16位計數器,T1方式2,串口用
SETBTR0;啟動T0
MOVBTL,#0F3H;波特率設定為1200
MOVSCON,#0C0H;串口方式3,9位數據,禁止接收
接收及驗證程序:
NUMEQU2BH;同步符個數值存放在內部RAM的2BH單元
TEMPEQU2CH
ROM-CH:DB55H,55H,55H,55H,55H,55H,55H,55H,55H,55H
DB55H,55H,55H,55H,55H,55H,55H,55H,55H,55H;20位元組同步符
MIMDB'WSC':3位元組密碼「WSC」
SETBP3.5;置電台收狀態
SETBREN;允許串口接收
A1:MOVNUM,#0;記錄連續到同步符55H的個數
A2:JBRI,A2;串口有數據轉A3
A3:CLRRI;清接收中斷標志
MOVA,SBUF;讀串口數據
CJNEA,#55H,A1;不是同步符轉A1
INCNUM;收到的同步符個數加1
MOVA,NUM;取收到的同步符個數
CJNEA,#5,A2;未收夠連續5個55H轉A2
A4:MOVNUM,#0;密碼驗證,記錄收到密碼位元組數
A5:MOVDPTR,#MIM;密碼字元首址
MOVA,NUM
MOVCA,@A+DPTR;查表取密碼
MOVTEMP,A;保存密碼
JBRI,A6;串口收完一個位元組轉A6

A6:CLRRI;清接收中斷標志
MOVA,SBUF;讀串口數據
CJNEA,TEMP,A4;與密碼不符轉A4
INCNUM;收到的密碼個數加1
MOVA,NUM;取已收到的密碼位元組數
CJNEA,#3,A5;密碼未收完轉A5
發送程序:
CLRP3.5;置電台發狀態
MOVB,#23
MOVDPTR,#ROM-CH
B1:CLRA
MOVCA,@A+DPTR;查表發送同步符和密碼共24位元組
INCDPTR
LCALLSEND-CH;調發送單位元組子程序
DJNZB,B1

CLRA
MOVDPTR,#7000H;外部RAM數據首址,發送外部RAM中的數據到電台
B2:CJNER4,#0,B3
CJNER3,#0,B3;R4R3=發送位元組數
B3:MOVXA,@DPTR;取數據
INCDPTR
LCALLSEND-CH
CJNER3,#0,B4
CJNER4,#0,B5
B4:DECR3
LJMPB2
DECR3
DECR4
LJMPB2

SEND-CH:SETBTB8
MOVSBUF,A
DB0,0,0,0,0,0,0,0
JNBTI,$;延時4μs
CLRTI
RET
結語

2. 單片機串列通信實驗

1、實驗:用單片機串列口,實現兩個實驗台之間的串列通訊。其中一個實驗台作為發送方,
另一側為接收方。發送方讀入按鍵值,並發送給接收方,接收方收到數據後在LED上顯示
2、原理:串列通信是指數據按位順序傳送的通信。串列數據傳送的特點是:通信線路簡單,最多隻需一對傳輸線即可實現通信,成本低但速度慢,其通信線路既能傳送數據信息,又能傳送控制信息。它對信息的傳送格式有固定要求,具體分為非同步和同步兩種信息格式.與此相應有非同步通信和同步通信兩種方式;在串列通信中,對信息的邏輯定義與TTL不兼容,需要進行邏輯電平轉換:計算機與外界的數據傳送大多是串列的,其傳送的距離可以從幾米到幾千公里。單片機中使用的串列通信通常都是非同步方式的
3、實驗目的:1)掌握單片機串列口工作方式的程序設計,及簡易三線式通訊的方法。 2)了解實現串列通訊的硬環境、數據格式的協議、數據交換的協議。 3)學習串口通訊的中斷方式的程序編寫方法
4、參考實現:
http://wenku..com/link?url=uyYKlkBQqwjGl-akFJ3xWa67R814ShF50uwd3

3. 51單片機 串口設計c語言程序簡單設計

第一題,已經測試成功:

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag, a;
sbit d = P0^0;
void init()
{
TMOD = 0x20; //設置定時器1為工作方式2
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1; //開定時器1
REN = 1; //開串口通信.
SM0 = 0; //設置串口通信方式1
SM1 = 1;
EA = 1; //開總中斷.
ES = 1; //開串口中斷.
}
void delay(uint z)
{
uint x, y;
for(x = z; x > 0; x--) for(y = 110; y > 0; y--);
}

void main()
{
init();
a = '4';
while(1) {
if(a == '1') {
d = 0; delay(400);
d = 1; delay(400);
}
else if(a == '2') {
d = 0; delay(200);
d = 1; delay(200);
}
else if(a == '3') {
d = 0; delay(100);
d = 1; delay(100);
}
else if(a == '4') {
d = 1;
}
}
}

void ser() interrupt 4
{
if (TI == 1) {
TI = 0;
}
else if (RI == 1) {
RI = 0;
a = SBUF; //中間變數.
flag = 1;
}
}

4. 單片機串口實驗

;;用單片機口串口通信工作於方式0,串列輸出,
;;再接CD4094或74HC164寄存器實現並出,8個發光管從左到右交替地亮滅
;;P1.0接CD4094的STR作並出允許控制,RXD接DATA,TXD接CLK作時鍾
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 000H
JMP MAIN
ORG 30H
MAIN:
MOV SP,#5FH
MOV SCON,#00H;設串口方式0
MOV A,#80H;最左位先亮
CLR P1.0;關並行輸出
OUT0:
MOV SBUF,A;串出
OUT1:JBC T1,NEXT
JMP OUT1
NEXT:SETB P1.0;並出
CALL DELAY ;延時一會
RR A
CLR P1.0
AJMP OUT0
DELAY: MOV R7,#250
D1: MOV R6,#250
D2: DJNZ R6,D2
DJNZ R7,D1
RET

END

5. 8031雙機串列通信實驗設計

哎直接給我算咯, 串列通信
一、實驗目的
1、掌握串列口工作方式2的程序設計,掌握單片機通信程序編制方法。
2、了解實現串列通信的硬環境,數據格式的協議,數據交換的協議。
3、掌握雙機通信的原理和方法。
二、實驗設備
DVCC模擬系統二套。
三、實驗內容
1、 利用8031單片機串列口,實現雙機通信。將1號實驗機鍵盤上鍵入的數字顯示到2號實驗機的數碼管上。
四、實驗步驟
1、按圖接線
2、兩台DVCC實驗系統處於「P.」狀態下。
3、在1號機上選擇「雙機通信」發送程序,編譯並連接,輸入0D00後,按EXEC鍵。
4、在2號機上選擇「雙機通信」接收程序,編譯並連接,輸入0E30後,按EXEC鍵。
5、從1號機的鍵盤上輸入數字鍵,會顯示在3號機的顯示器上。
五、實驗線路

六、程序框圖

一 工作方式
1)方式 0
當設定SM1、SM0為00時,串列口工作於方式0,在方式0下,RXD為數據輸入/輸出端,TXD為同步脈沖輸出端,發送或接收的數據為8位,低位在前,高位在後,方式0的波特率固定為ƒ /12,也就是每一機器周期傳送一位數據。方式0可以外接移位寄存器,將串列口擴展為並行口,也可以外接同步輸入/輸出設備。

2)方式 1
當設定SM1、SM0為01時,串列口工作方式1。方式1為波特率可變的8位非同步通信方式,由TXD發送RXD接收,一幀數據為10位,1位起始位(低電平),8位數據位(低位在前)和1位停止位(高電平),波特率取決於定時器 的T 溢出率(1/溢出周期)和波特率的選擇位SMOD。
波特率 = *(定時器T 溢出率)

3)方式2和方式3
當設定SM0、SM1為10或11時,串列口工作於方式2或方式3,這兩種方式都是9位非同步通信,僅波特率不同,適用於多機通信。在方式2或方式3下,數據由TXD發送RXD接收,1幀數據為11位,1位起始位(低電平),8位數據位(低位在前),1位可編程位(第9位數據,用作奇偶校驗或地址/數據選擇),1位停止位(高電平)。與方式1相比,多了一位可編程位,發送時,第9位數據為TB8,接收時,第9位數據送入RB8。

方式(2)波特率 = *ƒ
方式(3)波特率 = *(定時器T 溢出率)
二 波特率的設置
Mcs-51系列單片機串列通信的波特率取決於串列口的工作方式。方式0的波特率固定等於ƒ /12,方式2的波特率有兩種:當SMOD=0時,波特率=ƒ /64;當SMOD=1時,波特率=ƒ /32。 SMOD是PCON寄存器的最高位,通過軟體可設置SMOD=0或1,但注意PCON無位定址功能。
當串列口工作於方式1和方式3時,波特率= *定時器T 溢出率/32,其中T 溢出率=1/T 溢出周期。因此,影響波特率的因素除了設定的SMOD值以外,還有T 溢出率,使波特率的設置更靈活,范圍更廣。下面說明溢出率計算和波特率設方法。
1) T 溢出率的計算
串列通信方式1和3 下,使用定時器T 作為波特率發生器。T 可以工作於方式0、方式1和方式2。其中方式2為自動裝入時間常數的8位定時器使用時只需進行初始化,不需要安排中斷服務程序重裝時間常數,因此是一種常用方式。
Mcs-51系列單片機定時器時間計算式為:
T = (2 -N)*12/ƒ
式中:T ——定時器溢出周期
n ——定時器位數
N——時間常數即定時器初值
ƒ ——振盪頻率(2 -N)*12/ƒ
當定時器T 工作於方式2,則有
溢出周期=(2 -N)*12/ƒ
溢出率=1/溢出周期= ƒ /12*(2 -N)
2)波特率的設置:由上述可得當串列口工作於方式1或方式3,定時器T 工作於方式2時。 波特率 = 2 * T 溢出率/32
=2 * ƒ /[32*12(2 -N)
;系統晶振是 6.0 MHz

ORG 0E30H
START:
MOV SP,#60H
mov A,#02H
MOV R0,#79H
MOV @R0,A
INC R0
MOV A,#10H
MOV @R0,A
INC R0
MOV A,#01H
MOV @R0,A
INC R0
MOV A,#03H
MOV @R0,A
INC R0
MOV A,#00H
MOV @R0,A
INC R0
MOV A,#08H
MOV @R0,A
MOV A,#7EH
MOV DPTR,#1FFFH
MOVX @DPTR,A
MOV SCON,#50H ;串口 方式 1
MOV TMOD,#20H ;T1 方式 1
MOV TL1,#0CCH ;波特率 9600 的常數
MOV TH1,#0CCH
SETB TR1 ;開中斷
CLR ET1
CLR ES
WAIT:
JBC RI,DIS_REC ;是否接收到數據
LCALL DISP ;
SJMP WAIT ;
DIS_REC:
MOV A,SBUF ;讀串口接收到的數據
LCALL DATAKEY ;顯示輸入的數字(0-F)
DB 79H,7EH
AJMP WAIT

DATAKEY:MOV R4,A
MOV DPTR,#1FFFH
MOVX A,@DPTR
MOV R1,A
MOV A,R4
MOV @R1,A
CLR A
POP 83H
POP 82H
MOVC A,@A+DPTR
INC DPTR
CJNE A,01H,DATAKEY2
DEC R1
CLR A
MOVC A,@A+DPTR
DATAKEY1:PUSH 82H
PUSH 83H
MOV DPTR,#1FFFH
MOVX @DPTR,A
POP 83H
POP 82H
INC DPTR
PUSH 82H
PUSH 83H
RET
DATAKEY2:DEC R1
MOV A,R1
SJMP DATAKEY1

DISP: SETB 0D4H
MOV R1,#7EH
MOV R2,#20H
MOV R3,#00H
DISP1:
MOV DPTR,#DATACO
MOV A,@R1
MOVC A,@A+DPTR
MOV DPTR,#0FF22H
MOVX @DPTR,A
MOV DPTR,#0FF21H
MOV A,R2
MOVX @DPTR,A
LCALL DELAY
DEC R1
CLR C
MOV A,R2
RRC A
MOV R2,A
JNZ DISP1
CLR 0D4H
RET
DELAY: MOV R7,#03H
DELAY0: MOV R6,#0FFH
DELAY1: DJNZ R6,DELAY1
DJNZ R7,DELAY0
RET
DATACO: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0BFH,0CH,89H,0DEH
END

6. 怎麼配置單片機串口

最近測試涉及到底層串口代碼的修改。經過這次修改,突然發現其實自己對於串口的一些特性以前並不是十分清楚。
首先遇到的一些問題:
1)在使用IO的數據位的時候,沒有考慮校驗位所佔的位數。
2)在設置串口輸入的時候,使用懸空輸入。
關於1),在一次使用STM32串口參數9600,N,8,1與另一個 8051MCU通信的時候發現偶校驗沒有問題,但是無校驗通信就出現異常。但是,當將STM32與電腦通信的時候,偶校驗與無校驗通信又完全都是正確的。8051MCU單獨與電腦通信也都是完全正確的。查看代碼,還真不知道有什麼不對勁的。因為這段代碼,用了很長時間了。後來一個同事看代碼後,提醒說對於數據位的設置,偶校驗和無校驗是一致的,既然沒有數據位,有可能會少一位。從這點看,這段代碼可以修改看看。於是在這個地方,將偶校驗的時候數據位長度設置為9bit,無校驗的時候設置為8bit。重新測試,發現通信正常了。

7. 51單片機串列口實驗virtualterminal窗口在哪裡

1. virtual terminal 默認顯示字元,如果單片機發送的是非顯示字元,褲畝和則虛擬終端不會顯示,會導致用戶認為通訊未通。 運行程序,在虛擬終端窗口裡面點擊右鍵,在彈出菜單裡面: 選HEX DISPLAY MODE,則顯示按十六耐舉進制胡盯顯示,能顯示所有字元。

2.virtual terminal 默認情況下不顯示回顯字元, 運行程序,在虛擬終端窗口裡面點擊右鍵,在彈出菜單裡面: 選Echo Typed Characters 顯示回顯字元

3.virtual terminal 和模擬物理串口COMPIM不能同時使用,同時使用會發生相互影響。

閱讀全文

與單片機串口菜單設計實驗相關的資料

熱點內容
伺服器如何定期執行指令 瀏覽:931
python下載python腳本 瀏覽:297
台達plc遠程編程 瀏覽:263
雲計算的後台伺服器 瀏覽:589
windows7的我的電腦咋創建文件夾 瀏覽:492
去視頻水印的app哪個好用 瀏覽:384
doc轉為pdf 瀏覽:48
華為加密壁紙怎麼提取 瀏覽:52
曲線命令的描述 瀏覽:454
php模板怎麼修改 瀏覽:999
單片機和微機編程的區別 瀏覽:642
金牛期貨哪個app好 瀏覽:803
程序員越老越貶值嗎 瀏覽:211
安卓手機用計算機如何隱藏應用 瀏覽:459
網吧伺服器如何架設 瀏覽:322
垃圾壓縮罐用電安全 瀏覽:621
b150能用什麼伺服器cpu 瀏覽:477
支付寶批量付款app哪個好 瀏覽:849
java開源社區源碼 瀏覽:475
cad哪個命令和滾輪一樣縮放 瀏覽:986