单片机与计算机的串行通信_第1页
单片机与计算机的串行通信_第2页
单片机与计算机的串行通信_第3页
单片机与计算机的串行通信_第4页
单片机与计算机的串行通信_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机与计算机串行通讯的设计本科毕业设计(论文)FINALPROJECT/THESISOFUNDERGRADUATE(2014届)单片机与计算机串行通讯的设计Design of Serial Communication between Single-chip Microcomputer and Computer 学院工程科技学院专业电气工程及其自动化学生姓名张华学号指导教师许维东完成日期2014年5月iii摘 要随着科技水平的不断提高,单片机控制无疑是人们追求的目标之一。可以说,单片机在我们生活中无处不在,单片机在各个领域都有极为广泛的应用,大如机器人控制,工业过程控制,办公自动化领域,楼宇自动化,航天,航海等,小至家电,玩具,MP3等等。在功能比较复杂的控制系统中,通常以计算机为上位机,单片机为下位机,由单片机完成数据的采集及对装置的控制,而由计算机完成各种复杂的数据处理。把这两个重要过程连接起来,实现计算机和单片机交换信息,就是通讯的任务了。串行通信技术标准RS-232、RS-422与RS-485应用很广,如录像机、计算机以及许多工业控制设备上都配备有RS232串行通信接口。而现代笔记本大多没有RS232接口,USB接口是最广泛的,我们选择“串口转USB”就可以为没有串口的计算机提供快速的通道。本文将以51系列单片机的成员之一STC89c51为对象,设计一种方法实现单片机与计算机之间的串行通信。最后利用STC89c51单片机与计算机之间的通信程序实现温度显示。计算机窗口显示用VC编写,单片机程序代码用C语言编写。关键词:单片机, USB转串口, STC89c51, VC , DS18b20, PL2303ABSTRACTWith the development of the information technology, the single-chip microcomputer control is undoubtedly one of goal in industrial control, intelligent instrument, electrical appliances and electronic field. Generally speaking, the single-chip microcomputer has extremely extensive application in each field, such as robot control, industrial process control, office automation, building automation, aerospace, navigation, home appliances, toys and MP3, etc.In the complex control systems, the computer is usually used as the upper machine, and the single-chip microcomputer is usually used as the lower machine. It means that single chip microcomputer does the data collection and control of the device, and the computer makes all kinds of complicated data processing. The tasks of the information exchange between the computer and single chip microcomputer is the communication tasks.The application of the RS 232, the RS - 422 and RS - 485 is very wide .Such as video, computers, and many industrial control devices are equipped with RS - 232 serial communication interface. But there is no RS232 interfaces in most modern laptops with several USB interfaces .So the USB-to-serial chip can provide a fast channel for the modern laptops with no RS232 interfaces.This paper will design a methed about serial communication between single-chip microcomputer and computer . Finally , I will use the method to realize the function of temperature display.The computer window is written by VC language and the microcomputer program code is written by C language.KEY WORDS: Single-chip Microcomputer , USB-to-Serial , STC89c51 , VC DS18b20 , PL2303目录摘 要iABSTRACTi目录i第一章 绪 论11.1设计背景11.2设计内容1第2章 串行通信22.1通讯的基本概念22.2串行通信的分类22.3串行通信的工作模式32.4串行通信的位结构42.5串行通信协议5第3章 开发工具及开发环境介绍63.1 单片机开发环境 Keil uVision63.1.1 Keil C51单片机软件开发系统的整体结构6 3.2显示窗口开发环境 Microsoft Visual C+6.07第4章 总体通信方案设计84.1通信物理端口的选择84.2 USB驱动软件的选择84.3 显示窗口设计8第5章 硬件部分详述95.1单片机的选择95.1.1 单片机STC89c51主要特性95.1.2单片机STC89c51的引脚说明:95.2通信物理端口的选择135.2.1 PL2303芯片介绍135.3USB转串口通信电路图155.3.1串口模块介绍165.3.2 USB模块介绍165.3.3 USB转串口主芯片模块介绍16第6章 软件部分详述176.1 计算机显示窗口设计与调试176.1.1 显示窗口功能176.1.2 新建对话框176.1.3计算机串口操作186.1.4 打开串口和关闭串口按钮196.1.5 清空接收区按钮206.1.6 发送按钮和发送编辑框206.2 USB驱动软件选择216.3 单片机通信程序设计与调试226.3.1单片机流程图设计226.3.2单片机程序代码设计226.3.3软件调试24参考文献26致 谢27i单片机与计算机串行通讯的设计第一章 绪 论1.1设计背景随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。可以说,单片机在我们生活中无处不在。由于其可靠性,灵活性以及能完成简单的控制任务,单片机在各个领域都有极为广泛的应用,大如机器人控制,工业过程控制,办公自动化领域,楼宇自动化,航天,航海等,小至家电,玩具,MP3等等。当一个个小的单片机个体组成大的网络,就成了现代化集中管理系统。现代化集中管理需要对现场数据进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置进行实时控制,完成各种规定操作,达到集中管理的目的。加之单片机的计算能力有限,难以进行复杂的数据处理。因此在功能比较复杂的控制系统中,通常以计算机为上位机,单片机为下位机,由单片机完成数据的采集及对装置的控制,而由计算机完成各种复杂的数据处理。把这两个重要过程连接起来,实现计算机和单片机交换信息,就是通讯的任务了。串行通信只需要少数几条线就可以在系统间交换信息,特别适用于上位机与下位机之间实现远距离通信。串行通信技术标准RS-232、RS-422与RS-485应用很广,如录像机、计算机以及许多工业控制设备上都配备有RS232串行通信接口。而现代笔记本大多没有RS232接口,USB接口是最广泛的,如果能“串口转USB”为没有串口的计算机提供快速的通道,便是极好的!1.2设计内容本文将以51系列单片机的成员之一STC89c51为研究对象,设计一种方法实现单片机与计算机之间的串行通信。如何把通用的USB口作为通信物理端口?如何编写程序使单片机发送数据?单片机又如何接收计算机发送的指令?计算机窗口如何显示传来的数据?等等这些问题将在本文中得到解决。最后,本文将利用计算机与STC89c51单片机之间的通信程序实现温度显示。第2章 串行通信2.1通讯的基本概念在实际工作中,计算机的CPU与外界设备之间常常进行信息交换,一台计算机与其他计算机之间也往往要交换信息,所有这些信息交换均可称为通信。1通信方式有两种:并行通信和串行通信。1、并行通信:并行通信是指字符编码的各位(比特)同时传输。它有以下几个特点:(1)传输速度快:一位(比特)时间内可传输一个字符;(2)通信成本高:每位传输要求一个单独的信道支持;因此如果一个字符包含8个二进制位,则并行传输要求8个独立的信道的支持;图2.1 并行通信(3)不支持长距离传输:由于信道之间的电容感应,远距离传输时,可靠性较低。并行通信传输中有多个数据位,同时在两个设备之间传输。发送设备将这些数据位通过对应的数据线传送给接收设备,还可附加一位数据校验位。接收设备可同时接收到这些数据,不需要做任何变换就可直接使用。并行方式主要用于近距离通信。计算机内的总线结构就是并行通信的例子。这种方法的优点是传输速度快,处理简单。2、串行通信:串行通信是指将组成字符的各位串行地发往线路。主要特点有:(1)传输速度较低,一次一位;(2)通信成本也较低,只需一个信道;(3)支持长距离传输,目前计算机网络中所用的传输方式均为串行传输。图2.2 串行通信串行数据传输时,数据是一位一位地在通信线上传输的,先由具有几位总线的计算机内的发送设备,将几位并行数据经并-串转换硬件转换成串行方式,再逐位经传输线到达接收站的设备中,并在接收端将数据从串行方式重新转换成并行方式,以供接收方使用。串行数据传输的速度要比并行传输慢得多,但对于覆盖面极其广阔的公用电话系统来说具有更大的现实意义。2.2串行通信的分类串行通信有两种传输方式:1、同步通信;2、异步通信。1(1)同步通信同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。采用同步通信时,将许多字符组成一个信息组,这样,字符可以一个接一个地传输,但是,在每组信息(通常称为帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。在同步传输过程中,一个字符可以对应58位。当然,对同一个传输过程,所有字符对应同样的数位,比如说n位。这样,传输时,按每n位划分为一个时间片,发送端在一个时间片中发送一个字符,接收端则在一个时间片中接收一个字符。同步传输时,一个信息帧中包含许多字符,每个信息帧用同步字符作为开始,一般将同步字符和空字符用同一个代码。在整个系统中,由一个统一的时钟控制发送端的发送和空字符用同一个代码。接收端当然是应该能识别同步字符的,当检测到有一串数位和同步字符相匹配时,就认为开始一个信息帧,于是,把此后的数位作为实际传输信息来处理。(2)异步通信相较于同步通信,异步通信在日常生活中更为常见,它可以进行双向通讯。在异步通讯中,时钟频率不要求完全同步,根据设备不同可以有一个相对误差,这就大大降低了成本。异步通信主要采用一个字符或帧组成一个数据单位的方式进行通讯,各个数据之间不需要连续。发送端逐个发送数据,接收端逐个接受。每次发送开始时由起始位对时钟进行同步,发送数据位的最大长度与时钟误差有关,时钟间的误差越小,允许的发送数据长度越长。异步通讯中帧的格式通常是1位起始位,7位(或8位)数据位,1位奇偶校验位,2位停止位。2.3串行通信的工作模式串行数据通信的方向性结构有三种,即单工、半双工和全双工。1单工:单工中数据流方向是固定的,只能进行单向通讯。图2.3 单工半双工:图2.4:半双工在半双工中,通讯线路配置与单工是相同的,主要的不同在于两端各有一对发送和接收器,在这种模式下,该线路可以分时段进行双向通讯,但是不能同时发送接收数据。其中发送端与接收端的控制信号主要有两种方式进行协调,一是添加一根控制线,来配置一边是发送端,一边是接收端。另一种方式就是控制信号直接在串行通讯中传送,以软件的方式实现对双方发送接收状态的协调。但是由于半双工形式中双方状态的配置问题,导致数据传送效率较低。全双工:图2.5:全双工全双工形式中,将两边发送端、接受端和通讯线路全部独立,达到互不干扰的效果。其结构相当于配置了一对方向不同的单工。全双工能够在同一时刻同时进行数据的发送和接收,有较高的数据传送效率。2.4串行通信的位结构串行通信是以字节为单位,按高低位顺序,一位一位将数据发送出去的,而接收端也要以相同的方式把位数据再次组合成字节。因此,在串行通信传输过程中,发送端与接受端必须以相对应的方式对数据进行发送和接受,否则无法获取正确的数据。(1)速率比特率:比特率在数字信道中,比特率是数字信号的传输速率,它用单位时间内传输的二进制代码的有效位(bit)数来表示,其单位为每秒比特数bit/s(bps)、每秒千比特数(Kbps)或每秒兆比特数(Mbps)来表示。比特率通常与传输距离成反比,高比特率通常只用于两个近距离设备的数据传输。波特率:这是一个与比特率相关的物理量,其本质与比特率相同,它是对信号传输速率的一种度量,通常以“波特”(baud)为单位。波特率有时候会同比特率混淆,实际上后者是对信息传输速率(传信率)的度量。波特率可以被理解为单位时间内传输码元符号的个数(传符号率),通过不同的调制方法可以在一个码元上负载多个比特信息。波特率与比特率的关系为:比特率=波特率*单个调制状态对应的二进制位数。(2)位结构:图2.6 位结构(*为可选择位)串行通讯数据有特定的格式,便于接收端还原数据。串行通讯端口在不传输数据时为高电平,当需要传输数据时,首先会传输一个低电平作为起始位(Start-bit),然后开始传输数据。跟在起始位之后的是7-8位的数据位,数据位根据使用ASCII码(7位)或者扩展的ASCII码(8位)来决定。之后可选择性的使用奇偶效验位。有四种效验方式:偶、奇、高和低。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。最后由停止位作为一帧数据的结束,停止位可以由1,1.5或者两位构成,由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。一个完整的数据帧,由以上数据位构成。当比特率为1200b/s时,每个信息位的时间宽度为 1/1200833s。2.5串行通信协议通信协议是对数据传送方式的规定,包括数据格式的定义和数据位定义等。通信双方必须遵守统一的通信协议。异步串行通信协议包括起始位、数据位、奇偶校验位、停止位、波特率设置等。要想使通信双方能够正确交换信息和数据,在协议中对什么时候开始通信,什么时候结束通信,何时交换信息等等都必须做出明确的规定。只有双方遵守这些规定,才能顺利地进行通信。第3章 开发工具及开发环境介绍3.1 单片机开发环境 Keil uVision 单片机的程序设计采用C语言,开发环境是KeiluVision。Keil公司成立于1986年,Keil公司的uVision是把程序编辑、编译、链接和仿真等模式打包成集成开发环境,uVision还包含项目管理和调试器等非常有用功能,界面如图3.1:图3.1 Keil uVision4开发界面uVision4是一款可用于多种8051MCU的集成开发环境(IDE),该IDE同时也是PK51及其它开发套件的一个重要组件。除增加了源代码、功能导航器、模板编辑以及改进的搜索功能外,uVision3还提供了一个配置向导功能,加速了启动代码和配置文件的生成。此外其内置的仿真器可模拟目标MCU,包括指令集、片上外围设备及外部信号等。uVision3提供逻辑分析器,可监控基于MCUI/O引脚和外设状态变化下的程序变量。2uVision4提供对多种最新的8051类微处理器的支持,包括Analog-devices的ADuC83x和ADuC84x,以及Infineon的XC866等。3.1.1 Keil C51单片机软件开发系统的整体结构C51工具包的整体结构,uVision是C51 for Windows的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。3.1.2 KeiluVision C语言开发的优势(1)C语言优势:1)不同函数的数据实行覆盖,有效利用片上有限的RAM空间。2)程序具有坚固性:数据被破坏是导致程序运行异常的重要因素。C语言对数据进行了许多专业性的处理,避免了运行中间非异步的破坏。3)C语言提供复杂的数据类型(数组、结构、联合、枚举、指针等),极大地增强了程序处理能力和灵活性。4)提供auto、static、const等存储类型和专门针对8051单片机的data、idata、pdata、xdata、code等存储类型,自动为变量合理地分配地址。5)提供small、compact、large等编译模式,以适应片上存储器的大小。6)中断服务程序的现场保护和恢复,中断向量表的填写,是直接与单片机相关的,都由C编译器代办。7)提供常用的标准函数库,以供用户直接使用。8)头文件中定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化产品的开发。9)有严格的句法检查,错误很少,可容易地在高级语言的水平上迅速地被排掉。10)可方便地接受多种实用程序的服务:如片上资源的初始化有专门的实用程序自动生成;再如,有实时多任务操作系统可调度多道任务,简化用户编程,提高运行的安全性等等。(2)Keil开发优势1)高效Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。2)用户友好与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。3.2显示窗口开发环境 Microsoft Visual C+6.0Microsoft VisualC+系列产品是微软公司推出的一款优秀的C+集成开发环境,其产品定位为Windows95/98、NT、2000系列Win32系统程序开发,由于其良好的界面和可操作性,被广泛应用。由于2000年以后,微软全面转向.NET平台,VisualC+6.0成为支持标准C/C+规范的最后版本。3Visual C+6.0是计算机二级考试科目的集成开发环境,大家应该很熟悉。第4章 总体通信方案设计4.1通信物理端口的选择现代笔记本大多没有RS232接口,USB接口是最广泛的,我们选择“串口转USB”就可以为没有串口的计算机提供快速的通道。设计中选择PL2303芯片作为USB/RS232双向转换器,一方面从计算机接收USB数据并将其转换为RS232信息流格式发送给单片机;另一方面从RS232单片机接收数据转换为USB数据格式传送回计算机。这些工作全部由该器件自动完成,开发者无需考虑固件设计.4.2 USB驱动软件的选择在硬件上串口已经转换成USB后,计算机上要安装USB驱动程序才能识别该设备。Prolific 公司的PL2303 USB-to-Serial驱动是该公司针对PL2303芯片开发的,所有我选择的是该驱动。用户根据自己的系统选择安装, xp 驱动还是 win7 驱动。4.3 显示窗口设计本设计采用VC6.0+来实现编程,计算机与单片机进行通信的程序编写可用VB、VC等软件。VC6.0+是一种功能强大的面向对象的Windows编程开发平台。VC6.0的优点是界面简洁,占用资源少,操作方便。所以本设计采用VC作为串口编程工具。所以总体通信方案是温度值由单片机采集出来,然后单片机再将采集出的温度数据处理后,通过PL2303发送给计算机在窗口显示出来,同样计算机也可以通过PL2303发送指令给单片机。计算机STC89c5111PL2303图4.1总体设计方案流程图第5章 硬件部分详述5.1单片机的选择本设计采用的是STC89c51单片机,STC89c51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。它是一种高效微控制器,因为它更经济实惠,用起来灵活方便,所以选择STC89c51单片机。 5.1.1 单片机STC89c51主要特性4K字节可编程flashROM1288位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 5.1.2单片机STC89c51的引脚说明: 图5.1 STC89C51的引脚排列引脚描述:VCC:电源电压 GND:地P0口:P0口是一组8位漏极开路双向I/O口,即地址/数据总线复用口。作为输出口时,每一个管脚都能够驱动8个TTL电路。当“1”被写入P0口时,每个管脚都能够作为高阻抗输入端。P0口还能够在访问外部数据存储器或程序存储器时,转换地址和数据总线复用,并在这时激活内部的上拉电阻。P0口在闪烁编程时,P0口接收指令,在程序校验时,输出指令,需要接电阻。P1口:P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时输出一个电流。闪烁编程时和程序校验时,P1口接收低8位地址。P2口:P2口是一个内部带有上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时,可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容在整个运行期间不变。闪烁编程或校验时,P2口接收高位地址和其它控制信号。P3口:P3口是一组带有内部电阻的8位双向I/O口,P3口输出缓冲故可驱动4个TTL电路。对P3口写如“1”时,它们被内部电阻拉到高电平并可作为输入端时,被外部拉低的P3口将用电阻输出电流。P3口除了作为一般的I/O口外,更重要的用途是它的第二功能,如下表所示表5.1 P3口第二功能P3.2INT0P3.3INT1P3.4T0P3.5T1P3.6WRP3.7RD P3口还接收一些用于闪烁存储器编程和程序校验的控制信号。RST:复位输入。当震荡器工作时,RET引脚出现两个机器周期以上的高电平将使单片机复位。ALE/:当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE以时钟震荡频率的1/16输出固定的正脉冲信号,因此它可对输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲时,闪烁存储器编程时,这个引脚还用于输入编程脉冲。如果必要,可对特殊寄存器区中的8EH单元的D0位置禁止ALE操作。这个位置后只有一条MOVX和MOVC指令ALE才会被应用。此外,这个引脚会微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序储存允许输出是外部程序存储器的读选通信号,当STC89c51由外部程序存储器读取指令时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器时,这两次有效的PSEN 信号不出现。EA/VPP:外部访问允许。欲使中央处理器仅访问外部程序存储器,EA端必须保持低电平。需要注意的是:如果加密位LBI被编程,复位时内部会锁存EA端状态。如EA端为高电平,CPU则执行内部程序存储器中的指令。闪烁存储器编程时,该引脚加上+12V的编程允许电压VPP,当然这必须是该器件是使用12V编程电压VPP。XTAL1:震荡器反相放大器及内部时钟发生器的输入端。XTAL2:震荡器反相放大器的输出端。时钟震荡器:STC89c51中有一个用于构成内部震荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自然震荡器。 外接石英晶体及电容C1,C2接在放大器的反馈回路中构成并联震荡电路。对外接电容C1,C2虽然没有十分严格的要求,但电容容量的大小会轻微影响震荡频率的高低、震荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30PF10PF,而如果使用陶瓷振荡器建议选择40PF10PF。用户也可以采用外部时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。图5.2内部振荡电路 图5.3闲散节电模式STC89c51有两种可用软件编程的省电模式,它们是闲散模式和掉电工作模式。这两种方式是控制专用寄存器计算机ON中的PD和IDL位来实现的。PD是掉电模式,当PD=1时,激活掉电工作模式,单片机进入掉电工作状态。IDL是闲散等待方式,当IDL=1,激活闲散工作状态,单片机进入睡眠状态。如需要同时进入两种工作模式,即PD和IDL同时为1,则先激活掉电模式。在闲散工作模式状态,中央处理器CPU保持睡眠状态,而所有片内的外设仍保持激活状态,这种方式由软件产生。此时,片内随机存取数据存储器和所有特殊功能寄存器的内容保持不变。闲散模式可由任何允许的中断请求或硬件复位终止。终止闲散工作模式的方法有两种,一是任何一条被允许中断的事件被激活,IDL被硬件清除,即刻终止闲散工作模式。程序会首先影响中断,进入中断服务程序,执行完中断服务程序,并紧随RETI指令后,下一条要执行的指令就是使单片机进入闲散工作模式,那条指令后面的一条指令。二是通过硬件复位也可将闲散工作模式终止。需要注意的是:当由硬件复位来终止闲散工作模式时,中央处理器CPU通常是从激活空闲模式那条指令的下一条开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期有效,在这种情况下,内部禁止中央处理器CPU访问片内RAM,而允许访问其他端口,为了避免可能对端口产生的意外写入:激活闲散模式的那条指令后面的一条指令不应是一条对端口或外部存储器的写入指令。掉电模式:在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在中指掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将从新定义全部特殊功能寄存器但不改变RAM中的内容,在VCC恢复到正常工作电平前,复位应无效切必须保持一定时间以使振荡器从新启动并稳定工作。表5.2闲散和掉电模式外部引脚状态模式程序存储器ALEP0P1P2P3闲散模式内部11数据数据数据数据闲散模式内部11浮空数据地址数据掉电模式外部00数据数据数据数据掉电模式外部00数据数据数据数据程序存储器的加密STC89c51可使用对芯片上的三个加密位LB1,LB2,LB3进行编程(P)或不编程(U)得到如下表所示的功能:表5.3程序存储器的加密程序加密位保护类型1UUU没有程序保护功能2PUU禁止从外部程序存储器中执行MOVC指令读取内部程序存储器的内容3PPU除上表功能外,还禁止程序校验4PPP除以上功能外,同时禁止外部执行当LB1被编程时,在复位期间,EA端的电平被锁存,如果单片机上电后一直没有复位,锁存起来的初始值是一个不确定数,这个不确定数会一直保存到真正复位位置。为了使单片机正常工作,被锁存的EA电平与这个引脚当前辑电平一致。机密位只能通过整片擦除的方法清除。5.2通信物理端口的选择现代笔记本大多没有RS232接口,USB接口是最广泛的,我们选择“串口转USB”就可以为没有串口的计算机提供快速的通道。PL2303是Prolific公司生产的一种高度集成的RS232-USB接口转换器,可提供一个RS232全双工异步串行通信装置与USB功能接口便利联接的解决方案。基于以下产品特性,选择PL2303作为RS232-USB接口转换器。1.完全符合USB规范2.0(全速兼容)2.支持RS232这样的串行接口3.提供支持Windows和MacOS,Linux和WinCE的驱动程序4.实现电平转换。计算机通过PL2303芯片的电平就是单片机上用的TTL电平,所以,不要再接MAX232芯片了。5.2.1 PL2303芯片介绍图5.4PL2303芯片管脚 PL2303是Prolific公司生产的一种高度集成的RS232-USB接口转换器,可提供一个RS232全双工异步串行通信装置与USB功能接口便利联接的解决方案。该器件内置USB功能控制器、USB收发器、振荡器和带有全部调制解调器控制信号的UART,只需外接几只电容就可实现USB信号与RS232信号的转换,能够方便嵌入到各种设备,所以该款芯片很受欢迎;该器件作为USB/RS232双向转换器,一方面从主机接收USB数据并将其转换为RS232信息流格式发送给外设;另一方面从RS232外设接收数据转换为USB数据格式传送回主机。这些工作全部由器件自动完成,开发者无需考虑固件设计.表5.4 对应引脚描述引脚名字类型引 脚 描 述1TXD输出数据输出到串口;2DTR_N输出数据终端准备好,低电平有效;3RST_N输出发送请求,低电平有效;4VDD_325电源RS232 的电源,为串行端口信号的电源引脚;当串口为 3.3V,这应该是 3.3V;当串行端口是 2.5V,这应该是 2.5V;5RXD输入串口数据输入;6RI_N输入/输出串行端口(环指示器);7GND电源接地;8NC无连接9DSR_N输入/输出串行端口(数据集就绪)10DCD_N输入/输出串行端口(数据载波检测)11CTS_N输入/输出串行端口(清除发送)12SHTD_N输出控制 RS232 收发器关机13EE_CLK输入/输出串行 EEPROM 时钟14EE_DATA输入/输出串行 EEPROM 数据15DP输入/输出USB 端口 D+信号16DM输入/输出USB 端口 D-信号17VO_33常规 3.3V 电源输出18GND接地19NC无连接20VDD_5电源USB 端口的 5V 电压电源21GND接地22GP0输入/输出通用 I/O 引脚 023GP1输入/输出通用 I/O 引脚 124NC无连接25GND_A模拟地锁相环26PLL_TEST输入PLL 锁相环测试模式控制27OSC1输入晶体振荡器输入28OSC2输入/输出晶体振荡器输出5.3USB转串口通信电路图 图5.5 USB转串口全双工通信电路图5.3.1串口模块介绍MCS-51单片机有一个全双工的串行通讯口UART。利用其RXD和TXD与外界进行通信,其内部有2个物理上完全独立的接收、发送缓冲器SBUF,可同时发送和接收数据。所以单片机和计算机之间可以方便地进行串口通讯。单片机串口有3条引线:TXD(发送数据)、RXD(接收数据)和GND(信号地)。5.3.2 USB模块介绍USB接口部分电路如图所示,主要由三部分组成,分别是USB接头,USB供电和USB数据收发。41)USB接头提供USB的物理接口,通过USB线与USB设备连接。2)USB供电整个USB转串口线不需要外接电源,使用USB供电即可。3)USB数据收发DP引脚-USB端口D+信号;DM引脚-USB端口D-信号。 5.3.3 USB转串口主芯片模块介绍 USB转串口主芯片模块主要由三部分组成,分别是USB转串口主芯片PL2303、PL2303工作晶振、和PL2303的外围电路。第6章 软件部分详述6.1 计算机显示窗口设计与调试本设计编程语言采用VC6.0+,计算机与单片机进行通信的程序编写可用VB、VC等软件。由于VB作为面向对象的编程工具不够完全,效率比VC低,提供的命令语言环境较弱,通过串口设备一次最多只能交换16B的数据,对较大数据量的传输存在很大的局限性,很难实现较为复杂的数据处理,VC6.0+是一种功能强大的面向对象的Windows编程开发平台。VC6.0+的优点是界面简洁,占用资源少,操作方便5。所以本设计采用VC作为串口编程工具。6.1.1 显示窗口功能本文对串口通信显示窗口作了简化,有5个常用功能:串口选择、手动打开或关闭串口、发送框、接收框、清空接收区。未专门画出用于设置波特率、校验位、数据位等的按钮。该窗口的发送区和接收区能实现下面的功能:计算机发送任意16进制字符给单片机,单片机返回当前的温度值。6.1.2 新建对话框新建一个基于对话框的程序,全部选择默认选项。得到如下的对话框。图6.1 新创建的对话框去掉上面的所有的控件,向工程中添加入MSCOMM控件,添加变量为m_ctrlComm。再添加一个编辑框,作为接收框,使用类向导添加变量为m_strRXData。同时,我们也给对话框添加上最小化按钮(方法:右键对话框,属性,样式里勾选上最小化按钮)。双击MSCOMM控件,添加入如下的代码:void CFor51Dlg:OnOnCommMscomm1() / TODO: Add your control notification handler code hereVARIANT variant_inp; 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(&k,rxdata+k);/转换为BYTE型数组for(k=0;kEnableWindow(FALSE);/打开按钮无效GetDlgItem(IDC_BUTTON2)-EnableWindow(TRUE);/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论