课程设计(论文)单片机与 PC机的串口通信.doc

上传人:仙人指路1688 文档编号:4142292 上传时间:2023-04-07 格式:DOC 页数:15 大小:162.50KB
返回 下载 相关 举报
课程设计(论文)单片机与 PC机的串口通信.doc_第1页
第1页 / 共15页
课程设计(论文)单片机与 PC机的串口通信.doc_第2页
第2页 / 共15页
课程设计(论文)单片机与 PC机的串口通信.doc_第3页
第3页 / 共15页
课程设计(论文)单片机与 PC机的串口通信.doc_第4页
第4页 / 共15页
课程设计(论文)单片机与 PC机的串口通信.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《课程设计(论文)单片机与 PC机的串口通信.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)单片机与 PC机的串口通信.doc(15页珍藏版)》请在三一办公上搜索。

1、单片机与 PC机的串口通信1绪 论计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。 在串行通讯时,要求通讯双方都采用一个标准接口,使不同 的设备可以方便地连接起来进行通讯。 RS-232-C接口(又称 EIA RS-232-C)是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标 准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口

2、技术标准”该标准规定采用一个25个脚的 DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信 号的电平加以规定。随着计算机技术尤其是单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行检测和控制。PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS-232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。因此如何实现PC机与单片机之间的通讯具有非常重要的现实意义。2设计内容及要求在计算机控制系统中,不可避免的要采用多机进行通信。随着单片机在各个领域的广泛应用,利用51实验板单片机系统与P

3、C机RS232串口相连,实现双向数据通信。利用可视化程序设计编制串口调试软件,然后向串口发送“1”、“2”、“3”.“8”、“9”、“0”等字符,实验板收到数据后通过数码管显示出来,同时会向PC机反馈显示成功的确认信号,即在PC机串口调试软件的接收缓冲区内将显示“display OK!”等字样。3串口通信原理所谓串行通信是指外设和计算机间使用一根数据信号线,数据在一根数据信号线上按位进行传输,每一位数据都占据一个固定的时间长度。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,当然,其传输速度比并行传输慢。相比之下,由于高速率的要求,处于计算机内部的CPU与串口之间的通讯仍然采用并行

4、的通讯方式,所以串行口的本质就是实现CPU与外围数据设备的数据格式转换(或者称为串并转换器),即当数据从外围设备输入计算机时,数据格式由位 (bit)转化为字节数据;反之,当计算机发送下行数据到外围设备时,串口又将字节数据转化为位数据。 串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从 CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 在Windows环境下,串口是系统资源的一部分。 应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。串口通信的概念非常简单,串口按位

5、(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。 典型的串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。当我们提到时钟周期时,我们就是指波特率b,数据位:这是衡量通信中实际数据位

6、的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。 c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。 d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位,用一个值确保传输的数据有偶个或者奇个逻辑高位。4设计思路利用vc+编写上位机数据发送接收软件,作为给单片机发送数据或接收单片机发送数据

7、的软件。用单片机设计好硬件电路,给单片机进行编程,从而是单片机能够接收pc机传送来的数据,并通过数码管显示出来从而达到设计要求。5设计框图89c51MAX232Pc机6硬件实现6.1AT89C52AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机(如图6.1)。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工

8、业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 图6.1 图6.26.2MAX232芯片MAX232芯片(如图6.2):MAX232是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片,适用于各种EIA-232C和V.28/V.24的通信接口。 MAX232芯片的功能: MAX232内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232C输出电平所需的10V电压。所以,采用

9、此芯片接口的串行通信系统只需单一的+5V电源就可以了。对于没有12V电源的场合,其适应性更强6.3 9针串口9针串口(如图6.3):一个完整的RS-232接口是一个25针的D型插头座,25针的连接器实际上只有9根连接线,所以就产生了一个简化的9针D型RS-232插头座,常用的就是一个9针的D型插头座。 图6.37硬件电路设计7.1设计思路将单片机RXD,TXD分别通过MAX232进行电平转换后与9针串口TX,RX相接。单片机p0口进行位选,p1口送断码到数码显示。单片机串行口工作方式2,并允许接收。定时器选T1,工作方式2。7.2通信协议 PC机通过串口向单片机一次发送一个数字,由10位二进制

10、码组成,一位起始位,八位ASCII码,一位终止位。 单片机通过串口接收数据之后,将此数字显示出,再向PC发送一个约定的ASCII码(定为02AH),程序被此事件触发,当程序收到这个约定的字符码串之后,即认为单片机已成功接受并显示,然后串口调试程序的接收缓冲区显示出“Display OK!”。单片机的串口工作模式为方式2。波特率9600bit/s。MCS-51单片机内部有两个16位可编程的定时器/计数器,即定时器T0(由TH0和TL0组成)和定时器T1(由TH1和TL1组成),它们既可用作定时器定时,又可用作计数器记录外部脉冲个数,其工作方式、定时时间、启动、停止等均用指令设定。 7.3定时器/

11、计数器的结构1定时器/计数器的工作原理定时器计数器T0和T1的工作方式通过八位寄存器TMOD设定,T0和T1 的启动、停止由八位寄存器TCON控制。工作前需先装入初值,利用传送指令将初值装入加1计数器TH0和TL0或TH1和TL1,高位数装入TH0或TH1,低位数装入TL0或TL1。当发出启动命令后,加1计数器开始加1计数,加到满值(各位全1)后,再加1就会产生溢出,系统将初值寄存器清0。如果需要继续计数或定时,则需要重新赋计数初值。2定时器的方式寄存器TMOD特殊功能寄存器TMOD为定时器的方式控制寄存器。TMOD是用来设定定时器的工作方式,其格式如下:各位功能如下:(1)GATE控制定时器

12、的两种启动方式当GATE=0时,只要TR0或TR1置1,定时器启动。当GATE=1时,除TR0或TR1置1外,还必须等待外部脉冲输入端 (P3.3)或 (P3.2)高电平到,定时器才能启动。若外部输入低电平则定时器关闭,这样可实现由外部控制定时器的启动、停止,故该位被称为门控位。定时器1类同。(2)定时/计数方式选择位当该位为0时,T0或T1为定时方式;当该位为1时,T0或T1为计数方式。3控制及标志寄存器TCON特殊功能寄存器TCON控制定时器的启动、停止、溢出、中断等。有些位是控制设置,有些是标志位,各位都有对应地址。其格式如下:TCON 8FH 8EH 8DH 8CH 8BH 8AH 8

13、9H 88H (88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 各位功能如下:(1)TFl:定时器1溢出标志,T1溢出时由硬件置1,并申请中断,CPU响应中断后,又由硬件清0。TF1也可由软件清0。(2)TF0:定时器0溢出标志,功能与TFl相同。(3)TRl:定时器1运行控制位,可由软件置1或清0来启动或停止T1。(4)TR0:定时器0运行控制位,功能与TRl相同。(5)IE1:外部中断l请求标志。(6)IE0:外部中断0请求标志。(7)IT1;外部中断1触发方式选择位。(8)IT0:外部中断0触发方式选择位。TCON中各位均是1有效,如利用程序把TR1或TR0置1

14、则启动定时器,否则定时器处于关闭状态。当T1或T0溢出时,由硬件把TF1或TF0置1,作为溢出标志。TCON中的低4位IE1、IE0、IT1、IT0用于中断工作方式,这方面内容在讲述中断的章节中再详细讨论。当整机复位后,TCON中的各位均为0。7.4工作方式MCS-51片内的定时器/计数器可以通过对TMOD寄存器中的控制位 的设置来选择定时或计数方式,通过对M1、M0的设置来选择四种工作方式,下面以T0为例说明。1. 方式0当M1、M0设置为00时,定时器选定为方式0工作。在这种工作方式下,16位的计数器(TH0和TL0)只用了13位,构成13位定时器计数器。TL0的高3位未用,当TL0的低5

15、位计满时,向TH0进位。而TH0溢出后对中断标志位TF0置1,并申请中断,同时把计数器清零。当GATE0时,INT0被封锁,且仅由TR0便可控制T0的开启和关闭,即只要TCON中的TR0为1,TL0及TH0组成的13位计数器就可以开始计数。当GATE1时,T0的开启与关闭取决于和TR0相与的结果,即只有当GATE1和TR01时,T0才开始工作。2方式1方式1和方式0的工作方式相同,唯一的差别时TH0和TL0组成一个16位计数器。3方式2工作方式2可在计数器计满溢出时自动装入初值,实际是把16位的计数器拆成两个8位,TL0用作8位计数器,TH0用来保存初值。每当TL0计满溢出时,可自动将TH0的

16、值装入TL0中。方式2还用作串行口波特率发生器。4方式3方式3对定时器T0和T1是不相同的。若T1设置为方式3,则停止工作。所以方式3只适用于T0。方式3使MCS-51具有三个定时器/计数器。当T0设置为方式3时,将使TL0和TH0成为两个相互独立的8位计数器,通常,当T1用作串行口波特率发生器时,T0才设置为工作方式3,此时,T1虽仍可定义为工作方式0、工作方式1和工作方式2,但只能用在不需中断控制的场合。7.5电路图8、软件设计8.1单片机程序receivedata data 40h ;存放收到的数据displaydata data 39h ;存放显示子程序要显示的数据ORG 0000HJ

17、MP STARTORG 0023HJMP COMMJUDGEORG 0100HSTART: MOV SP, #60H MOV SCON, #50H ;选择串行口工作方式 MOV PCON, #80H ;使SMOD为1 MOV TMOD,#20H ;选择定时器/计数器T1,工作方式3 MOV TL1,#0FAH ;赋初值 MOV TH1,#0FAH SETB EA SETB ES ,启动中断允许总控制 SETB TR1 ;启动定时器HERE: JMP HERE COMMJUDGE: JB TI,TT00 ;如果是发送引起的中断,那么就不管 CLR RI CALL CHANGEDIS CALL D

18、ISPLAY CALL TRANSTT00: CLR TI RETI;=;功能描述: 串口接收数据的处理子程序;=CHANGEDIS: PUSH Acc PUSH PSW MOV A,SBUF MOV receivedata,A SUBB A,#30H ;数字的ASCII码转换为对应的数字 MOV displaydata,A POP PSW POP Acc RET;=;功能描述: 串口发送数据给PC的子程序;=TRANS: PUSH ACC PUSH PSW MOV A,#2AH ;2AH是事先约定的字符,返回给PC端时,用于确认显示正确 MOV SBUF,A ;此语句产生一个TI=1. MO

19、V R7,#02HDL: MOV R6,#0FFHDL6: DJNZ R6,DL6 DJNZ R7,DLPOP PSW POP ACC RET;=;功能描述: 显示子程序;=DISPLAY: MOV R1,#displaydata ;取显示缓冲区首地址 MOV A,R1 ;查表获取段选码 MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,#0FEH ;对P0口进行位选,FE则最左边那位显示 MOV P1,A ;给P1口送段选码 RETTAB: DB 0c0H, 0f9H, 0a4H, 0b0H, 99H, 92H; 0 1 2 3 4 5; 00H 01H 02H 03H

20、04H 05H; DB 82H, 0f8H, 80H, 90H, 88H, 83H; 6 7 8 9 A B; 06H 07H 08H 09H 0AH 0BH; DB 0c6H, 0a1H, 86H, 8eH, 8cH, 0c1H; C D E F P U; 0CH 0DH 0EH 0FH 10H 11H; DB 89H, 0c7H,0bfH, 91H,00H,0ffH; H L - y ON OFF; 12H 13H 14H 15H 16H 17H; DB 92H, 77H, 8bH, 0afH, 0a3H, 0a1H; S T H R O D; 18H 19H 1AH 1BH 1CH 1D

21、H; DB 0f0H, 0FH, 8bH, 0afH, 0a3H, 0a1H; S T H R O D; 1EH 1FEND8.2流程序开始选择串行口工作方式设定其波特率选择定时器/计数器输入初值TI=1?结束TI清零接收数据发送数据R1清零显示数据启动中断允许总控制启动选择定时器/计数器YNN显示正确吗YN9软件仿真上位机发送数据后10结束语通过这次课设,我学会了用理论来指导实践的方法,理论指导的重要性;真实的体验到做科学研究的艰辛与一丝不苟。由于我们这次的设计要用KEIL UVISION2、PROTUES、串口调试助手和虚拟串口软件四个软件,之前都没有接触过,一开始做这个单片机与PC机串口

22、通信比较迷茫,后来去图书馆借了很多书,查找到很多信息,也在网上看了不少资料,对于KEIL UVISION2、PROTUES这两软件基本掌握,但串口调试助手和虚拟串口软件没能很好地掌握,因此没有做出仿真结果来,希望老师谅解!这次是用MSComm控件完成的,通过查找资料还知道串行通信也可以用VB,C语言完成,所以感觉到知识的无限,如果想在这方面有更深的造诣,还得不断地学习新知识,不断地实践。在做设计的时候遇到了很多问题,通过问同学和请教老师都得到了细心地回答,从他们身上我学到了很多。这次课设是真实的一次软硬件结合的综合设计,让我的知识得到了巩固和提高,获益良多。11参考文献1、李明李君君单片机原理与接口技术 大连理工大学出版社 20093、周坚单片机项目教程 北京航空航天大学出版社 20084、胡汉才单片机原理及系统设计 清华大学出版社 20025、单片机技术教程(人民邮电出版社)6、单片机原理及应用 西安电子科技大学出版社(第二版)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号