大学毕设论文单片机串行通信协议设计课程设计论文.docx

上传人:b****6 文档编号:8158189 上传时间:2023-01-29 格式:DOCX 页数:22 大小:267.97KB
下载 相关 举报
大学毕设论文单片机串行通信协议设计课程设计论文.docx_第1页
第1页 / 共22页
大学毕设论文单片机串行通信协议设计课程设计论文.docx_第2页
第2页 / 共22页
大学毕设论文单片机串行通信协议设计课程设计论文.docx_第3页
第3页 / 共22页
大学毕设论文单片机串行通信协议设计课程设计论文.docx_第4页
第4页 / 共22页
大学毕设论文单片机串行通信协议设计课程设计论文.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

大学毕设论文单片机串行通信协议设计课程设计论文.docx

《大学毕设论文单片机串行通信协议设计课程设计论文.docx》由会员分享,可在线阅读,更多相关《大学毕设论文单片机串行通信协议设计课程设计论文.docx(22页珍藏版)》请在冰豆网上搜索。

大学毕设论文单片机串行通信协议设计课程设计论文.docx

大学毕设论文单片机串行通信协议设计课程设计论文

摘要

本文通过单片机的串口并经过MAX202电平转换,可实现两个单片机之间实时会话,半双工工作模式;程序中设有发送接收允许、自行校验,提高了通信的准确度;可以将接收数据储存并将储存数据进行读取,可储存99个数据;设有软件复位功能,防止程序走死。

关键字:

实时会话自行校验软件复位

Abstract

ThroughandthroughtheMAX202chipseriallevelconverter,enablingreal-timeconversation,half-duplexmodebetweentwomicrocontrollers;programfeaturesallowsendingandreceiving,selfcheckandimprovetheaccuracyofcommunication;maybereceivingdatastorageandstoredataread,canstore99data;hasasoftwareresetfunctiontopreventtheprogramgotodie.

Keywords:

liveSessionself-calibrationsoftwareresetsession

目录

摘要1

Abstract1

目录2

第1章课题概述3

第2章总体设计方案3

第3章硬件设计3

3.1单片机3

3.2UT62256CPCL芯片3

3.3单片机间串行通讯4

3.4按键与显示4

3.5软件复位4

3.6读取储存数据4

第4章软件设计与调试5

4.1待机界面5

4.2通信协议5

4.2.1发送接收允许5

4.2.2自行校验5

4.3软件复位6

4.4储存接收数据6

4.5读取接收数据6

4.6总程序框图6

第5章结论8

第6章参考文献8

程序9

第1章课题概述

单片机行业已经有了很久的历史,随着科学技术的进步和社会的发展,单片机行业更加迅速的发展起来。

不论在工业还是民也上都有很好的发展和应用,得到大家很好的认可和高度的评价。

单片机的通信接口是各台仪表之间或仪表与计算机之间进行信息交换和传输的联络装置。

串行通信按同步方式可分为异步通信和同步通信两种基本通信方式。

它是在数字化的基础上用微处理器装备起来,是计算机技术与电子仪器相结合的产物。

它具有数据存储、运算、逻辑判断能力,能根据被测参数的变化自选量程,可自动校正,自动补偿,自寻故障等,可以做一些需要人类的智慧才能完成的工作,既具备了一定的智能,故称为智能仪器。

 

本课程设计通过单片机的串口并经过MAX202电平转换,可实现两个单片机之间实时会话,半双工工作模式,数码管显示发送和接收过程。

第2章总体设计方案

方案一:

编写发送和接收程序,显示发送和接收数据。

方案二:

编写发送和接收程序,添加发送和接收允许程序和自行校验程序,显示发送和接收数据。

方案三:

编写待机界面,编写发送和接收程序,添加发送和接收允许程序和自行校验程序,显示发送和接收数据程序,储存接收数据程序,显示储存数据程序,软件复位程序。

方案四:

在方案三基础上添加看门狗程序。

四个方案是这段时间内不断探索、循序渐进的结果,由于能力有限,添加看门狗程序后,程序一直复位,不知如何关闭看门狗,程序不能正常进行工作,最终选择方案三。

第3章硬件设计

3.1单片机

本文使用STC12C5A60S2单片机,重要参数介绍:

62KB容量ROM,1280字节RAM,4个16位定时器,7路外部中断,8路10位精度ADC,有两个串口。

3.2UT62256CPCL芯片

单片机接收数据存放在外部RAMUT62256CPCL芯片中,有32KB容量。

3.3单片机间串行通讯

本文使用MAX202电平转换芯片,用RS-232接口进行串口通信,通信过程如图1所示。

图1

3.4按键与显示

按键与显示使用芯片CH452。

CH451是一个整合了数码管显示驱动和键盘扫描控制以及μP监控的多功能外围芯片。

CH451内置RC振荡电路,可以动态驱动8位数码管或者64位LED,具有BCD译码、闪烁、移位等功能;同时还可以进行64键的键盘扫描;CH451通过可以级联的串行接口与单片机等交换数据;并且提供上电复位和看门狗等监控功能。

3.5软件复位

使用STC12C5A60S2中的特殊功能寄存器IAP_CONTR可以实现,硬件上使用外部中断INT0,在中断程序改变IAP_CONTR的值实现软件复位,外部中断INT0的接口电路如图2所示。

3.6读取储存数据

读取储存数据,硬件上使用外部中断INT1,在中断程序中读取储存数据,外部中断INT1的接口电路如图2所示。

图2

第4章软件设计与调试

4.1待机界面

当单片机开机或软件复位后,系统板上4个数码管会显示“HELLO”,开始显示“HELL”,一秒之后显示“ELLO”。

4.2通信协议

本文单片机通信采用2400的波特率,串行口工作方式为方式1,设有发送接收允许和自行校验。

4.2.1发送接收允许

设两个进行实时回话的单片机分别为单片机A和单片机B,单片机A处于接收等待状态,单片机B处于发送状态,单片机B发送“8AH”,单片机A接收到“8AH”时发送“A8H”,当单片机B接收到“A8H”时表示建立通信关系可以发送数据。

4.2.2自行校验

当两单片机建立通信关系时,单片机B发送数据的原码和反码,单片机A判断数据的原码和反码是否匹配,若匹配,单片机A发送“AAH”,当单片机B接收到“AAH”,表示发送数据正确;若数据的原码和反码不匹配,单片机A发送“55H”,当单片机B接收到“55H”,表示发送数据不正确,单片机A系统板数码管显示“J-Er”,单片机B系统板数码管显示“F-Er”,单片机B重新发送数据的原码和反码。

4.3软件复位

软件复位使用STC125A60S2单片机的特殊功能寄存器IAP_CONTR,寄存器地址与位名称如图4所示,复位类型如图5所示。

本文采用通过对IAP_CONTR寄存器送入20H,SWBS=0,SWRET=1,产生的软件复位。

图4

图5

4.4储存接收数据

接收数据存放在外部UT62256CPCL芯片中,存放时将接收数据个数与接收的数据一起存放在外部RAM中,用寄存器间接寻址,由于系统板数码管有限,本课设可储存99个数据。

4.5读取接收数据

读取数据时先读取数据个数,根据数据个数和寄存器间接寻址首地址来读取数据,防止读取到外部RAM中的乱码。

4.6总程序框图

总程序框图如图3所示,程序使用了串行口和两个中断。

第5章结论

本课程设计的主要任务是设计单片机串行通讯系统协议。

从一开始编写发送、接收程序到添加发送接收允许程序和校验程序,后来发现程序容易走死添加软件复位程序,单片机系统板有外部RAM又编写接收数据储存和读取程序,优化程序,使程序变得更完善。

最终的程序下载到单片机中,通信时没有任何数据丢失或错误。

我享受编程的乐趣和成功的喜悦,对单片机有了更深的了解,对我的编程能力和编程规范得到提高。

第6章参考文献

[1]姚永平.STC12C5A60S2系列单片机器件手册.宏晶STC官方网站

[2]常丽.测控仪器与网络实验指导书.沈阳工业大学

[3]李群芳,肖看,张士军.单片微型计算机与接口技术.电子工业出版社

程序

CH451_DCLKBITP1.7;串行数据时钟,上升沿激活

CH451_DINBITP1.6;串行数据输出,接CH451的数据输入

CH451_LOADBITP1.5;串行命令加载,上升沿激活

CH451_DOUTBITP1.4;INT0,键盘中断和键值数据输入,接CH451的数据输出

CH451_KEYDATA7FH;存放键盘中断中读取的键值

IAP_CONTRDATA0C7H

WDT_CONTREQU0C1H

;****************************************************************************

ORG0000H

AJMPMAIN

ORG0003H

LJMPRESTART

ORG0013H

LJMPSHU1

ORG0030H

MAIN:

SETBIT0

SETBEX0

SETBIT1

SETBEX1

SETBEA

MOV55H,#00H

MOV57H,#00H;记录接收的个数;调用外部RAM

ACALLCH451_INIT;调用初始化程序

LCALLCHUANKOU

LCALLLIUSHUI

KEYSHOW:

ACALLSCAN1

MOV54H,R4

MOVA,54H

CJNEA,#00H,CC1

INC55H

MOVR5,#12

MOVR4,#02H

ACALLCHANGE

MOVR5,#12

MOVR4,#03H

ACALLCHANGE

LCALLHUANSUAN

CC1:

MOVA,54H

CJNEA,#01H,CC2

MOVA,55H

ADDA,#10

MOV55H,A

MOVR5,#12

MOVR4,#02H

ACALLCHANGE

MOVR5,#12

MOVR4,#03H

ACALLCHANGE

LCALLHUANSUAN

CC2:

MOVA,54H

CJNEA,#02H,CC3

LCALLJIESOU

CC3:

MOVA,54H

CJNEA,#03H,KEYSHOW

MOVR5,#12

MOVR4,#02H

ACALLCHANGE

MOVR5,#10

MOVR4,#03H

ACALLCHANGE

LCALLFASONG

LCALLHUANSUAN

LJMPKEYSHOW

SJMP$

;****************************************************************************

;初始化子程序

;****************************************************************************

CH451_INIT:

CLRCH451_DIN;先低后高,输出上升沿通知CH451选择4线串行接口

SETBCH451_DCLK;置为默认的高电平

SETBCH451_DIN

SETBCH451_LOAD

SETBCH451_DOUT;置为输入

CLRIT0;置外部信号为低电平触发

SETBPX0;置高优先级或者低优先级

CLRIE0;清中断标志

SETBEX0;允许键盘中断

MOVB,#04H;设置为键盘与显示开

MOVA,#03H

ACALLCH451_WRITE

RET

CHANGE:

MOVA,R5

ACALLTTA;对应M2t1板的数码管转换

MOVR2,A

MOVA,R4

ACALLTTB;对应m2t1板的数码管位置转换

MOVB,A

MOVA,R2

ACALLCH451_WRITE

RET

CHANGE1:

MOVA,R5

ACALLTTA;对应M2t1板的数码管转换

INCA

MOVR2,A

MOVA,R4

ACALLTTB;对应m2t1板的数码管位置转换

MOVB,A

MOVA,R2

ACALLCH451_WRITE

RET

;M2T1板数码管对应表

TTA:

MOVDPTR,#TAB_A

MOVCA,@A+DPTR

RET

;对应m2t1板的数码管位置转换

TTB:

MOVDPTR,#TAB_B

MOVCA,@A+DPTR

RET

TAB_A:

DB07EH;0

DB006H;1

DB0BCH;2

DB09EH;3

DB0C6H;4

DB0DAH;5

DB0FAH;6

DB00EH;7

DB0FEH;8

DB0DEH;9

DB0E8H;F

DB036H;J

DB080H;-

DB0F8H;E

DB0A0H;r

DB070H;L

DB0E6H;H

TAB_B:

DB08H;0显示数码管号

DB09H;1

DB0AH;2

DB0BH;3

SCAN1:

MOVC,CH451_DOUT

JCSCAN1

ACALLCH451_READ

MOVR1,A

C0:

CJNEA,#40H,C1

MOVR4,#00H

AJMPTES

C1:

CJNEA,#41H,C2

MOVR4,#01H

AJMPTES

C2:

CJNEA,#42H,C3

MOVR4,#02H

AJMPTES

C3:

CJNEA,#43H,SCAN1

MOVR4,#03H

AJMPTES

TES:

RET

CH451_WRITE:

CLREX0;禁止键盘中断

CLRCH451_LOAD;命令开始,此命令可以放在后面

MOVR7,#08H;将ACC中8位送出

CH451_WRITE_8:

RRCA;低位在前,高位在后

CLRCH451_DCLK

MOVCH451_DIN,C;送出一位数据

SETBCH451_DCLK;产生时钟上升沿通知CH451输入位数据

DJNZR7,CH451_WRITE_8;位数据未完继续

MOVA,B

MOVR7,#04H;将B中4位送出

CH451_WRITE_4:

RRCA;低位在前,高位在后

CLRCH451_DCLK

MOVCH451_DIN,C;送出一位数据

SETBCH451_DCLK;产生时钟上升沿通知CH451输入位数据

DJNZR7,CH451_WRITE_4;位数据未完继续

SETBCH451_LOAD;产生加载上升沿通知CH451处理命令数据

SETBEX0;允许键盘中断

RET

CH451_READ:

CLREX0;禁止键盘中断

CLRCH451_LOAD;命令开始

MOVA,#07H;读取键值命令的高4位0111B

MOVR7,#04H;忽略12位命令的低8位

CH451_READ_4:

RRCA;低位在前,高位在后

CLRCH451_DCLK

MOVCH451_DIN,C;送出一位数据

SETBCH451_DCLK;产生时钟上升沿锁通知CH451输入位数据

DJNZR7,CH451_READ_4;位数据未完继续

SETBCH451_LOAD;产生加载上升沿通知CH451处理命令数据

CLRA;先清除键值单元以便移位

MOVR7,#07H;读入7位键值

CH451_READ_7:

MOVC,CH451_DOUT;读入一位数据

CLRCH451_DCLK;产生时钟下升沿通知CH451输出下一位

RLCA;数据移入ACC,高位在前,低位在后

SETBCH451_DCLK

DJNZR7,CH451_READ_7;位数据未完继续

CLRIE0;清中断标志,读操作过程中有低电平脉冲

SETBEX0;允许键盘中断

RET

;****************************************************************************

HUANSUAN:

MOVA,55H

CJNEA,#64H,XIA

XIA:

JCCHAO

CLRC

SUBBA,#64H

MOV55H,A

CHAO:

MOVA,55H

MOVB,#0AH

DIVAB

MOV51H,A

MOV50H,B

MOVR5,50H;将要显示的数放入R5中

MOVR4,#00H;将要在第几位上显示放在R4中,最右边是0位2013

LCALLCHANGE

MOVR5,51H;将要显示的数放入R5中

MOVR4,#01H;将要在第几位上显示放在R4中,最右边是0位2013

LCALLCHANGE

RET

;****************************************************************************

CHUANKOU:

MOVTMOD,#20H

MOVTH1,#0E7H

MOVTL1,#0E7H

SETBTR1

RET

;****************************************************************************

FASONG:

MOVSCON,#50H

BUXU:

MOVSBUF,#08AH;允许接收?

JNBTI,$

CLRTI

JNBRI,$

CLRRI

MOVA,SBUF

CJNEA,#0A8H,BUXU

LJMPTIAO

NO1:

MOVR5,#14

MOVR4,#00H

LCALLCHANGE

MOVR5,#13

MOVR4,#01H

LCALLCHANGE

TIAO:

MOVA,55H

MOVSBUF,A;发原码

JNBTI,$

CLRTI

CLRC

MOVA,#0FFH

SUBBA,55H;发反码

MOVSBUF,A

JNBTI,$

CLRTI

JNBRI,$;判断是否正确

CLRRI

MOVA,SBUF

CJNEA,#0AAH,NO1

MOVSCON,#40H

RET

;****************************************************************************

JIESOU:

MOVSCON,#50H

MOVR5,#12

MOVR4,#00H

LCALLCHANGE

MOVR5,#12

MOVR4,#01H

LCALLCHANGE

MOVR5,#12

MOVR4,#02H

LCALLCHANGE

MOVR5,#11

MOVR4,#03H

LCALLCHANGE

BUXU1:

JNBRI,$;允许接收

CLRRI

MOVA,SBUF

CJNEA,#08AH,BUXU1

MOVSBUF,#0A8H

JNBTI,$

CLRTI

CHONG:

JNBRI,$;接收原码

CLRRI

MOV56H,SBUF

JNBRI,$;接收反码

CLRRI

MOVA,SBUF

XRLA,56H

CJNEA,#0FFH,CHUO

LJMPDUI1

CHUO:

MOVSBUF,#055H

JNBTI,$

CLRTI

MOVR5,#14

MOVR4,#00H

LCALLCHANGE

MOVR5,#13

MOVR4,#01H

LCALLCHANGE

LJMPCHONG

DUI1:

MOVSBUF,#0AAH

JNBTI,$

CLRTI

MOVA,56H

MOVB,#0AH

DIVAB

MOV51H,A

MOV50H,B

MOVR5,50H;将要显示的数放入R5中

MOVR4,#00H;将要在第几位上显示放在R4中,最右边是0位2013

LCALLCHANGE

MOVR5,51H;将要显示的数放入R5中

MOVR4,#01H;将要在第几位上显示放在R4中,最右边是0位2013

LCALLCHANGE

MOVA,56H;放在外部RAM

MOVR0,57H

MOVX@R0,A

MOVA,57H

INCA

MOVR0,#20H;个数放在外部RAM

MOVX@R0,A

MOV57H,A

MOVSCON,#40H

RET

;****************************************************************************

RESTART:

MOVIAP_CONTR,#00100000B

RETI

;****************************************************************************

LIUSHUI:

MOVR5,#15

MOVR4,#00H

LCALLCHANGE

MOVR5,#15

MOVR4,#01H

LCALLCHANGE

MOVR5,#13

MOVR4,#02H

LCALLCHANGE

MOVR5,#16

MOVR4,#03H

LCALLCHANGE

LCALLDELAY

MOVR5,#0

MOVR4,#00H

LCALLCHANGE

MOVR5,#15

MOVR4,#01H

LCALLCHANGE

MOVR5,#15

MOVR4,#02H

LCALLCHANGE

MOVR5,#13

MOVR4,#03H

LCALLCHANGE

RET

;****************************************************************************

DELAY:

MOVA,#66

MOVR2,A

MOVR3,A

MOVR1,A

DELAY1:

DJNZR3,DELAY1

DJNZR1,DELAY1

DJNZR2,DELAY1

RET

;***************************************

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

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1