下载

2下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 单片机之间串口通信

单片机之间串口通信.doc

单片机之间串口通信

我是一颗葱
2013-11-12 0人阅读 举报 0 0 暂无简介

简介:本文档为《单片机之间串口通信doc》,可适用于高等教育领域

专业课程设计Ⅰ题目单片机间串口通信设计院系:自动化学院专业班级:智能班小组成员:指导教师:日期:.课程设计描述近年来单片机以其极高的性价比越来越多的在智能式仪表和工业过程控制中得到广泛的应用。但由于其本身资源有限在一些复杂过程或功能较多的控制中就难以满足要求需要将单片机的数据送到上一级的微机进行处理。因此实现上位机(PC机)与下位机(单片机)之间的数据可靠通信是必须解决的主要问题之一在数据传输量不大的情况下按照RS标准进行串行通信越来越多的服务于各种应用系统中。实验要求利用简单的单片机实现双机通信使得两片都能够发送并接收信息。课程设计具体要求了解单片机及其应用明确课程学习内容及目标学会仿真图的设计选一个带有接口的单片机,和电脑进行通信,或者两个都带有接口的单片机,相互通信一个做人机界面和通信程序另外一个做采集程序和通信程序通过人机界面获取命令然后通过通信程序发送到另外一个单片机另外一个单片机接收到命令后做相应的采集处理。.主要元器件两片C两个晶振烙铁学生电源瓷片电容个pf电容个个LED灯四脚开关两个max两个。.基本原理阐述串行通信是指数据按位顺序传送的通信。串行数据传送的特点是:通信线路简单最多只需一对传输线即可实现通信成本低但速度慢其通信线路既能传送数据信息又能传送控制信息。它对信息的传送格式有固定要求具体分为异步和同步两种信息格式.与此相应有异步通信和同步通信两种方式在串行通信中对信息的逻辑定义与TTL不兼容需要进行逻辑电平转换:计算机与外界的数据传送大多是串行的其传送的距离可以从几米到几千公里。单片机中使用的串行通信通常都是异步方式的。.实验方案:硬件设计软件程序甲机程序:说明:甲机向乙机发送字符本身也完成相应动作#include<regh>#defineucharunsignedchar#defineuintunsignedintsbitLED=P^sbitLED=P^sbitK=P^ucharOperationNo=操作代码ucharcodeDSYCODE={xc,xf,xa,xb,x,x,x,xf,x,x,xff}数码管代码voidDelayMS(uintms)延时{uchariwhile(ms)for(i=i<i)}向串口发送字符voidPutctoSerialPort(ucharc){SBUF=cwhile(TI==)收到时中断TI=清除中断}voidmain()主程序{LED=LED=P=xffSCON=x串口模式允许接收TMOD=xT工作模式PCON=x波特率不倍增TH=xfd设置计数初值TL=xfdTI=RI=TR=启动定时器IE=x允许串口中断while(){DelayMS()if(K==)按下K时选择操作代码{while(K==)按键恢复时执行下面的OperationNo=(OperationNo)switch(OperationNo)根据操作代码发送ABC或停止发送{case:PutctoSerialPort('X')LED=LED=breakcase:PutctoSerialPort('A')LED=~LEDLED=breakcase:PutctoSerialPort('B')LED=~LEDLED=breakcase:PutctoSerialPort('C')LED=~LEDLED=LEDbreak}}}}voidSerialINT()interrupt甲机串口接收中断函数{if(RI){RI=if(SBUF>=SBUF<=)P=DSYCODESBUFelseP=xff}}乙机程序:说明:乙机接收到甲机发送的信号后根据相应信号控制LED完成不同闪烁动作。#include<regh>#defineucharunsignedchar#defineuintunsignedintsbitLED=P^sbitK=P^sbitLED=P^ucharNumX=voidDelayMS(uintms)延时{uchariwhile(ms)for(i=i<i)}voidmain()主程序{LED=LED=SCON=x串口模式允许接收TMOD=xT工作模式TH=xfd波特率TL=xfdPCON=x波特率不倍增RI=TI=TR=启动定时器IE=x允许中断while(){DelayMS()if(K==)按钮按下时发送数字到串行缓冲寄存器否则等待{while(K==)NumX=(NumX)产生~范围内的数字其中表示关闭SBUF=NumXwhile(TI==)等待中断TI=清除中断}}}voidSerialINT()interrupt{if(RI)如收到则LED动作{RI=switch(SBUF)根据所收到的不同命令字符完成不同动作{case'X':LED=LED=break全灭case'A':LED=LED=breakLED亮case'B':LED=LED=breakLED亮case'C':LED=LED=全亮}}}.设计中的问题分析硬件设计时还是对不同的器件进行过一定的对比还是选择了的瓷片电容以及pf的电容。焊接完成之后发现与仿真时差异很大进行检查之后发现是甲机晶振处的pf电容损坏应该是当时电极接反引起的。修正之后基本实现目标。.参考资料《8051单片机彻底研究》《PROTEUS与KEIL的联合仿真》《单片机应用从零开始》.实验总结张三:我们为期两个周的课程设计已经接近尾声这两个周的时间内我们每个人都完成了自己的工作使我们的实验得以成功。当然鉴于时间的原因我们仅仅是实现了一些简单的功能而没有去进行更深层次的扩展功能还是比较遗憾的。课程项目刚刚分配下来的时候我们组员还是比较担心的因为听大家说:这个课题是有一定的难度的。当时我们就这个问题的细节简单讨论了一下说明这个课题我们要完成的目标以及还有可能的扩展任务希望大家下去积极的参与并且很好的动起手来。其实我们这组分工不是十分的明确毕竟大家的专业知识还是在一个起跑线的就是看看谁的手头资源比较充足能够让大家很好的利用到后期的软件设计仿真图的设计都是有过讨论的鉴于我是第一次使用这个仿真软件所以没有太多的投入其中只是以一个学习者的身份去观看队员如何的完成仿真在这个过程当中自己也学会了仿真。我们讨论了为什么要使用瓷片电容的晶振还有MAX让每个人都能够了解到所用器件的作用方便以后的学习。仿真图的设计以及软件设计还是花费了些许时间的。因为要考虑到板子的大小还是没有做出其他的扩展功能就这样还是将整个板子基本利用我们整体的布局还是十分美观的(当然只限于正面)。我们设计的是两块单片机的通信即两片的通信由甲机向乙机发送信号是LED灯的变化乙机向甲机发送信息实现数码管从的循环变化。仿真是因为是互相通信所以设计还是比较简单的对称即可。所有准备工作完成之后就是焊电路板。基于大一时期的电装实习所以焊功还是可以的没有花太多的时间。下来的工作就是调试电路找出问题因为实验就是在一次次的求证中得到完美。刚开始确实板子没有丝毫的反应后来才知道是甲机的晶振处电容的问题重新安装之后实现目标。在设计仿真时其实是有两套方案的不过由于第一套有点简单没有晶振电路仿真可以实现而且基于没有太多的实验器材所以也没有采取这一套方案。而是重点着手第二套加入晶振给予脉冲。利用MAX实现电频转化将电源的V转换到与计算机对应的V。当然也会考虑到为什么不直接接通V我想着应该是害怕烧坏电路。当然试验中还有许多小的问题不过都被直接的发现没有太大的难处总之这次课程设计还是较之简单的吧。课程设计就是能够加大同学的动手能力以及学习能力能够很好地与同学讨论求教及时的发现问题解决问题达到预期的目标。在这之后主要的是巩固自己是自己对未知的东西有一定的了解有一定的提升。李四:为期两周的课程实习结束了和以往的实习经验相比这一次最大的收获在于我真正用心体会了整个过程用心思考很多问题也收获很多的感悟。刚开始知道题目时我开始迷茫了因为这是我最弱的部分甚至可以说不知道该从何处入手。所以我选用最简单的方法上网查询。我开始在网站上找相关的资料但是因为基础太差即使在网站上找到很多的相关知识对于很多的概念还不是很清楚我把相关的器件功能都仔细看了然后对照电路图研究其工作过程也向周围的同学询问相关知识但是尽管这样我还是没能够将这些知识很好的串连起来(最后是在同组同学的讲解下才理清楚的)。而同组的同学都比我强在我开始串连这些星星点点的知识点儿时他们却能够掌握整个实验的原理并开始设计了。虽然和他们相比我有很多不会的地方但是即使在旁边看着他们设计听他们讨论偶尔也加入一起讨论即使出不了很大的力但是我却可以通过和他们讨论发现自己的不足这也是一和好的学习机会至少在讨论的时候我可以知道自己什么地方不懂然后通过和组员的交流来加深对某一块知识点的理解。这样的学习方式的好处在于我们可以以一种我们都能理解的方式来互相学习。相比于以往的实习这次实习有很大的不同以往是自己做自己的而这次是小组合作我总是担心因为自己而妨碍到队友影响整个组的进度但是看到大家一起讨论一起皱眉一起收获我也会很开心这就是团队的力量吧。即使在实验中遇到不少问题但是大家一起发现问题一起讨论一起解决在这个过程中也学到很多东西。对于我个人而言这并不是一次很成功的实习但是我相信每一次的经验就是一种收获。虽然之前有接触过串口通信的部分知识但是都很片面当时只是学习怎样实现并不清楚其原理但通过本次实验在组员的帮助下我可以清楚的解释整个串口通信的原理也对一些以前很少接触的器件有一些了解特别是对其功能有更多了解例如利用MAX实现电频转化利用晶体振荡器产生信号利用89C单片机的p和p实现串口通信等等。虽然以前学过但是并没有证实过而通过实验让我加深对这些器件的认识。虽然在实验过程中遇到一些问题但是还是被一一解决了。通过实验我更加清楚自己的分量更加清楚自己应该学习的东西还有很多也让我体会到团队的力量看似很困难的问题在大家的努力下都解决了。最重要的是我认识到我们学的每一门学科都有其用途虽然看似没有多大的用处但是当运用到实际生活中时才发现这些学科之间有很大的联系。这也提醒我不论是专业知识还是选学知识我都不可以放轻松我必须把书本上的知识吃透才可以在进行实验时不那么费劲而且可以节省实间。总的来说通过这次实习让我对很多的问题有了新的认识这对我以后的学习和生活都将是受益匪浅的。王五:这次实验中我主要负责系统仿真的任务用proteus仿真软件进行仿真原件有C单片机片MAX片段数码管个触点开关个LED发光二级管个晶体振荡器个以及各个型号电阻电容若干导线若干。本系统要实现单片机之间的串口通信最终要实现:两个单片机将串口连接在MAX芯片上将电平转化为RS电平两个MAX芯片的输出端相连形成两个单片机的通信。将数码管连接到甲机上乙机的一个IO口接触点开关当触点开关接通时。乙机计数器加一并把计数器的值通过串口传给甲机。让甲机驱动数码管显示计数器的值以此来验证单片机通信成功。当然实验中也遇到了很多困难:首先是多孔板太小布置两个单片机最小系统比较拥挤不得已采用双面布板的办法空间小给焊接带来了很大麻烦最后在组员的细致努力下焊接的比较成功。第二就是再编写程序的过程中由于需要利用串口中断需要反复操作定时器而定时器配置稍显复杂中间出了很多错误花了比较长的时间用来调试定时器。最后严格按照定时器配置流程书写程序操作成功。最后由于使用了RS电平所以传输的波特率是比较关键的地方波特率计算应该考虑晶振的频率严格计算。经过这次实习首先我学到了单片机最小系统的布局和焊接方法并懂得了如何在最小系统上扩展其他功能。其次了解了单片机定时器的各种使用方法和串口通信的流程。最后明白了串口通信时波特率的计算以及其在通信中的重要性。赵六:我们组选的题目是两个单片机实现串口通信,分配好任务之后通过网上、图书馆查资料了解单片机的相关知识。我负责的是电路仿真和硬件设计通过借鉴一些资料就开始做仿真电路把问题模块化最开始做的就是单片机的晶振电路了解了关于波特率的问题波特率是指数据信号对载波的调制速率它用单位时间内载波调制状态改变的次数来表示。在信息传输通道中携带数据信息的信号单元叫码元每秒钟通过信道传输的码元数称为码元传输速率简称波特率。波特率是传输通道频宽的指标。每秒钟通过信道传输的信息量称为位传输速率简称比特率。比特率表示有效数据的传输速率。了解到这些之后选择了一个合适的晶振原件至于电容还是靠查资料来选取的。因为是两片单片机之间要实现串口通信所以采取了相同的晶振电路不然通信后会出现乱码问题。在两片单片机串口p和p的链接上遇到了一点问题通过讨论串口间连接需要电平转换电平转换是在单片机和pc通信因为电压不一样才转换的而单片机直接串口电压应该是一致的因此可以省略掉但是为了给单片机下载程序方便我们还是加上了这一部分仿真电路做好之后还是有很多警告在仔细检查很多遍之后发现原来是操作问题因为是两片单片机电路很对称所以是对称设计造成元器件命名重复更改了之后就好了给单片机装载好程序之后可以仿真。在硬件电路分布设计这块因为在仿真阶段布局就比较合理所以就直接根据仿真图焊接。自己也参与了一些电路焊接电路弄好之后上电竟然没有反应检查发现完全是操作问题很多连接点都没有焊接电路焊接好之后发现还是有问题以为是甲乙单片机位置弄反了调换了之后发现乙这边可以工作但是电路两部分是对称的我们又把乙的片子安到甲上但是甲部分仍然没反应通过分析确定是甲部分有问题最后徐顺找到是一个电容坏了换掉之后就正常了。在功能扩展方面曾考虑到串口加密就是多个单片机串口通信是的安全问题无奈自己的软件方面功底很差就放弃了。通过这次实习我总结到不管什么问题只要我们细心努力不放弃的做就都会解决的。胡七:刚开始接到这个题目的时候自己还是很迷茫的不知道从何下手因为虽说以前学习过单片机但是仅仅是理论对他还是很模糊比如说对定时器计数器晶振机器周期中断的概念总是一知半解但是通过这两个周的搜集资料自我学习还是有一定成效的通过读《单片机彻底研究》我豁然开朗以上的概念我基本上都了解了并且在读程序的时候基本上能够知道那些设置的意思比如说串行通信的时候如何设置波特率如何利用中断例如说在串行通信的时候首先要清除RI和TI并设置REN=使接收和发送进入待命状态当有数据进入时串口会一一接收当所有的数据都接收完后RI的标志会置1此时程序可以用查询或中断的方式得到RI的状态若RI=1时再做一个SBUF的读取然后把数据转存到串行数据缓存区内最后将RI清零。在接收的时候首先要查询TI的状态是否为1是的话说明上一个数据已经送出这时只要把数据送到SBUF就可以完成数据的传输然后把TI设成0表明数据准备送出等到TI又为1时表明数据已经送出。在软件仿真的时候也遇到过很多问题比如说数码管的选取开始的时候我一直用的是共阴极数码管但是我本身并没有这个概念导致程序仿真时出现数码管数字显示不正常经过一番仔细地检查我才发现了这个问题换上了共阳极数码管结果正常还有一个问题就是软件仿真的时候正常而实际运行时却有问题比如说按键抖动实际过程中可以用一个延时函数来避开这个抖动。一切理论和仿真都正确了然后就是在电路板上焊接电路了开始按照仿真图焊接了一遍后不能正常运行经过仔细地排查后才发现电容坏了换了电容后正常了。这也让我明白了认真细心的重要性。焊接好之后就是写程序了这对我来说应该是一大难点因为以前都是编一个简单的程序然后运行而这次要软硬结合并且功能还不单一这就需要整体的概念如何把握全局调试过程也是很重要的每一步是怎样执行的这都能很清楚的知道总的来说这次单片机实习对我来说收获还是很大的。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/9

单片机之间串口通信

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利