欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    基于单片机与PC机通信的设计毕业论文.doc

    • 资源ID:3921625       资源大小:1.72MB        全文页数:32页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机与PC机通信的设计毕业论文.doc

    题目:基于单片机与基于单片机与 PC 机通信的设计机通信的设计 目 录 1 摘要 3 2 设计内容及要求 3 3 串口通信原理 3 4 设计思路 4 5 设计框图 5 6 硬件实现 5 6.1AT89C525 6.2MAX232 芯片 6 6.3 9 针串口 8 7 用 VC+开发串口通信软件9 7.1 用户界面设计 9 7.2 程序设计 .14 8 硬件电路设计 .17 8.1 设计思路 .17 8.2 通信协议 .17 8.3 电路图 .17 8.4 单片机程序 .18 9 软件仿真 .21 10 实物电路调试 24 11 总结 25 参考文献.26 2 3 单片单片机与 PC 机串口双向数据通信 1 摘要 PC 与 PC 或 PC 与端口之间的数据传输能够使用串行通讯和并行通讯二种通讯方式。 因为串行具有使用线路少、而且成本相对较低的特点,尤其是在距离较远的情况下传输 时,防止了多条线路特性大相径庭而被普遍使用。 串行通讯时,规定通讯双方必须使用 相同标准的接口,使得不同的设备能够快速有效地连接起来进行通讯。 RS-232-C 接口 (又称 EIA RS-232-C)是目前已知最常用的几种串行通讯接口之一。是由各个厂商议共同 拟定的用于串行通讯的使用标准。串行通讯标准的全称是“数据终端设备(DTE)和数据通 讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个 25 个脚的 DB25 连接器,对连接器的各个引脚的信号内容加以明确,还对各种信号的电平加以明确。 随着 PC 技术尤其是 MCU 微型计算机技术的延伸,人们已愈来愈多地使用单片机对 众多工业控制应用加以管理和检测。例如温度、流量和压力等参数。PC 机有着非常强大 的监控功能,而 MS89C51/52MCU 则拥有快速和灵便的监控特点,通过 PC 机的 RS-232 串行接口和外部设备进行连接,是众多监控系统中最为常用的通讯方式之一。因此怎么 实现 PC 机与 MCU 之间的通讯变得极为有意义。 Data transmission between PC and PC or PC and port to use serial communication and parallel communication two communication modes. Because the serial line with the use of small, and relatively low cost characteristics, especially in the long distance transmission case, prevent multiple line characteristics and is widely used to be quite different. Serial communication, communication both sides must use the same set of standard interface, so that different devices can be connected to communicate quickly and efficiently. The RS-232-C interface (also known as EIA RS-232-C) is one of the most commonly used serial communication interface is known at present. By the various factory negotiate together for serial communication using standard. The standard serial communication is the full name of “data terminal equipment (DTE) and the data communications equipment (DCE) between the serial binary data interchange interface technology standard“ DB25 connector of the standard requires the use of a 25 foot, the content of each signal pin connector to be clear, but also a variety of signal level to be clear. With PC technology, especially the extension of the MCU micro computer technology, people have more and more use of SCM for many industrial control applications to manage and detection. Such as temperature, flow and pressure parameters. PC machine has a very powerful monitoring function, while the MS89C51/52MCU has a fast and flexible monitoring features, are connected through the RS-232 serial interface and the external device PC, is one of the most commonly used means of communication of monitoring system. So how to realize the 4 communication between PC and MCU is very meaningful. 2.选题背景 PC 机与单片机分别作为作为上位机和下位机的控制系统无论是在国内还是在国外都 已经很普遍。PC 机一般采用以简洁方便的人机界面进行操作,与单片机通过串口通信的 方式进行积极交互。单片机系统可以根据被控对象做出反应,从而给予对应的前向,后 向信号通道,其运行时被作为作为主控机测目标。单片机作为从机接受 PC 机监测和管理, 不定期发送目标与本身的工作状态信息给 PC 机。 目前,因为电路集成程度增加,随着 PC 机技术的发展 PC 越来越微型化和超微型化。 微型计算机在军事演习,智能机器人,航空航天,医学研究等众多复杂系统之中扮演着 越来越重要的角色。在相当多的工业生产中,经常需要以多台单片机作为下位机执行对 被控对象的直接控制,应用 PC 机作为上位机对复杂的数据进行处理,形成了一种管理相 对集中、控制相对分散的集散控制系统。 为了使系统管理的先进性和安全性有所提升,集总分算系统在工业生产的自动控制 和监测系统被普遍地使用。其中以上位主 PC 机(主机)管理与下位机(单片机)直接参 与控制监测的主从式应用系统成为最常见的方式。因此通讯能够在在主机和从机之间进 行调进行。主机的功能:一是能够向从机传输各种命令以及所需要的参数,二是能够对 从机发送的信息进行时时搜集、整理和分析,有利于实现下一步的决策与报表。从机则 只能接收、执行由主机传输的信息,而且需要向主机反馈比较麻烦实时数据,以及单片 机的运行状态。 采用串口总线技术就能够大大简化系统硬件设计、缩小系统的体积、提高体统的可 靠性。因此系统的更改和扩充也变得更为简单。MSC51 系列单片机,因为有一个对异步 通讯可以使用的全双工串行的内部通讯接口,阴齿能够极为方便的构成主从式系统工作 系统。 串口是 PC 机上非常常用的设备通讯协议之一,计算机包多数是需要两个基于 RS232 的串口。众多仪器仪表设备常用的通讯协议也是串口。例如 RS-232 串口也被很多使用 GPIB 设备所兼容。同时搜集远程设被的数据也可以用串口通讯协议。因此,对串口通信 相关知识认真的理解学习和研究是不可或缺的。此次将“PC 机与 51 型单片机的串口通讯” 作为毕业设计,完成了使用 51 单片机来完成主从式的总线系统通讯。经过本次设计,掌 握了串口通讯的原理和应用,为以后的工作和学习储备知识。 3 串行通信 3.1 串行通信的原理及意义串行通信的原理及意义 串行通讯对单片机有着极其重要的意义,不仅能够实现将单片机的数据输出到计算机端口,还能实现 PC 对 MCU 的控制.因其具有操作简单,线程短,连接简便等优点而受到普遍的应用。远程控制系统与 信息的采集系统的工作方式简单概括可以分为上位机和下位机。因为串行通讯具有高效性、可行性、 灵活性,以及便于管理的特点,所以能够成为常用的通讯方式之一。 5 “串行通信“其实是指单片机和 PC 机间使共同使用同一根数据信号线,信息必须在同一 根数据信号线上按规定完成传输,每一位数据有且只有一个明确的时间长度。串行通信 使用的数据线少,在远距离通讯中可以降低通信成本,但其传输速度与并行传输相比较 慢。综合其优劣势我们选用串行通讯。因为要满足高效率的需求,位于 PC 机内部的 CPU 与串口之间的通讯必须采用串行的通讯方式,所以串行通讯的实质就是必须实现 CPU 与 单片机设备的数据方便快捷地进行格式转换(或者称为串并转换器),即当数据从单片 机传送到 PC 机时,数据信息将被位 (bit)转化为字节数据;相反的,当 PC 机将数据发送 到下行单片 机设备时,字节数据在串行的方式下又被转化成为位数据 串行端口的作用就是在 CPU 和串行设备之间完成编码并转换。当数据由通过 CPU 的 串行端口被传输出去时,字节数据被转换成为位数据。当数据被串行端口进行接收时, 位数据将被转换成为字节数据。 在 Windows 操作系统中,串口是系统资源的重要组成部分。 应用程序要通过串行 完成通讯,使用之前操作系统会对是否进行资源申请要求进行提示(串口被打开),通 讯结束后一定要将资源释放(关闭串口)。 关于串行通讯的理解其实非常简单,串行按位(bit)发送和接收字节。因为并行通 信与字节(byte)相比并行通信的速度较慢,而串行能够一边使用一根线发送数据一边用 另一根线接收数据。它的实现非常简单并且能够实现远距离通讯。例如对 IEEE488 进行 明确并行通行状态时,一般认为设备总线的长度最好不要超过 20 米,而且每两个设备间 的间距最好不要超过超过 2 米。而串行的优点在于,长度能够达到 1200 多米。 3.2 串行通讯的应用实例串行通讯的应用实例 常见的的的串口通讯应用实例就是 ASCII 码字符间的传输。通信仅仅使用 3 根线就能够 完成:(1)地线,(2)发送,(3)接收。因为串行通讯必须通过异步的方式才能完成, 端口能够一边在一根线上发送数据一边在另一根线上接收数据。其他线用于握手,但是 可以不使用。串口通讯的参数可以简单概括为:波特率、数据位、停止位以及奇偶校验。 对于 PC 机与 89C51/52 间端口的通讯务必要所有参数务必一一对应. 3.3 串行通讯的参数串行通讯的参数 a,波特率:波特率是用于通信速度的检测标准。波特率也可以理解为每秒传送的 bit 的个数。例如 200 波特代表的就是传输速度为 200 个 bit 每秒。提到这里就不得不提及时 钟周期,我们一般认为时钟周期所需要的波特率为 4800 波特率,那么,4800Hz 就是我们 认为的时钟周期。也说明了串行通信在数据线上的要使用 4800Hz 波特率。常见的电话线 的波特率一般有 14400,28800 和 36600 几种。其他远距离传输的波特率还远远大于这些 数值,且波特率具有和距离成反比的特点。较大的波特率经常被用于几个很近的仪器间 的通讯。 在对波特率进行选择的时候优先考虑两点:首先,系统所需的最大的通信速率。这要决定于系统 的运行特性,明确规定通信的频率的变化范围,然后计算通信时的时钟误差,务必要选用用相同频率 6 的晶振。在选择不同的通信时钟时其速率会有很大差别即通讯误差。为了稳定通信,我们一定要选择 最小 的时钟误差频率进行通信。 我们对波特率选择过程举例说明:设计要求的通讯频率如果不足 20000bit/s,则晶振频率就是 12MHz,对 SMOD 进行设置让其等于一(即波特率倍增)。 由波特率取值表,我们了解到能够选取的波特率有:1200,2400,4800,9600,19200 波特率计数器重载值波特率误差 1200207 0.17% 2400234 0.17% 4800247 0.17% 9600246 7.00% 19200257 8.61% b,数据位:这是测量通讯中客观数据位的标准。当一个信息包由计算机发出,客观 的数据不一定是 8 位的,其中有着明确标准的值是分别为 5、7 和 8 位。怎么设定由你想 传送的信息决定。例如,ASCII 码的标准是 0127(7 位)。延伸的 ASCII 码是由 8 位 (0255)组成的。如果要使用简洁的文本数据(标准 ASCII 码),那么使用任意数据 包都应该是 7 位数据。每个包都是由一个字节组成,开始/停止位,数据位和奇偶校验位。 由于客观的数据位由通讯协议的选取而决定。 c,停止位:用于单个包的最后一位的确定,其值一般为 1,1.5 和 2。因为数据是在 传输线上定/计时使用的,要求每一个设备都有自己的时钟。如果最后一位不相同,原因 可能是在两台设备间在通信中出现了多多少少的不同步。所以停止位不单单是代表结束 传输,并且给 PC 机创造了校正时钟同步的条件。被停止位应用的位数越多,不同时钟同 步的容 忍程度越大,然而数据传输地速率也随之变慢。 d,奇偶校验位:在串行通讯中非常简单的检错方式之一。检错方式分为四种:奇、偶、 高和低。校验位没有其实也是可行的。关于奇偶校验的分析,串口能将校验位设置好。 比如,如果使用 011 的数据。关于偶校验,校验位为 0,能够保证逻辑最高为一定为偶数。 关于奇校验,校验位是 1,这样逻辑高位会出现 3 个。高位和低位并不能对数据进行真正 检查。为了使奇偶校验的纠错能力有所提高,最好使用双向奇偶校验(Row and Column Parity),也被称为双向冗余校验(Vertical and Longitudinal Redundancy Checks)。通过奇偶 校验就能使接收设备可以明确是哪一个位的状态,能够辨别噪声是否被通信干扰了或者 是数据在传送和接收时是否同步。 2串行口的控制寄存器 串行口数据缓冲器 SBUF 采用了互相独立两个接收器。共用一个地址 99H 的发送的缓冲器 SBUF 对应着 2 个寄 7 存器(发送寄存器和接收寄存器)。缓冲发送器用于存放要发送的数据,只能写入, 不能读出。接收缓冲器用于存放接收到的数据,只能读出,不能写入。对 SBUF 的指 令进行辨认,根据是读指令还是写指令来区别是对接收缓冲器还是对发送缓冲器进行 操作。 读 SBUF,比如 MOV A,SBUF 指令,就是读接收缓冲器的内容; 写 SBUF,比如 MOV SBUF,A 指令,就是修改发送缓冲器的内容。 串行控制寄存器 SCON SCON 可用于确定串行通信的工作方式和控制串行通道的某些功能,监视和控制串行 口的工作状态,也可用于存放要发送和接收到的第 9 个数据(TB9、RB8),并没有接收 和发送中断标志 RI 和 TI。 四设计要求及内容四设计要求及内容 4.1 设计要求 在 PC 机控制系统中,难免要使用多机进行通讯。因为单片机在各个行业的普遍应用, 所以要优化利用 51/52 单片机系统与 PC 机 J 间的 RS232 的连接,我们要使用串行连接。 能够简单方便地完成双通道数据传输。 我们使用 protues 仿真调试软件,反复地向串口传送“1”、“2”、“3”“8”、 “9”、“0”等信号,单片机收到信号之后在数码管上展示出来,并且也将向 PC 机反馈 出现成功的确认信息,也就是在在 PC 机串口调试区域也就是接收缓冲区中将出现 “display OK!”的字样。 4.2 总体方框图 8 4.3 通信过程分析 单片机通电后缓存区的数据通过数码管显示出来,对串行中断进行等待。串行中断传输时,先要 对接受中断或者发送中断进行判断。如果对中断进行发送,则需要对将 TI 清零然后中断返回;如果需 要对中断进行接收,将进入处理子程序。在子程序的处理过程中,接收到的 ASCII 码将进行数据转换 成为十六进制的数字并由单片机发送出去,在显示缓存区中存放,调用显示子程序在数码管上显示出 接收到的数据,再调用发送子程序给 PC 端软件回送一个确认显示的信号。 4.4 通信方式的选择 一、数据通信的传输方式:单工、半双工、全双工和多工方式。 A 单工方式:数据只能够一个单一的方向进行传输。因为单工方式的功能十分有限,所以常用于 串行口的打印数据传输与简单系统间的数据采集。 B 双工方式:数据的传送也可以是双向的,但不可以同时实现。在日常生活中多要实现收发开关 转换采用某种协议一般多使用某种协议。 C 全双工方式:可以实现双方同时对数据进行双向传输,与单工方式和双工方式相比较而言要完 成全双工电路的线路和设备的连接还是较为繁琐得。 D.多工方式:以上三种传输方式都是同一线路传输一种频率信号,为了充分的利用线路资源,可 通过使用多路复用器或多路集线器,采用频分、时分、或码分复用技术,即可实现在同一线路上资源 共享功能,我们称之为多工传输方式。 4.5 本设计中串行通信的实现本设计中串行通信的实现 (1)通信协议:PC 机首先发送一个数据(以 ASCII 码形式表示的数字),单片机接收到之后返回 一个约定的数据(本设计约定为 2AH)到 PC 机表示通信正常,并且单片机已经正常显示收到的数据。 (2)串行异步通信、不使用奇偶校验位,一个数据包括,一位起始位、八位数据位、一位停止位。 (3)单片机串行口工作于方式一;用定时器 1 产生 9600bit/s 的波特率,工作于方式二。 9 (4)每次通信传输一个数据。 5 设计框图 图 5-1 系统框图 6 硬件实现 6.1AT89C52 AT89C52: AT89C52 是 51 系列 MCU 之中功能最多切最常用的单片机,它是由 ATMEL 公司生产的。 AT89C52 是常见的低电压,高功率的 CMOS 8 位微控制器之一,该单片机主要 由 8k bytes 的可反复擦写的 Flash 只读程序存储器和 256 字节的随机存取数据存储器 (RAM)组成,该单片机的元器件一般使用 ATMEL 公司生产的具有高密度、非易失性 存储技术的产品,明确单片机指令系统的使用,该单片机的主要组成是由八位中央处理 器和 Flash 存储单元。具有强大功能的 AT89C52 微控制器适用于众多较位复杂的系统控 制应用服务。 这种类型的单片机共有 40 个引脚,分别为:32 个双向的输入/输出(I/O)的外 部端口,2 个外中断口,3 个 16 位可编程定时计数器,2 个全双工串行通信口,2 个读写口 线。AT89C52 单片机能够通过常规方式下载程序,但是缺点是不能够使用在线编写程序(S 系列的才支持在线编程)。AT89C52 将常用的的 8 位微处理器和 Flash 存储器有效地结合 在一起。特别是使用能够反复使用的 Flash 存储器能够最大化地节约开发成本。 10 微处理器的封装形式有三种分别为 PDIP、PQFP/TQFP 及 PLCC,分别用于不同产品 的使用。 图 6-1 AT89c52 引脚图 6.2 MAX232 芯片 MAX232 芯片的简介:由 MAXIM 公司生产的 MAX232。MAX232 使用了 IC 芯片的 两个接收器和驱动器,能够很好地在任意 EIA-232C 和 V.28/V.24 的通信端口上使用。 MAX232 芯片的作用: 因为需要将+5V 的电源电压变为 RS-232C 输出电平正常使用 的±10V 电压所以 MAX232 包含了一个电源电压变换器。所以,MAX232 芯片接口应用 的串行通信系统仅仅在+5V 电源下就可以工作了。在很多情况下没有+12V 电压,其具有 更强的适应性. 图 6-2 MAX232 芯片引脚 11 管脚说明如下 C0+、C0-、C1+、C1-是外接电容端; R1IN、R2IN是2路RS-232C电平信号接收输入端; RlOUT、R2OUT是2路转换后的TTL电平接收信号输出端,送8051的RXD接收端; TlIN、T2IN是2路TTL电平发送输入端,接8051的TxD发送端; TlOUT、T2OUT是2路转换后的发送RS-232C电平信号输出端,接传输线; V+经电容接电源+5V; V-经电容接地。这种连接的传输介质一般采用双绞线,通信距离一般不超过15m,传输 率小于20kB/s。 图 6-3 MAX232 典型工作电路图 TTL/CMOS 输输入入 RS-232 输输出出 RS-232 输输入入 C1+ C1- C2+ C2- T1IN T2IN R2OUT R1OUT T1OUT T2OUT R1IN R2IN VCC GND C1 C2 C5C3 C4 + + + + V+ V- 400k 400k 5k 5k +5V +5V 1 3 2 4 5 6 11 10 12 9 8 13 7 14 15 16 +5V+10V (倍倍压压器器) +10V-10V (电电压压反反相相器器) 12 6.3 9 针串口 由数据线接法不难观察到,数据线内部引脚并未出现交叉。其原因是母头与公头的 自身的引脚功能是不同的,因此没有必要进行交叉。9 真串口在外部表现为计算机 COM1 口公头的数据引脚并未交叉的连向了开发板的 COM2 母头。 数据线的连接方法有很多种但仅仅记住一点就可以了:一样的头必须得交叉,不一 样的头不用交叉。公头和母头自身的引脚确定了 9 针引脚之中大的一头是由 5 个引脚组 成,小的一头是由 4 个引脚组成的。 为了数据的发送与接收能够顺利实现就不得不提到以上这三个引脚。而其它引脚是用来 控制传输规则的,即握手协议。下面是 9 针串口(DB9),引脚功能。 引脚号缩写英文全称功能说明 1DCDData Carrier Detection数据载波检测 2RXDReceive Data接收数据 3TXDTransmit Data发送数据 4DTRData Terminal Ready数据终端准备 5GNDSystem Ground信号地 6DSRData Set Ready数据设备准备好 7RTSRequest to Send请求发送 8CTSClear to Send清除发送 9RIRing Indicator振铃指示 表 6.3.1 九针串口引脚功能 图 6-4 串口图 13 我们还应该注意串口插座有公母两种类型其中:公的串口插座是带有插针的 (有针) 母的串口插座是不带有插针的(有洞). (4)RS-232总线规定2 RS-232 标准总线为 25 根,采用标准的 D 型 25 芯插头座。引脚及功能如图 6-5 所示. 7 用 vc+开发串口通信软件 7.1 用户界面设计 在进行应用程序设计前,首先需要使用 vc+6.0 提供的 AppWizard 工具自动生成一 个工程。选择【开始】/【程序】/【Microsoft Visual C+ 6.0】启动程序。在主界面的选择 菜单命令 FileNew,在如图所示的新建对话框选择【MFC AppWizard(exe)】,输入项目名 称单击 next 按钮,选择基本对话框,其他选项不变,连续单击 next,直至最后 Finish。至 此工程建立完成。 具体步骤如下图所示: 14 图 7-1 vc+建立工程图 图 7-2 应用程序类型选择 15 图 7-3 工程建立完成示意图 工程建立完成后,出现如图所示对话框 图 7-4 基本对话框示意图 将对话框中的两个按钮,及静态文本删除,添加其他控件,将对话框设置如下图所 示 图 7-5 界面设计示意图 16 其中在基本控件框中是没有的,需要把它添加进来。具体步骤是【工程】【增 加到工程】【Components and controls】如下图所示: 图 7-6 添加控件 17 图 7-7 控件选择 单击 Insert,确定。至此控件添加完成。 接下来就是对控件变量的设置,单击【查看】【建立类向导】 图 7-8t 图 7-8 控件变量的设置 选择 IDC-EDIT1,单击 add variable,输入控件名称单击 ok。用同样方法设置其它控 件。完成后如图所示。 18 图 7-9 控件变量设置 下来就是添加对应函数,如上对话框选 message maps 选 IDC_BUTTON1,选 BN_CLICKED,单击右边 add funtion,命名为 openport 函数。 图 7-10 添加对应函数 以同样方法对 IDC_BUTTON3,IDC_BUTTON4,IDC_MSCOMM1,添加对应函数 Onclr,Onsend,Oncomm。 7.2 程序设计 初始化组合框 BOOL CSamDlg:OnInitDialog() CDialog:OnInitDialog(); / Add “About.“ menu item to system menu. CString str=“COM1“; m_com.SetWindowText(str); oncomm 函数 void CSamDlg:OnComm() / TODO: Add your control notification handler code here VARIANT variant_inp; 19 COleSafeArray safearray_inp; LONG len,k; BYTE rxdata2048; /设置 BYTE 数组 An 8-bit integerthat is not signed. CString strtemp; if(m_ctrlComm.GetCommEvent()=2) /事件值为 2 表示接收缓冲区内有字符 /以下你可以根据自己的通信协议加入处理代码 variant_inp=m_ctrlComm.GetInput(); /读缓冲区 safearray_inp=variant_inp; /VARIANT 型变量转换为 ColeSafeArray 型变量 len=safearray_inp.GetOneDimSize(); /得到有效数据长度 for(k=0;klen;k+) safearray_inp.GetElement(/转换为 BYTE 型数组 for(k=0;klen;k+) /将数组转换为 Cstring 型变量 BYTE bt=*(char*)(rxdata+k); /字符型 strtemp.Format(“%02X“,bt); /将字符送入临时变量 strtemp 存放 m_strEditRXData+=strtemp; /加入接收编辑框对应字符串 m_strEditRXData+=“rn“; /换行 UpdateData(FALSE); /更新编辑框内容 Openport 函数 void CSamDlg:Openport() / TODO: Add your control notification handler code here int iindex = m_com.GetCurSel(); if(m_ctrlComm.GetPortOpen() m_ctrlComm.SetPortOpen(FALSE); 20 m_ctrlComm.SetCommPort(iindex+1); /选择 COM if( !m_ctrlComm.GetPortOpen() m_ctrlComm.SetPortOpen(TRUE);/打开串口 AfxMessageBox(“端口已打开“); else AfxMessageBox(“打开端口错误“); m_ctrlComm.SetSettings(“9600,n,8,1“); /波特率 9600,无校验,8 个数据位,1 个 停止位 m_ctrlComm.SetInputMode(1); /1:表示以二进制方式检取数据 m_ctrlComm.SetRThreshold(1); /参数 1 表示每当串口接收缓冲区中有多于或等于 1 个字符时将引发一个接收数 据的 OnComm 事件 m_ctrlComm.SetInputLen(0); /设置当前接收区数据长度为 0 m_ctrlComm.GetInput(); Onclr 函数 void CSamDlg:Onclr() / TODO: Add your control notification handler code here m_strEditRXData=“; m_strEditTXData=“; UpdateData(FALSE); Onsend 函数 void CSamDlg:Onsend() / TODO: Add your control notification handler code here UpdateData(TRUE); /读取编辑框内容 m_ctrlComm.SetOutput(COleVariant(m_strEditTXData); 21 编译运行。 8 硬件电路设计 8.1 设计思路 将单片机 RXD,TXD 分别通过 max232 进行电平转换后与 9 针串口 TX,RX 相接。单 片机 p0 口进行位选,p1 口送断码到数码显示。单片机串行口工作方式 2,并允许接收。 定时器选 T1,工作方式 2。 8.2 通信协议 PC 机(程序)通过串口向单片机一次发送一个数字,由 10 位二进制码组成, 一位起始位(0),八位 ASCII 码,一位终止位。 单片机通过串口接收数据之后,将此数字显示出,再向 PC 发送一个约定的 ASCII 码(定为 02AH),程序被此事件触发,当程序收到这个约定的字符码串之后,即 认为单片机已成功接受并显示,然后串口调试程序的接收缓冲区显示出“Display OK!”。 单片机的串口工作模式为方式 2。波特率 9600bit/s。 8.3 电路图 图 8-1 硬件电路图 22 8.4 单片机程序 receivedata data 40h ;存放收到的数据 displaydata data 39h ;存放显示子程序要显示的数据 ORG 0000H JMP START ORG 0023H JMP COMMJUDGE ORG 0100H START: MOV SP, #60H MOV SCON, #50H MOV PCON, #80H MOV TMOD,#20H MOV TL1,#0FAH MOV TH1,#0FAH SETB EA SETB ES SETB TR1 HERE: JMP HERE COMMJUDGE: JB TI,TT00 ;如果是发送引起的中断,那么就不管 CLR RI CALL CHANGEDIS CALL DISPLAY CALL TRANS TT00: CLR TI RETI 23 ;* ;= ;功能描述: 串口接收数据的处理子程序 ;创建日期: 2011 年 8 月 25 日 12:37:12 ;= CHANGEDIS: PUSH Acc PUSH PSW MOV A,SBUF MOV receivedata,A SUBB A,#30H ;数字的 ASCII 码转换为对应的数字(此程序仅限数 字 MOV displaydata,A POP PSW POP Acc RET ;= ;函 数 名: TRANS ;功能描述: 串口发送数据给 PC 的子程序 ;创建日期: 2011 年 8 月 25 日 12:43:48 ;= TRANS: PUSH ACC PUSH PSW MOV A,#2AH ;2AH 是事先约定的字符,返回给 PC 端时,用于确认显示正确 MOV SBUF,A ;此语句产生一个 TI=1. MOV R7,#02H DL: MOV R6,#0FFH DL6: DJNZ R6,DL6 DJNZ R7,DL 24 POP PSW POP ACC RET ;= ;函 数 名: DISPLAY ;功能描述: 显示子程序 ;创建日期: 2011 年 8 月 24 日 22:37:46 ;= DISPLAY: MOV R1,#displaydata ;取显示缓冲区首地址 MOV A,R1 ;查表获取段选码 MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,#0FEH ;对 P0 口进行位选,FE 则最左边那位显示 MOV P1,A ;给 P1 口送段选码 RET ;-LED 显示码表- TAB: DB 0c0H, 0f9H, 0a4H, 0b0H, 99H, 92H ; 0 1 2 3 4 5 ; 00H 01H 02H 03H 04H 05H ; DB 82H, 0f8H, 80H, 90H, 88H, 83H ; 6 7 8 9 A b ; 7DH 07H 08H 09H 0AH 0BH ; DB 0c6H, 0a1H, 86H, 8eH, 8cH, 0c1H ; C D E F P U ; 0CH 0DH 0EH 0FH 10H 11H ; DB 89H, 0c7H,0bfH, 91H,00H,0ffH ; H L - y ON OFF ; 12H 13H 14H 15H 16H 17H ; 25 DB 92H, 77H, 8bH, 0afH, 0a3H, 0a1H ; S t h r o d ; 18H 19H 1AH 1BH 1CH 1DH ; DB 0f0H, 0FH, 8bH, 0afH, 0a3H, 0a1H ; S t h r o d ; 1EH 1F END 9 软件仿真 首先在 protues 中画出如下电路图 图 9-1 protues 仿真电路图 打开虚拟串口软件,建立 COM4 和 COM5 为相互连接的一对端口。如图所示: 26 图 9-2 建立虚拟端口 单击添加端口,即可完成端口添加

    注意事项

    本文(基于单片机与PC机通信的设计毕业论文.doc)为本站会员(来看看)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开