1、 目 录第一章 摘要- (3)第二章 简介-(3) 2.1单片机的应用模式-(3)2.2单片机在工业中的应用-(4)2.3单片机与PC串口间通讯设计的应用-(4)第三章 系统设计 -(4)3.1设计思路-(4)3.2系统组成-(5)3.3 单元硬件电路设计- (5) 3.31硬件的实现过程-(5)3.3.2 RS-232接口电路- (5) 3.3.2.1 MAX-232接口电路-(6)3.4 51单片机与PC机串行通信电路-(8)3.5 软件设计-(9)第四章 实验结果与讨论-(9)4.1 程序设计-(9)4.2实验操作及运行结果-(17)4.3调试分析-(18)第五章 心得体会-(19)第六
2、章 参考文献-(19)第七章 附录-(20)第一章摘要 51单片机是一种集CPU,RAM,FLASH ROM,I/O接口和定时中断系统于一体的微型计算机。本文通过对51单片机串行通信接口的分析,建立了单片机串行通讯系统,设计了其控制寄存器和特殊控制寄存器的工作方式,完成了通讯软件。我做得的毕业设计注重于对单片机串行通信协议的理解,明白串行通信的工作原理,以便以后单片机领域的开发和研制打下基础,提高自己的设计能力,培养创新能力,丰富自己的知识理论,做到理论和实际结合。本课题的重要意义还在于能在进一步层次了解单片机的工作原理,内部结构和工作状态。理解单片机的接口技术,中断技术,存储方式,时钟方式和
3、控制方式,这样才能更好的利用单片机来做有效的设计。设计单片机与PC机的串行通讯系统,PC机是主机,PC机发送的数据单片机接收,单片机输入的数据通过LED显示在发送给PC机,其中单片机选择RS232通讯标准接口。采用了串行口通讯技术作为核心技术,主要解决方案是通过自定义通讯协议实现多机通讯,优点是结构简单,软件简单,硬件资源少,价格便宜。第二章简介2.1单片机的应用模式 单片机应用系统是以单片机为核心构成计算机应用系统,是最具有代表性和使用最广泛的专用计算机应用系统。(1) 单片机应用系统的结构。 单片机应用系统的结构分3个层次。1、 单片机:通常指应用系统主处理机,即所选择的单片机器件。2、
4、单片机系统:指按照单片机的技术要求和嵌入对象的资源要求而构成的基本系统,如时钟电路、复位电路和扩展存储器等与单片机构成了单片机系统。3、 单片机应用系统:指能满足嵌入对象要求的全部电路系统。在单片机系统的基础上加上面向对象的接口电路,如前向通道、后向通道、人机交互通道和串行通信口(RS232)以及应用程序等。2.2单片机在工业中的应用在工业自动化系统中,常用到微机与单片机进行控制和调试。单片机常被用作工业自动化系统中的前端处理器(也称下位机)。深入到现场,采集各种数据及信息,进行简单处理后送至上位机(PC);特别是PC机和多台单片机构成小型分布系统,实现分级分布式控制,用一台PC机接收来自各下
5、位机的信息和数据,经处理后在微机界面上显示,并向下位机下达命令,通过下位机对现场实施控制。在现场实时控制中难以解决的是上位机与下位机的通信问题,本文描述PC机与多台8051单片机的串行通信原理及相关的软、硬件设计,实现PC机与多台8051单片机的通信。就目前我国工业自动化领域的发展来看,集中管理和分散控制的微机自动化系统占主要位置,性能良好的MCS-51单片机和IBM-PC机被广泛应用于各个行业,由它们组合构成的一种多级分布式管理控制系统(集散系统)已经形成.在这样一类系统中,存在一种精简模式,它以1台微机作为主机(上位机),而以多台单片机作为从机(下位机)。其中,主机执行集中管理操作(控制、
6、显示、打印),而从机完成巡回检测和现场工控。2.3单片机与PC串口间通讯设计的应用 目前RS-232是PC与通信工业中应用最广泛的一种串行接口,其中EIA代表美国电子工业协会,RS代表推荐标准,232是标识号。RS-232被定义为一种在低速率串行通信中增加通信距离的单端标准。RS-232采取不平衡传输方式,即单端通信。单片机之间的串口通信,当传输距离在1.5-15米之间时,可以采用RS-232通讯协议进行数据传输,基于RS-232电气特性的限制,只能实现一点对一点通信(既单机通信)。第三章 系统设计3.1系统设计思路本文要求设计一个51单片机与PC串口间通讯系统,实现单片机与PC机之间的远程通
7、信。设计分发送和接收两大模块,发送部分通过硬件电路的引用。其中包括RS-232接口电路、MAX232接口电路,引用相应的管脚相连,并将相应的软件程序转入电路中,即可运行。当电路是相对独立时,可直接调速电路参数值,其影响和干扰就小。在满足发射和接收模块的要求后可单独对控制进行调整,程序的编入,接收部分相应的结果即以实现,因此实现了PC机对远端单片机的控制。3.2系统组成 为实现该系统的生成,主要包含两大模块,即单片机模块和通信模块。1单片机模块 单片机模块中主要包括单片机、复位电路、晶振电路、上拉电阻和端口扩展等。端口扩展部分可以通过跳线将单片机的I/O口在系统板上的功能释放,并将其连接到扩展上
8、。2通信模块 通信模块中采用MAX232作为通信电平转换电路、实现RS-232的数据传输,可以直接与PC进行通信。3.3单元硬件电路设计3.3.1硬件实现的过程 在实现单片机与PC机之间通信或单片机与单片机之间远程距离通信时通常采用标准串行总线通讯接口。比如RS-232C、RS-422、RS485等。在这些串行总线接口标准中,是在异步串行通信中应用最广的标准总线,它实用于短距离或带调制解调器的通信场合。下面以RS-232标准串行总线接口为例,简单介绍单片机与PC机之间串行通信的硬件实现过程。3.3.1.1 RS-232总线标准RS-232C总线标准定义了25个引脚的连接器,各引脚的定义如表3-
9、1所示。表3-1 RS-232信号引脚定义引脚定义(助记符)引脚定义(助记符)1保护地(PG)13辅助通道允许发送(SCTS)2发送数据(TXD)14辅助通道发送数据(STXD)3接收数据(RXD)15 发送时钟(TXC)4请求发送(RTS)16辅助通道接收数据(SRXD)5清除发送(CTS)17接受时钟(RXC)6数据准备好(DSR)18-7信号地(GND)19辅助通道请求发送(SRTS)8接收线路信号检测(DCD)20数据终端准备就绪(DTR)9-21信号质量检测10-22音响指示(RI)11-23数据信号速率选择12辅助通道接收信号检测(SDCD)24发送时钟(TXC) 表3-1中定义的
10、许多信号线是为通信业务联系或控制而设置的,在计算机串口通信中主要是用以下一些信号。(1) 数据传输信号:发送数据(TXD),接收数据(RXD)(2) 调制解调器控制信号:请求发送(RTS),清除发送(CTS)(3) 地线:保护地(PG),信号地(GND)Rs-232 C总线的其他标准规定如下:(1) RS-232总线标准逻辑电平:+5-+15V表示逻辑“0”,-15、-5表示逻辑“1”,噪声容限为2V。(2) 标准数据传输速率:50b/s 、 75b/s、 110b/s、600b/s、 1200b/s 、 4800b/s 、9600 b/s 、 19200 b/s 3.3.2 RS-232C接
11、口电路 当51单片机与PC机通过RS-232标准总线串行通信时,由于RS-232信号电平与51单片机信号电平不一致,因此,必须进行信号电平转换。其常用的方法有两种,一种是采用运算放大器、晶体管、光电隔离器等器件组成的电路来实现,另一种是采用专门集成芯片来实现。下面以MAX232专门集成芯片为例来介绍接口电路的实现。3.3.2.1 MAX232接口电路 MAX232芯片的引脚排列图如图6所示:图6 MAX232芯片的引脚排列图MAX232的工作电源为单电源,为了满足RS-232电平要求,MAX232内部有一个电压变化电路,与外接的4个1UF的电容一起长生+10V或-10V的工作电源。器件内部还包
12、括2个驱动器、2个接收器,每一个接收器将RS-232电平转换为5VTTL/CMOS电平;每一个发送器将TTL/CMOS电平转换成RS-232电平。要实现多机通讯先要实现单机通讯,再把多个从机按照主从方式连接,再通过软件编程实现多机通讯。单机通讯的传输过程主要分6步完成:1)PC机发出一个RS-232电平信号。2)通过MAX232将信号转化为TTL/CMOS电平信号,以便于单片机接收。3)单片机接收数据,然后通过内部程序将数据处理。4)单片机发送TTL/CMOS电平数据。5)通过MAX232将信号转化为RS-232电平信号,以便于PC机接收。6)PC机接收数据2.2.3 PC机采用DB-25型连
13、接器 DB-25连接器定义了25根信号线,分为4组: 异步通信的9个电压信号 20mA电流环信号 9个 空6个 保护地1个,作为设备接地端 DB-25型连接器如图7所示图7 DB-25型连接器引脚排列图3.4 51单片机与PC机串行通信电路 图3-3是由芯片MAX232实现51单片机与PC机串行通信的典型接线图。图中外接电解电容C1,C2,C3,C4用于电源电压变换,提高抗干扰能力,它们可以取相同数值电容1.0uF/16V.其值一般为0.1UF.选择任一组电平转换电路实行串行通信,如图中选T1in, R1out分别与51单片机的TXD,RXD 相连,T1out ,R1in分别与PC机中RS23
14、2 接口的RSD , TSD相连,这种发送与接收的对应关系不能连错,则不能正常工作。图3-3 用MAX232实现串行通信接口电路 3.5软件设计 鉴于单片机技术比较成熟,且开发过程中可以利用的资源和工具丰富、价格便宜、成本低。我们在实验中采用汇编语言来完成,程序可分为发送部分和接收部分。在51系列单片机中,波特率由定时/计数器T1自动产生,但在使用前。需对T1进行一些设置,才能得自己想要的波特率。我们通常在有串行通信的系统中选用11.0592MHz的晶振,为了使用方便采用2400Kbps的波特率,所以T1的初值应设置为0f3h。为了满足设计的功能和指标的要求,我们必须在开始设计时就应考虑到硬件
15、和软件的协调;不然就是造成硬件资源的浪费,就是增加软件实现时的困难和复杂程度,甚至造成信号的断层,即使硬件和软件能单独使用,却不能使它们组成的系统工作,故在设计的过程中必须考虑软、硬件的处理能力以及它们的接口是否兼容,实现软、硬件的过渡,其次、设计时硬件之间应尽可能减小联系,只要把必要的信号线相连即可。由于硬件的分离,在软件的调试时就可以单独针对控制模块。第四章 实验结果与讨论4.1程序设计程序1;MCS-51串行口应用实验 (发送端);2400波特率,8个数据位,1个停止位,无奇偶校验; (1) 若在联机状态,请先装载此程序代码至实验系统; (2) 装载完毕后,退出调试软件,并将实验系统的通
16、信选择开关拨至最左边(8251)并按复位; (3) 从0000H地址开始运行程序,在实验系统键盘上输入:0000EXEC; (4) 运行“PC接收程序.exe”,选择相关串行口,使用默认2400波特率,按“打开端口”按钮; (5) 在实验系统上按 0-F 相应字符,“PC接收程序”即作相关字符显示outseg equ 0fffch ;字形控制口outbit equ 0fffdh ;字位/键扫描控制口in_key equ 0fffeh ;键盘读入口ledbuf equ 7eh ;显示缓冲/回车前光标位置ledbufr equ 77h ;回车后光标位置blnpnt equ 50h ;闪动指针单元
17、org 0000hjg832: mov sp,#60h mov ledbuf-0,#8 mov ledbuf-1,#0 mov ledbuf-2,#3 mov ledbuf-3,#2 mov ledbuf-4,#14h mov ledbuf-5,#14h mov ledbuf-6,#14h mov ledbuf-7,#1 mov scon,#50h mov tmod,#20h MOV TL1,#0f3H ;11.0592MHz, 2400bps MOV TH1,#0f3H setb tr1 clr et1 clr esjzx0: call xgel jb acc.5,jzx0 jb acc.4
18、,jzx0 mov sbuf,a nopjzx1: jbc ti,jzx0 sjmp jzx1 sjmp jzx0;显示、键扫消抖程序xgel: call disp ;显示 call getkey ;得到键盘扫描码 mov r4,a ;键消抖处理程序 mov r1,#48h mov a,r1 mov r2,a inc r1 mov a,r1 mov r3,a mov a,r4 xrl a,r3 mov r3,04h ;r4 mov r4,02h ;r2 jz xge10 mov r2,#88h mov r4,#88h ;键盘消抖延迟参数xge10: dec r4 mov a,r4 xrl a,
19、#82h jz xge11 mov a,r4 xrl a,#0eh jz xge11 mov a,r4 jz xge12 mov r4,#20h dec r2 sjmp xge13xge12: mov r4,#0fhxge11: mov r2,04h ;r4 nop nop mov r4,03h ;r3xge13: mov r1,#48h mov a,r2 mov r1,a inc r1 mov a,r3 mov r1,a mov a,r4 jb acc.5,xg113 mov dptr,#keycode movc a,a+dptrxg113: ret;显示子程序disp: push dpl
20、push dph setb rs1 mov r0,#ledbuf mov r2,#80h mov dptr,#ledmapdisp2: mov a,r0 movc a,a+dptr push dpl push dph mov dptr,#outseg movx dptr,a mov a,r2 ; 键输出 mov dptr,#outbit movx dptr,a pop dph; 进栈 pop dpl; 进栈 mov r3,#0 djnz r3,$ ;闪动延迟 clr c rrc a ;右移显示 mov r2,a dec r0 jnz disp2 clr rs1 pop dph pop dpl
21、ret;键扫子程序getkey: setb rs1 mov r2,#0feh mov r3,#08h mov r0,#00hlgep1: push dpl push dph mov dptr,#outbit mov a,r2 movx dptr,a rl a mov r2,a mov dptr,#in_key movx a,dptr pop dph pop dpl cpl a anl a,#0fh jnz lgep0 inc r0 djnz r3,lgep1xgep33: mov a,#20hxgep3: mov r2,a mov a,#0fh push dpl push dph mov dp
22、tr,#outbit movx dptr,a pop dph pop dpl mov a,r2 clr rs1 sjmp returnlgep0: cpl a jb acc.0,xgep0 mov a,#00h sjmp lgeppxgep0: jb acc.1,xgep1 mov a,#08h sjmp lgeppxgep1: jb acc.2,xgep2 mov a,#10h sjmp lgeppxgep2: jb acc.3,xgep33 mov a,#18hlgepp: add a,r0 sjmp xgep3return: ret;键值表keycode:db 07h,04h,08h,0
23、5h,09h,06h,0ah,0bh db 01h,00h,02h,0fh,03h,0eh,0ch,0dh db 10h,11h,12h,13h,14h,15h,16h,17h db 18h,19h,1ah,1bh,1ch,1dh,1eh,1fh;字形表ledmap: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h,88h,83h,0c6h,0a1h,86h,8eh db 0ffh,0ch,89h,7fh,0bfh end程序2;MCS-51串行口应用实验 (接收端);2400波特率,8个数据位,1个停止位,无奇偶校验; (1) 若在联机状
24、态,请先装载此程序代码至实验系统; (2) 装载完毕后,退出调试软件,并将实验系统的通信选择开关拨至最左边(8251)并按复位; (3) 从0FE0H地址开始运行程序,在实验系统键盘上输入:0FE0,EXEC; (4) 运行“PC发送程序.exe”,选择相关串行口,使用默认2400波特率; (5) 在“PC发送程序”上点击相应发送字符按钮,实验系统即作相关字符显示outseg equ 0fffch ;字形控制口outbit equ 0fffdh ;字位/键扫控制口in_key equ 0fffeh ;键盘读入口ledbuf equ 7eh ;显示缓冲/回车前光标位置ledbufr equ 77
25、h ;回车后光标位置blnpnt equ 50h ;闪动指针单元 org 0ledgd: mov sp,#60h;清显示缓冲单元ldegd: mov blnpnt,#ledbuf mov a,#10h mov r0,#ledbufrlegs: mov r0,a inc r0 cjne r0,#ledbuf,legs inc a ;送待令符“p.” mov r0,a mov pcon,#80h mov scon,#50h mov tmod,#20h MOV TL1,#0E8H ;11.0592MHz, 2400bps MOV TH1,#0E8H setb tr1 clr et1 clr eswa
26、pc: mov r6,#60hwapc0: call disp jbc ri,dis_pc djnz r6,wapc0 mov r6,#28h mov r0,#50h mov a,r0 mov r0,a mov a,r0 mov r7,a mov a,#10h mov r0,awapc1: call disp jbc ri,dis_pd djnz r6,wapc1 mov a,r7 mov r0,a sjmp wapcdis_pd: mov a,r7 mov r0,adis_pc: mov a,sbuf call xeg3 sjmp wapc;刷新光标单元调正闪动指针xeg3: mov r4,
27、a ;暂存键值 mov r0,#blnpnt ;光标单元 mov a,r0 mov r1,a mov a,r4 ;恢复键值 mov r1,a mov a,#ledbufr ;回车后光标位置 cjne a,01h,xg30 ;r1 dec r1 mov a,#ledbuf ;回车前光标位置 sjmp xg31xg30: dec r1 mov a,r1xg31: mov r0,a ret;显示子程序disp: push dpl push dph setb rs1 mov r0,#ledbuf mov r2,#80h mov dptr,#ledmapdisp2: mov a,r0 movc a,a+
28、dptr push dpl push dph mov dptr,#outseg movx dptr,a mov a,r2 mov dptr,#outbit movx dptr,a pop dph pop dpl mov r3,#0 djnz r3,$ ;闪动延迟 clr c rrc a ;右移显示 mov r2,a dec r0 jnz disp2 clr rs1 pop dph pop dpl ret;字形表ledmap: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h,88h,83h,0c6h,0a1h,86h,8eh db 0ffh,
29、0ch,89h,7fh,0bfh end4.2实验操作及运行结果1,PC机发送,实验装置接收a, 编制程序,编译,装载,连续运行。b, 打开Dais软件工作目录,找到并运行“PC发送程序”,选择与实验仪相连的串口,单击打开串口按钮。c, 从“PC发送程序”单击0F按钮发送相关字符,相应的数字会显示在实验装置的数码管上。2,试验仪发送,PC机接收a, 编制程序,编译,装载,连续运行。b, 打开Dais软件工作目录,找到并运行“PC接收程序”,选择与实验仪相连的串口,单击打开串口按钮。c, 从实验装载键盘上输入数字键0F,“PC接收程序”会将接收到的字符显示在PC机屏幕上。4.3调试分析系统的硬件
30、调试、软件调试和系统调试是系统最后的步骤也是系统特别重要的环节,因为设计和开发出的系统是否成功,功能是否完善只有在这里才能显现出来。当软件与硬件分别调试好后,需要对程序和软、硬件的进行联合调试。调试的过程就是检查程序的运行方式和结果是否与设计要求相一致,检查软件编程所定义的各芯片引脚是否与搭接的实物电路一致等。硬件调试过程中出现的错误大致可分为:1)波特率不统一。解决方法:统一调整。2)MAX232引脚接错导致电平不符。解决方法:按信号电平方式,逐次连接。3)电容未赋值。解决方法:依次赋值软件调试过程中出现的错误大致可分为:1)语法错误。解决方法:软件提示错误,一一修改。2)串行口中断地址入口
31、错误和主程序入口地址错误。解决方法:请教老师及同学,一一改正。系统调试过程中出现的错误大致可分为:1) 软件与硬件波特率不统一。解决方法:经计算,修改为统一波特率。2) LED输出结果为乱码。3) PC机口接收不到数据。第五章 心得体会通过本次课程设计我学会了很多东西,是平时在课堂上学不到的。首先,通过本次课程设计不仅锻炼了自己的动手能力,以及分析能力,而且在实际操作还得到了充分的锻炼。每天通过查找资料,研究资料,然后自己在慢慢对题目理解,通过无数次的尝试,最终将本次课顺利完场,可以说过程是艰苦的,但结果很令人欣慰。在这次课程设计中,我更加深入理解了PC与单片机的串行通讯。我不仅仅学到了单片机
32、的相关知识,也学到了其他很多有用的东西,比如如何装调试程序,如何改正实验中的错误等等,这些所学到的知识是与老师的教导所分不开的,没有老师的细心指导与帮助,凭借我个人的力量来完成这次课程设计是有很大难度的。还是要感谢这次帮助我的赵老师,因为在课程设计中帮助我解决了很多的东西,无论有什么问题,她都会耐心的帮我解答,没有赵老师的帮助,我想我的课程设计将不能这么快的完成,这也让我感觉到了自己的渺小。虽然这次课程设计只有短短的两个星期,但它让我有了毕业设计感觉,也让我知道以我目前的情况来看,要想独立完成毕业设计还是很困难的,所以我将会在以后的日子里更加努力的对自己充电,让自己变得更强,来迎接半年后的毕业设计第六章 参考文献【1】 赵丽清.殷元元 51单片机开发与应用. 东营:中国石油大学出版社.2009【2】 欧伟明.单片机原理与应用系统设计.北京:电子工业出版社,2009【3】 杨金岩. 郑应强. 51单片机数据传输接口扩展技术与应用实例. 北京:人民邮电出版社.2006【4】 胡汉才组编. 单片机原理及接口技术. 北京: 清华大学出版社,1996【5】 高卫东.51单片机原理与实践.北京航空航天大学出版社,2008第七章 附录7.1实习接线附图7.2实习结果附图- 21 -