毕业设计基于51单片机的上位机通讯系统课程设计说明书.docx
《毕业设计基于51单片机的上位机通讯系统课程设计说明书.docx》由会员分享,可在线阅读,更多相关《毕业设计基于51单片机的上位机通讯系统课程设计说明书.docx(30页珍藏版)》请在冰豆网上搜索。
![毕业设计基于51单片机的上位机通讯系统课程设计说明书.docx](https://file1.bdocx.com/fileroot1/2023-1/29/c50e0e8c-377c-47c3-a284-c856d8388097/c50e0e8c-377c-47c3-a284-c856d83880971.gif)
毕业设计基于51单片机的上位机通讯系统课程设计说明书
摘要
随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。
现代化集中管理需要对现场数据进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置进行实时控制,完成各种规定操作,达到集中管理的目的。
加之单片机的计算能力有限,难以进行复杂的数据处理。
因此在功能比较复杂的控制系统中,通常以PC机为上位机,单片机为下位机,由单片机完成数据的采集及对装置的控制,而由上位机完成各种复杂的数据处理及对单片机的控制。
本文介绍了一种基于AT89C52 单片机与上位机通信系统, 并对其工作原理及软、硬件的设计和实现方法进行了详细的阐述。
在单片机的输入输出控制中,除直接接上小键盘和LCD显示等方法外,一般都通过串口和上位机PC进行通信,后面一种方法由于PC机拥有强大的数据处理功能以及友好的控制界面并且能实现远程控制所以显得尤为有用。
此系统可以由上位机控制,通过串口操作单片机模块实现其相应功能。
本次设计就是来完成由上位机通过串口控制来实现,以发光二极管的发光状态模拟开关电路的通断,用上位机的DOS命令对其进行控制。
并用LED屏显示程序的传输。
关键字 AT89C52单片机;上位机;串口通信;开关电路.
1.总体任务
1.1设计目的
1)通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
2)通过上位机通信系统的设计,了解上位机通信系统的工作原理和简单的程序编写,最终提高我们的逻辑思维能力。
1.2设计内容和要求
1)内容:
设计一个AT80C52单片机上位机通信系统,由上位机通过串口操作控制单片机模块。
2)要求:
以发光二极管的发光状态模拟开关电路的通断,用上位机DOS命令,对发光二极管进行控制。
1.3设计思路
1)熟悉设计原理,熟练掌握μVision和ISISProfessional软件的应用,了解上位机通信系统的工作过程和工作原理。
2)了解各个硬件的工作原理。
3)绘制电路原理图,编写程序,并进行仿真,DOS命令对其进行控制,基本实现上位机通信系统的功能。
2.设计原理分析
2.1上位机通信系统框图
图2.1基于AT89C52单片机与上位机通信系统框图
2.1.1串行通信工作原理
串行通信是指利用一条传输线将数据一位位的顺序传送。
其特点是通信线路简单,利用电话或电报就可实现通信,降低成本,适用于远距离通信,但传输速度较慢。
这里需要说明几个概念。
1)波特率:
单片机需要根据使用的系统时钟频率(fo),结合选定的通信波特率,计算出UART寄存器设置值为1280。
为了保证数据传输的准确性,上位COM口的通信波特率也必须设置成和单片机采用的速率相一致。
2)数据格式:
数据格式采用1位起始位、8位数据位、无奇偶校验位、1位停止位组成,如图所示。
START
D0
D1
……
D6
D7
STOP
START—启动位D0—D7—8位数据STOP—停止位
图2.1.1串口通信数据格式
数据位标准的值有5、7和8位,如何设置取决于系统设计时需要传送的信息。
比如,标准的ASCII码是0—127(7位),扩展的ASCII码则是0—255(8位)。
停止位用于表示单个包的最后一位,典型的值为1,1.5和2位。
由于数据是在传输线上定时的,并且每一个设备有自己的时钟,很可能在通信中两台设备间出现了小小的不同步。
因此停止位不仅仅是表示传输的结束,并且提供系统校正时钟同步的机会。
奇偶校验位在串口通信中仅是一种简单的检错方式,可以不考虑。
2.2各部分设计原理
2.2.1+5V电源原理及设计
稳定直流源设计的一般思路是让输入电压先通过电压变压器,再通过整流网络,然后经过滤波网络最后经过稳压网络。
以全波整流电路作为整流网络,以极性电容作为滤波网络,采用固定式三端集成稳压电路7805和7905设计制作连续可调的双极型直流稳压电源。
如下图所示,220V(幅值311V)50Hz市电经变压器220:
25输出两组独立的25V交流,经桥堆整流、大电容滤波后分别经过集成稳压块LM7805C与LM7905C作用得到±5V的直流输出。
图2.2.1直流电源系统方框图
电源变压器:
将电网提供的220V交流电压转换为各种电路设备所需的交流电压。
整流电路:
利用单向导电器件将交流电转换成脉动直流电路。
滤波电路:
利用储能元件(电感或电容)把脉动直流电转换成比较平坦的直流电。
稳压电路:
利用电路的调整作用使输出电压稳定的过程称为稳压。
具体电路如下:
图2.2.1±5V设计电原理图
输入电容C1、C2用于抑制纹波电压,输出电容C3、C4用于消振,缓冲冲击性负载,保证电路工作稳定。
同时由于输出电容C3、C4的存在,容易发生电容放电而损坏稳压器,RV1和RV2是滑动变阻器,可以调节输出的电压。
R1和R2是限流电阻,防止线路电流太大。
LM7805集成稳压三极管输出电流可达1A,输出电压5V,过热保护,过流保护,输出晶体管SOL保护。
2.2.2单片机复位电路工作原理
电容在上接高电平,电阻在下接地,中间为RST。
这种复位电路的工作原理是:
通电时,电容两端相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程度,即为低电平,单片机开始正常工作。
首先RST保持两个机器周期以上的高电平时自动复位
1)上电复位:
上电瞬间,电容充电电流最大,电容相当于短路,RST端为高电平,自动复位;电容两端的电压达到电源电压时,电容充电电流为零,电容相当于开路,RST端为低电平,程序正常运行。
2)手动复位:
首先经过上电复位,当按下按键时,RST直接与VCC相连,为高电平形成复位,同时电解电容被短路放电;按键松开时,VCC对电容充电,充电电流在电阻上,RST依然为高电平,仍然是复位,充电完成后,电容相当于开路,RST为低电平,正常工作。
图2.2.2复位电路电原理图
2.2.3单片机晶振电路工作原理
晶振分为有源晶振和无源晶振两种,其作用是在电路产生震荡电流,发出时钟信号。
它是时钟电路中最重要的部件,它的作用是向IC等部件提供基准频率,它就像个标尺,工作频率不稳定会造成相关设备工作频率不稳定,自然容易出现问题。
由于制造工艺不断提高,现在晶振的频率偏差、温度稳定性、老化率、密封性等重要技术指标都很好,已不容易出现故障,但在选用时仍可留意一下晶振的质量。
图2.2.3晶振电路电原理图
2.2.4RS-232接口电器特性
目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。
RS-232被定义为一种在低速率串行通信中增加通信距离的单端标准。
RS-232采用不平衡传输方式,即所谓单端通信,该接口具有使用方便、连线少等优点。
RS-232接口主要电气特性如下:
1)RS-232串口通信最远距离为15m。
2)不带负载时的驱动器输出电平为-25V—+25V。
3)接收器输入电压的允许范围为-25V—+25V。
4)RS-232上传送的数字量采用负逻辑,且与地对称。
逻辑1:
-3V—-15V;
逻辑0:
+3V—+15V。
5)最大负载电容2500pF。
6)信号有效(接通,ON状态,正电压)为+3V—+15V,信号无效(断开,OFF状态,负电压)为-3V—-15V。
由RS-232标准对逻辑电平的定义可知,在发送引脚(TxD)和接收引脚(RxD)上,对于数据信息:
逻辑“1”的电平要低于-3V,逻辑“0”的电平要高于+3V;对于控制信号,接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3—+3V之间的电压无意义,低于-15V高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在4—(3—15)V之间。
表2.2.4
TTL逻辑电平与RS-232逻辑电平对比关系表
电平状态
TTL
RS-232
逻辑电平“1”
≥+2.4V
-3—-15V
逻辑电平“0”
≤+0.4V
+3—+15V
图2.2.4上位机通信与RS-232接口电原理图
3.硬件电路设计
3.1系统硬件总电路构成及原理
实现本设计具体功能,可选用AT80C52单片机及外围器件,实现最小控制通信系统。
电源电路为单片机及其他模块提供标准的+5V外界电源,晶振模块为单片机提供时钟标准,使系统各部分能协调工作。
复位电路模块为单片机提供复位电路功能,单片机作为主控器,根据输入信号对系统进行相应的控制。
9针接口与单片机和上位机的RS-232相连,实现上位机和单片机之间的通信,发光二极管是单片机控制的控制对象,实际应用中,它连接光电隔离器和驱动电路,可以作为电路开关。
本次设计还提供LED显示屏,显示程序的传输过程。
图3.1单片机上位机通信系统电原理图
本次设计的所需元件清单如表3.1
元件名称
型号
数量/个
用途
单片机
AT80C52
1
控制核心
晶振
12MHz
1
晶振电路
电容
30pF
2
电解电容
10μF/10V
1
复位电路
电阻
10KΩ
1
按键
1
串口
9针
1
接微机
集成芯片
MAX232
1
电平转换电路
电解电容
1μF/10V
2
发光二极管
6
控制对象
电阻
1KΩ
6
电源
+5V/0.5A
1
提供电源
LED
1
显示程序传输
3.2主控制部分――AT89C52单片机简介
AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
AT89C52P为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
主要管脚有:
XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。
RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。
P0—P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32—39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
P0口
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),Flash编程和程序校验期间,P1接收低8位地址。
表3.2P1.0和P1.1的第二功能
引脚号
功能特性
P1.0
T2,时钟输出
P1.1
T2EX(定时/计数器2)
P2口
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。
Flash编程或校验时,P2亦接收高位地址和一些控制信号。
P3口
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
RST
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
XTAL1
振荡器反相放大器的及内部时钟发生器的输入端。
XTAL2
振荡器反相放大器的输出端。
特殊功能寄存器
在AT89C52片内存储器中,80H-FFH共128个单元为特殊功能寄存器(SFE),SFR的地址空间映象如表2所示。
并非所有的地址都被定义,从80H—FFH共128个字节只有一部分被定义,还有相当一部分没有定义。
对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。
不应将数据“1”写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0”。
AT89C52除了与AT89C51所有的定时/计数器0和定时/计数器1外,还增加了一个定时/计数器2。
定时/计数器2的控制和状态位位于T2CON(参见表3)T2MOD(参见表4),寄存器对(RCAO2H、RCAP2L)是定时器2在16位捕获方式或16位自动重装载方式下的捕获/自动重装载寄存器。
数据存储器
AT89C52有256个字节的内部RAM,80H-FFH高128个字节与特殊功能寄存器(SFR)地址是重叠的,也就是高128字节的RAM和特殊功能寄存器的地址是相同的,但物理上它们是分开的。
当一条指令访问7FH以上的内部地址单元时,指令中使用的寻址方式是不同的,也即寻址方式决定是访问高128字节RAM还是访问特殊功能寄存器。
如果指令是直接寻址方式则为访问特殊功能寄存器。
例如,下面的直接寻址指令访问特殊功能寄存器0A0H(即P2口)地址单元。
MOV0A0H,#data
间接寻址指令访问高128字节RAM,例如,下面的间接寻址指令中,R0的内容为0A0H,则访问数据字节地址为0A0H,而不是P2口(0A0H)。
MOV@R0,#data
堆栈操作也是间接寻址方式,所以,高128位数据RAM亦可作为堆栈区使用。
定时器0和定时器1:
AT89C52的定时器0和定时器1的工作方式与AT89C51相同。
定时器2
定时器2是一个16位定时/计数器。
它既可当定时器使用,也可作为外部事件计数器使用,其工作方式由特殊功能寄存器T2CON的C/T2位选择。
定时器2有三种工作方式:
捕获方式,自动重装载(向上或向下计数)方式和波特率发生器方式,工作方式由T2CON的控制位来选择。
定时器2由两个8位寄存器TH2和TL2组成,在定时器工作方式中,每个机器周期TL2寄存器的值加1,由于一个机器周期由12个振荡时钟构成,因此,计数速率为振荡频率的1/12。
在计数工作方式时,当T2引脚上外部输入信号产生由1至0的下降沿时,寄存器的值加1,在这种工作方式下,每个机器周期的5SP2期间,对外部输入进行采样。
若在第一个机器周期中采到的值为1,而在下一个机器周期中采到的值为0,则在紧跟着的下一个周期的S3P1期间寄存器加1。
由于识别1至0的跳变需要2个机器周期(24个振荡周期),因此,最高计数速率为振荡频率的1/24。
为确保采样的正确性,要求输入的电平在变化前至少保持一个完整周期的时间,以保证输入信号至少被采样一次。
捕获方式
在捕获方式下,通过T2CON控制位EXEN2来选择两种方式。
如果EXEN2=0,定时器2是一个16位定时器或计数器,计数溢出时,对T2CON的溢出标志TF2置位,同时激活中断。
如果EXEN2=1,定时器2完成相同的操作,而当T2EX引脚外部输入信号发生1至0负跳变时,也出现TH2和TL2中的值分别被捕获到RCAP2H和RCAP2L中。
另外,T2EX引脚信号的跳变使得T2CON中的EXF2置位,与TF2相仿,EXF2也会激活中断。
捕获方式如图4所示。
自动重装载(向上或向下计数器)方式
当定时器2工作于16位自动重装载方式时,能对其编程为向上或向下计数方式,这个功能可通过特殊功能寄存器T2CON的DCEN位(允许向下计数)来选择的。
复位时,DCEN位置“0”,定时器2默认设置为向上计数。
当DCEN置位时,定时器2既可向上计数也可向下计数,这取决于T2EX引脚的值,当DCEN=0时,定时器2自动设置为向上计数,在这种方式下,T2CON中的EXEN2控制位有两种选择,若EXEN2=0,定时器2为向上计数至0FFFFH溢出,置位TF2激活中断,同时把16位计数寄存器RCAP2H和RCAP2L重装载,RCAP2H和RCAP2L的值可由软件预置。
若EXEN2=1,定时器2的16位重装载由溢出或外部输入端T2EX从1至0的下降沿触发。
这个脉冲使EXF2置位,如果中断允许,同样产生中断。
定时器2的中断入口地址是:
002BH——0032H。
当DCEN=1时,允许定时器2向上或向下计数。
这种方式下,T2EX引脚控制计数器方向。
T2EX引脚为逻辑“1”时,定时器向上计数,当计数0FFFFH向上溢出时,置位TF2,同时把16位计数寄存器RCAP2H和RCAP2L重装载到TH2和TL2中。
T2EX引脚为逻辑“0”时,定时器2向下计数,当TH2和TL2中的数值等于RCAP2H和RCAP2L中的值时,计数溢出,置位TF2,同时将0FFFFH数值重新装入定时寄存器中。
当定时/计数器2向上溢出或向下溢出时,置位EXF2位。
波特率发生器
当T2CON(表3)中的TCLK和RCLK置位时,定时/计数器2作为波特率发生器使用。
如果定时/计数器2作为发送器或接收器,其发送和接收的波特率可以是不同的,定时器1用于其它功能。
若RCLK和TCLK置位,则定时器2工作于波特率发生器方式。
波特率发生器的方式与自动重装载方式相仿,在此方式下,TH2翻转使定时器2的寄存器用RCAP2H和RCAP2L中的16位数值重新装载,该数值由软件设置。
在方式1和方式3中,波特率由定时器2的溢出速率根据下式确定:
方式1和3的波特率=定时器的溢出率/16定时器既能工作于定时方式也能工作于计数方式,在大多数的应用中,是工作在定时方式(C/T2=0)。
定时器2作为波特率发生器时,与作为定时器的操作是不同的,通常作为定时器时,在每个机器周期(1/12振荡频率)寄存器的值加1,而作为波特率发生器使用时,在每个状态时间(1/2振荡频率)寄存器的值加1。
波特率的计算公式如下:
方式1和3的波特率=振荡频率/{32*[65536-(RCP2H,RCP2L)]}
式中(RCAP2H,RCAP2L)是RCAP2H和RCAP2L中的16位无符号数。
定时器2作为波特率发生器使用的电路如图7所示。
T2CON中的RCLK或TCLK=1时,波特率工作方式才有效。
在波特率发生器工作方式中,TH2翻转不能使TF2置位,故而不产生中断。
但若EXEN2置位,且T2EX端产生由1至0的负跳变,则会使EXF2置位,此时并不能将(RCAP2H,RCAP2L)的内容重新装入TH2和TL2中。
所以,当定时器2作为波特率发生器使用时,T2EX可作为附加的外部中断源来使用。
需要注意的是,当定时器2工作于波特率器时,作为定时器运行(TR2=1)时,并不能访问TH2和TL2。
因为此时每个状态时间定时器都会加1,对其读写将得到一个不确定的数值。
然而,对RCAP2则可读而不可写,因为写入操作将是重新装载,写入操作可能令写和/或重装载出错。
在访问定时器2或RCAP2寄存器之前