工程训练设计报告_第1页
工程训练设计报告_第2页
工程训练设计报告_第3页
工程训练设计报告_第4页
工程训练设计报告_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、工程训练设计报告题目:基于单片机的串口通讯设计学 院 计算机与信息科学学院 专 业 自动化 组 长 李 微 组 员 杨涛63 邹勇 范元双 庭验勤段静君 陈继超 李佳林 指导教师 张建成 成 绩 日 期 2013年8月25日摘要:本文设计的是基于单片机串口通讯的发送和接收。本系统的设计主要是以两个AT89C51单片机为核心部分,进行数据发送和接收的控制。该系统采用两个max232芯片进行电平的转换,同时用LCD显示发送和接收的相应的数据,在实际应用中很方便。并且能实现用键盘控制数据发送和接收的启动和停止。关键词:串口通讯,AT89C51单片机,LCD显示,键盘控制Abstract: in th

2、is paper, the design is based on single chip computer serial communication to send and receive. The design of this system is mainly based on two AT89C51 as the core part, send and receive data control. The system USES two max232 chip level transformation, at the same time with the LCD display to sen

3、d and receive the corresponding data, is very convenient in practical application. And can realize the keyboard to control the sending and receiving data to start and stop.Key words: a serial port communication, AT89C51 single-chip microcomputer, LCD display, keyboard control目录前言51、串口通讯简介52、总体方案设计73

4、、硬件电路设计83.1单片机主机系统电路设计83.2MAX232电路设计93.3LCD电路设计103.4单片机与max232连接电路的设计114、软件设计134.1 主程序设计134.2 键盘程序设计134.3 发送和接收程序154.4 LCD显示程序设计165、系统调试与通信175.1 软件调试175.2 硬件调试175.3 软件、硬件连接调试176、总结体会187、源程序19前言单片机行业已经有了很久的历史,随着科学技术的进步和社会的发展,单片机行业更加迅速的发展起来。不论在工业还是民也上都有很好的发展和应用,得到大家很好的认可和高度的评价。单片机的通信接口是各台仪表之间或仪表与计算机之间

5、进行信息交换和传输的联络装置。主要有五种类型,串行通信接口、并行通信接口、USB接口、现场总线接口以及以太网接口。串行通信按同步方式可分为异步通信和同步通信两种基本通信方式。它是在数字化的基础上用微处理器装备起来,是计算机技术与电子仪器相结合的产物。它具有数据存储、运算、逻辑判断能力,能根据被测参数的变化自选量程,可自动校正,自动补偿,自寻故障等,可以做一些需要人类的智慧才能完成的工作,既具备了一定的智能,故称为智能仪器。人们习惯将这种内含微型计算机并带有GP-IB等通信接口的电子仪器称为智能仪器。本课程设计就是利用两片单片机实现串口通讯数据的发送和接收,该系统可采用max232进行串口通讯数

6、据传送。可用LCD显示发送的相应据。可用键盘控制数据发送的启动和停止。1、 串口通讯简介串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型

7、的例子就是GPIB设备的通信。 b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0127(7位)。扩展的ASCII码是0255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设

8、备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的

9、状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。 串行通信接口的基本任务:(1)实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。(2)进行串并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串行接口电路的重要任务。(3)控制数据传输速率:串行通信接口电路应具有对数据传输速率波特率进行

10、选择和控制的能力。(4)进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。(5)进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用的电平及负逻辑不兼容,需在接口电路中进行转换。(6)提供EIA-RS-232C接口标准所要求的信号线:远距离通信采用MODEM时,需要9根信号线;近距离零MODEM方式,只需要3根信号线。这些信号线由接口电路提供,以便与MODEM或终端进行联络与控制。串行通信接口电路的组成:为了完成上述串行接口的任务,串行通信接口电路一般由可编程的串行

11、接口芯片、波特率发生器、EIA与TTL电平转换器以及地址译码电路组成。其中,串行接口芯片,随着大规模继承电路技术的发展,通用的同步(USRT)和异步(UART)接口芯片种类越来越多,如下表所示。它们的基本功能是类似的,都能实现上面提出的串行通信接口基本任务的大部分工作,且都是可编程的。串行通信分类:在串行通信中,数据是在两个站之间传送的。按照数据传送方向,串行通信可分为三种制式。1. 单工制式(Simplex)单工制式是指甲乙双方通信只能单向传送数据。单工制式如图1所示:图1 单工制式2. 半双工制式(Half duplex) 半双工制式是指通信双方都具有发送器和接收器,双方既可发送也可接收,

12、但接收和发送不能同时进行,即发送时就不能接收,接收时就不能发送。半双工制式如图2所示。图2 半双工制式3. 全双工制式 全双工制式是指通信双方均设有发送器和接收器,并且将信道划分为发送信道和接收信道,两端数据允许同时收发,因此通信效率比前两种高。全双工制式如图3所示:图3全双工制式2、 总体方案设计本次课程设计的整个电路是采用两个AT89C51单片机芯片控制两个分电路,实现串口数据的发送和接收两个功能。其中单片机的P1口为数据采集口,其中P1.0P1.2接LCD的RS、RW、和E引脚,P1.3P1.5接键盘,然后和另一个单片机相连,实现单片机与LCD之间的数据传递和显示。P2口接LCD的D0到

13、D7引脚,实现了8位数显,然后P3口的输入和输出引脚接max232的输出和输入引脚,另一个单片机的接法与此类似,便可以实现串口通讯的功能。串口通讯的设计原理框图如4所示:单片机单片机LCD 显示LCD 显示Max232Max232按键1按键2按键3按键图4 串口通讯的设计原理框图3、 硬件电路设计3.1 单片机主机系统电路设计时钟电路:89C51单片机的时钟信号通常有内部振荡和外部振荡方式。在引脚XTAL1和XTAL2外接晶体振荡器,就够成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。晶振通常选用6MHZ、12MHZ或24MHZ(晶体

14、可在1.2MHz12MHz之间任选,电容C1和C2的典型值在20pF100pF之间选择),本设计中选用12MHZ。电容器C9、C10起稳定振荡频率、快速起振的作用,电容设定为30PF。内部振荡方式所得的时钟信号比较稳定。外部振荡方式是把已有的时钟信号引入单片机内,这种方式适用于用来使单片机的时钟与外部信号保持一致。复位电路:本系统的复位电路是采用按键复位的电路,复位输入引脚RET为AT89C51提供了初始化的手段。当89C51的ALE及PSEN两引脚输出高电平,RET引脚高电平到时,单片机复位。按下按钮,则直接把+5V加到了RET端从而复位称为手动复位。复位后,P0到P3并行I/O口全为高电平

15、,其它寄存器全部清零,只有SBUF寄存器状态不确定。89C51单片机内部有P0、P1、P2、P3四个8位双向I/O口: P0口具有双重功能:可以作为输入/输出用,外接输入/输出设备;在有外接存储器和I/O接口时常作为低8位地址/数据总线,即低8位地址与数据线分时使用P0口。此时低8位地址由ALE信号的下跳沿使它锁存到外部地址锁存器中,而后,P0口出现数据信息。P1口具有单一接口功能,P1口每一位都能作为可编程的输入或输出口线。P2口具有双重功能:作为输入口或输出口使用,外接输入/输出设备;在有外接存储器I/O接口时,作为系统的地址总线。输出高位地址,与P0口低8位地址一起组成16位地址总线。P

16、3口为双重功能口:可以作为输入/输出口,外接输入/输出设备;作为第二功能。 单片机主机系统原理图如图5所示:图5 单片机主机系统原理图3.2 MAX232电路设计MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。引脚介绍:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。 第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通

17、道。 8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。 TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电。15脚GND、16脚VCC(+5v)。 max232电路的设计原理图如图6:图6 max232电路的设计原理图如图两个Max232的连接图7:图7 max232连接原理图3.3 LCD电路设计显示电路要求采用液晶显示器Liquid Crystal Display,

18、简称LCD,它是利用液晶的光电效应特点制成的显示产品。HD44780控制器由两个8位寄存器、指令寄存器(IR)和数据寄存器(DR)、忙标志(BF)、显示数据RAM(DDRAM)、字符发生器ROM(CGROM)、字符发生器RAM(CGRAM)、地址计数器(AC)构成。IR用于寄存指令码,只能写入不能读出;DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据。BF为1时,液晶模块处于内部处理模式,不响应外部操作指令和接受数据。DDRAM 用来存储显示的字符,能存储80个字符码。CGROM由8位字符码生成5*7点阵字符160种和5*10点阵字符3

19、2种。CGRAM是为用户编写特殊字符留用的,它的容量仅64字节、可以自定义8个5*7点阵字符或者4个5*10点阵字符。AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或者CGRAM单元。LM016L的各引脚功能为:D0D7(三态)为数据总线;E为使能信号端;RS(输入)为数据/指令信号端,RS=1为数据信号,RS=0为指令信号;RW(输入)为读/写数据模式端,RW=1为读,RW=0为写。通过对HD44780写入控制指令,使HD44780产生显示驱动信号来驱动LM016L。HD44780的控制指令主要有:清除显示(Clear Di

20、splay)、地址归位(Return Home)、输入模式设定(Entry Mode Set)、显示开/关控制(Display On/Off Control)、功能设定(Function Set)、设定 CGRAM 的地址(Set CGRAM Address)、设定DDRAM 的地址(Set DDRAM Address)、写 DDRAM/CGRAM(Write Date to DDRAM/CGRAM)、读忙标志和地址(Read Busy Flag and Address)以及从DDRAM 和CGRAM 中读数据(Read Date from DDRAM/CGRAM)。LCD数码管的D0到D7接

21、单片机的P2口, LCD的RS、RW、和E引脚分别接单片机的P1.0P1.2口。即可实现数码管与单片机之间的数据传送,LCD电路的设计如下图8: 图8 LCD显示电路原理图3.4 单片机与max232连接电路的设计单片机和和max232之间相互连接就是TTL电平标准和RS-232-C标准之间的电平转换。为使计算机、电话以及其他通信设备互相沟通,现在,已经对串行通信建立了几个一致的概念和标准,这些概念和标准属于三个方面:传输率,电特性,信号名称和接口标准。1、传输率:所谓传输率就是指每秒传输多少位,传输率也常叫波特率。国际上规定了一个标准波特率系列,标准波特率也是最常用的波特率,标准波特率系列为

22、110、300、600、1200、4800、9600和19200。大多数CRT终端都能够按110到9600范围中的任何一种波特率工作。打印机由于机械速度比较慢而使传输波特率受到限制,所以,一般的串行打印机工作在110波特率,点针式打印机由于其内部有较大的行缓冲区,所以可以按高达2400波特的速度接收打印信息。大多数接口的接收波特率和发送波特率可以分别设置,而且,可以通过编程来指定。2、RS-232-C标准:RS-232-C标准对两个方面作了规定,即信号电平标准和控制信号线的定义。RS-232C采用负逻辑规定逻辑电平,信号电平与通常的TTL电平也不兼容,RS-232-C将-5V-15V规定为“1

23、”,+5V+15V规定为“0”。TTL标准和RS-232-C标准之间的电平转换如图9:图9 TTL标准和RS-232-C标准之间的电平转换单片机与max232连接图如图10图10 单片机与max232连接原理图4、 软件设计4.1 主程序设计主程序流程图如图11:开 始是否有键按下调用延迟哪键按下调用延迟LCD显示结束NYYN图11 主程序流程图 整个主程序采用模块化的思想来设计,其中主要有按键识别,LCD显示,发送和接收等几大模块构成,来完成整个串口通讯的功能。4.2 键盘程序设计键盘程序部分主要完成键输入和显示的功能。当没有键按下时主程序一直执行键扫描工作,当有键按下时,先执行延迟消抖程序

24、,然后在确认是否有键按下。若确实有键按下,计算出键值后显示执行显示程序。键盘扫描的流程图见图12所示:开始有键闭合吗?消除抖动确实有键按下计算键位闭合键释放了吗?执行键操作返回调用显示子程序YNYNN图12 键盘扫描流程图4.3 发送和接收程序在主程序中,TMOD=0x20:设置定时器1为工作方式2,TH1=0xfd:设置串口波特率,TL1=0xfd:设置串口波特率,TR1=1:打开定时器1,REN=1:将允许接受位置一,SM0=0:设置串行口工作方式,SM1=1:设置串行口工作方式EA=1:打开总中断,ES=1:打开串行口中断。发送程序流程图如图13:开始打开发送控制P1.0写SBUFT1=

25、1?发送完毕?延时T秒关闭发送控制P1.0结束NN图13 发送程序流程图接收程序流程图如图14开始P1.0处于结束读SBUFT1=1?接收完毕?延时T秒结束NN图14 接收程序流程图4.4 LCD显示程序设计本次课设采用LCD进行显示,首先进行键盘控制,由发送端的三个键,加一,减一和锁键改变数据的状态,然后进行键盘的识别,再调用延时,通过中断的的方法可以显示发送端所发送的数据和接收端所接收的数据,如图15所示:开始键盘控制程序识别按键软件延时LCD显示图15 显示流程图5、 系统调试与通信系统的硬件、软件独调和系统调试是系统最后的步骤也是系统特别重要的环节,因为设计和开发出的系统是否成功,功能

26、是否完善只有在这里才能显现出来。所以为了保证设计系统能够正常工作,必须对软件和硬件部分的每一个部分进行调试和分析。5.1 软件调试软件问题是调试中遇到问题最多的,此系统中出现过的问题有以下几处:1、键盘中断处理程序中中断入口后,没有关掉外部中断,出现键值读取不正确,不能正确操作键盘。解决方法,在中断入口处关掉外中断,并在出口时再开外中断。2、键盘扫描前没有软件延时消抖,出现键值读取不准确。解决方法,在键盘中断入口后在键值扫描前软件延时1ms,消去键盘抖动所带来的误操作。3、程序中有个别地方将“=”与“=”混淆,造成结果不准确,解决办法,仔细查找,将混淆出更正。再把到计时设定时子程序加进来,看是

27、否能通过菜单正确调用,返回。能否修改到计时。整个调试完毕。5.2 硬件调试硬件的测试首先是检查电路的逻辑线路是否正确,如果正确再检查原理图的线路连接是否正确,电路的布局安排是否合理等等。经过进行精心的检查的连线,本设计的硬件仿真图运行正确无误。5.3 软件、硬件连接调试本设计软件采用的是keil,硬件采用的是Proteus软件实现仿真和电路图设计和,Proteus软件与Keil软件联合使用,实现设计要求。在Keil软件中创建新文件,输入所编写的c语言程序并保存,在编译源程序无误后,会产出相应的”.HEX”文件;将所生成的”.HEX”文件加载到已绘制好的Proteus原理图中,使Proteus与

28、Keil真正连接起来,实现联合调试。调试结果如图16所示:图16 仿真效果图6、 总结体会本课程设计的主要任务是设计一个以两片89C51单片机为核心的串口通讯系统。从确定课设题目,到查阅质料确定总体方案设计,硬件电路仿真的设计,硬件电路的优化,软件的设计,软件的优化,检验仿真电路,调试软件程序,到最后的软硬件联调,都是我努力去完成的。在最后的仿真电路图中达到了我想要的结果,并且对串口通讯有了更一步的认识。对单片机也有了更加深刻的了解。对以后很好的应用单片机打下了深刻的基础。本次课设主要设计的是单片机与单片机之间的通信,即双机通信。但是设计的比较简单,如果进一步的设计,可以有以下两种改进方案:1

29、 可以使发送的数据多样化,不止停留在数字的发送,可以使字母或者其他形式的数据。2 可以进行多机通讯,突破两片单片机之间的通讯,还可以研究单片机与PC机之间的通信。总而言之,本次毕业设计我收获颇多。不仅学会了两款新的软件protues和KEIL C51,也了解了单片机的一些工作原理及常见的用途。最重要的,本次设计教会了我一种解决问题的方法,这对我以后的工作及学习绝对是大有帮助。最后,在此对所有帮助过我的老师和同学再次表示真挚的感谢。7、 源程序串口发送程序:#include<reg51.h>#define uint unsigned int#define uchar unsigned

30、 charuchar a=150;uchar b=0;sbit RS=P12;sbit RW=P11;sbit E=P10;sbit INC=P13;sbit DEC=P14;sbit CON=P15;code uchar table='0','1','2','3','4','5','6','7','8','9'/*延时子程序*void delay(uint i) uint j; for(;i>0;i-) for(j=0;j<

31、;125;j+);/*写数据子程序*void write_com(uchar com) RS=0; RW=0; P2=com; E=1; delay(1); E=0;/*写数据子程序*void write_dat(uchar dat) RS=1; RW=0; P2=dat; E=1; delay(1); E=0;/*光标定位函数*void LcdPos (uchar Xpos,uchar Ypos) uchar tmp; Xpos&=0x0f; Ypos&=0x01; tmp=Xpos; if(Ypos=1) tmp|=0xc0; tmp|=0x80; write_com(tm

32、p);/*LCD初始化子程序*LCDRset(void) E=0;/*使能端禁止 write_com(0X38); delay(1); write_com(0X01);/*清屏 delay(1); write_com(0X0C);/*开显示光标不显示 delay(1); write_com(0x06);/*光标加一 delay(1);/*在指定行列显示字符子程序*void writeChar(uchar Xpos,uchar Ypos,char c) LcdPos(Xpos,Ypos); write_dat(c);/*在指定行列写入指定字符串*void writeString(uchar Xp

33、os,uchar Ypos,char s) uchar p=0; while(1) writeChar(Xpos,Ypos,sp); p+; if(sp=0) break; if(+Xpos>=15) Xpos=0; Ypos=1;/异或运算 void display(uchar dat)writeChar(7,1,tabledat%10);dat/=10;writeChar(6,1,tabledat%10);dat/=10;writeChar(5,1,tabledat%10);/*主程序子程序*void main(void) TMOD=0x20;/设置定时器1为工作方式2 TH1=0x

34、fd;/*设置串口波特率 TL1=0xfd;/*设置串口波特率 TR1=1;/*打开定时器1 /REN=1;/*将允许接受位置一 SM0=0;/*设置串行口工作方式 SM1=1;/*设置串行口工作方式 /EA=1;/*打开总中断 /ES=1;/*打开串行口中断 LCDRset(); /P0=0xf0; writeString(0,1,"sent:"); while(1) display(a); if(INC=0)delay(10);if(INC=0)while(!INC);a+;if(DEC=0)delay(10);if(DEC=0)while(!DEC);a-;if(CO

35、N=0)delay(10);if(CON=0)while(!CON); if(b=1)b=0;else b+;if(b=0) writeString(3,0,"UNLOCKED!");SBUF=a;while(!TI);TI=0;else writeString(3,0," LOCKED!"); /*END*串口接收程序:#include<reg51.h>#define uint unsigned int#define uchar unsigned charuchar a;uchar b=0;sbit RS=P12;sbit RW=P11;s

36、bit E=P10;sbit CON=P13;code uchar table='0','1','2','3','4','5','6','7','8','9'/*延时子程序*void delay(uint i) uint j; for(;i>0;i-) for(j=0;j<125;j+);/*写数据子程序*void write_com(uchar com) RS=0; RW=0; P2=com; E=1; delay(1); E=0;/*写数据子程序*void write_dat(uchar dat) RS=1; RW=0; P2=dat; E=1; delay(1); E=0;/*光标定位函数*void

温馨提示

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

评论

0/150

提交评论