单片机课设.docx
《单片机课设.docx》由会员分享,可在线阅读,更多相关《单片机课设.docx(21页珍藏版)》请在冰豆网上搜索。
单片机课设
单片机与PC机串口通信
摘要
微机与单片机串行通信端口在系统控制的范畴中一直占据着及其重要的地位,它不仅没有因为时代的进步而遭淘汰,反而在规格上越来越完善,应用也越来越广泛。
作为一种基本而又灵活方便的通信方式,串口通信被广泛应用于PC与PC或者PC与单片机之间的数据交换以及其他工业控制与自动控制中。
本次设计主要解决上位机与下位机之间的通信问题。
关键词:
串行通信,单片机,PC机
第一章:
绪论
随着计算机技术的迅速发展及其在各领域的广泛应用,远程控制以及数据采集系统多采用上位机和下位机的主从工作方式,由于串行通信具有高效可靠、价格便宜,遵循统一的标准等特点,因而成为主要的通信手段。
单片机改变了我们生活,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机,单片机有着广阔的应用前景。
如今,随着单片机和微机技术的不断发展,特别是网络技术在测控领域的广泛应用,由PC机和多台单片机构成的多机网络测控系统已成为单片机技术发展的一个方向。
它结合了单片机在实时数据采集和微机对图形处理、显示的优点。
本次设计的任务是:
1)掌握单片机的工作原理与接口设计。
2)完成硬件设计,包括硬件选择及硬件原理图绘制。
3)完成软件设计,绘制程序流程图。
给出在分布式控制系统中上位PC机与下位单片机之间进行异步串行通信的解决方案,实现了上位机向下位机发送信息以及下位机接收上位机的数据并能够向上位机发送数据的功能。
使得在实际运行过程中,简单方便,稳定可靠,较好地解决上位机与下位机之间的通信问题。
本设计将实现以下功能,即单片机通过串行口向PC发送字符串并且可以接收由PC发送过来的数字。
具体实现结果为:
将从单片机键盘上键入的字符显示到PC显示器上,将PC键盘输入的数字(0-9)显示到单片机的数码管上。
第二章:
基础知识及介绍
2.1AT89C51单片机的工作原理
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
该系列单片机在结构上基本相同只是在个别模块和功能上有些区别,图2.1是AT89C51单片机的内部结构框图。
它包含了作为微信计算机所必须的基本功能部件,各功能部件通过片内单一总线连成一个整体,集成在一块芯片上。
图2.1AT89C51单片机内部结构框图
2.2单片机串行口与PC机通讯概述
到目前为止,计算机控制系统已逐步从单机控制向多机控制发展并出现了以计算机技术为核心,与数据通讯技术相结合的具有检测、控制和管理等多功能的计算机网络,即我们所说的“集中分布式测控系统”。
我们都知道,基本原理PC机与单片机之间一般采用2种通信方式:
1)并行通信和串行通信,见(图2.2;图2.3),其中,串行通信是将数据一位一位地按顺序传送。
并行通信虽然传输效率高,由于所需硬件设备复杂,不适于长距离通信,所以一般只适用于要求实时性强,传送速率较高的控制系统中,实用面较窄;相比之下,串行通信简单易实现,传输距离较长,所以已被广泛应用于各种工控系统中。
串行通信分为同步通信和异步通信2种方式。
同步通信是指通过在每个数据块开始时的同步字符来实现收/发双方同步的一种数据传输方法,常用于信息量大,速度要求高的场合;异步通信则规定了标准的字符数据传输格式,即每一帧信息由起始位、数据位、奇偶校验位和停止位组成。
由于有冗余位,所以传送效率不高,常用于信息量不大,速度较低的场合。
在计算机测控系统中,由于串行接口的标准化,一般采用异步串行通信方式,以提高其通用性。
由于各种接口的机械和电器特性有所差异,串行通信分为近程通信和远程通信。
2 接口电路的设计2.1 近程通信目前,PC机是利用异步通讯控制器来实现串行通讯的,其核心是8250通讯芯片加上一些收发逻辑电路。
接口标准大多是RS232标准,其通讯距离小于15m,传输速率小于20kb/s。
RS232标准是按负逻辑定义的,他的“1”电平在-5~-15V之间,“0”电平在+5~+15V之间。
由于PC机使用的是TTL电平信号,因此数据输出时必须把TTL电平信号转换成驱动器MC1488和接收器MC1489,其作用除了电平转换外,还实现正负逻辑电平转换。
图2.2并行通信图2.3串行通信
第三章:
硬件设计
3.1整体设计思路及原理
当51单片机与PC机通过RS-232标准总线串行通信时,由于RS-232信号电平与51单片机信号电平不一致,因此,必须进行信号电平转换。
本设计采用专门集成芯片MAX232来实现51单片机与RS-232的接口电路。
此外,单片机工作必须使用到晶振电路和复位电路。
晶振电路是给单片机提供时钟信号,复位电路给单片机提供复位功能,它的作用是使单片机的程序计数器清零。
因此,基于protuse的AT89C51单片机与PC串口通信电路主要由51单片机外围电路(晶振电路、复位电路、外部中断)、电平转换电路MAX232、RS232接口、LED数码显示管及虚拟终端组成。
硬件电路整体框图如图3.1所示:
图3.1硬件电路整体框图
3.2单片机外围电路
1).晶振的原理及作用:
晶振是电路中常用用的时钟元件,全称是叫晶体震荡器,在单片机系统里晶振的作用非常大,他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。
图3.2晶振电路原理图
2).复位电路原理
复位电路的作用:
在上电或复位过程中,控制CPU的复位状态:
这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。
图3.3复位电路
3).单片机的外部中断
51单片机一般有两个外部中断输入端,并允许外部中断源以低电平或负边沿两种触发方式输入中断请求信号。
本设计就是利用一只按钮,在按下时产生的负边沿触发外部中断。
将一只按钮接在外部中断输入0即12口。
3.3电路连接框图及接口
本次课程设计中我们采用一块MAX3221芯片,把从AT89C51中过出的信号进行电平转换后输出到PC,把从PC发过来的信号发送给AT89C51,设计中的RS-232接口电路连接方式如图3.4所示:
图3.4RS-232接口电路连接方式
其中我们运用的接口是RS-232——个人计算机上的通讯接口,
由电子工业协会所制定的异步传输标准接口。
通常RS-232接口以9个引脚(DB-9)或是25个引脚(DB-25)的型态出现,由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,并且可以借助现成的电话网进行信息传送,因此,特别适合于远距离传输.
第四章:
软件设计
PC机上的串行接口采用RS-232C串行通信标准接口,其逻辑1电平为-5V~-15V,表示传号状态;其逻辑0电平为+5V~+15v,表示空号状态;其逻辑电平与TTL;CMOS电平不兼容。
因此,RS232驱动器与TTL电平连接必须经过电平转换。
MAX232是RS232转换芯片。
4.1串行通信基本原理
4.1.1串行口的工作方式
串行口分四种工作方式,由SM0、SM1二位决定,其定义如下表:
表4.1串行口的工作方式
SM0
SM1
工作方式
功能描述
波特率
0
0
方式0
8位移位寄存器
Fosc/12
0
1
方式1
10位UART
可变
1
0
方式2
11位UART
Fosc/64或fosc/32
1
1
方式3
11位UART
可变
(1)方式0:
串行口的工作方式0为移位寄存器I/O方式,可外接移位寄存器,一扩展I/O口,也可外接同步I/O设备。
发送操作:
当执行一条“MOVSBUF,A”指令时,启动发送操作,由TXD输出移位脉冲,由RXD串行SBUF中的数据。
发送完8位数据后自动置TI=1.请求中断。
要继续发送时,TI必须有指令清零。
接收操作:
REN是串行口接收允许控制位。
REN=0时禁止接收;REN=1时允许接收。
当软件将REN置“1”时,即开始从RXD端口以fosc/12波特率输入数据,当接收到8位数据时,将中断标志RI置“1”。
再次接收数据之前,必须用软件将RI清0
(2)方式1:
串行口位10位通用异步接口。
发送或接收一帧数据信息为10位,包括1位起始位“0”、8位数据位、1位停止位“1”。
发送数据:
数据从TXD端口输出,当数据写入发送缓冲器SBUF时,就启动发送器发送。
发送完一帧数据后,置中断标志TI=1,申请中断,通知CPU可以发送下一个数据了。
接收数据:
首先使REN=1(允许接收数据),串行口从RXD接收数据,当采样到1至0跳变时,确认是起始位“0”,就开始接收一帧数据,当接收完一帧数据时,置中断标志RI=1,申请中断,通知CPU从SBUF取走接收到的数据
(3)方式2:
串行口为11位异步通信接口。
发送或接收一帧信息包括1位起始位“0”、8位数据位、1位可编程位、1位停止位“1”。
发送数据:
发送前,先根据通信协议由软件设置TB8为“奇偶校验位”或“数据标识位”,然后将要发送的数据写入SBUF,即能启动发送器。
发送过程是由执行任何一条以SBUF为目的寄存器的指令而启动的,把8位数据装入SBUF,同时还把TB8装到发送移位寄存器的第9位上,然后从TXD(P3.1)端口输出一帧数据。
接收数据:
先置REN=1,使串行口为允许接收状态,同时还要将RI清“0”。
然后再根据SM2的状态和所接收到的RB8的状态决定此串行口在信息到来后是否置R1=1,并申请中断,通知CPU接收数据。
当SM2=0时,不管RB8为“0”还是为“1”,都置RI=1,此串行口将接收发送来的信息。
当SM2=1时,且RB8=1,表示在多机通信情况下,接收的信息为“地址帧”,此时置RI=1,串行口将接收发来的地址。
当SM2=1时,且RB8=0,表示在多机通信情况下,接收的信息为“数据帧”,但不是发给本从机的,此时RI不置为“1”,因而SBUF中接收的数据帧将丢失。
(4)方式3:
为波特率可变的11位异步通信方式,除了波特率有所区别之外,其余方式都与方式2相同。
本设计中单片机串行口工作在方式1(波特率可变10位异步通信方式),T1为波特率发生器,以TXD为发送端,RXD为接收端,根据给定的波特率可以计算计数初值。
4.1.2波特率
波特率(Baudrate)即调制速率,指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数。
它是对符号传输速率的一种度量,1波特即指每秒传输1个符号。
串口波特率设置说明:
波特率不要设置太高,波特率设置过高会导致传输数据不稳定,会出现丢包的现象。
由图可知,本设计的波特率为9.6K..
表4.2常用波特率与定时器/计时器1各参数关系(T1*12/AUXR.6=0)
4.2程序设计思路
本次课程设计主要分为单片机程序设计,PC机程序设计两大模块,主程序设计思路流程图如下图3.2所示。
单片机和PC机程序具体设计框图将在下面章节中作具体介绍。
图4.1主程序设计思路流程图
4.3单片机程序设计
设计单片机通信程序时,必须充分发挥单片机的效率。
由于单片机多应用于实时性较强的控制场合,因此,应将及时响应和控制对象的动作放在优先考虑的位置,以尽量减少通信等辅助性操作所占用的CPU时间。
基于上述考虑,在设计单片机通信程序时,将通信程序分为接收中断处理程序、发送中断处理程序和通信处理程序3部分,并将这3部分程序巧妙地进行组合,从而构成整个单片机的通信程序。
4.3.1接收中断处理程序
接收中断处理程序主要负责接收微机发送到单片机接收缓冲区(不对数据进行处理,以减少中断占用的时间)的数据,当接收到规定的字符数或在一定等待时间内无后续数据之后,置接收完毕标志,以表明接收缓冲区中有待处理的数据并请求通信处理程序对其进行处理。
其流程图如图3.3所示。
图4.2接收中断处理程序流程图
4.3.2发送中断处理程序
发送中断处理程序主要负责向微机发送数据,发送中断一般处于禁止状态,只有在通信处理程序将需要发送的数据写入单片机的发送缓冲区,并将发送中断置为允许方式后,发送中断才开始工作,并将缓冲区数据逐一发送给微机。
当发送完指定长度的数据后(发送缓冲区为空),发送中断处理程序将发送中断置为禁止(关闭)状态,直到通信处理程序将其再一次开放。
其流程如图3.4所示。
图4.3发送中断处理程序流程图
4.3.3通信处理程序
考虑到尽量减少通信中断程序所占用的CPU时间,通信处理程序被放在普通主循环中调用。
只有在接收到上位机送来的一串数据,且接收完毕标志为“ON”时,才能真正进行处理,否则不进行处理。
这样就可利用送信后等待微机回答的时间进行别的处理,从而消除了空等待时间,提高了CPU的利用率。
通信处理程序可根据通信处理状态的不同来分别执行不同的路径。
在进入相应路径后,首先对接收缓冲区的内容进行正确性检查,检查正确后再根据通信要求或协议规定对缓冲区的内容进行处理(包括内存的写入和读出),同时重新组织数据到发送缓冲区以向微机发送数据,最后退出通信处理程序以执行其它的程序。
待接收中断程序重新接收到数据并将接收完标志置为“ON”后,可重新进入通信处理程序进行处理。
通信处理程序流程图如图3.5所示。
图4.4通信处理程序流程图
4.4PC机程序设计流程图
通信协议:
波特率:
1200b/s.
信息格式:
8位数据位,1位停止位,无奇偶检验。
传送方式:
PC机采用查询方式接收数据,51单片机采用中断方式接收,查询方式发送。
校检方式:
累加和校检。
握手信号:
采用软件握手。
发送方在发送之前先发送一个联络信号“?
”,接收方在接收到“?
”后回送字符“。
”作为应答信号,随后依次发送数据块长度,发送数据,最后发送校检和。
接收方在收到发送方发送过来的校检和后与自己所累加的校检和比较。
若相同,则回送一个“0”,表示正确传送并结束本次的传送过程;若不相同,则回送一个“F”,要求发送方重新发送数据,直到接收正确为止。
4.4.1PC机发送文件子程序
图4.5PC机发送文件子程序流程图
输入一个文件先判断时候正确,如果正确先去的文件句柄然后发送联络信号给PC机,然后判断此时是否有键按下,若有键按下直接返回DOC;反之没有键按下就到判断“是否收到有键按下”的信息,若没有则继续循环这个判断的过程,直到有键按下;若有则进行接下来的程序判断:
先发统计好的总字节数,然后进行校检和,将计算好的校检和给受应答信号,判断此时是否有应答。
如果有应答则进入循环计算字节总数的程序中累加校验和,计算总的校验和,直到没有应答为止,将文件关闭。
至此PC机发送文件子程序就结束了。
4.4.2PC机接收文件子程序
图4.6PC机接收文件子程序流程图
从已经建立好的文件夹中找寻目标,并判断正误,若内容正确则发送联络信号并且判断其是否是已经接收,如没有接收到则转向判断“是否有键按下”,若有则直接返回DOC;若没有则要进入到循环判断的阶段中,直到有确定的信息被接收到为止。
如果已经接收,则返回一个“.”的信号,进一步计算接收总字节数,统计校检和和接收到的校检和并判断校检是否正确,若正确则向外发送“0”并关闭文件,反之,如果校检错误则向外发送“F”进入判断校检和的循环中,直到校检正确,并向外发送“0”为止。
4.4.3PC机主程序流程图设计
图4.7PC机主函数流程图
在有了上述发送和接收文件两个子函数之后,就可以以直接调用主函数来实现功能。
主函数的工作是在判断传输进入的命令是否正确,正确则进入初始化并且完成串口初始化,反之,如果错误,则显示“错误”,然后返回DOS。
完成串口初始化后,根据键入的命令来决定是发送还是接收文件,最后返回DOS。
软件设计总流程图
图4.8单片机与PC机通信程序流程图
第五章:
总结语
经过一个星期的努力终于把设计顺利完成了。
通过这一个星期的学习,我发现自己还有好多不足之处。
本设计就是采用MCS-51系列单片机,利用AT89C51单片机串行口,实现与PC机通讯。
本设计中包括了单片机通讯的编制,串行通讯的硬环境,数据格式的协议,数据交换的协议等多方面的知识,在这个单片机串行口与PC机通讯设计中,我主要是说明它的原理和应用,然后用一个相对简单的实验来实现这个功能。
通过这次设计使我对这一学期所学的知识更加的系统化、深层次化。
通过这次设计学会了分析问题、处理问题的方法,可以说达到了举一反三的目的。
为以后工作、学习都打下了比较坚实的基础。
总之,我们在设计过程中学到了许多。
作为现代的大学生,如果仅停留在以往的层次上,是远远跟不上时代的步伐,也无法使自己立足在竞争如此激烈的社会里,通过此实验,让我看到了自己的水平和差距,虽然我们有很多不足,但是在我们的努力下,弥补了我们的缺憾。
此次学习使我受益匪浅。
从中学到很多以前没有接触到的错误,及其解决办法和某些程序的设计方法。
增加了自己在编程方面的功底。
致谢:
在这次长达一个星期的课程设计里,我要衷心的感谢我的队友蒲国华同学的帮助和协作,在做课设的过程中我们遇到了很多的问题与困难,但是我们还是一一解决了,这次尽力不仅还锻炼了我们的能力还锻炼了我们的耐心,增强了我们的责任感,最后要感谢我的指导老师闫老师对我们的帮助和悉心的指导!
附录1单片机与PC通信所用元器件
单片机AT89C51
电平转换
MAX232
DB-串行口COMPIM
LED数码管
7SEG-COM-AN-GRN
晶振
CAP-ELEC
电阻
RES
按钮
BUTTON
排阻
RESPACK-8
电解电容
CAP-ELEC
参考文献
[1]辛友顺,胡永生,薛小铃.《单片机应用系统设计与实现》,2005.3
[2]康华光.《电子技术基础》(模拟部分)[M].北京:
高等教育出版社,2004.
[3]张鑫,《单片机原理及应用》。
电子工业出版社,2005
[4]胡汉才编著,《单片机原理及其接口技术》,北京,清华大学出版社,1996
[5]李广弟.《单片机基础》[M].北京:
北京航天航空大学出版社,1994
[6]宋戈编著,《51单片机应用开发范例大全》,人民邮电出版社,2012年
[7]杨金泉编著,《单片机原理及应用实验指导》,西南交通大学出版社,2013年
[8]应俊编著,《51单片机原理及应用实验指导》,西安电子科技大学,2013年
[9]朱华编著,《增强型8051单片机快速实践教程》,电子工业出版社,2013年
[10]丁明亮编著,《51单片机应用设计与仿真》,北京航空航天大学出版社,2009年
[11]王守中编著,《一读就通,51单片机开发》,电子工业出版社,2011年
[12]陈忠平编著,《51单片机C语言程序设计经典实例》,电子工业出版社,2012年