当前位置:文档之家› 51单片机毕业论文

51单片机毕业论文

目录

摘要 (3)

一、前言 (4)

(一)串行通信 (4)

二、总体设计 (4)

(一)系统组成 (4)

(二)系统工作原理 (5)

三、系统设计方案论证 (6)

(一) 串行通信接口的选择 (6)

1、方案一 (6)

2、方案二 (7)

3、方案的确定 (7)

(二)上位机软件的设计选择 (8)

1、方案一 (8)

2、方案二 (8)

3、方案的确定 (8)

四、硬件系统设计 (9)

(一)整体单片机模块设计 (9)

1、串行通信模块设计 (9)

2.LCD显示模块的选择 (12)

3、数码管显示模块的选择 (13)

五、软件系统设计 (13)

(一)设置串口工作方式 (14)

(二)设置定时器工作方式 (14)

(三)主程序设计流程图 (14)

(四)串口接收发送数据中断服务子程序设计 (16)

(五)LCD显示子程序模块设计 (17)

(六)数码管子程序模块设计 (18)

(七)PC上位机程序流程图设计 (18)

六、系统仿真调试与实物调试结果 (18)

总结 (22)

参考文献 (22)

致谢 (22)

附录 (23)

摘要

近年来,由于单片机与PC机串行通信现状及发展前景的优越,越来越成为计算机应用的主流资源。而单片机系统在工业领域控制中也逐步得到广泛应用,特别是利用单片机能直接进行双工通信的特点,在数据采集、数据处理等控制中已成为一种发展方向。

单片机与PC机串行通信的方式有并行通信和串行通信,其中串行通信的特点是按顺序地传输数据,只需一对传输线就可以实现通信,从而降低了通信成本。关键词:双工通信, 数据采集, 数据处理, 串行通信, 传输数据。

Abstract

In recent years, due to microcontroller serial communication with the PC, the status quo and development prospects of the superior, more and more resources into the mainstream computer applications. The microcomputer control system in the industry have gradually been widely applied, in particular, the use of microcontroller can directly duplex communication characteristics in data acquisition, data processing, control has become a development direction.

Microcontroller with PC Serial Communication methods are parallel communication and serial communication, which is characterized by serial communication sequence to transmit data, only a pair of transmission line communication can be achieved, thereby reducing communication costs.

Keywords:Duplex communication, data acquisition, data processing, serial communications, transmission of data.

一、前言

(一)串行通信

随着计算机系统的应用和单片机的网络发展,通信功能就显的越来越重要了。这里所说的通信功能是指计算机与外界(单片机)的信息交换。因此,通信既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换。由于使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,因此,特别适合于远距离传输。对于那些与计算机相距不远的人-机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式交换数据也很普遍。在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各CPU之间的通信一般都是串行方式。所以串行接口是微机应用系统常用的接口。

二、总体设计

(一)系统组成

本系统功能是由硬件系统和软件系统两部份共同完成,硬件系统部分主要完成数据的显示;软件系统部分主要完成信号的传输处理及控制功能等。

本系统的硬件采用模块化设计,以AT89S51单片机为核心,与数码管显示电路、串行口通信电路组成控制系统。该硬件系统主要有以下几个模块:AT89S51主控模块、数码管显示模块、LCD显示模块、串行口通信模块等。单片机主要完成外围硬件的控制以及一些运算功能,数码管显示模块完成数字的显示功能、串行口通信模块主要完成单片机和PC机之间的通信功能。系统组成方框图如图2.1所示。

图2.1 单片机系统组成方框图

本软件系统采用模块化设计方法。系统软件主要由主程序、串口接收发送数据中断子程序、数码管显示子程序等模块组成,系统软件结构框图如图2.2所示。Array图2.2 系统软件结构框图

(二)系统工作原理

MCS-51单片机串行口发送/接收数据时,通过2个串行缓冲器SBUF进行,这2个缓冲器采用一个地址,但在物理上是独立的。其中接收缓冲器只能读出不能写入,发送缓冲器只能写入不能读出。

①发送过程

由指令MOV SBUF,A启动,此时待传送的数据由A累加器传入串行发送缓冲器SBUF,由硬件自动在发送字符的始、末加上起始位(低电平)、停止位(高电子)及其它控制位(如奇偶位等),而后在移位脉冲的控制下,低位在前,高位在后,逐位从TXD端(方式0除外)发出。

②接收过程

串行口的接收与否受制于允许接收位REN的状态,当REN被软件置“1”后,允许接收器接收。串口的接收器以所选波特率的16倍速对RXD线进行监视。当“1”到“0”跳变时,检测器连续采样到RXD线上低电平时。便认定RXD端出现起始位,继而接收控制器开始工作。在每位传送时间的第7、8、9三个脉冲状态采样RXD线,决定所接收的值为“0”或“1”。当接收完停止位后,控制电路使中断标志R1置为“1”,此时程序可通过MOV A,SBUF指令将接收到的字符从SBUF送入累加器A,从而完成一帧数据的接收工作。

三、系统设计方案论证

(一)串行通信接口的选择

1、方案一

RS485接口采用差分信号负逻辑,正电压表示“0”,负电压表示“1”,RS485接口分两线制和四线制两种接线方式,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种接线方式为总线式拓朴结构在同一总线上最多可以连接32个结点。在RS485接口通信网络中一般采用的是主从通信方式,即一个主机带多个从机。在很多情况下,连接RS485接口通信时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。而忽略了信号地的连接,这种连接方法在许多场合是能正常工作的,但却埋下了很大的隐患。比如说:共模干扰问题、EMI问题、终端负载电阻问题,这给系统的设计和调试带来不必要的麻烦。

2、方案二

RS232接口就是串口,现有很多工业仪器将它作为标准通信端口。由于RS232接口具有使用线路少、成本低,特别是在传输数据时,从而避免了多条线路特性的不一致性而被广泛采用。在执行串行通信过程中,要求通信双方都采用一个RS232对应的标准接口,这样就可以使不同的设备可以更方便地连接起来进行数据交换。 RS-232-C接口(又称 EIA RS-232-C)是目前最常用的、最常见的一种串行通信接口。RS232接口在计算机与外部终端通信时通常是以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组RS-232 接口,分别称为 COM1 和 COM2。在大多数情况下主要使用主通道,对于一般双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线及一条地线,RS232-DB-9能在低速率串行通信中增加通讯距离的单端标准,从而保证了数据收发的可靠性。RS232采取不平衡传输方式,收、发端的数据信号是相对于信号地,如从DTE设备发出的数据在使用DB25连接器时是2脚相对7脚(信号地)的电平。典型的RS232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5~+15V,负电平在-5~-15V电平。这样比较容易损坏接口芯片,当无数据传输时,线上为TTL,从开始传送数据到结束,线上电平从TTL 电平到RS-232电平再返回TTL电平。接收器典型的工作电平在+3~+12V与-3~-12V。由于发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,容易产生共模干扰。由于传输距离有限再加上双绞线上的分布电容,其传送距离最大为约20米,最高速率为20kb/s。RS232是为点对点(即只用一对收、发设备)通信而设计的,其驱动器最大负载为7k,所以RS232特别适合短距离设备之间的通信。

3、方案的确定

综合方案一和方案二并结合通信系统的设计要求,方案二是对整个系统设计比较有利,完全能满足串行通信的设计要求。

(二)上位机软件的设计选择

1、方案一

VB,全称Visual Basic,它是以Basic语言作为其基本语言的一种可视化编程工具。是面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序。它简单易学、效率高,且功能强大可以与Windowsr专业开发工具SDK相媲美。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口函数,以用动态链接库、开放式数据连接等技术,可以高效、快速地开发Windows 环境下功能强大、图形界面丰富的应用软件系统。随着版本的提高,Visual Basic 的功能也越来越强。

2、方案二

VC,是基于C、C++语言,主要是由MFC组成,是与系统联系非常紧密的编程工具。它同时兼有高级、低级语言的双重性,并且功能强大,灵活,执行效率高。几乎可以说VC在 Windows平台无所不能,VC主要是针对Windows系统,适合一些系统级的开发,可以方便实现一些底层的调用。但最大缺点是开发效率不高。

3、方案的确定

综合比较VB和VC的特点,采取VB的方法是对本系统软件的设计最方便。用VB开发串行通信程序有两种法,一种是利用Windows的API函数;另一种是采用VB的通信控件MSComm。利用API函数编写串行通信程序较为复杂,需要掌握大量的通信知识,其优点是可实现的功能更丰富、应用面更广泛,适合于编写较为复杂的低层次通信程序。而VB的MSComm通信控件提供了标准的事件处理函数、事件、方法,并通过控件属性对串口参数进行设置,比较容易地解决了串口通信问题。更方便的是在进行VB程序设计中,设计者并不需要自己编制VB程序代码来生成图形界面。VB提供了大量现成的图形控件和其他一些控件,例如所熟悉的菜单、命令按钮、对话框等,供给用户“堆砌”起来构造自己想象中的图形界面,因此几乎不用书写什么程序代码,“画”上几笔就可完成程序员的构思,获得应用程序的图形界面。所以采用VB软件完全能达到设计的要求。

四、硬件系统设计

(一)整体单片机模块设计

本硬件系统采用ATMEL公司生产的AT89S51单片机,模块主要由主控模块、数码管显示模块、LCD显示模块、串行通信模块设计等构成,硬件系统(核心)方框组成如图4.1所示。

图4.1 硬件系统(核心)方框组成图

1、串行通信模块设计

AT89S51单片机有一个双工的串行通信口,从而方便了单片机和计算机之间的通信。电平的高低范围是电路获取信号的电压范围,CMOS电路的电平范围一般是从0到电源电压。在CMOS电平中,高电平为逻辑“1”,低电平为逻辑“0”。单片机的串行通信口是TTL电平,而计算机的串行通信口是RS232电平,两者之间要进行通信,就必须要有一个电平转换电路,即把单片机的串口要外接电平转换电路芯片把与TTL兼容的CMOS高电平表示的1转换

成RS232的负电压信号,把低电平转换成RS-232的正电压信号。采用MAX232芯片的转换接口,首先它包含了两路驱动器和接收器的RS-232转换芯片,其次MAX232芯片内部有一个电压转换器,可以把输人的+5V电压转换为RS-232接口所需的±10V电压。MAX232芯片引脚图如图4.2所示。

图4.2 MAX232芯片引脚图

图4.3 RS232接口引脚图

其中RS232引脚定义如下表4.3所示

表4.3 RS232接口引脚定义

因此,MAX232芯片的11引脚连接AT89S52单片机的TXD引脚,MAX232芯片的12引脚连接AT89S52单片机的RXD引脚;MAX232芯片的14引脚连接DB9针接口的第2引脚,MAX232芯片的13引脚连接DB9针接口的第3引脚,串行通信模块与单片机的接口电路原理图,如硬件系统方框组成图4.1所示。

2.LCD显示模块的选择

1602 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,就目前常用的有16*1,16*2,20*2和40*2行等模块。下面就以长沙太阳人电子有限公司生产的1602字符型液晶显示为例进行说明。一般1602字符型液晶显示器实物如图4.4所示。

图4.4 1602字符型液晶显示器实物图

下面是1602LCD引脚功能的说明,其中标准的16脚(带背光)接口,各引脚说明如表4.5所示。

表4.5 1602LC标准16引脚接口说明表

3、数码管显示模块的选择

数码管按段数分为七段数码管和八段数码管,其中八段数码管比七段数码管多一个小数点显示;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极的数码管。共阳数码管在电路中将公共极接到+5V上,当某一字段发光二极管的阴极为低电平时,相应字段就会点亮,当某一字段的阴极为高电平时,相对应的字段就不点亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极的数码管。共阴数码管在电路中将公共极接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就会点亮。当某一字段的阳极为低电平时,相对应字段就不点亮。下面就以四位八段共阳数码管E40361为例进行说明,E40361数码管实物如图4.6所示。

图4.6 E40361数码管实物图

五、软件系统设计

目前,Visual Basic (简称VB)已成为软件系统开发的主要语言,它具有高效、简单易学以及功能强大的特点越来越受程序设计人员及用户所青睐。VB 支持面向对象的程

序设计,具有结构化的事件驱动编程模式并可以使用无限扩增的控件。在VB 应用程序中可以方便地调用Windows的 API函数,使得编程效率提高,应用功能增强。

此外VB有二种方法可以完成串口通信,一种是利用VB 提供的具有强大功能的通信控件;另一种方法是调用的Windows的 API 函数,使用Windows 提供的通信函数编写移植性强的应用程序。虽然VC++也是针对Windows系统而开发的语言,适合一些系统级的开发,能实现一些底层的调用,在VC++里边嵌入汇编语言很简单。毕竟VC++主要应用在驱动程序开发、游戏开发方面比较多,但在串行通信上还是不如VB,VB开发应用能通过动态数据交换(DDE)编程技术能和其它Windows之间建立动态数据通信,通过VB还可以使用C语言或汇编语言编写与Windows有关的应用接口。

利用VB提供的通信控件设置串行通信的数据发送和接收,对串口状态及串行通信的信息格式和协议进行设置。

首先双方约定:波特率为9600bit/s,通信格式为8个数据位,一个停止位,无校验位,采用异步方式传送数据。

利用串口调试工具中将PC机键盘的输入发送给单片机,单片机收到PC机发来的数据后,回送同样的数据给PC机,并在屏幕上显示出来。只需要屏幕上显示的字符和所键入的字符相同,就说明两者之间的通信正常。

(一)设置串口工作方式

单片机通过中断方式接收PC机发送的数据,并且回送数据。根据信息的格式,可以设定单片机的串行口工作在方式1,在串行口方式1中,波特率是由定时器T1产生。

(二)设置定时器工作方式

如果选择定时器T1做为波特率发生器时,需设置其方式寄存器TMOD 为计数方式并选择相应的工作方式(一般选择方式2以避免重装定时器初值);当选择定时器2做为波特率发生器时,需将T2CON设置为波特率发生器工作方式。

(三)主程序设计流程图

主程序设计流程图如图5.1所示。

其中,LED由51单片机的并行I/O口直接控制其显示方式。

图5.1 主程序设计流程图

(四)串口接收发送数据中断服务子程序设计

先判断串口发送标志位TI是否为1,若TI为1,则把数据从单片机发给PC机,并把TI清零,中断子程序返回;若TI为0,表明RI=0,则把串口接收标志位RI清零,把串口接收缓冲器SBUF中的数据写入串口接收数据单元RECDATA,再把该数据送到串口发送缓冲器SBUF中,传给PC机,置串口成功接收数据标志位RECOKBIT为1,表明串口成功接收发送数据,最后中断子程序返回。串口收发数据中断服务子程序设计流程图如图5.2所示。

图5.2 串口接收发送数据中断服务子程序流程图

(五)LCD显示子程序模块设计

LCD显示模块包括LCD初始化子程序、写入指令数据到LCD子程序、写入显示数据到LCD子程序、字符显示子程序、延时子程序等模块组成。

(六)数码管子程序模块设计

数码管的段码a,b,c,d,e,f,g,dp分别与单片机的P0.0~P0.7相连,控制数码管中显示的字形;数码管的位选通由5个PNP三极管控制,分别接到单片机的P2.0、P2.1、P2.2、P2.3、P2.4端口上,在程序中通过控制P2.0~P2.4端口的输出电平就可以控制数码管的显示与关闭。

(七)PC上位机程序流程图设计

上位机传送相应的显示数据给LCD显示屏和LED,该模块编程较复杂。现只介绍大体程序的总体编写思路,即该模块的简易流程图。如图5.3所示:

图5.3 上位机基本流程图

六、系统仿真调试与实物调试结果

在PC机上打开VB6.0软件——VB工程显示窗口,并设置好串口工作方式、波特率、晶振选择等参数(注意:这些参数应与实际单片机参数设置一致),在发送数据框内输入要发送的ASCII码,点击发送,此时在LCD1602上显示出当前收到的ASCII码。同时在VB的接收数据窗口可以看到当前的回传ASCII码。串口与VB工程系统调试过程如图6.1所示。

图6.1 串口与VB工程系统调试过程

相关主题
文本预览
相关文档 最新文档