国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PC 機與單片機通信(RS232 協(xié)議)

這篇具有很好參考價值的文章主要介紹了PC 機與單片機通信(RS232 協(xié)議)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

PC 機與單片機通信(RS232 協(xié)議)

目錄:

1、單片機串口通信的應用

2、PC控制單片機IO口輸出

3、單片機控制實訓指導及綜合應用實例

4、單片機給計算機發(fā)送數(shù)據(jù):

[實驗任務]

單片機串口通信的應用,通過串口,我們的個人電腦和單片機系統(tǒng)進行通信。

個人電腦作為上位機,向下位機單片機系統(tǒng)發(fā)送十六進制或者ASCLL碼,單片機

系統(tǒng)接收后,用LED顯示接收到的數(shù)據(jù)和向上位機發(fā)回原樣數(shù)據(jù)。

[硬件電路圖]

PC 機與單片機通信(RS232 協(xié)議),單片機畢業(yè)設計,mongodb,數(shù)據(jù)庫

[實驗原理]

RS-232是正式公布的串行總線標準,也是目前最常用的串行接口標準,用來實現(xiàn)計算機與計算機之間、計算機與外設之間的數(shù)據(jù)通訊。RS-232串行接口總線適用于:設備之間的通訊距離不大于15m,傳輸速率最大為20kBps。RS-232協(xié)議以-5V-15V表示邏輯1;以+5V-15V 表示邏輯0。 我們是用MAX232芯片將RS232電平轉換為TTL電平的。 一個完整的RS-232接口有22根線,采用標準的25芯插頭座。我們在 這里使用的是簡化的9芯插頭座。注意我們在這里使用的晶振是11.0592M的,而不是12M。因為波特率的設置需要11.0592M的?!按谡{試助手V2.1.exe” 軟件的使用很簡單,只要將串口選擇‘CMO1’波特率設置為‘9600’ 數(shù)據(jù)位為 8 位。打開串口(如果關閉)。然后在發(fā)送區(qū)里輸入要發(fā)送的數(shù)據(jù),單擊手動發(fā)送就將數(shù)據(jù)發(fā)送出去了。注意,如果選中‘十六進制發(fā)送’那么發(fā)送的數(shù)據(jù)是十六進制的,必須輸入兩位數(shù)據(jù)。如果沒有選中,則發(fā)送的是ASCLL碼,那么單片機控制的數(shù)碼管將顯示ASCLL碼值。

數(shù)字

二進制

Px0~Px7

Abcdefg p

十六進制

0

00111111

00000011

11111100

0xco

1

00000110

10011111

01100000

0xf9

2

01011011

00100101

11011010

0xa4

3

01001111

00001101

11110010

0xb0

4

00110110

10010011

01101100

0x99

5

01101101

01001001

10110110

0x92

6

01111101

01000001

10111110

0x82

7

00000111

00011111

11100000

0xf8

8

01111111

00000001

11111110

0x80

9

01101111

00001001

11110110

0x90

A

01110111

00010001

11101110

0x88

B

01111100

11000001

00111110

0x83

C

00111001

01100011

10011100

0xc6

D

01011110

10000101

01111010

0xa1

E

01111001

01100001

10011110

0x86

F

01110001

01110001

10001110

0x8e

????????????????????????? ??? ASCII常用代碼表

字符

代碼

字符

代碼

字符

代碼

字符

代碼

字符

32

52

4

72

H

92

\

112

p

33

!

53

5

73

I

93

]

113

q

34

54

6

74

J

94

^

114

r

35

#

55

7

75

K

95

_

115

s

36

$

56

8

76

L

96

`

116

t

37

%

57

9

77

M

97

a

117

u

38

&

58

:

78

N

98

b

118

v

39

59

;

79

O

99

c

119

w

40

(

60

<??

80

P

100

d

120

x

41

)

61

=

81

Q

101

e

121

y

42

*

62

>??

82

R

102

f

122

z

43

+

63

?

83

S

103

g

123

{

44

,

64

@

84

T

104

h

124

|

45

-

65

A

85

U

105

i

125

}

46

.

66

B

86

V

106

j

126

~

47

/

67

C

87

W

107

k

48

0

68

D

88

X

108

l

49

1

69

E

89

Y

109

m

50

2

70

F

90

Z

110

n

51

3

71

G

91

[

111

o

[C語言源程序]

#include "reg52.h" //包函8051 內部資源的定義

unsigned char dat; //用于存儲單片機接收發(fā)送緩沖寄存器SBUF里面的內容

sbit gewei=P2^4; //個位選通定義

sbit shiwei=P2^5; //十位選通定義

sbit baiwei=P2^6; //百位選通定義

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}; //1~10

void Delay(unsigned int tc) //延時程序

{

while( tc != 0 )

{unsigned int i;

for(i=0; i<100; i++);

tc--;}

}

void LED() //LED顯示接收到的數(shù)據(jù)(十進制)

{

gewei=0; P0=table[dat%10]; Delay(10); gewei=1;

shiwei=0; P0=table[dat/10]; Delay(10); shiwei=1;

baiwei=0; P0=table[dat/100]; Delay(10); baiwei=1;

}

///功能:串口初始化,波特率9600,方式1/

void Init_Com(void)

{

TMOD = 0x20;

PCON = 0x00;

SCON = 0x50;

TH1 = 0xFd;

TL1 = 0xFd;

TR1 = 1;

}

/主程序功能:實現(xiàn)接收數(shù)據(jù)并把接收到的數(shù)據(jù)原樣發(fā)送回去///

void main()

{

Init_Com();//串口初始化

while(1)

{?????????????????????

if ( RI ) //掃描判斷是否接收到數(shù)據(jù),

{

dat = SBUF; //接收數(shù)據(jù)SBUF賦與dat

RI=0; //RI 清零。

SBUF = dat; //在原樣把數(shù)據(jù)發(fā)送回去(接收數(shù)據(jù)為發(fā)送數(shù)據(jù)的ASCII碼,如發(fā)送q顯示為113)

}

LED(); //顯示接收到的數(shù)據(jù)

}

}

///這一個例子是以掃描的方式編寫的,還可以以中斷的方式編寫,請大家思考//

[實驗任務]PC控制單片機IO口輸出

#include "reg52.h" //包函8051 內部資源的定義

unsigned char dat; //用于存儲單片機接收發(fā)送緩沖寄存器SBUF里面的內容

void Delay(unsigned int tc) //延時程序

{

while( tc != 0 )

{unsigned int i;

for(i=0; i<100; i++);

tc--;}

}

///功能:串口初始化,波特率9600,方式1/

void Init_Com(void)

{

TMOD = 0x20;

PCON = 0x00;

SCON = 0x50;

TH1 = 0xFd;

TL1 = 0xFd;

TR1 = 1;

}

/主程序功能:實現(xiàn)接收數(shù)據(jù)并把接收到的數(shù)據(jù)原樣發(fā)送回去///

void main()

{

Init_Com();//串口初始化

while(1)

{?????????????????????

if ( RI ) //掃描判斷是否接收到數(shù)據(jù),

{

dat = SBUF; //接收數(shù)據(jù)SBUF賦與dat

if(dat==0x00)???? //如果PC發(fā)送十六進制00,單片機P1口全亮。

P1=0x00;

else if(dat==0x01)

P1=0x01;

else if(dat==0x02)

P1=0x02;

else if(dat==0x03)

P1=0x03;

else if(dat==0x04)

P1=0x04;

RI=0; //RI 清零。

SBUF = dat; //在原樣把數(shù)據(jù)發(fā)送回去(接收數(shù)據(jù)為發(fā)送數(shù)據(jù)的ASCII碼,如發(fā)送q顯示為113)

}

}

}

[實驗任務]單片機控制實訓指導及綜合應用實例

#include "reg52.h" //包函AT89S52 內部資源的定義

#define uchar unsigned char????????????????? //宏定義

uchar led [10]={0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef};??? //數(shù)字1~10,字符串

uchar led1[64];?? //存儲接收數(shù)據(jù)

unsigned int i,j,t,k;

sbit P32=P3^2;

void scjs(void)interrupt 4 //定義中斷

{

ES=0;// 使能串行口的中斷

k=1;

while(1)

{

RI=0;

led1[k-1]=SBUF;?????? //將接收數(shù)據(jù)送段碼表

k++;

TH0=0x3c; //t0定時50sm內接收不到數(shù)據(jù)跳過接收

TL0=0xb0;

TR0=1;

while(!RI)

{

if(!TF0) goto FH;

}

}

FH:TF0=0;//TF0不清零不能重新接收

?? TR0=0;

?? P32=1;

for(j=1;j<k;j++)

{

SBUF=led[j-1];//數(shù)據(jù)送回給pc

while(!TI);

TI=0;

}

P32=0;

}

delay(t)

{

ES=1;

SCON=0x50;

for(i=0;i<t;i++);

ES=0;

SCON=0x00;

}

void main (void)

{

int a,c;

TMOD=0x21;

TH1=0Xfd;

TL1=0xfd;

SCON=0x50;

PCON=0x00;

IE=0x90;

TR1=1;

k=1;

P32=0;

while(1)

{

ES=0;

SCON=0x00;

for(a=0;a<=k+1/k*8;a++)

{

for(c=5;c>=0;c--)

{

if(a+c<k+1/k*8+1)

{

if(k==1)SBUF=led[a+c];

else SBUF=led1[a+c];

}

else SBUF=0x00;

while(!TI);

TI=0;

}

delay(39000);

}

}

}
#include "reg52.h" //包函8051 內部資源的定義

#define uchar unsigned char

sbit P3_2=P3^2;

uchar zdzt=0x0c;

uchar zsgw=0x02;

uchar zsdw=0x00;

uchar bs=0;

uchar zqsbw=0;

uchar zqssw=0;

uchar zqsgw=0;

uchar yxsj=0x11;

uchar zs=20;

int zqs=0;

uchar zqsgzj=0x00;

uchar zqsdzj=0x00;

uchar zsscgw=0x1f;

uchar zsscdw=0x00;

uchar bzsj;

uchar ztsj;

void key (void);

void keyprc();

void binbcd();

void disp();

void delay();

code uchar tab[13]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x39};

code uchar zssc[160]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,

0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,

0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,

0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,

0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,};

void key(void)

{

TR0=0;

if(!(P2&0X01))

{

delay();

while(!(P2&0X01));

zdzt=0x0a;

disp();

}

else if(!(P3&0X08))

{

delay();

while(!(P3&0X08));

zdzt=0x0b;

disp();

}

else if(!(P3&0X10))

{

delay();

while(!(P3&0X10));

zs=zs+1;

keyprc();

disp();

}

else if(!(P2&0X02))

{

delay();

while(!(P2&0X02));

zs=zs-1;

keyprc();

disp();

}

}

void keyprc()

{

if(zs<20)

zs=20;

if(zs>99)

zs=99;

zsgw=zs/10;

zsdw=zs%10;

}

void djzd(void) interrupt 1

{

TH0=zssc[(zs-20)*2];

TL0=zssc[(zs-20)*2+1];

if(zdzt==0x0a)

yxsj=yxsj<<1|yxsj>>7;

else if (zdzt==0x0b)

yxsj=yxsj<<7|yxsj>>1;

else if(zdzt==0x0c)

{

P1=0xff;

goto LP;

}

P1=yxsj;

bs++;

if(bs==48)

{

bs=0;

zqs++;

}

LP:binbcd();

disp();

}

void binbcd()

{

zqsbw=zqs/100;

zqssw=zqs%100/10;

zqsgw=zqs%10;

}

void disp()

{

TR1=0;

ES=0;

SCON=0x00;

TMOD=0x01;

SBUF=tab[zqsgw];

while(!TI);TI=0;

SBUF=tab[zqssw];

while(!TI);TI=0;

SBUF=tab[zqsbw];

while(!TI);TI=0;

SBUF=tab[zsdw];

while(!TI);TI=0;

SBUF=tab[zsgw];

while(!TI);TI=0;

SBUF=tab[zdzt];

while(!TI);TI=0;

TMOD=0x02;

TH1=0Xfd;

TL1=0xfd;

SCON=0x50;

TR1=1;

ES=1;

}

void delay()

{

int k;

for(k=0;k<1200;k++);

}

void sin()interrupt 4

{

P1=0xff;

ES=0;

bzsj=SBUF;

RI=0;

while(!RI);

RI=0;

ztsj=SBUF;

if(bzsj==0x30)

zdzt=ztsj-0x37;

if(bzsj==0x31)

{

if(ztsj==0x49)

zs++;

else zs--;

}

ES=1;

P3_2=0;

keyprc();

zqs=0;

disp();

}

main()

{

TMOD=0x21;

TH1=0xfd;

TL1=0xfd;

SCON=0x50;

PCON=0x00;

IE=0X92;

PS=1;

TR1=1;

P3_2=0;

TH0=0x1f;

TL0=0x00;

SP=0x60;

disp();

while(1)

{

key();

if(zdzt==0x0c)

{

TR0=0;

P1=0xff;

}

else TR0=1;

}

}

單片機給計算機發(fā)送數(shù)據(jù)文章來源地址http://www.zghlxwxcb.cn/news/detail-764165.html

#include "reg52.h" //包函8051 內部資源的定義

unsigned char dat; //用于存儲單片機接收發(fā)送緩沖寄存器SBUF里面的內容

unsigned char fan;

int i,j;

void Delay() //延時程序

{

for(i=0; i<100; i++)

for(j=0; j<100; j++);

}

void delays()

{

int k;

for (k=0;k<1200;k++);

}

///功能:串口初始化,波特率9600,方式1/

void Init_Com(void)

{

TMOD = 0x20;

PCON = 0x00;

SCON = 0x50;

TH1 = 0xFd;

TL1 = 0xFd;

TR1 = 1;

}

/主程序功能:實現(xiàn)接收數(shù)據(jù)并把接收到的數(shù)據(jù)原樣發(fā)送回去///

void main()

{

Init_Com();//串口初始化

while(1)

{

????????????????

if ( RI ) //掃描判斷是否接收到數(shù)據(jù),

{

dat = SBUF; //接收數(shù)據(jù)SBUF賦與dat

if(dat==0x30)???? //如果PC發(fā)送十六進制00,單片機P1口全亮。

{P1=0x00;

Delay();?? }

else if(dat==0x31)

{P1=0x01;

Delay();}

else if(dat==0x32)

{P1=0x03;

Delay();}

else if(dat==0x33)

{P1=0x07;

Delay(); }

else if(dat==0x34)

{P1=0x0f;

Delay(); }

else if(dat==0x35)

{P1=0x1f;

Delay();}

else if(dat==0x06)

{P1=0x3f;

Delay(); }

else if(dat==0x07)

{P1=0x7f;

Delay();}

else if(dat==0x08)

{P1=0xff;

Delay(); }

else if(!(P2&0x01))

{ delays();

while(!(P2&0x01));

fan = 0x36;}

else if(!(P2&0x02))

{ delays();

while(!(P2&0x02));

fan = 0x37;}

else if(!(P2&0x04))

{ delays();

while(!(P2&0x04));

fan = 0x38;}

else if(!(P2&0x08))

{ delays();

RI=0; //RI 清零。

SBUF =dat; //在原樣把數(shù)據(jù)發(fā)送回去(接收數(shù)據(jù)為發(fā)送數(shù)據(jù)的ASCII碼,如發(fā)送q顯示為113)

}

}

}

到了這里,關于PC 機與單片機通信(RS232 協(xié)議)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【51單片機系列】單片機與PC進行串行通信

    【51單片機系列】單片機與PC進行串行通信

    工業(yè)現(xiàn)場的測控系統(tǒng)中,常使用單片機進行監(jiān)測點的數(shù)據(jù)采集,然后單片機通過串口與PC通信,把采集的數(shù)據(jù)串行傳送到PC機上,再在PC機上進行數(shù)據(jù)處理。 PC機配置的都是RS-232標準串口,為D型9針插座,輸入/輸出為RS-232電平。D型9針插頭引腳如下: 如下表為RS-232C的D型9針插頭

    2024年01月17日
    瀏覽(26)
  • 單片機第一季:零基礎10——串口通信和RS485

    單片機第一季:零基礎10——串口通信和RS485

    目錄 1,串口通訊基礎 1.1,同步和異步 1.2,并行和串行? 1.3,單工、半雙工與全雙工通信? 1.4,通信速率? 2,單片機串口通訊 2.1,接口標準? 2.2,通訊協(xié)議? 2.3,串口內部結構? 3,串口相關寄存器? 4,波特率計算? 5,串口初始化? 6,開發(fā)板硬件設計? 7,串口發(fā)送和接收

    2024年02月04日
    瀏覽(26)
  • 51單片機UART串口通信實現(xiàn)接收PC的字符串

    51單片機UART串口通信實現(xiàn)接收PC的字符串

    ????????基本思路是觸發(fā)串口接收中斷之后,在串口中斷服務函數(shù)中處理接收到的字節(jié)并將其連接成字符串存入全局變量中。 隱含的額外工作有: 1.區(qū)分是發(fā)送中斷還是接收中斷,兩者都會進入同一個中斷服務子函數(shù); 2.判斷已接收到了句末,暫停接收,并通過標志位告知

    2023年04月20日
    瀏覽(27)
  • 【畢業(yè)設計 - 教學】單片機常用模塊:433無線數(shù)傳通信

    【畢業(yè)設計 - 教學】單片機常用模塊:433無線數(shù)傳通信

    Hi,大家好,這里是丹成學長,今天向大家介紹一個單片機開發(fā)常用模塊:433無線數(shù)傳模塊 單片機常用模塊:433無線數(shù)傳模塊 大家可用于 課程設計 或 畢業(yè)設計 無線收發(fā)模塊433MHz,采用高頻射頻技術,所以又稱RF433射頻小模塊。它以全數(shù)字技術生產的單IC射頻前端和ATMEL的A

    2024年02月12日
    瀏覽(28)
  • 串口通信協(xié)議--UART、RS-232、RS-485、RS-422

    串口通信協(xié)議--UART、RS-232、RS-485、RS-422

    近期學習了單片機及數(shù)電相關知識,故決定系統(tǒng)地學習一些通信協(xié)議。手邊書本僅介紹了串口低速接口的相關協(xié)議。 串行通信 是指通過使用一條數(shù)據(jù)線(需要地線或控制線),將數(shù)據(jù)一位一位地一次傳輸,每一位數(shù)據(jù)占據(jù)一個固定的時間長度。 特點 :抗干擾,節(jié)省數(shù)據(jù)線,

    2024年02月05日
    瀏覽(33)
  • 單片機——通信協(xié)議(UART協(xié)議解析篇)

    單片機——通信協(xié)議(UART協(xié)議解析篇)

    ????????在嵌入式系統(tǒng)設計中,UART通信是一種廣泛使用的串行通信協(xié)議,它通過 兩條信號線實現(xiàn)全雙工 的數(shù)據(jù)傳輸和接收。UART通信協(xié)議以其簡單、靈活和易于集成的特點,在嵌入式設備之間以及與外部設備進行通信時發(fā)揮著重要作用。本文將詳細介紹 UART 通信的 工作原

    2024年02月04日
    瀏覽(17)
  • 常用通信協(xié)議TTL、RS232/RS485/RS422、CAN、IIC、SPI、USB整理

    常用通信協(xié)議TTL、RS232/RS485/RS422、CAN、IIC、SPI、USB整理

    ??最近在進行項目方案設計時,涉及到常用通信接口的選型,包括 TTL、RS232、RS485、RS422、CAN、IIC、SPI 等常用通信協(xié)議,這里對常見的通信協(xié)議進行一個整理,在需要的時候可以進行回顧,這里參考幾個優(yōu)秀博文并進行整理,大家也可以去看看。 不脫發(fā)的程序猿-詳解RS232、

    2024年02月02日
    瀏覽(56)
  • SPI、UART、RS232、RS485、IIC 5種嵌入式經典通信總線協(xié)議

    SPI、UART、RS232、RS485、IIC 5種嵌入式經典通信總線協(xié)議

    ??UART即通用異步收發(fā)器,是一種通用的串行、異步通信總線。該總線有兩條數(shù)據(jù)線,可以實現(xiàn)全雙工的發(fā)送和接收。在嵌入式系統(tǒng)種常用于主機與輔助設備之間的通信。UART就是串口,也是一種通信協(xié)議/總線協(xié)議。 電腦上已經逐步沒有了,換成了usb,但是在嵌入式領域是最

    2024年01月16日
    瀏覽(21)
  • 畢業(yè)設計 基于51單片機環(huán)境監(jiān)測設計 光照 PM2.5粉塵 溫濕度 2.4G無線通信

    畢業(yè)設計 基于51單片機環(huán)境監(jiān)測設計 光照 PM2.5粉塵 溫濕度 2.4G無線通信

    選題之前,同學們要弄明白一件事情,做畢業(yè)設計是干什么用的! 這里我告訴大家,畢業(yè)設計對于你來說,不是讓你去搞研究,掌握運用所學知識的,也不是讓你去比誰做的畢業(yè)設計多么牛逼,多么厲害。 說白點,它的作用就是一個,讓你順利畢業(yè),能夠拿到學位證,畢業(yè)

    2023年04月08日
    瀏覽(1055)
  • DS18B20與單片機的通信、DS18B20采集溫度、MODBUS協(xié)議、練習框架

    DS18B20與單片機的通信、DS18B20采集溫度、MODBUS協(xié)議、練習框架

    單總線數(shù)字溫度計 異步的半雙工的串行通信 測量范圍從-55℃ ~ +125℃,增量值為0.5℃ 要用DS18B20采集溫度,就要實現(xiàn)與單片機之間的通信,因此有兩個問題 Bus master active low:主機執(zhí)行低電平 DS1820 active low:DS18B20執(zhí)行低電平 Both bus master and DS1820 active low:全都釋放低電平 Resis

    2024年04月16日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包