您好、欢迎来到现金彩票网!
当前位置:秒速快三开奖 > 双机协同 >

双机间的串口双向通信

发布时间:2019-06-19 01:59 来源:未知 编辑:admin

  单片机原理与应用课程设计任务书 学 院 计算机与信息工程学院 单片机原理与应用学年 设计 完成期限 自 2014 年 12 月 29 日 至 2015 年 1 月 4 日 一、项目的目的 实现双机串口双向通信,验证双机通信原理,提高动手能力, 检验知识掌握情况。 二、项目任务的主要内容和要求 两个单片机(甲机和乙机)之间采用方式 1 双向串行通信。 (1) 甲机的 K1 按键可通过串口控制乙机的 LED1 点亮,LED2 灭, 甲机的 K2 按键控制乙机 LED1 灭, LED2 点亮, 甲机的 K3 按键控制乙机的 LED1 和 LED2 全亮。 内 容 及 任 务 (2) 乙机的 K2 按键课控制串口向甲机发送按下的次数,按下的次 数通过串口显示在甲机 P0 口的数码管上。 三、项目设计思路 使用甲乙两片 89C51 双机通信。发送方的数据由串行口输出, 经过电平转换输出, 经过传输线将信号传送到接收端。 接收方也进 行电平转换后,信号到达接收方串行口的接收端。接受方接收后, 在数码管上显示接收的信息。 本设计是硬件电路和软件编程相结合的设计方案,选择合适的 编程语言是一个重要的环节。 在单片机的应用系统程序设计时, 常 用的是汇编语言和 C 语言。C 语言虽然执行效率没有汇编语言高, 但语言简洁,使用方便,灵活,运算方便,表达类型多样化,数据 结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很 好的可重用性, 可移植性等特点。 所以我们采用 C 语言编写了程序。 四、具体成果形式和要求 完成设计说明书,提交仿真电路和可执行代码。 进 度 安 排 起止日期 12.29-12.31 1.1-1.2 1.3-1.4 工作内容 查资料,构建主题思想,绘制电路图 代码实现 代码调试和文档资料 1 专 题 业 目 网络工程 双机间的串口双向通信 课程名称 共1周 主 要 参 考 资 料 [1]张毅刚,彭喜元,姜守达,乔立岩. 新编 MCS-51 单片机应用设 计. 哈尔滨工业大学出版社. 2009.08 [2]李全利.单片机原理与接口技术.高等教育出版社.2009.01 [3]蔡明文,冯先成.单片机课程设计.华中科技出版社.2007.03 [4]范红刚,魏学海,任思璟.51 单片机自学笔记.北京航空航天大 学出版社.2010.01 指导教师 意见 (签字) : 年 月 日 系 (教研室) 主任意见 (签字) : 年 月 日 2 单片机原理与应用学年设计说明书 学院名称: 班级名称: 学生姓名: 学 题 号: 目: 计算机与信息工程学院 2012211369 双机间的串口双向通信 指导教师 姓 名: 2014.12.29 至 2015.1.4 起止日期: 3 一、 绪论 随着电子技术的飞速发展,单片机也步如一个新的时代,越来越多的 功能各异的单片机为我们的设计提供了许多新的方法与思路。 对于一些场合,比如:复杂的后台运算及通信与高实时性前台控制系 统、软件资源消耗大的系统、功能强大的低消耗系统、加密系统等等。如 果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能 价格比,因此,多种异型单片机系统设计渐渐成为一种新的思路,单片机 技术作为计算机技术的一个重要分支,由于单片机体积小,系统运行可靠, 数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。 但在一些相对复杂的单片机应用系统中,仅仅一个单片机资源是不够的,往 往需要两个或多个单片机系统协同工作。这就对单片机通信提出了更高要 求。 单片机之间的通信可以分为两大类:并行通信和串行通信。串行通信 传输线少,长距离传输时成本低,且可以利用数据采集方便灵活,成本低 廉等优点,在通信中发挥着越来越重要的作用。所以本系统采用串行通信 来实现单片机之间可靠的,有效的数据交换。 二、相关知识 2.1 双机通信介绍 两台机器的通信方式可分为单工通信、半双工通信、双工通信,他们的通信原 理及通信方式为: 单工通信:是指消息只能单方向传输的工作方式。单工通信信道是单向信道, 发送端和接收端的身份是固定的,发送端只能发送信息,不能接收信息;接收端 只能接收信息,不能发送信息,数据信号仅从一端传送到另一端,即信息流是单 方向的。通信双方采用单工通信属于点到点的通信。根据收发频率的异同,单工 通信可分为同频通信和异频通信。 半双工通信:这种通信方式可以实现双向的通信,但不能在两个方向 上同时进行,必须轮流交替地进行。也就是说,通信信道的每一段都可以 是发送端,也可以是接端。但同一时刻里,信息只能有一个传输方向。如 4 日常生活中的例子有步话机通信等。 双工通信:双工通信是指在同一时刻信息可以进行双向传输,和打电话一 样,说的同时也能听,边说边听。这种发射机和接收机分别在两个不同的 频率上能同时进行工作的双工机也称为异频双工机。双工机的特点是使用 方便,但线路设计较复杂,价格也较高。 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 双列直插式封装引脚如图 1.1 所示。 图 1.1 AT89C51 引脚排列 P0 口:P0 口是一个 8 位漏极开路的双向 I/O 口。作为输出口,每位能驱动 5 8 个 TTL 逻辑电平。对 P0 端口写“1”时,引脚用作高阻抗输入。当访问外部程 序和数据存储器时,P0 口也被作为低 8 位地址/数据复用。在这种模式下,P0 具 有内部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P1 输出缓冲器 能驱动 4 个 TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高, 此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的 原因,将输出电流(IIL) 。 引脚口第二功能如下: P1.0/T2(定时器/计数器 T2 的外部计数输入) ,时钟输出 P1.1/T2EX(定时器/计数器 T2 的捕捉/重载触发信号和方向控制) P1.5/MOSI(在系统编程用) P1.6/MISO(在系统编程用) P1.7/SCK(在系统编程用) P2 口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P2 输出缓冲器 能驱动 4 个 TTL 逻辑电平。对 P2 端口写“1”时,内部上拉电阻把端口拉高, 此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的 原因,将输出电流(IIL) 。 在访问外部程序存储器或用 16 位地址读取外部数据存储器(例如执行 MOVX @DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉 发送 1。在使用 8 位地址(如 MOVX @RI)访问外部数据存储器时,P2 口输出 P2 锁存器的内容。 P3 口:P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P2 输出缓冲器 能驱动 4 个 TTL 逻辑电平。对 P3 端口写“1”时,内部上拉电阻把端口拉高, 此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的 原因,将输出电流(IIL) 。 P3 口亦作为 AT89C51 特殊功能(第二功能)使用。 引脚口第二功能如下: P3.0/RXD(串行输入口) P3.1/TXD(串行输出口) P3.2/INTO(外中断 0) P3.3/INT1(外中断 1) P3.4/TO(定时/计数器 0) P3.5/T1(定时/计数器 1) P3.6/WR(外部数据存储器写选通) P3.7/RD(外部数据存储器读选通) 6 此外,P3 口还接收一些用于 FLASH 闪存编程和程序校验的控制信号。 RST——复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电 平将是单片机复位。 ALE/PROG——当访问外部程序存储器或数据存储器时, ALE (地址锁存允许) 输出脉冲用于锁存地址的低 8 位字节。 一般情况下, ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每 当访问外部数据存储器时将跳过一个 ALE 脉冲。 如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH 单元的 D0 位置位, 可禁止 ALE 操作。该位置位后,只有一条 MOVX 和 MOVC 指令才能将 ALE 激活。此 外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 禁止位无效。 PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当 AT89C51 由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效, 即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次 PSEN 信号。 EA/VPP ——外部访问允许,欲使 CPU 仅访问外部程序存储器(地址为 0000H-FFFFH) ,EA 端必须保持低电平(接地) 。需注意的是:如果加密位 LB1 被 编程,复位时内部会锁存 EA 端状态。 如 EA 端为高电平(接 Vcc 端) ,CPU 则执行内部程序存储器的指令。 2.3 串行通信简介 2.3.1 串行通信的特点 在远程通信和计算机科学中,串行通信是指在计算机总线或其他数据通道 上,每次传输一个位元数据,并连续进行以上单次过程的通信方式。与之对应的 是并行通信,它在串行端口上通过一次同时传输若干位元数据的方式进行通信。 一位接一位地顺序传送。 这样一个字节的数据要分 8 次由低位到高位按顺序一位 位地传送。由此可见,串行通信的特点如下:1、节省传输线,这是显而易见的。 尤其是在远程通信时,此特点尤为重要。这也是串行通信的主要优点;2、数据 传送效率低。 与并行通信比, 这也这是显而易见的。 这也是串行通信的主要缺点。 串行通信被用于长距离通信以及大多数计算机网络,在这些应用场合里,电 缆和同步化使并行通信实际应用面临困难。 凭借着其改善的信号完整性和传播速 度,串行通信总线正在变得越来越普遍,甚至在短程距离的应用中,其优越性已 经开始超越并行总线不需要串行化元件等缺点。 7 2.3.2 串行通信技术标准 a 数据传输率 (1)比特率和波特率:比特率是指每秒传输的二进制位数,用 bps(bit/s) 表示。波特率是指每秒传输的符号数,若每个符号所含的信息量为 1 比特,则波 特率等于比特率。在计算机中,一个符号的含义为高低电平,它们分别代表逻辑 “1”和逻辑“0” ,所以每个符号所含的信息量刚好为 1 比特,因此在计算机通 信中,常将比特率称为波特率,即:1 波特(B)=1 比特(bit)=1 位/秒(1bps) 例如:电传打字机最快传输率为每秒 10 个字符/秒, 每个字符包含 11 个二进制位, 则数据传输率为:11 位/字符×10 个字符/秒=110 位/秒=110 波特(Baud)计算机 中常用的波特率是:110、300、600、1200、2400、4800、9600、19200、28800、 33600,目前最高可达 56Kbps. (2)位时间 Td:位时间是指传送一个二进制位所需时间, 用 Td 表示。 Td = 1/ 波特率 = 1/B (3)发送时钟和接收时钟 在串行通信中,二进制数据以数字信号的信号形式出现,不论是发送还是接 收,都必须有时钟信号对传送的数据进行定位。在 TTL 标准表示的二进制数中, 传输线,且每一位持续时间是固定 的,由发送时钟和接收时钟的频率决定。 1)发送时钟 发送数据时,先将要发送的数据送入移位寄存器,然后在发送时钟的控制下, 将该并行数据逐位移位输出。 通常是在发送时钟的下降沿将移位寄存器中的数据 串行输出,每个数据位的时间间隔由发送时钟的周期来划分。 2)接收时钟 在接收串行数据时,接收时钟的上升沿对接收数据采样,进行数据位检测,并 将其移入接收器的移位寄存器中,最后组成并行数据输出。 b 波特率因子 接收时钟和发送时钟与波特率有如下关系:F=n×B 这里 F 是发送时钟或接 收时钟的频率;B 是数据传输的波特率;n 称为波特率因子。设发送或接收时钟的 周期为 Tc,频率为 F 的位传输时间为 Td,则:Tc=1/F,Td =1/B 得到:Tc=T/n 在实际串行通信中,波特率因子可以设定。在异步传送时,n = 1,16,64 实际 8 常采 n=16,即发送或接收时钟的频率要比数据传送的波特率高 n 倍。在同步通 信中波特率因子必等于 1。 三、硬件设计 3.1 系统元器件需求 在桌面上双击图标打开 ISIS 7 Professional 窗口。 在器件选择按钮中单击 “P” 按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示的元件。 表 1 元件选择表 51 单片机 AT89C51 二片 瓷片电容 CAP 六只 电阻 RES 五只 七段数码管 7SEG-COM-CAT-GRN 一 只 灯 LED-GREEN 二只 晶体 CRYSTAL 电解电容 CAP-ELEC 开关 BUTTON 反 相 器 四只 二只 二只 六只 74LS05 在 ISIS 原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在 对象选择器中单击 POWER 和 GROUND 放置电源和地。放置好元件后,布好线。左 键双击各元件,设置相应元件参数,完成电路图的设计。 3.2 系统硬件电路设计图 3.2.1 整体电路设计 图 3.1 整体电路 9 将数码管与单片机 U1 的 P0 口连接构成系统的开关记数显式电路的部分; 将 开关与单片机 P3 接口连接组成系统的按键电路,用来对显示器的控制;LED 的 段选端与单片机 U2 的 P2 口连接构成系统的 LED 显示系统; 单片机左边部分电 路与单片机构成系统的复位电路。 3.2.2 控制电路设计 图 3.2 控制电路设计图 将开关 K2,K3 分别连接两个反相器,并分别把两个开关连接 P1.0 和 P1.1; 将 K1 连接 P3.2,三个开关接地,此电路为开关分别控制两个 LED 灯亮。开关控 制电路设计图如图 3.2 所示。 3.2.3 复位电路 图 3.3 复位电路图 将元器件如电路设计图如图 3.3 所示连接并 与单片机相连, 构成复位电路。 如果实现了灯的亮灭控制,点击图 3.3 中的开关,使电路恢复到未开始状态 10 3.2.4 显示电路 图 3.4 系统显示部分电路设计图 将 LED 数码显示管的段选端与单片机的 P0 口相连,由于数码管采用的是动 态显示, 所以通过对 P0 的 8 位二进制数据的改变使数码显示管动态显示; 将 LED 的位选端与单片机的 P2 口连接使 LED 数码显示管不断的到位选信号在与数选信 号不断的配合下显示开关按键次数数据。系统显示部分电路设计图如图 3.4 所 示。 11 四、程序源代码 4.1 程序流程图 主程序 开始 程序初始 化 主机发送信号开关按下 从机应答 未应答 主机发送数据 输出完 成? 未完成 清除标志位 图 4.1 发送端程序流程图 12 主程序 开始 程序初始化 接收数据 接收完成? 未完成 重新接收 发送信号 接收完 成? 未完成 清除标志位 显示 图 4.2 接收方程序流程图 图 4.1,4.2 所示为系统软件系统主机与从机流程图,实现双机通信 4.2 源程序(见附录) 五、Proteus 软件仿真 用 Keil 软件编译程序生成可执行文件.hex 文件后,在 Proteus 文件中在单 片机里加入 Keil 软件中生成的 hex 文件,然后仿真测试。显示电路功能如下所 示。 13 图 5.1 开关控制 LED 灯亮灭图 图 5.2 数码管显示开关按键次数图 Hex 文件烧入到单片机中后,开始运行电路图,点击开关 K1,K2,K3,实现 LED 灯 1,2 的点亮。U2 的 K2 开关点击次数可以再数码管显示,系统的电路及显 示效果均到达设计要求。 14 六、结束语 通过此次课程设计,使我更加扎实的掌握了有关单片机方面的知识,在设计 过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于 找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。 在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。 这次课程设计终于顺利完成了, 在设计中遇到了很多问题, 最后在老师的指导下, 终于游逆而解。在今后的学习实践过程中,一定要不懈努力,不能遇到问题就想 到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才 能成功的做成想做的事,才能在今后的道路上劈荆斩棘,收获喜悦! 回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可 以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所 学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计 使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把 所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务, 从而提高自己的实际动手能力和独立思考的能力 15 参考文献 [1]张毅刚,彭喜元,姜守达,乔立岩. 新编 MCS-51 单片机应用设计. 哈尔滨工 业大学出版社. 2009.08 [2]李全利.单片机原理与接口技术.高等教育出版社.2009.01 [3]蔡明文,冯先成.单片机课程设计.华中科技出版社.2007.03 [4] 范红刚,魏学海,任思 璟 .51 单片机自学笔记 . 北京航空航天大学出版 社.2010.01 16 致 谢 本次课程设计是在老师的悉心指导下完成的, 对于此次课程设计的过程于老 师给予了极大地关心与帮助,并在课程设计的方向、内容等方面给予了热心的帮 助与指导。老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人 不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格 魅力对我影响深远。不禁使我树立了远大的学术目标、掌握了基本的研究方法, 还是我明白了许多待人接物与为人处事的道理。 本论文从选题到完成,每一步都是在导师的指导下完成的,倾注了导师大量 的心血。 论文的顺利完成,离不开各位老师、同学和朋友的关心和帮助。在此感谢组 员的支持和帮助;没有他们的帮助和支持是没有办法在短时间内完成的,同窗之 间的友谊永远长存。 在此,谨向导师表示崇高的敬意和衷心的感谢! 学生签名: 填表日期: 17 指导教师评语 成绩评定 指导教师签名: 填表日期: 18 附录:源程序 甲机程序 #includereg51.h #define uchar unsigned char #define uint unsigned int sbit K1=P3^2; sbit K2=P3^3; sbit K3=P1^1; uchar Operation_NO=0; uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void DelayMS(uint ms) { uchar i; while(ms--) for(i=0;i120;i++); } void Putc_to_S(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){ DelayMS(100); if(K1==0){ Operation_NO=1; } if(K2==0){ Operation_NO=2; } if(K3==0){ 19 滁州学院学年设计 Operation_NO=3; } switch(Operation_NO) {case 1: Putc_to_S(A); break; case 2: Putc_to_S(B); break; case 3: Putc_to_S(C); break; } } } void Serial_INT() interrupt 4 {if(RI) {RI=0; if(SBUF=0&&SBUF=9) P0=DSY_CODE[SBUF]; else P0=0x00; } } 乙机程序 #includereg51.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 DelayMS(uint ms) {uchar i; while(ms--) for(i=0;i120;i++); } void main() { LED1=1; LED2=1; SCON=0x50; TMOD=0x20; TH1=0xfd; TL1=0xfd; PCON=0x00; 20 滁州学院学年设计 RI=0; TI=0; TR1=1; IE=0x90; while(1) { DelayMS(100); if(K2==0) { while(K2==0); NumX=++NumX%11; SBUF=NumX; while(TI==0); TI=0; } } } void Serial_INT() interrupt 4 { if(RI) { RI=0; switch(SBUF) {caseA:LED1=0;LED2=1;break; caseB:LED1=1;LED2=0;break; caseC:LED1=0;LED2=0;break; } } } 21

http://cellmall.net/shuangjixietong/231.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有