ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:127.03KB ,
资源ID:11057010      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11057010.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(51单片机与PC机串行异步通信设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

51单片机与PC机串行异步通信设计.docx

1、51单片机与PC机串行异步通信设计 摘要51单片机是基础入门的一个单片机,还是应用最广泛的一种,它可以独立完成对数字信号的算术运算,逻辑控制,串行通信等功能。但当需要处理较复杂数据或需要对多个采集数据进行综合处理以及需要进行集散控制时,单片机的算术运算和逻辑运算能力显的不足,往往需要借助计算机系统,此时要求单片机不仅能独立完成单机的控制任务,还要能与其他数据控制设备进行数据交换。因此,实现单片机与PC机之间的远程通信对单片机而言意义重大,不但可以实现将单片机的数据传输到电脑端,而且也能实现电脑对单片机的控制。本文系统地介绍了利用程序设计语言C51和Keil uVision3软件实现51单片机与

2、PC之间进行异步通信的设计。关键字:单片机;PC机;串行异步 目录前言 2第1章 51单片机与编译语言、软件简介 31.1 51单片机简介 31.2 程序设计语言C51简介 31.3 Keil uVision3简介 3第2章 通信方式的选取与分析 52.1 通信方式的选择 52.2 串行通信方式简介 52.2.1 串行通信的同步方式 52.2.2 串行通信技术标准 6第3章 硬件设计 83.1 硬件连接分析 83.11 51单片机与PC的接口特性 83.12 80C51简介 83.13 MAX232芯片简介 93.2 硬件连接图 10第4章 软件设计 124.1 程序基本流程图 124.2 初

3、值的计算方法 124.2.1 定时器/计数器初值的计算 124.2.2 波特率的计算 134.3 C51源程序 134.4 程序运行后的结果 16参考文献 18致谢 19前言近年来,在自动化控制盒智能仪器仪表中,单片机的应用越来越广泛,由于单片机的运算功能较差,往往要借助计算机辅助系统,因此单片机和PC机进行远程通信具有更实际意义。通信的关键在于互相传递数据和其他信息。51系列单片机内部的串行口具有通信的功能,该串行口可以作为通信接口,利用该接口与PC机的串口进行通信,将单片机采集的数据传送到PC机中,由PC机的高级语言或数据库进行整理及统计等复杂处理就能满足实际的应用需求。51单片机的开发除

4、了硬件支持外,同样离不开软件。用汇编语言或C语言等高级语言写成的源程序必须转换为机器代码才能被执行。目前时分流行的是Keil 8051 C 编译器。它提供了集成开发环境,包括C编译器、宏汇编、连接器、库管理和仿真调试器。利用Keil C uVision 编写的程序可以直接调用编译器编译,连接后可以直接运行。本次课程设计概括了单片机原理等课程的主要知识点,通过该设计能够巩固前期课程的知识并且培养和提高自身的综合设计能力。 第1章 51单片机与编译语言、软件简介1.1 51单片机简介 由于单片机是把微型计算机的与外部设备都集中在一块芯片上,故可以把单片机看成是一个不带外部设备的微计算机,相当于一个

5、没有显示器、没有键盘、不带监控程序的单板机,主要内部结构主要包括:CPU、存储器、I/O端口。51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。T89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单

6、片机。本次课程设计编译软件中选择AT89C51,AT89C51是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。1.2 程序设计语言C51简介目前单片机应用设计与开发,多使用C51语言来编程。C51语言是在标准C的基础上,根据单片机存储器硬件结构及

7、内部资源,扩展相应的数据类型和变量,而在语法规定、程序结构与设计方法上,都与标准C相同。因此在单片机应用的程序设计中,得到非常广泛的使用。Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。C51能直接对单片机硬件进行操作,既有高级语言的特点,又有汇编语言的特点。在开发大型软件时更能体现高级语言的优势。与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。 1.3 Keil uVision3简介单片机的程序设计需要在特定的编译器中进行。编译器完成对程序的编译、连接等工作,并最终生成可执行文件。对于单片机程序的开发,一般采用 Keil公

8、司的uVision系列的集成开发环境,目前的最高版本是uVision3,支持汇编语言以及C51等的程序设计,用于51单片机的Windows下的集成开发环境,提供对8051内核的各种型号的支持,为51单片机软件开发提供全新的C语言开发环境。该开发环境下集成了文件编辑处理、编译链接、项目(Project)管理、窗口、工具引用和仿真软件模拟器以及Monitor51硬件目标调试器等多种功能,所有功能均可在Keil uVision3的开发环境中进行操作。 第2章 通信方式的选取与分析2.1 通信方式的选择 通信方式分为串行通信和并行通信。串行传送是指数据在单条1位宽的传输线上,一位一位地按顺序分时传送。

9、以1字为例,在串行传送中,1字节的数据要通过一条传输 线分8次由低位到高位按顺序一位一位地传送。并行传送是指数据在多条并行1位宽的传输线上同时由源传送到目的。以1字节的数据为例,在并行传送中,1字节的数据通过8条并行传输线同时由源传送到目的。串行通信的速度慢,但使用的传输设备成本低,可利用现有的通信手段和通信设备,适合于计算机与计算机、单片机与计算机等之间的远程通信;而并行通信的速度快,但使用的传输设备成本高,适合于近距离的数据传送。因此,在本次课程设计中选择串行通信。下面简单介绍串行通信方式。2.2 串行通信方式简介2.2.1 串行通信的同步方式 异步通信是指数据传送以字符为单位,字符与字符

10、间的传送是完全异步的,位与位之间的传送基本上是同步的。异步串行通信的特点可以概括为:以字符为单位传送信息;相邻两字符间的间隔是任意长;接收时钟和发送时钟只要相近就可以。简单的说就是:字符间异步,字符内部各位同步。异步串行通信的数据格式为每个字符(每帧信息)由4个部分组成:1位起始位,规定为低电0、58位数据位,即要传送的有效信息,1位奇偶校验位,12位停止位,规定为高电平1。 同步通信是指数据传送是以数据块(一组字符)为单位,字符与字符之间、字符内部的位与位之间都同步。同步串行通信的特点可以概括为:以数据块为单位传送信息;在一个数据块(信息帧)内,字符与字符间无间隔;接收时钟与发送进钟严格同步

11、。同步串行通信方式中一次连续传输一块数据,开始前使用同步信号作为同步的依据。由于连续传输一个数据块,故收发双方时钟必须相当一致,否则时钟漂移会造成接收方数据辨认错误。这种方式下往往是发送方在发送数据的同时也通过一根专门的时钟信号线同时发送时钟信息,接收方使用发送方的时钟来接由数据。 由于异步通信每发送一个字符前先发送起始位,发送完字符后再发送结束位,以此作为双方同步的依据。这种方式对硬件要求较宽松,电路简单,但传输效率不高。同步串行通信方式传输效率高,但对硬件要求高,电路结构复杂。由于51单片机与PC的时钟不一致,时钟漂移会造成接收方数据辨认错误,因此选择异步串行通信方式。异步串行通信的帧格式

12、如图2.1所示。 图2.1 串行异步传输帧格式2.2.2 串行通信技术标准 数据传输率 数据传输率是指单位时间内传输的信息量,可用比特率和波特率来表示。 比特率:比特率是指每秒传输的二进制位数,用bps (bit/s)表示。 波特率,波特率是指每秒传输的符号数,若每个符号所含的信息量为1比特,则波特率等于比特率。在计算机中,一个符号的含义为高低电平,它们分别代表逻辑“1”和逻辑“0”,所以每个符号所含的信息量刚好为1比特,因此在计算机通信中,常将比特率称为波特率,即: 1波特(B)= 1比特(bit)= 1位/秒(1bps) 发送时钟和接收时钟在串行通信中,二进制数据以数字信号的信号形式出现,

13、不论是发送还是接收,都必须有时钟信号对传送的数据进行定位。在TTL标准表示的二进制数中,传输线上高电平表示二进制1,低电平表示二进制0,且每一位持续时间是固定的,由发送时钟和接收时钟的频率决定。 发送时钟:发送数据时,先将要发送的数据送入移位寄存器,然后在发送时钟的控制下,将该并行数据逐位移位输出。通常是在发送时钟的下降沿将移位寄存器中的数据串行输出,每个数据位的时间间隔由发送时钟的周期来划分。 接收时钟:在接收串行数据时,接收时钟的上升沿对接收数据采样,进行数据位检测,并将其移入接收器的移位寄存器中,最后组成并行数据输出,如图8.7所示。 接收时钟和发送时钟与波特率有如下关系:F = nB

14、这里F 是发送时钟或接收时钟的频率; B 是数据传输的波特率; n 称为波特率因子。设发送或接收时钟的周期为Tc,频率为F的位传输时间为Td,则: Tc = 1/F , Td = 1/B 得到: Tc = Td /n 在实际串行通信中,波特率因子可以设定。在异步传送时,n = 1,16,64,实际常采用n = 16,即发送或接收时钟的频率要比数据传送的波特率高n倍。在同步通信中波特率因子必等于1。 首先应掌握串行口的发送过程串行口的发送过程由指令启动,即CPU由一条写发送缓冲器的指令把数据(字符)写入串行口的发送缓冲器SBUF(发)中,再由硬件电路自动在字符的始、末加上起始位(低电平)、停止位

15、(高电平)及其它控制位(如奇偶位等),然后在移位脉冲SHIFT的控制下,低位在前,高位在后,从TXD端(方式0除外)一位位地向外发送。串行口的接收与否受制于允许接收位REN的状态,当REN被软件置“1”后,允许接收器接收。接收端RXD一位位地接收数据,直到收到一个完整的字符数据后,控制电路进行最后一次移位,自动去掉启始位,使接收中断标志RI置“1”,并向CPU申请中断。CPU响应中断,用一条指令把接收缓冲器SBUF(收)的内容读入累加器。TI和RI是由硬件置位的,但需要用软件复位。第3章 硬件设计3.1 硬件连接分析3.11 51单片机与PC的接口特性在实现单片机与PC机之间通信或单片机与单片

16、机之间远程距离通信时通常采用标准串行总线通讯接口。比如RS-232C、RS-422、RS485等。在这些串行总线接口标准中,是在异步串行通信中应用最广的标准总线,它实用于短距离或带调制解调器的通信场合。下面以RS-232标准串行总线接口为例,简单介绍单片机与PC机之间串行通信的硬件实现过程。TTL电平标准 :输出 L: 2.4V。 输入 L: 2.0V TTL器件输出低电平要小于0.8V,高电平要大于2.4V。输入,低于1.2V就认为是0,高于2.0就认为是1。于是TTL电平的输入低电平的噪声容限就只有(0.8-0)/2=0.4V,高电平的噪声容限为(5-2.4)/2=1.3V。RS232标准

17、:逻辑1的电平为-3-15V,逻辑0的电平为+3+15V。PC的串口是RS232电平的,而单片机的串口是TTL电平的。两者之间必须有一个电平转换电路,这里采用专用芯片MAX232进行转换。3.12 80C51简介80C51引脚图如图3.1所示,下面简要介绍各接口。 VCC:供电电压 GND:接地。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外

18、部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如微图3.1 80C51引脚图处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/E

19、A将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。 3.13 MAX232芯片简介MAX232是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片,适用于各种EIA-232C和V.28/V.24的通信接口。 MAX232内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232C输出电平所需的10V电压。所以,采用此芯片接口的串行通信系统只需单一的+5V电源就可以了。对于没有1源的场合,其适应性更强。图

20、3.1为 MAX232芯片的引脚,在实际应用中T1IN和T2IN 可直接接TTL/CMOS电平的89C52单片机的串行发送端TXD;R1OUT和R2OUT 可直接接TTL/CMOS电平的89C52单片机的的串行接收端;T1OUT和T2OUT可直接接PC的RS-232串口的接收端RXD;R1IN和R2IN直接接PC的RS-232串口的发送端TXD。这种发送与接收的对应关系不能连错,否则不能正常工作。 图3.2 MAX232引脚图3.2 硬件连接图 51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单

21、片机的串口是TTL电平的,两者之间必须有一个电平转换电路,其常用的方法有两种,一种是采用运算放大器、晶体管、光电隔离器等器件组成的电路来实现,另一种是采用专门集成芯片来实现。本次课程设计采用了专用芯片MAX232进行转换,更简单可靠。 本次课程设计采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。 串口通讯的硬件电路如下图所示: 图3.3 硬件连接图 第4章 软件

22、设计4.1 程序基本流程图开始开始清RI接收数据RI=1?TI=1?T1初始化,并启动设定通信方式设定串行通信方式发送数据T1初始化,并启动清TI N YN Y数据发送完?数据发送完? N N Y Y结束结束图2.1 查询发送流程图 图2.2 查询接收流程图4.2 初值的计算方法 4.2.1 定时器/计数器初值的计算 定时器/计数器工作时必须给计数器设置计数器初值,这个初值是要送到TH(TH0/TH1)和TL(TL0/TL1)中的时间常数。 定时器/计数器中的脉冲计数器是在计数初值基础上加以加法计数的,并能在计数器从全“1”到全“0”时自动产生定时溢出的中断请求。因此,把计数器计满为零所需要的

23、计数值设定为C,计数初值设定为TC,由此便得如下的计算式: TC=MC-C式中,M为计数器模值,该值和计数器工作方式有关。在方式0时M为,在方式1时为;在方式2和方式3时为。在定时器模式下,计数器由单片机主脉冲经12分频后计数。因此,定时器定时时间T的计算公式为:T=(M-TC)4.2.2 波特率的计算 串口方式0为/12 串口方式1为K*/(32*12*(256-TH1) 串口方式2为K*/64 串口方式3为K*/(32*12*(256-TH1)4.3 C51源程序 假设PC机先向单片机指令,当单片机接收到PC发来的数据,并判断命令为“01H”时,启动定时发送程序,即每隔2S向PC发送15个

24、字节的数据。具体程序如下:#include#define uchar unsigned charuchar Txdnum15=0,1,2,3,4,5,6,7,8,9,0xa0,0xa1,0xa2,0xa3,0xa4 uchar timercount, Rxdcount, Numcount;bit Txdflag;Void serial_Txd (uchar *p) uchar i; for(i=0;i15;i+) SBUF=*p+; While(!TI); TI=0; Void serial_Int() interrupt 4 uchar temp; ES=0; If(RI) Temp=SBU

25、F; RI=0; If(temp=0x55) while (!RI); temp=SBUF; RI=0; if(temp=0xaa) while (!RI); temp=SBUF; RI=0; if(temp=0x01) P2 =temp; TR0=1; else ES=1; else ES=1; Void T0_Interrupt() interrupt 1 TL0=0x00; TH0=0xdc; if(-timercount=0) Timercount=200; Txdflag=1; Void main() Txdflag=0; Rxdcount=0; Numcount=0; Timerc

26、ount=100; TMOD=0x21; TL0=0x00; TH0=0xdc; TL1=0xfd; TH1=0xfd; SCON=0X50; TR1=1; ET0=1; ES=1; EA=1; while(1) if(Txdflag=1) Txdflag=0; Serial_Txd(Txdnum); 4.4 程序运行后的结果 单片机与PC相连,同时运行程序,当PC向单片机传送数据后,如果数据相符,单片机开始每隔2S向PC传送数据,在PC上观察到以下结果:00 01 02 03 04 05 06 07 08 09 A0 A1 A2 A3 A4 00 01 02 03 04 05 06 07 0

27、8 09 A0 A1 A2 A3 A4 00 01 02 03 04 05 06 07 08 09 A0 A1 A2 A3 A4 00 01 02 03 04 05 06 07 08 09 A0 A1 A2 A3 A4 总结在前后三个星期的时间里,我把时间都投入到了通信系统综合训练上面,时间有点仓促,题目也有一定的难度,但最后在老师和同学们的共同帮助下,终于完成了。回顾此次课设,自己有不小的收获。 首先,这次课设我们都要用到Keil uVision3编译软件,这个软件在课程设计之前几乎完全没有接触过。而这个课设要用到很多新的功能,运用起来有一定的困难,不过最后通过查询一些资料,能较好地运用该软

28、件来编译程序。主要的困难在后面的程序设计部分。为了完成此次课设,我再次翻阅了所学的理论知识,对题目有了一定的理解后,开始相关的设计。由于本次课程设计对硬件的连接没有做太多硬性要求,所以重心还是在于程序的编写上。在程序运行无误后可以进行在单片机板上的调试,另外需要的是串口调试助手。 首先,对于LCD1602时钟芯片,其初始化设置,均需要熟悉相应的引脚功能和运用相应的函数,学会运用这些函数耗费了我不少时间。分别写完成LCD1602的相关函数后,我开始了串口编程的工作。单片机与我们以前学习的微机原理很多知识点相仿,可以类推。由于学完微机原理有一段时间了,因此还需要对串口知识复习一下。编写好子函数后,

29、我开始了主函数的编写,由于所用的子函数很多,因此在调用时要非常小心,前几次由于疏忽,以至于编译时出了几次错误 。编译无误后,我将程序复制到Keil uVision3编译软件中,由于个别语法不正确,改了几次后才得到正确结果。通过此次课设,我对单片机的C语言编程有了进一步的掌握,对Keil uVision3编译软件也有了进一步的掌握。此次训练提高了动手操作的能力,理论知识也得到巩固。课程设计做完后,也发现了自己的一些不足,平时很少自己动手设计程序,以至于用的时候有很多困难,在以后的时间里,我会多设计一些程序,提高自己的动手实践能力。 参考文献1 张道德.单片机接口技术M.北京:中国水利水电出版社,

30、2007:68-1032 张培仁.MCS-51单片机原理与应用M.北京:清华大学出版社,2004:1123 周国运.单片机原理及应用(C语言版)M.北京:中国水利水电出版社,2001:1284 喻宗泉.单片机原理与应用技术M.西安:西安电子科技大学出版社,2006:123-1265 冯育长.单片机系统设计与实例分析M.西安:西安电子科技大学出版社,1999:876 陈涛.单片机应用及C51程序设计M.北京:机械工业出版社,2008:1137 黄智伟.全国大学生电子设计竞赛系统设计M.北京:北京航空航天大学出版社,2001:128. 致谢 通过三周的的努力,通信系统综合训练终于完成了,这意味着这一阶段艰苦的热烈的付出即将告一段落。在整个课程设计中,我在学习上和思想上都受益非浅,这除了自身的努力外,与指导的老师、同学和朋友的关心、支持和鼓励是分不开的。在课程设计过程中,彭老师倾注了大量的心血,一遍又一遍地指出每次课程设计过程中的具体问题,严格把关,循循善诱,在此我表示衷心感谢。同时我还要感谢在我学习期间给我极大关心和支持的各位老师以及关心我的同学和朋友。在这段时间里我从零开始学习了51系列单片机的基本原理和Keil uVision3编译软件的基本用法,最重要的是学习了程序设计语言C51并运用该语言编写完成51单片机与PC的串行通信。理论应用到实际是需要一个过程,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1