单片机串行通信协议设计课程设计论文.doc_第1页
单片机串行通信协议设计课程设计论文.doc_第2页
单片机串行通信协议设计课程设计论文.doc_第3页
单片机串行通信协议设计课程设计论文.doc_第4页
单片机串行通信协议设计课程设计论文.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要本文通过单片机的串口并经过max202电平转换,可实现两个单片机之间实时会话,半双工工作模式;程序中设有发送接收允许、自行校验,提高了通信的准确度;可以将接收数据储存并将储存数据进行读取,可储存99个数据;设有软件复位功能,防止程序走死。关键字:实时会话 自行校验 软件复位abstractthrough and through the max202 chip serial level converter, enabling real-time conversation, half-duplex mode between two microcontrollers; program features allow sending and receiving, self check and improve the accuracy of communication; may be receiving data storage and store data read, can store 99 data; has a software reset function to prevent the program go to die.key words: live session self-calibration software reset session目录摘要1abstract1目录2第1章 课题概述3第2章 总体设计方案3第3章 硬件设计33.1 单片机33.2 ut62256cpcl芯片33.3 单片机间串行通讯43.4 按键与显示43.5 软件复位43.6 读取储存数据4第4章 软件设计与调试54.1 待机界面54.2 通信协议54.2.1 发送接收允许54.2.2 自行校验54.3软件复位64.4 储存接收数据64.5 读取接收数据64.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.2 ut62256cpcl芯片单片机接收数据存放在外部ramut62256cpcl芯片中,有32kb容量。3.3 单片机间串行通讯本文使用max202电平转换芯片,用rs-232接口进行串口通信,通信过程如图1所示。图13.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图54.4 储存接收数据接收数据存放在外部ut62256cpcl芯片中,存放时将接收数据个数与接收的数据一起存放在外部ram中,用寄存器间接寻址,由于系统板数码管有限,本课设可储存99个数据。4.5 读取接收数据读取数据时先读取数据个数,根据数据个数和寄存器间接寻址首地址来读取数据,防止读取到外部ram中的乱码。4.6 总程序框图总程序框图如图3所示,程序使用了串行口和两个中断。dccab按键标号中断int0程序入口软件复位中断int1程序入口读取储存的数据打开中断int0、int1开始初始化ch451初始化串口显示“hello”发送#55h否判断d是否按下是否接收到#8ah发送#0a8h是否x与x的反码是否符合发送#0aah并储存x判断c是否按下是发送#8ah是否接收到#0a8h否是发送x与x的反码是否接收到#0aah否 是否扫描按键判断a是否按下判断b是否按下x加1x加10否是是否是否判断x是否小于99否x=x-100假设发送和接收的数为x是图3第5章 结论本课程设计的主要任务是设计单片机串行通讯系统协议。从一开始编写发送、接收程序到添加发送接收允许程序和校验程序,后来发现程序容易走死添加软件复位程序,单片机系统板有外部ram又编写接收数据储存和读取程序,优化程序,使程序变得更完善。最终的程序下载到单片机中,通信时没有任何数据丢失或错误。我享受编程的乐趣和成功的喜悦,对单片机有了更深的了解,对我的编程能力和编程规范得到提高。第6章 参考文献1姚永平. stc12c5a60s2系列单片机器件手册. 宏晶stc官方网站2常丽. 测控仪器与网络实验指导书. 沈阳工业大学3李群芳,肖看,张士军. 单片微型计算机与接口技术. 电子工业出版社程序ch451_dclk bit p1.7 ;串行数据时钟,上升沿激活 ch451_din bit p1.6 ;串行数据输出,接 ch451 的数据输入 ch451_load bit p1.5 ;串行命令加载,上升沿激活 ch451_dout bit p1.4 ;int0,键盘中断和键值数据输入,接 ch451 的数据输出 ch451_key data 7fh ;存放键盘中断中读取的键值 iap_contr data0c7hwdt_contr equ0c1h;* org 0000hajmp mainorg 0003hljmp restartorg 0013hljmp shu1org 0030hmain:setb it0setb ex0setb it1setb ex1setb eamov 55h,#00hmov 57h,#00h;记录接收的个数 ;调用外部ramacall ch451_init ;调用初始化程序lcall chuankoulcall liushuikeyshow: acall scan1mov 54h,r4mov a,54hcjne a,#00h,cc1inc 55hmov r5,#12 mov r4,#02h acall changemov r5,#12 mov r4,#03h acall changelcall huansuancc1:mov a,54hcjne a,#01h,cc2mov a,55hadd a,#10mov 55h,amov r5,#12 mov r4,#02h acall changemov r5,#12 mov r4,#03h acall changelcall huansuancc2:mov a,54hcjne a,#02h,cc3lcall jiesoucc3:mov a,54hcjne a,#03h,keyshowmov r5,#12 mov r4,#02h acall changemov r5,#10 mov r4,#03h acall changelcall fasonglcall huansuanljmp keyshowsjmp $;* ; 初始化子程序 ;*ch451_init: clr ch451_din ;先低后高,输出上升沿通知 ch451 选择 4 线串行接口 setb ch451_dclk ;置为默认的高电平 setb ch451_din setb ch451_load setb ch451_dout ;置为输入 clr it0 ;置外部信号为低电平触发 setb px0 ;置高优先级或者低优先级 clr ie0 ;清中断标志 setb ex0 ;允许键盘中断 mov b,#04h ;设置为键盘与显示开 mov a,#03h acall ch451_write ret change: mov a,r5 acall tta ;对应m2t1板的数码管转换 mov r2,a mov a,r4 acall ttb ;对应m2t1板的数码管位置转换 mov b,a mov a,r2 acall ch451_write retchange1: mov a,r5 acall tta ;对应m2t1板的数码管转换 inc a mov r2,a mov a,r4 acall ttb ;对应m2t1板的数码管位置转换 mov b,a mov a,r2 acall ch451_write ret;m2t1板数码管对应表tta: mov dptr,#tab_a movc a,a+dptr ret;对应m2t1板的数码管位置转换ttb: mov dptr,#tab_b movc a,a+dptr ret tab_a: db 07eh;0 db 006h;1 db 0bch;2 db 09eh;3 db 0c6h;4 db 0dah;5 db 0fah;6 db 00eh;7 db 0feh;8 db 0deh;9 db 0e8h;f db 036h;j db 080h;- db 0f8h;e db 0a0h;r db 070h;l db 0e6h;htab_b: db 08h;0 显示数码管号 db 09h;1 db 0ah;2 db 0bh;3scan1:mov c,ch451_dout jc scan1 acall ch451_read mov r1,ac0: cjne a,#40h,c1 mov r4,#00h ajmp tesc1: cjne a,#41h,c2 mov r4,#01h ajmp tes c2: cjne a,#42h,c3 mov r4,#02h ajmp tes c3: cjne a,#43h,scan1 mov r4,#03h ajmp testes: retch451_write: clr ex0 ;禁止键盘中断 clr ch451_load ;命令开始,此命令可以放在后面 mov r7,#08h ;将 acc 中 8 位送出 ch451_write_8: rrc a ;低位在前,高位在后 clr ch451_dclk mov ch451_din,c ;送出一位数据 setb ch451_dclk ;产生时钟上升沿通知 ch451 输入位数据 djnz r7,ch451_write_8 ;位数据未完继续 mov a,b mov r7,#04h ;将 b 中 4 位送出 ch451_write_4: rrc a ;低位在前,高位在后 clr ch451_dclk mov ch451_din,c ;送出一位数据 setb ch451_dclk ;产生时钟上升沿通知 ch451 输入位数据 djnz r7,ch451_write_4 ;位数据未完继续 setb ch451_load ;产生加载上升沿通知 ch451 处理命令数据 setb ex0 ;允许键盘中断 ret ch451_read: clr ex0 ;禁止键盘中断 clr ch451_load ;命令开始 mov a,#07h ;读取键值命令的高 4 位 0111b mov r7,#04h ;忽略 12 位命令的低 8 位 ch451_read_4: rrc a ;低位在前,高位在后 clr ch451_dclk mov ch451_din,c ;送出一位数据 setb ch451_dclk ;产生时钟上升沿锁通知 ch451 输入位数据 djnz r7,ch451_read_4 ;位数据未完继续 setb ch451_load ;产生加载上升沿通知 ch451 处理命令数据 clr a ;先清除键值单元以便移位 mov r7,#07h ;读入 7 位键值 ch451_read_7: mov c,ch451_dout ;读入一位数据 clr ch451_dclk ;产生时钟下升沿通知 ch451 输出下一位 rlc a ;数据移入 acc,高位在前,低位在后 setb ch451_dclk djnz r7,ch451_read_7 ;位数据未完继续 clr ie0 ;清中断标志,读操作过程中有低电平脉冲 setb ex0 ;允许键盘中断 ret ;* huansuan:mov a,55hcjne a,#64h,xiaxia:jc chaoclr csubb a,#64hmov 55h,achao:mov a,55hmov b,#0ahdiv abmov 51h,amov 50h,bmov r5,50h ;将要显示的数放入r5中mov r4,#00h ;将要在第几位上显示放在r4中,最右边是0位 2013lcall change mov r5,51h ;将要显示的数放入r5中mov r4,#01h ;将要在第几位上显示放在r4中,最右边是0位 2013lcall changeret;* chuankou:mov tmod,#20hmov th1,#0e7hmov tl1,#0e7hsetb tr1ret;* fasong:mov scon,#50hbuxu:mov sbuf,#08ah ;允许接收?jnb ti,$clr tijnb ri,$ clr rimov a,sbufcjne a,#0a8h,buxuljmp tiaono1:mov r5,#14 mov r4,#00h lcall changemov r5,#13 mov r4,#01h lcall changetiao:mov a,55hmov sbuf,a ;发原码jnb ti,$clr ticlr cmov a,#0ffhsubb a,55h ;发反码mov sbuf,ajnb ti,$clr tijnb ri,$ ;判断是否正确clr rimov a,sbufcjne a,#0aah,no1mov scon,#40hret;* jiesou:mov scon,#50hmov r5,#12 mov r4,#00h lcall changemov r5,#12 mov r4,#01h lcall changemov r5,#12 mov r4,#02h lcall changemov r5,#11 mov r4,#03h lcall changebuxu1:jnb ri,$ ;允许接收clr rimov a,sbufcjne a,#08ah,buxu1mov sbuf,#0a8hjnb ti,$clr tichong:jnb ri,$ ;接收原码clr rimov 56h,sbufjnb ri,$ ;接收反码clr rimov a,sbufxrl a,56hcjne a,#0ffh,chuoljmp dui1chuo:mov sbuf,#055h jnb ti,$clr timov r5,#14 mov r4,#00h lcall changemov r5,#13 mov r4,#01h lcall changeljmp chongdui1:mov sbuf,#0aah jnb ti,$clr timov a,56hmov b,#0ahdiv abmov 51h,amov 50h,bmov r5,50h ;将要显示的数放入r5中mov r4,#00h ;将要在第几位上显示放在r4中,最右边是0位 2013lcall change mov r5,51h ;将要显示的数放入r5中mov r4,#01h ;将要在第几位上显示放在r4中,最右边是0位 2013lcall changemov a,56h ;放在外部rammov r0,57hmovx r0,amov a,57hinc amov r0,#20h ;个数放在外部rammovx r0,amov 57h,amov scon,#40

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论