收藏 分销(赏)

-双机间的串口双向通信设计.doc

上传人:a199****6536 文档编号:2405528 上传时间:2024-05-29 格式:DOC 页数:21 大小:166.53KB 下载积分:10 金币
下载 相关 举报
-双机间的串口双向通信设计.doc_第1页
第1页 / 共21页
-双机间的串口双向通信设计.doc_第2页
第2页 / 共21页


点击查看更多>>
资源描述
单片机应用课程设计任务书 学 院 计算机与信息工程 专 业 网络工程 课程名称 单片机应用课程设计 题 目 双机间的串口双向通信设计 完成期限 自2014年12月22日至2015年1月4日 内 容 及 任 务 一、设计内容及要求: 两个单片机(称为甲机和乙机)之间采用方式1双向串行通信。 (1) 甲机的K1按键可通过串口控制乙机的LED1点亮,LED2灭,甲机的K2按键控制乙机LED1 灭,LED2点亮,甲机的K3按键控制乙机的LED1和LED2全亮。 (2) 乙机的K2按键课控制串口向甲机发送按下的次数,按下的次数通过串口显示在甲机P0口的数码管上。 二、项目设计思路 1、查找资料,熟悉单片机。 2、设计单片机电路图以及程序。 3、编译软件,烧写软件,调试,最后完成工作。 三、具体成果形式和要求 1.甲机的K1按键可以控制乙机的LED1点亮,LED2灭; 2.甲机的K2按键可以控制乙机的LED2点亮,LED1灭; 3.甲机的K3按键可以控制乙机的LED1、LED2点亮; 4. 乙机的K2按键按下的次数可显示在甲机P0口数码管上。 四、具体成果形式和要求 完成设计说明书,提交仿真电路和可执行代码。 进 度 安 排 起止日期 工作内容 12.22-12.24 查找资料 12.25-12.27 绘制仿真电路图并编写代码 12.28-12.29 调试并修改代码 12.29-1.4 答辩并进行文档的书写及修改 主 要 参 考 资 料 [1] 尹毅峰,刘龙江.单片机原理及应用[M].北京:北京理工大学出版社,2010. [2] 李广第.单片机基础.第1版.北京:北京航空航天大学出版社,1999 [3] 何立民.单片机高级教程.第1版.北京:北京航空航天大学出版社,2001 [4] 陈堂敏.刘焕平主编.单片机原理与应用[M].北京:北京理工大学出版社,2007. [5] 沈美明.温动蝉编著.IBM-PC汇编语言程序设计[M].北京:清华大学出版社,1994. [6] 戴佳.51单片机C语言应用程序设计 [M].北京:电子工业出版社, 2008  [7] 刘文涛.单片机语言C51典型应用设计[M].北京:人民邮电出版社, 2005 [8] 尹勇.μVision2单片机应用程序开发指南[M].北京:科学出版社,2005 指导教师 意见 (签字): 年 月 日 系(教研室)主任意见 (签字): 年 月 日 单片机应用课程设计任务书 学院名称: 计算机与信息工程学院 班级名称: 学生姓名: 学 号: 题 目: 双机间的串口双向通信设计 指导教师: 起止日期: 目录 一、绪论 4 1.1设计背景 4 二、相关知识 4 2.1 双机通信简介 4 2.2 单片机AT89C51介绍 4 2.3串口通信 5 三、总体设计 6 3.1 设计要求 6 四、硬件设计 7 4.1.整体电路 7 4.2复位电路 7 4.3.控制电路 8 五、软件设计 8 5.1甲机软件设计 9 5.2乙机软件设计 10 六、测试及运行 11 心得与感受 14 参考文献 15 指导教师评语 16 附录:源程序 17 一、 绪论 1.1设计背景 随着电子技术的飞速发展,单片机也步如一个新的时代,越来越多的功能各异的单片机为我们的设计提供了许多新的方法与思路。对于一些场合,比如:复杂的后台运算及通信与高实时性前台控制系统、软件资源消耗大的系统、功能强大的低消耗系统、加密系统等等。如果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能价格比,因此,多种异型单片机系统设计渐渐成为一种新的思路,单片机技术作为计算机技术的一个重要分支,由于单片机体积小,系统运行可靠, 数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。但在一些相对复杂的单片机应用系统中,仅仅一个单片机资源是不够的,往 往需要两个或多个单片机系统协同工作。这就对单片机通信提出了更高要求。单片机之间的通信可以分为两大类:并行通信和串行通信。串行通信传输线少,长距离传输时成本低,且可以利用数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。所以本系统采用串行通信来实现单片机之间可靠的,有效的数据交换。 二、 相关知识 2.1 双机通信简介 两台机器的通信方式可分为单工通信、半双工通信、双工通信,他们的通信原理及通信方式为: 1.单工通信:是指消息只能单方向传输的工作方式。单工通信信道是单向信道,发送端和接收端的身份是固定的,发送端只能发送信息,不能接收信息;接收端 只能接收信息,不能发送信息,数据信号仅从一端传送到另一端,即信息流是单方向的。通信双方采用单工通信属于点到点的通信。根据收发频率的异同,单工 通信可分为同频通信和异频通信。 2.半双工通信:这种通信方式可以实现双向的通信,但不能在两个方向 上同时进行,必须轮流交替地进行。也就是说,通信信道的每一段都可以 是发送端,也可以是接端。但同一时刻里,信息只能有一个传输方向。如日常生活中的例子有步话机通信等。 3.双工通信:双工通信是指在同一时刻信息可以进行双向传输,和打电话一 样,说的同时也能听,边说边听。这种发射机和接收机分别在两个不同的 频率上能同时进行工作的双工机也称为异频双工机。双工机的特点是使用 方便,但线路设计较复杂,价格也较高。 2.2 单片机AT89C51介绍 AT89C51 是一个低功耗,高性CMOS 8 位单片机,片内含 8k Bytes ISP(In-system programmable)的可反复擦1000次的Flash只读程序存储器,器件采用 ATMEL公司的高密度、非易失性存储技术制造,兼容标准 MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和 ISP Flash存储单元功能强大的微型计算机AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89C51 具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes 的随机存取数据存储器(RAM),32 个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16 位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。另外,AT89C51 可降至 0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 AT89C51 芯片DIP双列直插式封装引脚如图 2. 1 所示。 图 2.1 AT89C51 引脚排列 2.3串口通信 串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。 串口通信的程序设计也是相对比较简单的,容易上手,串口通信的基本程序框图如下图2.3所示: 串口初始化 发送或接收读取数据命令 等待接收数据 Ifbuffer=23? 数据处理及显示 关闭串口 N 图2.2 串口通信的程序框图 三、 总体设计 3.1 设计要求 本次设计是用两个单片机(称为甲机和乙机)之间采用方式1双向串行通信。 甲机的K1按键可通过串口控制乙机的LED1点亮,LED2灭,甲机的K2按键控制乙机LED1灭,LED2点亮,甲机的K3按键控制乙机的LED1和LED2全亮。 乙机的K2按键课控制串口向甲机发送按下的次数,按下的次数通过串口显示在甲机P0口的数码管上。 根据以上要求,我所设计的系统框架如图3.1所示: 图3.1 系统框架图 四、 硬件设计 4.1.整体电路 根据设计要求,我们在Proteus仿真软件平台下,选取元件at89c51两个、开关四个、LED两个、8位数码管一个以及其它元件若干,画出系统整体电路如图3.2.1所示: 图4.1 系统整体电路 在电路中,我们将数码管与单片机 U1 的 P0 口连接构成系统的开关记数显式电路的部分; 将 开关与单片机 P3 接口连接组成系统的按键电路,用来对显示器的控制;LED 的 段选端与单片机 U2 的 P2 口连接构成系统的 LED 显示系统;单片机左边部分电路与单片机构成系统的复位电路。 4.2、复位电路 将元器件如电路设计图如图 3.2 所示连接并 与单片机相连, 构成复位电路。 如果实现了灯的亮灭控制,点击图 3.2中的开关,使电路恢复到未开始状态. 图 4.2 复位电路 4.3.控制电路 将开关 K2,K3 分别连接两个反相器,并分别把两个开关连接 P1.0 和 P1.1;将K1连接 P3.2,三个开关接地,此电路为开关分别控制两个LED灯亮。开关控制电路设计图如图3.2.3所示。 图4.3 控制电路 五、 软件设计 本系统是通过利用AT89c51芯片进行的模拟电路实现的,利用八位晶体显示器来计数乙机的按键按下次数,利用两个LED来给出甲机按键按下的相应动作。具体过程如下:先初始化显示器和LED,然后甲机或者乙机选择发送或者接收,发送方发送的数据通过缓冲池将数据传递给接收方,接收方接收到数据后,随即给出相应的动作。双机间的串口双向通信设计的流程图如图5.1所示: 开始 初始化 发送方发送数据 接收方接收数据并显示 是否重置 结束 Y N 图5.1 串口双向通信设计的流程图 5.1 甲机软件设计 本模块主要是甲机的发送和接收程序,发送和接收数据都会在是sbuf缓冲池中,其主要代码如下: switch(NUM) // 甲机发送给乙机的数据 {case 1: TRANSPORT('1'); break; case 2: TRANSPORT('2'); break; case 3: TRANSPORT('3'); break; } } } void S() interrupt 4 // 甲机接收乙机发送的数据 {if(RI) {RI=0; if(SBUF>=0&&SBUF<=9) P0=C[SBUF]; else P0=0x00; } 甲机的函数流程图如5.2所示: 发送 接收 开始 接收或者发送 初始化 K1 K2 K3 重置键k4 乙机是否发送 开始计数 数码管显示 结束 选择开关 发送给乙机 图5.2 甲机流程图 5.2 乙机软件设计 本模块主要是乙机发送并接收甲机的数据,其数据也是在sbuf缓冲池中,主要代码如下: if(K2==0) //乙机发送给甲机的数据 { while(K2==0); NumX=++NumX%11; SBUF=NumX; while(TI==0); TI=0; } void S() interrupt 4 //中断 { if(RI) { RI=0; switch(SBUF) //乙机接收甲机的数据,并给出相应的LED动作,其中LED低电平有效 {case'1':LED1=0;LED2=1;break; case'2':LED1=1;LED2=0;break; case'3':LED1=0;LED2=0;break; } 乙机程序流程图如下4.2所示: 发送 接收 开始 接收或者发送 初始化 甲机是否发送 判断接收数据 LED显示 结束 按下按键 发送给甲机 图5.3 乙机流程图 六、 测试及运行 打开Proteus软件,将在keil中建立好的工程打开。然后将程序编译所生成的.Hex文件烧写到单片机芯片中。 点击甲机的K1按键可发送字符“1”,通过缓冲池,乙机接收到甲机发送的字符“1”,乙机会使LED1点亮,LED2灭,如图6.1所示: 图6.1 乙机结果图 点击甲机的K1按键可发送字符“2”,通过缓冲池,乙机接收到甲机发送的字符“2”,乙机会使LED2点亮,LED1灭,如图6.2所示: 图6.2 乙机结果图 点击甲机的K1按键可发送字符“3”,通过缓冲池,乙机接收到甲机发送的字符“3”,乙机会使LED2、LED1均点亮,如图6.3所示: 图6.3 乙机结果图 点击乙机的K2键,通过sbuf,甲机会记下乙机K2的点击次数,甲机的数码管上就会出现乙机的K2键按下次数的相应的数字,如图6.4所示: 图6.4 甲机的数码管显示结果 心得与感受 两周的课程设计结束了,通过此次课程设计,使我更加扎实的掌握了有关单片机设计方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查 终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检验修改环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在不懈的努力下,终于迎刃而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收喜悦,也永远不可能得到社会及他人对你的认可! 参考文献 [1] 尹毅峰,刘龙江.单片机原理及应用[M].北京:北京理工大学出版社,2010. [2] 李广第.单片机基础[M].北京:北京航空航天大学出版社,1999 [3] 何立民.单片机高级教程[M].北京:北京航空航天大学出版社,2001 [4] 陈堂敏.刘焕平主编.单片机原理与应用[M].北京:北京理工大学出版社,2007. [5] 沈美明.温动蝉编著.IBM-PC汇编语言程序设计[M].北京:清华大学出版社,1994. [6] 戴佳.51单片机C语言应用程序设计 [M].北京:电子工业出版社, 2008  [7] 刘文涛.单片机语言C51典型应用设计[M].北京:人民邮电出版社, 2005 [8] 尹勇.μVision2单片机应用程序开发指南[M].北京:科学出版社,2005 学生签名: 填表日期: 年 月 日 指导教师评语 成绩评定 指导教师签名: 填表日期: 年 月 日 附录:源程序 1.甲机源程序 #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit K1=P3^2; sbit K2=P3^3; sbit K3=P1^1; uchar NUM=0; uchar code C[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void Delay(uint ms) { uchar i; while(ms--) for(i=0;i<120;i++); } void TRANSPORT(uchar c) {SBUF=c; while(TI==0); TI=0; } void main() {P0=0x00; SCON=0x50; TMOD=0x20; TH1=0xfd; TL1=0xfd; PCON=0x00; RI=0; TI=0; TR1=1; IE=0x90; while(1){ Delay(100); if(K1==0){ NUM=1; } if(K2==0){ NUM=2; } if(K3==0){ NUM=3; } switch(NUM) {case 1: TRANSPORT('1'); break; case 2: TRANSPORT('2'); break; case 3: TRANSPORT('3'); break; } } } void S() interrupt 4 {if(RI) {RI=0; if(SBUF>=0&&SBUF<=9) P0=C[SBUF]; else P0=0x00; } } 2.乙机源程序 #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit LED1=P2^0; sbit K2=P3^3; sbit LED2=P2^1; uchar NumX=-1; void Delay(uint ms) {uchar i; while(ms--) for(i=0;i<120;i++); } void main() { LED1=1; LED2=1; SCON=0x50; TMOD=0x20; TH1=0xfd; TL1=0xfd; PCON=0x00; RI=0; TI=0; TR1=1; IE=0x90; while(1) { Delay(100); if(K2==0) { while(K2==0); NumX=++NumX%11; SBUF=NumX; while(TI==0); TI=0; } } } void S() interrupt 4 { if(RI) { RI=0; switch(SBUF) {case'1':LED1=0;LED2=1;break; case'2':LED1=1;LED2=0;break; case'3':LED1=0;LED2=0;break; } } 21
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服