谁能帮我看一下这个51单片机串口接收程序通信的接收的程序有什么问题,我就想将缓冲器的数显示出来,谢谢!

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
基于Proteus的51单片机应用-单片机串口通信设计.doc52页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:100 &&
你可能关注的文档:
··········
··········
1.1课题背景及意义
目前,单片机的发展速度大约每两、三年要更新一代,集成度增加一倍,功能翻一番。其发展速度之快、应用范围之广已达到了惊人的地步,它已渗透到生产和生活的各个领域,应用非常广泛。在汽车、通信、智能仪表、家用电器和军事设备的智能化以及实时过程控制等方面,单片机都扮演着非常重要的角色[1]。因此单片机的设计开发具有广阔的前景。所以,对于电气类学生而言,学习一种单片机的开发是十分必要的。而51系列的单片机,随着半导体技术的发展,其处理速度更快,性能更优越,在工业控制领域上占据十分重要的地位,通过对51系列单片机的学习而掌握单片机开发的过程是一种不错的选择。
然而单片机是一门综合性、实践性都很强的学科,其学习涉及的实验环节比较多,硬件设备投入比较大,对于大多数人而言很难投入大笔资金去购买实验器件。而且要进行硬件电路测试和调试,必须在电路板制作完成、元器件焊接完毕之后进行,但这些工作费时费力。因此引入EDA软件仿真系统建立虚拟实验平台,不仅可以大大提高单片机的学习效率,而且大大减少硬件设备的资金投入,同时降低对硬件设备的维护工作。
EDA设计思路是:从元器件的选取到连接、直至电路的调试、分析和软件的编译,都是在计算机中完成,所用的工作都是虚拟的。虽然现在的电路设计软件已经很多,诸如PROTEL、ORCAD、EWB 、Multisim等,不过这些软件之间的差别都不大:都有原理图和PCB制作功能,都能进行诸如频率响应,噪音分析等电路分析,主要用于模拟电路、数字电路、模数混合电路的性能仿真与分析,但对于单片机设计及软件编程,最重要的是两者的联调,这些软件都无法实现,
正在加载中,请稍后...您的位置: >
1.&&&&&& 发送:向总线上发命令
2.&&&&&& 接收:从总线接收命令,并分析是地址还是数据。
3.&&&&&& 定时发送:从内存中取数并向主机发送.
&经过调试,以上功能基本实现,目前可以通过上位机对单片机进行实时控制。
&程序如下:
&//这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收
//和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的
#i nclude &reg51.h&
#i nclude&stdio.h&
#i nclude &string.h&
#define INBUF_LEN 4&& //数据长度
unsigned char inbuf1[INBUF_LEN];
unsigned char checksum,count3 , flag,temp,
bit&&&&&&&&& read_flag=0;
sbit& cp=P1^1;
sbit& DIR=P1^2;
unsigned int xdata *RAMDATA;&&&& /*定义RAM地址指针*/
unsigned char a[6] ={0x11,0x22,0x33,0x44,0x55,0x66} ;
void init_serialcomm(void)
&&&& SCON=0x50;&&&&&&&&&&&&& //在11.0592MHz下,设置串行口波特率为9600,方式1,并允许接收
&&&& PCON=0x00;
&&&& ES=1;
&&&& TMOD=0x21;&& //定时器工作于方式2,自动装载方式
&&&& TH0=()%256;
&&&& TL0=()/256;
&&&&&&& TL1=0
&&&& TH1=0
&&&& ET0=1;
&&&&&&& TR0=1;
&&&&&&& TR1=1;
//&&&& TI=0;
&&&&&&& EA=1;
& //&& TI=1;
&& RAMDATA=0x1F45;
void serial () interrupt 4 using 3
& { RI=0;
&&& ch=SBUF;
&&&&&& TI=1;&&&&&&&&&& //置SBUF空
&&& switch(ch)
&& case 0x01 :printf("A");& TI=0;
&& case 0x02 :printf("B");& TI=0;
&& case 0x03 :printf("C");& TI=0;
&& case 0x04 :printf("D");& TI=0;
&& default& :printf("fg");&& TI=0;
//向串口发送一个字符
void timer0() interrupt 1 using 3{
&&&&&& flag++;
&&&&&& TH0=0x00;
&&&&&& TL0=0x00;
&&&&&&&&& if(flag==10)
&&&&&&&& {// cp=!
&&&&&&&&&&&&& // for(i=0;i&6;i++)
&&&&&&&&&&&&&&&&& P2=0x25;
&&&&&&&&&&&&&&&&&&&& TI=1;
&&&&&&&&&&&&&&&&& temp=*RAMDATA;
&&&&&&&&&&&&&&&&&&& printf("%c",temp);
&&&&&&&&&&&&&&&&&&&&&& TI=0;
&&&&&&&&&&&&&&&&&&&&& //&& RAMDATA--;
&&&&&&&&&&&&&&&&& flag=0;
&&&&&&&&&&&&&&& }
&&&&&& }
& init_serialcomm();& //初始化串口
//向6264中送数据
&&&&&&&&&& *RAMDATA=0x33;
&&&&&&&&& }
&&& while(1)
&&& {
&&&&&&&&& *RAMDATA=0x33;;&&&
&&& }
调试过程中遇到的问题:
1.&&&&&& 发送过程:在发送时必须保证TI=1:即发送缓冲器为空,否则将导致数据发不出去,如果想强制发送可以用:TI=1.具体发送数据:利用printf(“akjdfaklfj”);函数直接发送即可。
2.&&&&&& 接收过程:在接收时多选用中断方式,这样可以节约CPU的时间,提高效率。
非常好我支持^.^
不好我反对
相关阅读:
( 发表人:发烧友 )
评价:好评中评差评
技术交流、我要发言
发表评论,获取积分! 请遵守相关规定!提 交
Powered by: 电子发烧友 (
. .All Rights Reserved 粤ICP备号谁能帮我看一下这个51单片机串口通信的接收的程序有什么问题,我就想将缓冲器的数显示出来,谢谢!_百度知道
谁能帮我看一下这个51单片机串口通信的接收的程序有什么问题,我就想将缓冲器的数显示出来,谢谢!
R0MOVC A,#0E8HSETB EALOOP,7FHORG 0000HLJMP STARTORG 0023HLJMP CHUANKOUSTART,4FH:DB 3FH,SBUFCLR RIRETIDISP,#20HMOV TH1:MOV SCON,66H:MOV DPTR:LCALL DISPLJMP LOOPCHUANKOU,@A+DPTRMOV P2,7DH,ARETTAB,#50HMOV TMOD,5BH,07H,#0E8HMOV TL1,#TABMOV A:MOV R0,06H
提问者采纳
如果直接用二进制显示,就这样即可,串口接收的数据是8位二进制数程序中缺少,即 0 ~ 255:MOV
SBUF。想要用数码管显示,就应该先分解:SETB
提问者评价
其他类似问题
为您推荐:
51单片机的相关知识
其他1条回答
没什么问题,就是串口接收只能接收0x00-0x07这样的十六进制的数,不能用ASCII字符和数字来验证接收程序。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁公考,家教,作文,写作,答案,中考,高考,语文,英语,培训,教师,律师,秘书,文秘,作业,辅导
&>&&>&单片机与PC机的串口通信_毕业论文
单片机与PC机的串口通信_毕业论文_24600字
安徽矿业职业技术学院
毕业课题(设计)任务书
(2015届)
目指导教师
PC机与MCS-51单片机的串口通信
目的和意义1.3
国内外发展现状2 系统分析
系统功能概述
系统要求及主要内容
系统技术指标
3 系统总体设计
硬件电路设计思路
软件设计思路
4 硬件电路设计
单片机模块
红外通信(发射与接收)模块
5 串行口通信技术
单片机串行口通信技术
PC机串口通信技术
6 软件设计
单片机通信程序设计30
6.2 PC机通信程序设计
6.2 PC机通信程序设计
PC机MCS-51单片机的串口通信
在国内外,以PC机作为上位机,单片机作为下位机的控制系统中,PC机通常以软件界面进行人机交互,以串行通信方式与单片机进行积极交互,而单片机系统根据被控对象配置相应的前向,后向信息通道,工作时作为主控机测对象,作为被控机接受PC机监督,指挥,定期或受命向上位机提供对象及本身的工作状态信息。
目前,随着集成电路集成度的增加,电子计算机向微型化和超微型化方向发展,微型计算机已成为导弹,智能机器人,人类宇宙和太空和太空奥妙复杂系统不可缺少的智能部件。在一些工业控制中,经常需要以多台单片机作为下位机执行对被控对象的直接控制,以一台PC机为上位机完成复杂的数据处理,组成一种以集中管理、分散控制为特点的集散控制系统。
为了提高系统管理的先进性和安全性,计算机工业自动控制和监测系统越来越多地采用集总分算系统。较为常见的形式是由一台做管理用的上位主计算机(主机)和一台直接参与控制检测的下位机(单片机)构成的主从式系统,主机和从机之间以通讯的方式来协调工作。主机的作用一是要向从机发送各种命令及参数:二是要及时收集、整理和分析从机发回的数据,供进一步的决策和报表。从机被动地接受、执行主机发来的命令,并且根据主机的要求向主机回传相应烦人实时数据,报告其运行状态。
用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。MCS-51系列单片机,由于内部带有一个可用于异步通讯的全双工的穿行通讯接口,阴齿可以很方便的构成一个主从式系统。
串口是计算机上一种非常通用的设备通讯协议,大多数计算机包容两个基于RS232的串口。串口同时也是仪器仪表设备通过用的通讯协议,很多GPIB兼容的设备也带有RS-232口。同时串口通讯协议也可以用于获取远程采集设备数据。所以,深入的理解学习和研究串口通信相关知识是非常必要的。此次毕业设计选题为“PC机与MCS-51单片机的串口通讯”,使用51单片机来实现一个主从式的总线通讯系统。通过此次设计,对串口通讯的原理和应用融会贯通,为以后的时间工作储备知识和研究方法。
PC机与MCS-51单片机的串口通信
目的和意义
为了提高系统管理的先进性和安全性,计算机工业自动控制和监测系统越来越多地采用集总分算系统。较为常见的形式是由一台做管理用的上位主计算机(主机)和一台直接参与控制检测的下位机(单片机)构成的主从式系统,主机和从机之间以通讯的方式来协调工作。主机的作用一是要向从机发送各种命令及参数:二是要及时收集、整理和分析从机发回的数据,供进一步的决策和报表。从机被动地接受、执行主机发来的命令,并且根据主机的要求向主机回传相应烦人实时数据,报告其运行状态。
用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。MCS-51系列单片机,由于内部带有一个可用于异步通讯的全双工的穿行通讯接口,阴齿可以很方便的构成一个主从式系统。
串口是计算机上一种非常通用的设备通讯协议,大多数计算机包容两个基于RS232的串口。串口同时也是仪器仪表设备通过用的通讯协议,很多GPIB兼容的设备也带有RS-232口。同时串口通讯协议也可以用于获取远程采集设备数据。所以,深入的理解学习和研究串口通信相关知识是非常必要的。此次毕业设计选题为“PC机与MCS-51单片机的串口通讯”,使用51单片机来实现一个主从式的总线通讯系统。通过此次设计,对串口通讯的原理和应用融会贯通,为以后的时间工作储备知识和研究方法。
国内外发展现状
在国内外,以PC机作为上位机,单片机作为下位机的控制系统中,PC机通常以软件界面进行人机交互,以串行通信方式与单片机进行积极交互,而单片机系统根
据被控对象配置相应的前向,后向信息通道,工作时作为主控机测对象,作为被控机接受PC机监督,指挥,定期或受命向上位机提供对象及本身的工作状态信息。
目前,随着集成电路集成度的增加,电子计算机向微型化和超微型化方向发展,微型计算机已成为导弹,智能机器人,人类宇宙和太空和太空奥妙复杂系统不可缺少的智能部件。在一些工业控制中,经常需要以多台单片机作为下位机执行对被控对象的直接控制,以一台PC机为上位机完成复杂的数据处理,组成一种以集中管理、分散控制为特点的集散控制系统。
PC机与MCS-51单片机的串口通信
2 系统分析
系统功能概述
系统主要实现功能是:由PC机键盘的输入发送给MCS-51单片机,单片机接收到PC机发来的数据后,回送同一数据给PC机,并在PC机屏幕上显示出来。只要PC机屏幕上显示的字符与键入的字符相同,即表明PC机与单片机间通信正常,红外通信成功。
微机与单片机红外线通信系统,由于我们本次毕业设计采用的是红外通信方式,考虑到红外通信存在发射与接收之间的相互干扰,所以本次设计采用是半双工(Half Duplex)串口通信,微机与单片机两个部分。微机部分是通过串口RS-232的TXD口发送数据,经电平转换电路之后送红外发射电路发射出去,由单片机部分接收,并相应的处理、显示之后再经红外发射电路返回给PC机,PC机检验发送与接受是否一致,标志着设计的成与败。微机部分用Visual Basic软件编写的界面作为PC机部分与单片机进行串口之间通信,其界面的设计、电平转换电路和红外发射、接收电路以及单片机部分的电路的设计等将在以下章节作详细地设计。
从实用的角度看,评价一个系统实用价值的重要标准,就是这个系统对社会生活和科技观念有多大的贡献。随着生活节奏的加快,人们将更加钟情于个人信息终端的智能化互联。另一方面,用无线设备来代替安全隐患的工作区采集数据,更加安全。因此,红外线有其不可估量的实用价值!
系统要求及主要内容
将微机中的二进制或ASCⅡ数据通过微机的RS-232串口经红外发射器发送缎带单片机,再由单片机将接收的二进制或ASCⅡ数据通过串口经红外发射器发送给微机,在微机中检查发送的二进制或ASCⅡ数据与接收到的二进制数据是否一致。
(1) 单片机部分主要完成接收微机发送的数据和将接收的数据回送给
(2) 红外发发射部分完成将微机或单片机发送的数据通过红外发送给红外接收器。
红外接收部分主要完成接收红外信号并将红外信号转换为数据送给计算机。
PC机部分主要完成将数据的发送给单片机和接受单片机发送的数据。
系统技术指标
微机与单片机红外线通信的主要完成以下功能:
单片机部分:
(1)设计并制作单片机的串口通信的硬件系统;
(2)用汇编语言编制串口通信软件;
(3)要求把从微机发送来的原样发送回微机;
红外发射部分:
(1)自行设计红外发送器
(2)红外发送距离大于50cm
(3)系统稳定、抗干扰能力强
红外接收部分:
(1)自行设计红外接收器
(2)红外接收器的稳定、抗干扰能力要强
PC机部分:
(1)在微机部分采用Visual Basic编制RS—232通信软件
(2)通信软件具有数据发送和数据接受编辑框
(3)通信软件要实现发送数据与接受数据一致
根据系统要实现的功能以及要求,要实现单片机和PC机之间的红外通信,主要是实现上下微机之间能够互通信息,而采用红外通信,就是利用这种非电信号传送控制信息和数据信息,省去了有线方式信号线的直接连接,属完全隔离状态,安全可靠,能有效地隔离电气干扰,同时使用简单,移动方便,实现了通信双方非接触式的数据传送。它可以应用于高压、辐射、潮湿、有毒气体、粉尘等不利于人们现场控制的环境下,这种红外通信方案也可用于其它遥控、遥测的单片机应用场合。红外通信的重点在于信号的调制与解调,完成低误码率、高速率的信息传输。目前红外通信技术和集成技术的发展已将此方面做的比较平民化了。以普通的集成红外头为核心的红外收发模块即可完成此功能。单片机可通过编程控制外围部件,能实现较高的自动化程度。
PC机与MCS-51单片机的串口通信
以它为系统核心的控制模块可实现主从控制,完成预定的任务。系统的进一步升级是与上位机实现红外通信,实现与整个网络的连通,达到资源共享和远程控制,这在当今这个信息化的社会里是非常有价值的!
3 系统总体设计
硬件电路设计思路
硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具体确定系统中所要使用的元器件,设计出系统的原理框图、电路原理图。
89C51单片机通过普通I/O口与PC机RS-232串口实现通信的硬件接口电路如图2 所示。由于PC 系列微机串行口为RS232C 标准接口,与输入、输出均采TTL 电平的89C51 单片机在接口规范上不一致,因此TTL 电平到RS-232 接口电平的转换采用MAXIM 公司的MAX232 标准MAX232CPE接口芯片,该芯片可以用单电压(+5V)实现RS232接口逻辑“1”(-3V~-15V)和逻辑“0”(+3V~+15V)的电平转换。
(1) 单片机部分硬件设计思路:本次设计单片机部分的硬件框图如图3-1所示。
单片机部分硬件框图
(2) PC机部分硬件设计思路:PC机与单片机之间的红外数据收发装置的结构非常简单,其结构框图如图3-2所示。PC机及其兼容机的标准串行通信接口RS-232C有一个9芯的D型插座,该红外收发装置便是通过此接口插座与计算机连接,并由计算机通信软件控制其数据的收发,并由计算机通信软件控制其数据的收发。由于数
系统总体设计
据的传输采用了38KHZ信号进行调制、解调和发射、接收,因而更加安全可靠。具体的电路原理图将在第三章中作详细地分析设计。
图3-2 PC机部分硬件框图
软件设计思路
软件需要解决的是设定PC机串口和单片机串行口的工作方式,包括串行口的通讯速率、奇偶校验位、停止位等。
软件工作流程是:
PC机发送一个数据信号,通过红外通信方式传送到单片机,单片机接收数据作相应的处理后回送到PC机。经测试,此系统可以在2400kbit/s速率下稳定工作,比较理想。
(1) 单片机部分软件设计思路: AT89C51单片机的P3.0 和P3.1 口分别串行通信的接收和发送端,其接口程序主要由INPUT 发送子程序和OUTPUT接收子程序组成。通信速率2400 bit /s,帧格式为N.8.1。发送时,先发送一个起始位(低电平),接着按低位在先的顺序发送8 位数据,最后发送停止位。接收时,先判断P3. 0 接收端口是否有起始低电平出现,如有则按低位在先的顺序接收8 位数,最后判断P3.0 口是否有停止高电平出现,如有则完成一个数据接收,否则继续等待。其中软件编写要严格按照异步通信的时序进行,每bit 位传送时间间隔按通信速率2400 bit /s计算为833μs,系统要求单片机晶振为11.0592MHZ。
(2) PC机部分软件设计思路:PC机有多种支持串行通信的软件,Visual Basic通信语句、C语言等等,本次毕业设计准备采用Visual Basic语言来实现PC机部分的通信,VB具有面向对象的设计方法,友好的用户界面,简单方便的串行通讯和实用性强等优点。
PC机与MCS-51单片机的串口通信
4 硬件电路设计
硬件的功能由总体设计所规定,硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具体确定系统中所要使用的元器件,设计出系统的电路原理图,必要时做一些部件实验,以难电路图的正确性,以及工艺结构的设计加工、印制板的制作、样机的组装等。
根据本次毕业设计的要求以及要实现的功能,查阅了很多有关PC机与单片机之间通信的书籍以及红外通信方面的知识,对硬件电路的设计做了很深刻的研究。
我们将整个PC机与单片机之间的红外通信系统分成三大模块:PC机模块、红外通信模块(红外发射和红外接收)以及单片机模块,各个模块都承担着各自的任务。
在设计单片机模块时,考虑到单片机本身并不具备红外通信接口,利用单片机的串行接口与单片机外的红外发射和接收电路,组成一个应用于单片机系统的红外串行通信接口;PC机通过RS-232进行数据的传输,考虑到PC微机串口的电平和单片机的输入输出的TTL电平不一致,在整个电路设计时要考虑电平转换电路,除此之外本系统的传输是采用的无线通信,因此还需要设计红外发射与接收电路,具体每一部分的设计将在以下章节中详细分析。
单片机模块
根据系统功能要求以及单片机硬件电路设计思路(如图2-1)对单片机模块进行设计,要使单片机准确的接收与发送,并且使接收到的数据能显示出来,所以整个单片机部分分为时钟电路、复位电路、执行元件以及显示电路四个部分。
本次毕业设计的单片机部分的执行元件我们采用MCS-51T系列的AT89C51(其引脚图如图4-1),由于它本身带有一定的优点。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器, AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
硬件电路设计
图4-1 AT89C51引脚图
一、主要特性:
·与MCS-51 兼容
·4K字节可编程闪烁存储器
·寿命:1000写/擦循环
· 数据保留时间:10年
·全静态工作:0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
二、管脚说明:
(1)VCC:供电电压;
(2)GND:接地;
(3)P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当
PC机与MCS-51单片机的串口通信
FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
(4)P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
(5)P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
(6)P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表4-1所示:
P3口的第二功能
硬件电路设计
P3口同时为闪烁编程和编程校验接收一些控制信号。
(7)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
(8)ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
(9)/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
(10)/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
(11)XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
(12)XTAL2:来自反向振荡器的输出。
三、振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
四、芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两
PC机与MCS-51单片机的串口通信
种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
时钟电路是计算机的心脏,它控制着计算机的工作节奏。MCS-51单片机允许的时钟频率是因型号而异的典型值为12MHZ
MCS-51内部都有一个反相放大器,XTAL1、XTAL2分别为反相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部的各个部件。AT89C51是属于CMOS8位微处理器,它的时钟电路在结构上有别于NMOS型的单片机。
CMOS型单片机内部(如AT89C51)有一个可控的负反馈反相放大器,外接晶振(或陶瓷谐振器)和电容组成振荡器,图4-2为CMOS型单片机时钟电路框图。振荡器工作受/PD端控制,由软件置“1”PD(即特殊功能寄存器PCON.1)使/PD=0,振荡器停止工作,整个单片机也就停止工作,以达到节电目的。清“0”PD,使振荡器工作产生时钟,单片机便正常运行。图中SYS为晶振或陶瓷谐振器,振荡器产生的时钟频率主要由SYS参数确定(晶振上标明的频率)。电容C1和C2的作用有两个:其一是使振荡器起振,其二是对振荡器的频率f起微调作用(C1、C2大,f变小),其典型值为30pF。
图4-2 CMOS型单片机时钟电路框图
计算机在启动运行时都需要复位,使中央处理器CPU和系统中的其它部件都处于一个确定的初始状态,并从这个状态开始工作。
MCS-51单片机有一个复位引脚RST,它是史密特触发输入(对于CHMOS单片机,RST引脚的内部有一个拉低电阻),当振荡器起振后,该引脚上出现2个机器周期(即24个时钟周期)以上的高电平,使器件复位,只要RST保持高电平,MCS-51保持复位状态。此时ALE、PSEN、P0、P1、P2、P3口都 输出高电平。RST变为低电平后,退出复位,CPU从初始状态开始工作。
本次毕业设计采用的复位方式是自动复位方式。对于CMOS(AT89C51)单片机只要
接一个电容至VCC即可(见图4-3)。在加电瞬间,电容通过电阻充电,就在RST端出现一定时间的高电平,只要高电平时间足够长,就可以使MCS-51有效的复位。RST端在加电时应保持的高电平时间包括VCC的上升时间和振荡器起振的时间,Vss上升时间若为10ms,振荡器起振的时间和频率有关。10MHZ时约为1ms,1MHZ时约为10ms,所以一般为了可靠的复位,RST在上电进应保持20ms以上的高电平。图3-8中,RC时间常数越大,上电进RST端保持高电平的时间越长。当振荡频率为12MHZ时,典型值为C=10uf,R=8.2kΩ。
PC机与MCS-51单片机的串口通信
若复位电路失效,加电后CPU从一个随机的状态开始工作,系统就不能正常运转。
上电复位电路
4.1.4 显示电路
本次毕业设计的显示电路采用LED数码管动态显示,LED(Light-Emitting Diode)是一种外加电压从而渡过电流并发出可见光的器件。LED是属于电流控制器件,使用时必须加限流电阻。LED有单个LED和八段LED之分,也有共阴和共阳两种。
一、显示器结构
常用的七段显示器的结构如图4-4(a)所示。发光二极管的阳极连在一起的称为共阳极显示器(如图4-4(b)所示),阴极连在一起的称为共阴极显示器(如图3-4(c)所示)。1位显示器由八个发光二极管组成,其中七个发光二极管a~g控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的七段显示器能显示的字符较少,字符的开头有些失真,但控制简单,使用方便。
(b)共阳极
七段发光显示器的结构
二、显示方式
为了节省I/O口线,我们采用的动态显示方式。
硬件电路设计
所谓动态显示,就一位一位地轮流点亮各位显示器(扫描),对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高较稳定的显示。若显示器的位数不大于8位,则控制显示器公共极电位只需8位口(称为扫描口),控制各位显示器所显示的字形也需一个8位口(称为段数据口)。4位共阴极显示器和AT89C51的接口逻辑如图8-7所示。AT89C51的P0口作为段数据口,经同相驱动器7407接显示器的各个段;P2口作为扫描口,经反相驱动器7406接显示器公共极。
对于图4-5中的4位显示器,在AT89C51RAM存贮器中设置四个显示缓冲器单元30H-34H,分别存放4位显示器的显示数据,AT89C51的P2口扫描输出总是只在一位为高电平,即4位显示器中仅有一位公共阴极为低电平,其它位为高电平,AT89C51的P0口相应位(阴极为低)的显示数据的段数据,使该位显示出一个字符,其它们为暗,依次地改变P2口输出为高的位,P0口输出对应的段数据,4位显示器就显示出由缓冲器中显示数据所确定的字符。
4位动态显示电路
PC机与MCS-51单片机的串口通信
红外通信(发射与接收)模块
红外线通讯是一种廉价、近距离、无线、低功耗、保密性强的通讯方案,主要应用于无线数据传输,有时也用于无线网络接入和近程遥控。
红外通信的基本原理:红外通信的基本原理是发送端将基带二进制信号调制为一系列的脉冲串信号,通过红外发射管发射红外信号。红外通信是利用950nm近红外波段的红外线作为传递信息的媒体,即通信信道。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。本系统采用的为脉宽调制方法,发送端采用脉宽调制(PWM)方式,将二进制数字信号调制成某一频率的脉冲序列,并驱动红外发射管以光脉冲的形式发送出去;接收端将接收到的光脉转换成电信号,再经过放大、滤波等处理后送给解调电路进行解调,还原为二进制数字信号后输出。简而言之,红外通信的实质就是对二进制数字信号进行调制与解调,以便利用红外信道进行传输。
单片机红外通信系统(硬件原理图见图4-6)的红外发射和红外接收电路主要由单片机AT89C51、CD4011与非门、红外发射管PH30B、红外一体化接收头SM0038(见图4-7所示),以及驱动三极管8550、电阻和电容组成。我们将红外通信模块分为红外发射和接收两部分。
硬件电路设计
单片机红外通信硬件原理图
(a) 红外发射管
(b)红外接收管
图4-7 红外发射管和红外一体化接收头
一、红外发射硬件电路
红外线发射器由于控制方式不同,很难做到一体化,大多是由分力元件组装而成。本章节将重点讲一下红外线发射器电路原理图见图4-8所示。
PC机与MCS-51单片机的串口通信
图4-8 红外发射电路原理图
红外发送电路的工作原理为:串行数据由单片机的串行输出端TXD(接图中IN端)送出并驱动YF1,若数位“0”使YF1输出高电平,通过YF2、YF3和电阻R2电容C组成的震荡电路,将信号调制成38kHz的载波信号,并利用红外发射管D以光脉冲的形式向外发送。若数位“1”YF1输出低电平,使YF2和YF3停止震荡,使 YF4输出高电平使驱动管8550截止,红外发射管D不发射红外光。
二、红外接收硬件电路
红外线接收器是红外线通信成败的关键所在,以前大多采用红外线接收专用芯片CA20106A 以及外围部分元器件(红外线接收管、电阻、电容等)。实际使用时常出现接收灵敏度过高或过低,工作欠稳定,加之装配焊接麻烦、调试不便、体积大、抗干扰能力较差等等,现已基本被淘汰。目前采用最多的是一种一体化的红外线接收头,体积小巧(外形类似三极管)、价格低廉、使用方便、无须调整、抗干扰能力强、工作稳定可靠。红外接收电路选用新日本株式会社公司生产的专用红外一体化接收头SM0038,集红外线接收和放大于一体,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,因此它适合于各种红外线数据的传输,是代替CA20106A和接收二极管等红外接收放大器的理想元件。
图4-7(b)是其正视图(半球面的红外线接收面正对我们),三个输出脚依次为: GND(地)、+(电源正端)、OUT(红外线经接收后经解调、整形的输出脚)。
图4-11 红外接收基本电路
硬件电路设计
根据SM0038的工作原理对其外围电路进行设计,具体硬件原理图见图4-11所示,其中1端为接地脚,2端接电源,3端接信号输出端,R和C组成去耦电路抑制电源干扰。由于红外一体化接收头SM0038的灵敏度高,因此在实际应用电路中要在电源和地之间外接上拉电阻来抗干扰。
根据系统功能要求以及PC机硬件电路设计思路(如图3-2所示)对PC机模块进行设计,要使PC机通过红外线准确的接收与发送,必须要对其外围电路进行设计。由于无线收发装置工作于TTL逻辑电平(0V和5V),而计算机RS-232总线上输入、输出数据和控制信号为+12V左右的电压,因此用IC1(MAX232CPE)进行转换。如图4-12为PC机部分的电路原理图。
图4-12 PC机收发数据电路原理图
一、数据的传输
对所设计的原理图进行分析,数据的传输分为两大部分:数据的发送和数据的接收。下面就两部分作一下介绍。
1、数据发送
当电路工作于发送数据状态时,PC机的RTS端输出高电平,经IC1电平转换打开IC3(74LS08)的与门B1,使PC机TXD端输出的数据经红外发射电路发射出去;RTS信号IC1反相后作为CTS信号送入计算机,同时还关闭与门B2;使计算机不接收其它数据信号。
PC机与MCS-51单片机的串口通信
2、数据接收
当电路工作于接收数据状态时,计算机的RTS端输出和CTS端输入均为低电平,使IC3的B1、B2的工作状态正好相反,发射部分被B1封锁,与门B2则打开使用权电路处于接收工作状态,从红外接收端接收过来的数据由RXD端送处计算机。该必发器的数据传输速率最好设在2400b/s为宜,以确保数据传输的可靠性。 二、器件的介绍
1、RS-232C
RS-232C是美国电气工业协会推广使用的一种串得通信总路线标准,是DCE(数据通信设备,如微机)和DTE(数据终端设备,如CRT)间传输串行数据的接口总线。
RS-232C最大传输距离为15m,最高传输速率约20kbps,信号的逻辑0电平为+3V~+15V。逻辑1电平为-3V~-15V。
电气特性:
EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定; 在TxD和RxD上:逻辑1(MARK) =-3V~-15V
逻辑0(SPACE)=+3~+15V
在RTS、CTS、DSR、DTR和DCD等控制线上: 信号有效(接通,ON状态,正电压)=+3V~+15V 信号无效(断开,OFF状态,负电压)=-3V~-15V
2、RS-232连接器DB-9
DB-9是RS-232信号线的连接器,其连接器的机械特性见图(4-13),表 1所示RS-232信号线名称、符号以及对应在DB-9上的针脚号。
图4-13连接器的机械特性
RS-232信号线和DB-9引脚关系
硬件电路设计
3、电平转换器MAX232CPE
由于RS-232C总线上传输的信号逻辑电平与TTL逻辑电平差异很大,所以就存在这两种电平的转换问题,下面就介绍一下电平转换器MAX232CPE。
MAX232CPE能将RS-232C电平转换成TTL电平,也能将TTL电平转换成RS-232C电平,只需单+5V供电,由内部升高电路产生10V~+12V。内部有两个发送器(TTL电平转换为RS-232C电平)和两个接收器(RS-232电平转换为TTL电平)。MAX232CPE芯片引脚排列和外部元件连接线路如图4-14所示。
图 4-14 MAX232CPE 电平转换器及外接元件图
5 串行口通信技术
在设计单片机与PC机程序时,PC机串口和单片机串行口的设置是至关重要的
PC机与MCS-51单片机的串口通信
一个环节,所以在软件设计前必须对串行口的通信技术作系统的研究。本章节是为软件设计服务的。
串行数据通信指数据是一位一位顺序传送的通信方式,它的突出优点是只需一对传送线(利用电话线就可作为传送线),这样就大大降低了传送成本,特别适用于远距离通信;其缺点是传送速度较低。
串行通信的主要特点:
o串行通讯:一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。 o串行通讯的特点是:数据位传送,传按位顺序进行,最少只需一根传输线即可完成,
o成本低但送速度慢。串行通讯的距离可以从几米到几千米。
o根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。
串行口通信技术
如图5-1所示。
(a) 单工方式
(b) 半双工方式
串行通信传输方式
系统设计时采用半双工方式通信,这主要是为了尽量避免红外通信存在发射与接收之间的相互干扰。
单片机串行口通信技术
MCS-51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但
PC机与MCS-51单片机的串口通信
接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在串行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口。
MCS-51单片机串行口寄存器结构如图5-3所示。SBUF为串行口的收发缓冲器,它是一个可寻址的专用寄存器,其中包含了接收器和发送器寄存器,可以实现全双工通信。但这两个寄存器具有同一地址(99H)。MCS-51的串行数据传输很简单,只要向发送缓冲器写入数据即可发送数据。而从接收缓冲器读出数据即可接收数据。
此外,从图5-3中可看出,接收缓冲器前还加上一级输入移位寄存器,MCS-51这种结构目的在于接收数据时避免发生数据帧重叠现象,以免出错,部分文献称这种结构为双缓冲器结构。而发送数据时就不需要这样设置,因为发送时,CPU是主动的,不可能出现这种现象。
图5-3 MCS-51串行口寄存器结构
1、波特率的设置
要实现单片机与PC机的串行通信,双方的波特率必须一致.PC机串行通信的波特率参数通常为一些标准的参数,可直接使用.因此实现MCS--51单片机和PC机的串行通信时,选择MCS—51单片机串行通信的波特率至关重要.
波特率根据串行口的工作方式不同而不同: (1) 方式0波特率
串行口方式0的波特率由振荡器的频率所确定:
方式0波特率=振荡器频率/12 (2) 方式2波特率
串行口方式2的波特率由振荡器的频率和SMOD(PCON.7)所确定:
SMOD为0时,波特率等于振荡器频率的六十四分之一;SMOD为1时,波特率
串行口通信技术
等于振荡器的三十二分之一。
(3) 方式1和方式3的波特率
串行口方式1和方式3的波特率由定时器T1或T2(8051等单片机)的溢出率和SMOD所确定。T1和T2是可编程的,可以选的波特率范围比较大,因此串串行口方式1和方式3是最常用的方式。
当定时器T1作为串行口的波特率发生器时,串行口方式1和方式3的波特率由下式确定:
方式1和方式3波特率=2SMOD*(T1溢出率)/32
SMOD为0时,波特率竽T1溢出三十分之一;SMOD为1时,波特率等于T1的六十四分之一。
定时器T1作为时,应禁止T1T1工作于定时方式(C/T=0),计数脉冲T1(P3.5)上输入脉冲作为T1计数信号(C/T=1)。T1的溢出率又和它的工作方式有关,一般选方式2定时,此时波特率的计算公式为:
方式1和方式3波特率=2SMOD*Fosc/[32*12(256-(TH1))]
表4-1 常用波特率
注:定时器T1作波特率发生器,所以在程序设计时要注意到禁止T1中断 2、串行通信控制寄存器SCON
SCON控制寄存器,它是一个可寻址的专用寄存器,用于串行数据的通信控制,单元地址是98H,其结构格式如下:
PC机与MCS-51单片机的串口通信
SCON寄存器结构
3、电源管理寄存器PCON
PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址是87H,其结构格式如下:
表4-3 PCON电源管理寄存器结构
在CHMOS型单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。系统复位默认为SMOD=0。
4、中断允许寄存器IE
中断允许寄存器在前一节中已阐述,这里重述一下对串行口有影响的位ES。ES为串行中断允许控制位,ES=1允许串行中断,ES=0,禁止串行中断。
IE中断允许控制寄存器结构 5.2
PC机串口通信技术
PC机串行通信接口设计是整个PC机部分的重点,在本章节中将详细分析串口的设计问题。
1. 通信芯片的选择
由于RS-232C的逻辑电平兼容,因此为了TTL器件连接,必须进行电平转换。MC1488和MC1489是RC-232C通信接口常用的集成电路转换芯片,但他们是两个独立的驱动器和发送芯片,而且MC1488驱动器还需要外接正负电源,很不方便。目
串行口通信技术
前市场上出现了一些新型的RS-232C电平转换芯片MAXIM系列的产品,AXIM公司生产的MAX系列RS-232C收发器芯片。
2. 波特率设置
PC机的波特率必须和单片机相匹配,所以只要单片机的波特率定了,PC机只要设置一下即可。
3、串行口工作方式的选择
为了确保数据传输无误,采用软件握手的方式。即发送方给接收方传送的一个数据,接收方收到后再将这个数据发送回来,发送方将两个数据比较,若二者相同则表示传输无误,接着传送下一个数据。所以不需要奇偶校验,因此选择串行口方式一工作即传输数据的格式为1位起始位,8位数据位,1位停止位。
4、VB串口Mscomm控件
VB提供了串行端口控制Mscomm来为应用程序提供串行通讯。该控件屏蔽了通信过程中的底层操作,程序员可以设置、监视Mscomm控件的属性和事件,结合Timer控件即可完成对串行口的初始化和数据的输入输出工作。Mscomm控件的主要属性如下:
(1)Commport 设置并返回通讯端口号。端口号可以设置为1~16的任何数,如mport=2表示设置当前通讯端口为COM2。
(2)Setting 设置并返回波特率、奇偶校验、数据位、停止位。格式为Mscomm.Setting=String。String是一个包含四部分的字符串:第一部分为波特率;第二部分为奇偶校验,N表示不校验,M表示符号校验,E表示偶校验,O表示奇校验,S表示空格校验;第三部分为数据位数,其可选值为4,5,6,7,8;第四部分为停止位位数,其可选值为1,1.5,2。Setting属性的缺省值为2400,N,8,1”。
(3)Portopen 设置并返回通讯端口的状态,也可以打开和关闭端口。 (4)Input 从接收缓冲区返回和删除字符。该属性在运行时为只读。
(5)InputLen 设置并返回每次Input属性从接收缓冲区中读取的字符数。InputLen属性的缺省值为0。设置InputLen为0时,Input将读取接收缓冲区的全部字符。
(6)Output 向传送缓冲区写数据。要传送的数据可是文本数据或二进制数据。 (7)CommEvent 返回最近的通讯事件或错误。只要有通讯错误或事件发生错误时就会产生Oncomm事件。CommEvent属性中存有该错误或事件的数值代码。
6 软件设计
PC机与MCS-51单片机的串口通信
PC机与单片机间的通信,特别是PC机和多台单片机构成小型分布系统实现
分级分布式控制得到了广泛的应用。本章阐述PC机与AT89C51间的双机通信的汇编语言和Visual Basic 语言通信程序设计技术。
软件需要解决的是设定PC机串口和单片机串行口的工作方式,包括串行口的通讯速率、奇偶校验位、停止位等。本次设计,以PC机为主机,单片机AT89C51作为从机,具体的通信协议如下:
· 波特率设置:2400b/s;
· 信息帧格式:1位起始位,8位数据位,1位停止位; · 校验方式:采用无校验方式;
· 传送方式:PC机采查询方式接收和发送数据,单片机AT89C51采用中断方式接收与发送数据。
单片机通信程序设计
单片机的数据通信由串行口完成,定时器T1作为波特率发生器,其波特率要与PC机一致。数据的传送格式为1位起始位、8位数据位和1位停止位。采用中断方式发送和接收数据,定时器T1设置为工作工作模式2,串行口设置为工作方式3,由第9位判断停止。具体的程序流程图和程序清单分别见附录2和附录3。 6.1.1
单片机中断方式接收程序
当PC机不发送任何数据的时候,从机单片机始终处于等待状态(P.),直到Pc
机发送数据过来。由于PC机在发送有效数据之前会加一个开始符(FFH),在有效数
据之后会加一个开始符(7FH),所以单片机接收到主机发送来的FFH之后,置RAM
存贮单元的初始地址30H单元,用来放紧接着接收的数据,程序中还用了一个计数
器COUNTER来计接收到的数据位数,直到接收到7FH为止。程序框图见附录2。
单片机接收主程序MAIN及中断服务程序STR清单如下:
COUNTER EQU 40H
MAIN:MOV SP,#60H
MOV TMOD,#20H定时器T1的方式2
MOV PCON,#00H串行口波特率控制位
MOV TH1,#0F4H2400Kb/s
MOV TL1,#0F4H
MOV 30H,#15
MOV COUNTER,#1
MOV R0,#30H接收数据存放区
MOV R1,#30H
SETB TR1开始计数
CLR ET1清定时中断
MOV SCON,#50H串行口控制寄存器给值
SETB EA开总中断
SETB ES开串行口中断
MOV IP,#10H
MAIN1: ACALL DISP
SJMP MAIN1
JBC RI,GET
MOV A,SBUF
CJNE A,#0FFH,GET1 ;判断是否为开始字符,不是跳GET1放数据存贮
R0,#30H是开始符就置存贮区首地址30H,计数器清0并跳出中断
MOV COUNTER,#0
GET1: CJNE A,#07FH,GET2
判断是否为结束符,不是跳GET2放数据存贮区
MOV R5,COUNTER是结束符,放发送缓存区开始字符
PC机与MCS-51单片机的串口通信
MOV POINT,#30H
MOV SBUF,#255
GET2: MOV @R0,A
INC COUNTER
EXIT: POP 01H
单片机中断方式发送程序
由于本次设计的系统要实现的功能是将PC机送到单片机的数据回送到PC机,
所以单片机要在接收完PC机数据后立即将数据回送到PC机。也就是说要将RAM
存贮单元的初始地址30H单元内数据逐一发送出去。程序框图见附录2。
单片机发送主程序MAIN及中断服务程序SEND清单如下:
COUNTER EQU 40H
MAIN:MOV SP,#60H
MOV TMOD,#20H定时器T1的方式2
MOV PCON,#00H串行口波特率控制位
MOV TH1,#0F4H2400Kb/s
MOV TL1,#0F4H
MOV 30H,#15
MOV COUNTER,#1
MOV R0,#30H接收数据存放区
MOV R1,#30H
SETB TR1开始计数
CLR ET1清定时中断
MOV SCON,#50H串行口控制寄存器给值
SETB EA开总中断
SETB ES开串行口中断
MOV IP,#10H
MAIN1: ACALL DISP
SJMP MAIN1
SRT: PUSH ACC
JBC RI,GET判断是否为接收,是跳GET接收程序,否执行发送程序
DJNZ R5,SEND1
SEND1: MOV R1,POINT
MOV SBUF,A
MOV POINT,R1
EXIT: POP 01H
6.1.3 单片机显示程序
单片机显示部分可以用来检测接收到的数据是否正确,单片机显示程序主要
将接AT89C51从串行口收到的数据显示出来。在程序设计中,在AT89C51RAM存贮
器中的四个显示缓冲器单元30H-34H,分别存放着由PC机方发送过来的数据,
AT89C51的P2口扫描输出总是只有一位为高电平,即4位显示器中仅有一位公共阴
极为低电平,其它位为高电平,AT89C51的P0口相应位(阴极为低)的显示数据的
段数据,使该位显示出一个字符,其它们为暗,依次地改变P2口输出为高的位,P0
口输出对应的段数据,4位显示器就显示出由缓冲器中显示数据所确定的字符。程序
框图见附录2。
单片机显示子程序清单如下:
DISP: PUSH ACC
MOV DPTR,#TAB
MOV R1,#30H
MOV A,COUNTER
JZ DISP2没有接收到数据,跳出DISP继续显示P.等待状态
MOV R6,#08H
DISP1:MOV A,@R1
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A送字形码到P0口
PC机与MCS-51单片机的串口通信
MOV P2,A送位控制到P2口
DJNZ R2,DISP1判断接收位数
DISP2:MOV R1,#30H
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DB 77H,7CH,39H,5EH,79H,0F3H
6.2 PC机通信程序设计
PC通信程序采用Visual Basic语言编程,VB提供了串行端口控制Mscomm来为
应用程序提供串行通讯。该控件屏蔽了通信过程中的底层操作,我们可以设置、监视
Mscomm控件的属性和事件,结合Timer控件即可完成对串行口的初始化和数据的输
入输出工作。主程序按照通信协议的要求,首先确定波特率和信息帧格式,然后调用
发送子程序将键盘输入的数据发送出去,为了使主机能够对整个检测过程进行控制,
须要在发送命令以后设定等待的时间,也可以通过条件判断下一步是发送还是接收命
令。对发送的命令,可能是文本方式或二进制代码。在发送二进制代码时,应特别注
意发送的格式。
7 系统调试
电路调试是整个系统功能否实现的关键步骤,我们将整个调试过程分为三大部
分:硬件调试、软件调试和综合调试。
硬件调试主要是针对单片机、红外通信电路(包括发射和接收电路)以及PC机
部分(包括电平转换电路)硬件电路分别进行调试。这一部分硬件调试主要分成两大
块:上电前的调试和上电后的调试。
一、上电前的调试
在上电前,我们必须确保电路中不存在断路或短路情况,这一工作是整个调试工
作的第一步,也是非常重要的一个步骤。在这部分调试中主要使用的工具是万用表,
用来完成检测电路中是否存在断路或者短路情况等。
二、上电后的调试
在确保硬件电路正常,无异常情况(断路或短路)方可上电调试,上电调试的目的
是检验电路是否接错,同时还要检验原理是否正确,在本次课程设计中,上电调试可
分成三大块:单片机、红外通信和PC机部分的硬件调试。
1、单片机部分硬件调试:这一部分调试主要是检查时钟电路、复位电路是否接
对,数码管是否亮这一系列问题。
2、红外通信电路调试:由于SM0038固定频率是38KHZ,我们是将单片机发送
端接地,红外线发射器发射红外光,将红外线接收器正对发射器,距离约0.5m,用
万用表的电压档接于红外线接收器的OUT脚与地之间。当发射器的频率与接收器不
相吻合时,电压输出在+3.6v左右;吻合时,输出电压约为0v。调整R1见附录(电路
原理图)之值(R1用15~20kΩ),直到万用表测出的电压接近0v,在实际测试电路中
发现接收端的电平最低也有几个毫伏,于是我们认为该电压时,发送频率与接受频率
已经吻合。
3、PC机部分硬件电路调试:这一部分电路硬件调试主要完成任务是使得通过
MAX232CPE电平转换器转换前后的电平关系。
PC机与MCS-51单片机的串口通信
一、单片机程序调试:
单片机部分调试工作的完成主要应用LCA51软件来完成,这一部分工作首先将
显示部分程序调试好,然后利用VB串口助手(如图7-1)来检测所编的发送与接收程
序是否正确,不断调试,不断修改直到正确为止。LCA51软件是基于WINDOWS95/98
操作平台的多窗口编辑、调试软件。
LCA51软件全面支持汇编语言,C51语言,PL/M51语言的编译/连接、调试。软
件支持单文件方式和工程化管理两种模式。用户可自定义各种语言的关键词.软件完
全支持源语句级在线调试。高级语言还支持源文件调试和汇编语言指令行对照调试。
用户可同时打开多个窗体编辑、调试、变量观察.用户可在线对原文件直接编辑、编
译、连接、加载和调试,软件支持编译错误源文件定位。调试时用户可动态观察、修
改设定变量(包括CPU片内寄存器、特殊寄存器及外部寄存器、内存)的值。
调试主要方法和技巧:
通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。
1.跟踪调试
调试应用程序所提供的重要性能也许就是跟踪应用程序。跟踪应用程序使用户能
够在运行应用程序时,看到PC指针在应用源代码程序中的确切位置,LCA51提供以
下方法对程序的执行进行跟踪。
跟踪型单步执行一条源语句程序。但是,如果调用一函数,则进入函数中,再执
行函数的第一条源语句行前停止。
通过型单步仅执行下一条源语句程序,然后又停止。如果是调用一函数,运行完
整个函数并停止在函数返回处。
2.断点调试
如果已知程序中某块代码实际运行正常的情况下,仍用跟踪调试方法,将大大浪
费时间,而且很枯燥,因此调试中第二个重要工具是在源代码中预定处设置断点,大
多数调试程序通过使用断点中止程序执行。
注意:如果用户调试高级语言,因为系统要占用2个断点,所以可设置的断点数
为最大断点个数减2。
LCA51调试软件还提供一次性断点:执行到光标所在行。如果用户按热键F4,
调试程序继续执行程序代码,直到它到达光标行处或调试程序遇到另一个断点。
3.查看变量
显然,通过一系列指令查看应用程序,了解导致某一错误的执行也是一种非常有
效的方法。LCA51软件提供了以下几种方法对变量进行查看。
通过添加观察项菜单可以将用户希望观察的变量添加到观察窗口中,长期进行观
察。用户程序在单步或断点停下时,将更新变量的取值。
用户可以直接移动鼠标到相应的变量名上,点击鼠标左键,将出现一个提示窗口,
显示这个变量的当前值。
用户还可以打开程序空间窗口、内部数据窗口、外部数据窗口进行数据块观察。
4. 更改数值
如果用户在调试过程中了解到变量的内容(超值、未定义等)会对程序性能产生
影响或引起异常时,立即更改变量的内容是很有效的方法,以确保该值在正确范围内
不会产生错误。LCA51软件提供一系列更改变量数值的方法,以便用户能检查程序
对整个变量值范围的反应,而无需为设置每个值而重新加载调试。在更改对话框中用
户输入要更改的取值,点击确定按钮。用户可以在输入框中输入十六进制或十进制数
二、PC机程序调试:我们利用VB串口助手(如图6-1)来检测PC机程序的正确
与否,从而不断的修改直到两台PC机之间有线通信成功为止。
在硬件和软件单独调试成功后进行软硬件综合调试,它可以分成以下几个步骤:
(1)使PC机自发自接收通信成功;
(2)使PC机与单片机之间的有线通信成功;
(3)通过红外通信使得整个PC机与单片机之间的红外通信成功。
故障分析与解决方案
一、 故障出现情况
(1)PC机与单片机之间有线通信时,单片机与PC机都没有反应;
PC机与MCS-51单片机的串口通信
(2)红外通信时调试红外线发送和接收时,接收端的电平一点都不改变;
(3)红外通信时不管单片机是否发送数据,PC机都会收到数据;
(4)红外通信时单片机能收到PC机发送的数据,但是PC机收到的数据总是
(5)单片机显示部分无法工作,显示不稳定;
(6)红外通信时单片机无法接收,一直处于等待状态;
(7)红外通信时单片机接收显示数据不正常,PC机接收乱码,两边接收不匹配;
(8)PC机一直接收到0。
解决方案(针对上述故障一 一对应的解决方案)
(1)硬件电路中存在一个与非门(7404),本想利用与非门来起屏蔽作用,但是
当测试MAX232的9脚和10脚时发现,两只脚都是高电平,这样7404的作用就阻
碍了电路的发送和接收;
(2)将原先的发射部分的与非7400换成CD4011,因为7400不能和RC构成振
荡电路,只有CD4011才能和RC构成振荡电路;
(3)由于SM0038接收头太灵敏,需要接一个上拉电阻;
(4)由于红外通信的发送和接收电路都要经过与非门7400,出现与故障(1)
相对应的情况,只有将经过MAX232CPE转换出来后直接送到红外发送和接收电路,
也就将发送和接收不要经过非门7400;
(5)由于PC机模块的电源线掉了
(6)SM0038接收管的+5V脚断了
(7)由于单片机与PC机之间的波特率设置不一致
(8)PC机接收端断开了
结论与经验
通过各方面努力,本次毕业设计任务完成,系统各部分功能均已实现,PC机和
单片机部分都能成功接收与发送;数据的红外传输也已成功。在设计的时候为了方便
单片机方面的调试,在单片机部分设计了数码管显示电路,这一模块给整个调试过程
带来很大的帮助。
1、由于本系统采用5V直流电源供电,红外发射管功率较小,其有效传播距离
在2m-3m左右。为提高其有效距离,可采用发射管前外加菲涅尔透镜聚焦的办法。
其原理如图7-2所示(其中:虚线代表没加凸透镜前的传播方向,实线代表加凸透镜
后的传播方向)。由于凸透镜具有会聚作用,使原本发散的光线会聚,以提高有效通
2、红外传播具有角度较小的特点,其方向性较强,带来相应的缺点是接收时必
须使收发对管在一定的接收范围内,给实际操作带来一定的困难。为克服以上不足,
我们对接收对管进行改进,采取“多—多’’的模式,即多发射管对应多接收管。增大红
外线的接收面积,提高接收精度,以及使用价值。其基本原理如图7-3所示。
接收管与接收管之间,发射管与发射管之间可采用并联形式连接在一起。这样经
接收管产生的电信号在其输出公共端产生迭加现象,使得信号幅度加大,故接收管后
的三极管要选择适当的放大倍数,以防出现输出波形的失真,影响系统的准确性以及
3、在制作印制电路板的过程中,由于经验不足,没有考虑在高频电路中平行线
之间的干扰,导致当电路上电工作时就发生串扰的现象,使得连接PC机的电路工作
不稳定,在以后的设计过程中需要注意。
4、该系统不仅可以实现单片机与PC机之间的通信,而且还可以实现多个PC间
的通信。实现真正意义下的“光联网”,实现计算机的无线连接,避免局域网重复建设所
带来的资源的浪费,充分发挥红外通信的造价低。结构简单的优势。其实现基本框架
可用图7-4来表示。
PC机与MCS-51单片机的串口通信
红外接收发射装置周围安装接受管、发射管矩阵,使其朝向四方。通过对计算机行编码实现不同计算机间的身份认证。
本文介绍的应用于单片机系统实现与PC机之间的红外串行通信接口,具有硬件电路简单、成本低廉、编程方便、通信可靠性高的特点,实现了通信双方非接触式的数据传送。
为期三个月的毕业设计结束了,关于本次毕业设计,感受颇多。总的来说是可以的,富有成效的,尽管其中充满了艰辛与困难。但看到自己的成果时,所有的艰辛与疲倦都抛到了九霄云外。另外一方面,在自己的亲身实践中,也发现了自己的一些不足的地方,有待进一步提高与改善。此次毕业设计任务是实现PC机与单片机之间的红外通信,在实际调试中遇到的种种问题使我在设计与调试中学习到了许多知识。
在整个设计过程中,我们使用了多种硬件设备和软件工具,对它们的性能和特点有了一定的了解和认识。硬件如AT89C51单片机系统,电平转换器,数码管以及一些门电路等等;软件方面有汇编语言编程、Visual Basic语言、Protel以及Word软件等等。
整个毕业设计过程是对自己大学四年所学知识归纳总结和应用,也就是把理论知识用到实践之中去。让理论和实践相结合,以此产生实际的成果。而这正是我们学习理论知识的目的之所在。理论和实践相结合的过程,使我发现了自身一些方面的不足,比如理论知识掌握得不够精,博,深。更为重要的一点是理论和实践之间的差距很大。光有理论知识是不够的,还要有把理论知识灵活应用到实践中去的能力,这一点有待进一步提高。这也是以后工作所必须的能力。这一能力要能在实践中逐渐培养,逐步积累经验和深化,边工作边学习,做到活到老学到老。我也发觉这也是现代人所必须的一种现代的工作和学习精神,同时这也是现代高科技和信息社会的独有的特征,每个现代人都必须接受它。
另外,关于本次设计感受最深的一点,是毕业设计的时间分配问题。实际上大部分时间是花在了编程工作方面了,软件调试是软件设计的主要工作,软件调试过程也就是软件设计过程,软件调试工作的完成也就意味着软件设计工作的完成。设计过程是发现问题,解决问题的过程,进而完善软件程序的过程。对与我们总体设计来讲,还必须考虑硬件系统与软件系统相协同的问题,还有它们之间的接口问题,因为任何
PC机与MCS-51单片机的串口通信
一个环节出了问题,整个系统将无法工作,这就要求设计的各个部分互相协同。考虑整体的协调性是否良好。这就要求设计工作时各个设计者之间要相互协调与合作。
除此之外,我们要在拥有扎实的专业知识的前提条件下,在整个设计与调试过程中要有信心和耐心,要持之以恒,坚持不懈。要知道设计工作不是一天两天的事情,最需要的就是恒心与耐力,不畏困难的精神。只要你持之以恒,多查资料设计总会成功。在调试中不断发现问题进而解决问题,其本身就是对自己的一次锻炼,培养了自己独立思考,动手解决问题的能力。从而从各个方面得到提高与完善自己,使自己的各个方面提高到一个新的台阶,同时为以后的工作打下基础。
[1]何立民,单片机应用技术选编,北京航空航天大学出版社,1997.10
[2]刘乐善,微型计算机接口技术及应用,华中理工大学出版社,1993
[3]陈启美,微机原理.外设.接口,清华大学出版社,2002.3
[4]李华,MCS-51系列单片机实用接口技术,北京航空航天大学出版社,1993
[5]于海生,微型计算机控制技术选编,清华大学出版社,1999.3
[6]徐爱钧,智能化测量控制仪表原理与设计,北京航空航天大学出版社,1995.11
[7]齐燕杰,Visual Basic串口通信工程开发实例导航,人民邮电出版社,2003
[8][美]Mark Nelson,串行通信开发指南,中国水利水电出版社,2000
[9]网冠科技编著,Visual Basic 6.0时尚编程百例,机械工业出版社,2001
[10][美](G.科尔内尔)Gary Cornell,Visual Basic 5.0从入门到精通,科学出版社,1998
[11]李玉东,Visual Basic 6.0中文版控件大全,电子工业出版社,2000
[12]何斌,Visual Basic 6.0应用指南,人民邮电出版社,1998.
[13]扈啸,周旭升编著.单片机数据通信技术从入门到精通,西安电子科技大学出版社,2002
[14]齐燕杰,Visual Basic串口通信工程开发实例导航,人民邮电出版社,2003
[15]范逸之,Visual Basic与RS232串行通讯控制,中国青年出版社,2000
[16]程玉兰,红外诊断现场实用技术,机械工业出版社,2000年
[17]欧阳杰,红外电子学,北京理工大学出版社,1997年
[18]杨宜禾,红外系统,国防工业出版社,1985年
本论文是在我的导师程世旭老师的亲切关怀和悉心指导下完成的。她严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,程老师老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励,始终给予我细心的指导和不懈的支持。在此谨向程 老师致以诚挚的谢意和崇高的敬意。对程老师的感激之情是无法用言语表达的。
在此,我还要感谢在一起愉快的度过大学生活的各位同学、朋友,正是由于你们的帮助和支持,我才能克服一个一个的困难和疑惑,直至本文的顺利完成。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!
感谢我的父母,焉得谖草,言树之背,养育之恩,无以回报,你们永远健康快乐是我最大的心愿。最后我还要感谢你们培养我长大,谢谢你们对我的理解与支持!
2 0 1 3 年4 月 经 济 论 坛 E c o n o mi c Fo r u m Ma r .2 O 1 3 Ap r . 51 3 No . 0 4 总第 5 1 3 期第o 4 期 以特变电工为案例 文/ 霍 彬 【 摘 要 】长期 以来…
博士论文答辩书 各位答辩委员,各位老师,你们好!非常感谢你们能在百忙之中,来主持我的学位论文答辩会。同时也要感谢在座的各位同学,愿意抽出宝贵的学习时间,来参加、支持我的论文答辩会。下面我对我的学位论文做一个介绍。介绍分四个方面:首先是选题的过程和题目…
引言安徽矿业职业技术学院毕业课题(设计)任务书(2015届) 题 目指导教师院 系专 业班 级 学 号 姓 名 年日至 PC机与MCS-51单片机的串口通信1 引言1.1 选题背景31.2 目的和意义1.3 国内外发展现状2 系统分析2.1 系统功能…
初三( )班 姓名( )1、在一条平直的南北方向的公路上,有甲 、乙、丙三辆汽车依次向北行驶,甲、丙两车快慢相同,乙车较甲、丙两车开得快。(1)以什么为参照物,三辆车均向北运动?。(2)若以甲车为参照物,乙、 丙两车各向什么方向运动?(3)若以乙车为…
2015年云南省中考数学题型猜押 名校内部模拟题命题点1 三角形全等的相关证明及计算1.(昆明市五华区一模16题)(本题满分5分)如图所示,AC与BD相交于点O, OB=OD, OA=OC, 点E、F在线段AC上,且AF=CE.求证:FD=BE. 2…
本文由()首发,转载请保留网址和出处!
免费下载文档:

我要回帖

更多关于 单片机串口接收程序 的文章

 

随机推荐