单片机串行通信doc.docx

上传人:b****1 文档编号:10519670 上传时间:2023-05-26 格式:DOCX 页数:16 大小:96.92KB
下载 相关 举报
单片机串行通信doc.docx_第1页
第1页 / 共16页
单片机串行通信doc.docx_第2页
第2页 / 共16页
单片机串行通信doc.docx_第3页
第3页 / 共16页
单片机串行通信doc.docx_第4页
第4页 / 共16页
单片机串行通信doc.docx_第5页
第5页 / 共16页
单片机串行通信doc.docx_第6页
第6页 / 共16页
单片机串行通信doc.docx_第7页
第7页 / 共16页
单片机串行通信doc.docx_第8页
第8页 / 共16页
单片机串行通信doc.docx_第9页
第9页 / 共16页
单片机串行通信doc.docx_第10页
第10页 / 共16页
单片机串行通信doc.docx_第11页
第11页 / 共16页
单片机串行通信doc.docx_第12页
第12页 / 共16页
单片机串行通信doc.docx_第13页
第13页 / 共16页
单片机串行通信doc.docx_第14页
第14页 / 共16页
单片机串行通信doc.docx_第15页
第15页 / 共16页
单片机串行通信doc.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机串行通信doc.docx

《单片机串行通信doc.docx》由会员分享,可在线阅读,更多相关《单片机串行通信doc.docx(16页珍藏版)》请在冰点文库上搜索。

单片机串行通信doc.docx

单片机串行通信doc

1.单片机串行通信的概述

在通信领域内,有两种数据通信方式:

并行通信和串行通信。

随着计算机网络化和微机分级分布式应用系统的发展,通信的功能越来越重要。

通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括计算机与外部设备,如终端、打印机和磁盘等设备之间的传输。

  串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。

其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。

使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的传送的,每一位为1或者为0。

在串行通信中,把通信接口只能发送或接收的单向传送办法叫单工传送;而把数据在甲乙两机之间的双向传递,称之为双工传送。

在双工传送方式中又分为半双工传送和全双工传送。

半双工传送是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。

51系列单片机有一个可编程的全双工串行通信接口,它可作异步接收发送器用,也可做同步移位寄存器用,其帧格式可有8位、10位或11位,并能设置各种波特率,给使用带来很大的灵活性。

51系列单片机有两个物理上独立的接收、发送缓冲器SBUF,它们只占用同一地址99H,可同时发送、接送数据。

发送缓冲器只能写入,不能读出,接收缓冲器只能读出、不能写入。

串行发送接收的速率与波特率发生器产生的移位脉冲同频。

51系列单片机用定时器T1或直接用CPU时钟作为通信波特率发生器的输入,在串行接口的不同工作方式中,波特率发生器从两个输入信号中选择一个分频,产生移位脉冲来同步串口的接收和发送,移位脉冲的速率即是波特率。

接收器是双缓冲结构,在前一个字节被从接收缓冲器SBUF读出之前,第二字节即开始被接收。

但是,若在第二个字节接收完毕后,前一个字节还未被CPU读取的话,第二个字就会覆盖第一个字节,造成第一个字节的丢失。

接收器是双缓冲结构,串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行读或写的。

8051串行口可设置四种工作方式,可有8位,10位和11位帧格式。

方式0以8位数据为一帧,不设起始位和停止位,先发送最低位。

方式1以10位为一帧传输,设有1个起始位“0”,8个数据位和1一个停止位“1”。

方式2和3以11位为1帧传输,设有1个起始“0”,8个数据位,1个附加第九位和1个停止们“1”,附加第九位由软件置1或清0。

发送时在TB8中,接收时送入RB8中。

 

2.串行通信程序设计

2.1程序设计流程图

(a)中断方式发送程序

(b)中断方式接收程序

图2.1串行通信中断方式流程图

2.2自发自收程序

ORG0000H

MOVTMOD,#20H

MOVTH1,#0CCH

MOVTL1,#0CCH;设定波特率

SETBTR1

MOVSCON,#50H

ABC:

CLRTI

MOVP1,#0FEH;LED灭

ACALLDAY;延时

MOVA,#0FFH

MOVSBUF,A;发送数据FFH

JNBRI,$;RI≠1等待

CLRRI

MOVA,SBUF;接收数据,A=FFH

MOVP1,A;灯亮

JNBTI,$;TI≠1等待

ACALLDAY;延时

SJMPABC

DAY:

MOVR0,#0

DAL:

MOVR1,#0

DJNZR1,$

DJNZR0,DAL

RET

END

2.3发送程序及分析

ORG0000H

LJMPMAIN

ORG0023H

LJMPSUB1

MAIN:

MOVSCON,#50H

MOVTMOD,#20H

MOVTL1,#0FDH

MOVTH1,#0FDH

MOVIE,#90H

SETBTR1

INI:

MOVSBUF,#55H

MOVR1,#0FFH

LOOP:

NOP

DJNZR1,LOOP

JNBF0,INI

MOVR0,#21H

MOVSBUF,20H

SUB1:

JNBRI,LAB0

MOVA,SBUF

CJNEA,#55H,LAB1

SETBF0

CLRRI

LAB1:

RETI

LAB0:

MOVSBUF,@R0

INCR0

CJNER0,#24H,LAB2

CLRES

LAB2:

CLRTI

RETI

END

主程序中:

指令MOVSCON,#50H的意义是将数据50H送入特殊功能寄存器SCON中,即设置串口工作于方式1,不允许多机通信,允许接收/发送数据第9位和接收数据第9位在方式1中未用,可以为任意值,在这里我们让它为0,串口发送/接收无中断请求。

指令MOVTMOD,#20H的意义为将数据20H送入特殊功能寄存器TMOD中,即定时器1的启动与引脚INT1无关,定时记数器1当定时器用,工作于方式2由于定时器0在这个例子中未用,所以可以任意设置。

指令MOVTL1,#OFDH的意义是给定时器1的低8位赋初值。

指令MOVTH1,#OFDDH的意义是给定时器1的高8位赋初值,因为定时器1工作方式2,即自动重装方式,所以定时器的高低8位都赋相同的初值,这个初值由串口工作方式1的波特率计算公式确定。

指令MOVIE,#90H的意义为打开中断允许总开关和串口中断允许。

指令SETBTR1的意义为启动定时器1,使波特率发生器开始产生移位脉冲和采样脉冲。

指令MOVSBUF,#55H的意义为将数据55H送入发送缓冲器SBUF中并通知串口发送。

指令MOVR1,#OFFH的意义是将数据OFFH送入工作寄存器R1中,这条指令的意图是为下面这段循环程序设置循环次数。

指令NOP什么事都不做,只占用CPU的时间。

指令DJNZR1,LOOP的意义为先将R1中的值减1,再判断R1中的值,如果不为0,则跳转到标号为LOOP的地方,发果为0,则顺序运行下一条指令,显然这四条指令就构成一段延时程序,这段延时程序的延时时间应大于单片机1的串口中断服务程序的处理时间与单片机2的中断服务程序处理时间之和。

指令JNBF0,INI的意义是如果程序状态字PSW中的F0位为0则表明接收端未准备好,所以程序跳转到标事情为INI的地方去再次发送询问信号,如果F0为1则表明接收端已准备好,所以程序往下运行。

指令MOVR0,#21H的意义为给R0赋初值21H,R0当间址寄存器用,其内容为下次将要发送数据的地址。

指令MOVSBUF,20H的意义为将内部数据存储器20H中的数据送入发送缓冲器SBUF并启动串口发送装置。

指令LJMP$的意义为跳转到本指令,即主程序运行到这里就进入了死循环。

中断服务程序中:

指令JNBRI,LABO的意义为如果本次串口中断是一次接收中断,则表明接收缓冲器SBUF中存放的是单片机2的应答信号,程序应顺序执行下一条指令,处理单片机2的应答,如果本次串口中断为一次发送中断,则应跳转到标号为LABO的地方去执行发送数据程序。

指令MOVA,SBUF的意义为将单片机2发送来的应答信号取入累加器中。

指令CJNE A,#55H,LAB1的意义是如果单片机2发送来的应答信号为55H,表明单片机2已处于“准备好”状态,则程序顺序运行,若单片机2送来的应答信号不为55H,则程序什么都不做,跳转到标号LAB1执行返回指令。

指令SETBF0的意义为对用户标志位F0置1,从而告诉主程序单片机2已处于“准备好”状态

指令CLRRI的意义为清除接收中断申请标志,为下一次中断的发生作准备。

指令RETI的意义为中断返回。

指令MOVSBUF,@RO的意义为从间址R0所指定的内部数据存储器中取一个数据发送。

指令INCR0的意义为将待传送数据的地址指针R0的内容加1,使其指向下一个待发送的数据。

指令CJNER0,#24H,LAB2的意义为判断四个数据是否都已发送完,若已发送完则顺序执行下一条关中断,若未发送完则跳转到标号LAB2。

指令CLRES的意义为禁止串口中断。

指令CLRTI的意义为清除串口接收中断申请标志。

指令RETI的意义为中断返回。

END是一条伪指令,其意义为告诉编译系统程序到此结束。

2.4接收程序及分析

ORG0000H

LJMPMAIN

ORG0023H

LJMPSUB1

MAIN:

MOVSCON,#50H

MOVTMOD,#20H

MOVTL1,#0FDH

MOVTH1,#0FDH

MOVIE,#90H

MOVR0,#33H

SETBTR1

LJMP$

SUB1:

JBF0,LAB2

MOVA,SBUF

CJNEA,#55H,LAB1

SETBF0

CLRRI

MOVSBUF,#55H

LAB1:

RETI

LAB2:

MOV@R0,SBUF

INCR0

CJNER0,#37H,LAB3

CLRES

LAB3:

CLRRI

RETI

END

单片机2的主程序只起初始化串口的作用,这里不再讲述。

单片机2的中断服务程序:

指令JBF0,LAB2的意义为如果F0为0,表明当前接收数据为单片机1送过来的查询信号,则程序顺序往下运行,执行信号处理程序。

若F0为1,表明当前接收到的数据为单片机1送来的有效数据,程序跳转到标号LAB2去执行程序,将接收到的数据放入R0指示的数据缓冲区中。

指令MOVA,SBUF将单片机1送过来的查询信号从接收缓冲器SBUF中取出。

指令CJNEA,#55H,LAB1的意义为若单片机1送过来的数据为55H将标志位F0置1,否则跳转到标号LAB1处执行中断返回指令。

指令SETBF0的意义为对标志位F0置1,其意义为:

下一次接收到的数据为有效数据。

指令CLRRI清除接收中断申请标志。

指令MOVSBUF,#55H的意义为发送应答信号。

指令RETI的意义为中断返回。

指令MOV@R0,SBUF的意义为将串口中断接收缓冲器中的数据放入间接地址指针R0指定的内部数据存储器单元中。

指令INCR0将地址指针的内容加1,使其指向一个新地址,用以存放下一次接收的数据。

指令CJNER0,#37H,LAB3判断四个数据是否接收完,若已接收完,则顺序执行下一条指令否则跳转到标号LAB3。

指令CLRES关闭串口中断。

指令CLRRI清除串口接收中断申请标志。

指令RETI为中断返回。

END是一条伪指令,其意义为告诉编译系统程序到此结束。

 

3.电路的设计

3.1自发自收电路

图3.1自发自收电路

3.2串行通信电路

图3.2串行通信电路

4.仿真及结果分析

利用软件将程序编译生成HEX文件,输入到单片机中,用Proteus进行仿真。

自发自收电路仿真结果为发光二极管不停闪烁。

双机串行通信电路仿真结果如下图:

图4.1仿真结果图

(1)

图4.2仿真结果图

(2)

数码管按0,1,2,…,1F顺序显示,结果符合要求。

 

5.心得体会

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。

回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说51系列芯片的使用,PROTEUS软件的应用技巧,对汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。

学习是一个不断再学习的过程,我会秉着谦虚,认真的态度一直学习下去。

参考文献

1李群芳,肖看.单片机原理接口与应用.北京:

清华大学出版社,2005

2谢瑞和等.串行技术大全.北京:

清华大学出版社,2003

3高峰.单片微机应用系统设计及实用技术.北京:

机械工业出版社,2004

4陈光东,赵性初.单片微型计算机原理与接口技术.武汉:

华中科技大学出版社,1995

5夏继强.单片机实验与实践教程.北京:

北京航空航天大学出版社,2001

情感语录

1.爱情合适就好,不要委屈将就,只要随意,彼此之间不要太大压力

2.时间会把最正确的人带到你身边,在此之前,你要做的,是好好的照顾自己

3.女人的眼泪是最无用的液体,但你让女人流泪说明你很无用

4.总有一天,你会遇上那个人,陪你看日出,直到你的人生落幕

5.最美的感动是我以为人去楼空的时候你依然在

6.我莫名其妙的地笑了,原来只因为想到了你

7.会离开的都是废品,能抢走的都是垃圾

8.其实你不知道,如果可以,我愿意把整颗心都刻满你的名字

9.女人谁不愿意青春永驻,但我愿意用来换一个疼我的你

10.我们和好吧,我想和你拌嘴吵架,想闹小脾气,想为了你哭鼻子,我想你了

11.如此情深,却难以启齿。

其实你若真爱一个人,内心酸涩,反而会说不出话来

12.生命中有一些人与我们擦肩了,却来不及遇见;遇见了,却来不及相识;相识了,却来不及熟悉,却还要是再见

13.对自己好点,因为一辈子不长;对身边的人好点,因为下辈子不一定能遇见

14.世上总有一颗心在期待、呼唤着另一颗心

15.离开之后,我想你不要忘记一件事:

不要忘记想念我。

想念我的时候,不要忘记我也在想念你

16.有一种缘分叫钟情,有一种感觉叫曾经拥有,有一种结局叫命中注定,有一种心痛叫绵绵无期

17.冷战也好,委屈也罢,不管什么时候,只要你一句软话,一个微笑或者一个拥抱,我都能笑着原谅

18.不要等到秋天,才说春风曾经吹过;不要等到分别,才说彼此曾经爱过

19.从没想过,自己可以爱的这么卑微,卑微的只因为你的一句话就欣喜不已

20.当我为你掉眼泪时,你有没有心疼过

 

情感语录

1.爱情合适就好,不要委屈将就,只要随意,彼此之间不要太大压力

2.时间会把最正确的人带到你身边,在此之前,你要做的,是好好的照顾自己

3.女人的眼泪是最无用的液体,但你让女人流泪说明你很无用

4.总有一天,你会遇上那个人,陪你看日出,直到你的人生落幕

5.最美的感动是我以为人去楼空的时候你依然在

6.我莫名其妙的地笑了,原来只因为想到了你

7.会离开的都是废品,能抢走的都是垃圾

8.其实你不知道,如果可以,我愿意把整颗心都刻满你的名字

9.女人谁不愿意青春永驻,但我愿意用来换一个疼我的你

10.我们和好吧,我想和你拌嘴吵架,想闹小脾气,想为了你哭鼻子,我想你了

11.如此情深,却难以启齿。

其实你若真爱一个人,内心酸涩,反而会说不出话来

12.生命中有一些人与我们擦肩了,却来不及遇见;遇见了,却来不及相识;相识了,却来不及熟悉,却还要是再见

13.对自己好点,因为一辈子不长;对身边的人好点,因为下辈子不一定能遇见

14.世上总有一颗心在期待、呼唤着另一颗心

15.离开之后,我想你不要忘记一件事:

不要忘记想念我。

想念我的时候,不要忘记我也在想念你

16.有一种缘分叫钟情,有一种感觉叫曾经拥有,有一种结局叫命中注定,有一种心痛叫绵绵无期

17.冷战也好,委屈也罢,不管什么时候,只要你一句软话,一个微笑或者一个拥抱,我都能笑着原谅

18.不要等到秋天,才说春风曾经吹过;不要等到分别,才说彼此曾经爱过

19.从没想过,自己可以爱的这么卑微,卑微的只因为你的一句话就欣喜不已

20.当我为你掉眼泪时,你有没有心疼过

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2