单片机课程设计实现单片机与PC串行双工通信.docx
《单片机课程设计实现单片机与PC串行双工通信.docx》由会员分享,可在线阅读,更多相关《单片机课程设计实现单片机与PC串行双工通信.docx(18页珍藏版)》请在冰豆网上搜索。
单片机课程设计实现单片机与PC串行双工通信
课程设计任务书
学生姓名:
XXXXXX专业班级:
XXXXXXXX
指导教师:
XXXX工作单位:
XXXXXXXX
题目:
实现单片机与PC串行双工通信
初始条件:
具备数字电路的理论知识;具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1、分析设计原理,画出程序设计框图,编写程序代码,完成PC和单片机的串行双工通信,单片机的P1口接一共阴数码管,阴极接地。
要求PC键盘每按“0-9”数字键能发送到单片机,并显示在数码管上,单片机发送一串字符能显示在PC的屏幕上,采用查询方式。
波特率为1200。
在Proteus中画出电路图。
2、完成程序的仿真测试,并演示系统的最终运行结果;
3、独立完成课程设计说明书,课程设计说明书按学校统一规范来撰写。
时间安排:
(1)、布置课程设计任务,查阅资料,完成系统需求分析一天;
(2)、用Proteus实现系统原理图的设计、仿真和结果显示三天;
(3)、完成课程设计报告书及答辩一天;
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
单片机可以通过电平转换后和PC机进行串行通信,只要串口设定一致,单片机和PC机就能交换数据。
通过Proteus可以对其进行仿真,Proteus中有串口器件,有虚拟终端,可以对PC机单片机串口通信进行仿真。
关键词:
单片机,PC机,串口通信,Proteus
1芯片介绍
1.189C51简介
单片机的定义是在一块芯片中集成了CPU、RAM、ROM、定时、计数器和多功能I/O口等的基本功能部件的大规模集成电路,又称MCU。
这些也是计算机所拥有的基本部件,所以单片机就是一台微型的计算机,可以实现计算机的很多功能。
本次课设使用的89C51是MCS-51系列单片机的51子系列。
89C51片内ROM是4KB的闪速E2PROM,其结构、引脚和封装和其它信号基本相同。
89C51主要由以下几个部分组成:
一个8位CPU;一个片内振荡器及时钟电路;4KBROM程序存储器;128BRAM数据存储器;可寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;32条可编程的I/O线;一个可编程全双工串行口;5个中断源、两个优先级嵌套中断结构。
本次课设主要用到的引脚线是P3.0(RXD)和P3.1(TXD),两者分别是串行通信的接收线和发送线,通过它们可以和其它串行通信设备进行连接。
PC机也可以通过串口将程序输入单片机。
1.2MAX232简介
单片机和电脑用串口线相连接时要用到电平转换芯片MAX232。
MAX232内部有电压倍增电路和转换电路,工作时需外接5个1uF的电容和+5V电源,实现TTL电平与RS-232电平双向转换,。
一个MAX232可以连接两对收/发线,把通信接口的TXD和RXD端TTL电平(0~5V)转换成RS-232电平(-10V~+10V),送到传输线上,也可以把传输线上的RS-232电平转换成TTl电平送到通信接口TXD和RXD。
单片机与PC机相连接时,单片机的RXD应连MAX232的R1OUT引脚,TXD应连T1IN,PC机串口的RXD应连T1OUT,TXD应连R1IN,这样MAX232就能在单片机和PC机之间完成电平转换,使单片机和PC机可以正常通信了。
2原理介绍
2.1串行通信介绍
计算机之间有时需要交换信息,这种信息交换被称为通信。
通信可分为并行通信和串行通信。
将数据各位同时传送的方法是并行通信,将数据逐位传送的方法是串行通信。
本次课程设计采用的是串行通信。
串行通信分为串行异步通信和串行同步通信两种类型,串行异步通信以若干位表示一个字符,通信时以收/发一个字符为一独立的通信单位。
异步传送的数据前面应加起始位,结束后应加停止位,形成一个完整的串行传送字符。
串行同步通信串行同步通信就是去掉异步传送时每个字符的起始位和停止位,以一组字符组成一个数据块,在每个数据块前附加一个或两个同步字符或标识符,后面在附加校验字符。
2.2串行接口标准
串行通信在电器连接上游串行接口标准,常用的标准有
(1)RS-232-C接口标准;
(2)RS-422A、RS-432A和RS-485接口标准;(3)20mA电流环接标准。
本次课程设计采用的是RS-232-C串行总线接口标准。
RS-232-C接口标准是美国电器工业协会(EIA)制定的,是一种在数据终端设备(DataTerminalEquipment,DTE)和数据通信设备(DataCommunicationEquipment,DCE)之间通信的链接标准。
在有些短距离场合,计算机之间可以直接通过RS-232-C接口连接。
目前常用的是9针D型连接器,如图2.1所示。
图2.1RS-232C9针D型连接器
常用的引脚有3根,是接收数据RXD,发送数据TXD和接地GND。
2.3单片机串口简介
本次课设用的89C51的串行口是一个可编程的全双工串行通信接口,它的功能很多,可以用软件编程来控制,它可以作为通用异步接收和发送器UART,也可以作为同步移位寄存器。
其帧格式可有8位,10位,11位,并能设置各种波特率,只要编程就能进行设定,使用很方便。
串行口的结构主要由两个数据缓冲寄存器SBUF和一个输入移位寄存器组成,另外其内部还有一个串行控制寄存器SCON和一个波特率发生器,波特率发生器是由T1及分频器组成,因此修改波特率时要修改T1的设定。
在与PC机进行通信时,PC机发来的的串行数据是通过引脚RXD输入的。
输入数据先逐位进入输入移位寄存器,再送入接收数据缓冲寄存器。
在PC内接有PC16550串行接口、RS-232C连接器、EIA-TTL的电平转换器等设备,有两个串行口COM1和COM2留给用户,通过这两个串行口可以连接串行通讯设备如单片机等。
3程序设计
3.1单片机串口编程
89C51串行通信的方式选择、接收和发送控制及串行口的标志均由专用寄存器SCON控制和指示,其格式如表3.1:
表3.1
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
方式选择
多机控制
串行接收允许/禁止
欲发的第9位
收到的第9位
发送中断有/无
接收中断有/无
SM0,SM1是串行口工作方式控制位。
00——方式0,01——方式1,10——方式2,11——方式3。
方式0是移位寄存器方式,方式1是波特率可变10位异步通信方式,方式2是11位异步通信方式,方式3引脚使用和数据格式同方式2,不同的是波特率可变。
串行通信还要用到电源控制寄存器PCON中的SMOD位,SMOD=0时波特率不加倍,SMOD=1时波特率加1倍。
本次课设使用的是方式1,每帧数据为10位:
1个起始位“0”,8个数据位,1个停止位“1”。
由T1提供移位时钟,波特率可变。
波特率计算公式为:
本次课设中设定单片机晶振频率为12MHz,波特率为1200,SMOD=0,则T1时间常数计算如下:
X=230=E6H
串行通信可采用两种方式:
查询方式和中断方式,本程序采用查询方式。
查询方式发送程序:
发送一个数据→发送一个数据→查询TI→发送下一个数据(先发后查)
接收程序:
查询RI→读入一个数据→查询RI→读入下一个数据(先查后收)
PC机上串口设置应与单片机一致。
3.2程序流程图
程序先向PC机发送一段字符,再接收PC机发来的字符。
发送部分流程图如图3.1所示:
图3.1发送部分程序流程图
接收部分程序流程图如图3.2所示:
图3.2程序接收部分流程图
3.3源程序
单片机上实现与PC机串行通信源程序如下:
ORG0000H
MOVP1,#0;P1口清0
MOVTMOD,#20H;设定定时器T1工作于方式2
MOVTH1,#0E6H;时间常数为230
MOVTL1,#0E6H
SETBTR1;启动T1
MOVSCON,#40H;串口工作于方式1
MOVDPTR,#TAB1;DPTR存待发送数据首址
MOVR0,0;R0做发送数据计数器
LOOP1:
MOVA,R0;R0的值送入A
MOVCA,@A+DPTR;查表得要发送的数据
MOVSBUF,A;发送数据
JNBTI,$;未发完则继续查询
CLRTI;发完后将TI清0
INCR0;R0加1
CJNER0,#05H,LOOP1;若R0不等于5则继续发送
MOVSCON,#50H;设定串口工作于方式1,允许接收
MOVDPTR,#TAB2;DPTR存共阴字码表首址
LOOP2:
JNBRI,$;数据未收完继续查询
CLRRI;收完则将RI清0
MOVA,SBUF;接收数据送入A
SUBBA,#30H;将ASCII码转为对应数字
MOVCA,@A+DPTR;查表得相应的字形码
MOVP1,A;将A送入P1口显示数字
SJMPLOOP2;继续接收
TAB1:
DB41H,42H,43H,44H,45H;
TAB2:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;
END
4Proteus电路制作
4.1Proteus简介
本次课程设计使用的软件是Proteus。
Proteus是英国Labcenter公司开发的电路分析与仿真软件。
它可以运行于Windows操作系统上,功能很强大,可以仿真、分析各种模拟器件和集成电路。
Proteus具有强大的原理图绘制功能。
放置元件和连线都很方便,可以制作各种电路图。
Proteus支持主流单片机系统的仿真。
它支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
本次课设采用了其中的89C51单片机。
该软件实现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能。
有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
还有虚拟终端,可以仿真PC机与单片机的通信。
Proteus提供软件调试功能。
在该软件的在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态;同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件,可以和Keil联调使用,功能强大。
4.2电路图绘制
首先打开ProteusISIS程序界面,开始绘制电路图。
首先添加所要用到的元件。
元件清单如表4.1所示
元件清单如表4.1所示
元件名称
所属类
所属子类
数量
AT89C51
MicroprocessorICs
8051Family
1
CAP
Capacitors
Generic
2
CAP-POL
Capacitors
Generic
4
CRYSTAL
Miscellaneous
-
1
RES
Resistors
Generic
1
7SEG-COM-CATHODE
Optoelectronics
7-SegmentDisplays
1
MAX232
MicroprocessorICs
Peripherals
1
COMPIM
Miscellaneous
-
1
其中AT89C51是单片机,在设置中设置其频率为12MHz,在ProgramFile中可以加载程序的HEX文件。
CAP是电容,用在外部晶振电路中,电容大小设置为33pf。
CAP-POL是极化电容器,用于MAX232电路,大小设置为1uf。
CRYSTAL是晶振,频率设置为12MHz。
RES是电阻,与串口相连,大小设置为10kΩ。
7SEG-COM-CATHODE是7段共阴数码管。
MAX232是电平转换芯片。
COMPIM是串行口,设置波特率为1200,无奇偶校验,8位数据位,1位停止位,设置如图4.1。
图4.1串口设置
此外还需要接地,在左侧工具栏中终端里的GND是接地。
还要加虚拟终端来仿真PC机,虚拟终端是虚拟仪器中的VIRTUALTERMINAL,虚拟终端设置波特率为1200,无奇偶校验,8位数据位,1位停止位,电平极性反转。
其设置如图4.2。
图4.2虚拟终端设置
放置好所有元件后在端点处点击鼠标就可以连线了,得到电路图如图4.3。
图4.3电路图
5Proteus仿真
5.1生成HEX文件
仿真时单片机需要载入HEX文件。
这里使用WAVE软件生成,首先在WAVE中编写程序。
在WAVE的仿真器设置,目标文件中把生成HEX文件的选项选上,如图5.1。
图5.1仿真器设置
然后进行编译,就可以得到HEX文件。
如果有错误就进行调试,直到程序无误。
5.2Proteus仿真结果
给单片机加载HEX文件后,点击屏幕左下角的开始仿真按钮即可开始仿真,此时鼠标右击虚拟终端,选择最下面一个选项VirtualTerminal即可看见PC收到的数据,如图5.2所示
图5.2PC收到的数据
此时按键盘上的数字键,就可以发送数据给单片机了,可以见到单片机数码管会显示出所按的数字,如图5.3、5.4所示。
图5.3按2键数码管显示结果
图5.4按0键数码管显示结果
5.3结果分析
通过仿真结果可以看出,单片机发送的字符“ABCDE”成功送到了PC机内,可以在虚拟终端上看见。
当虚拟终端打开时,按下0-9的数字键,数码管会显示相应字符,说明PC机的信息也可以通过串口传送到单片机内,电路工作正常,达到了要求。
6课程设计心得体会
通过进行本次单片机课程设计,我对Proteus有了初步的认识,我掌握了Proteus的基本操作,并学会了用Proteus解决一些课程中的问题,巩固了单片机相关知识。
下面是我具体的一些体会。
Proteus功能非常强大,几乎可以仿真目前单片机课程中遇到的各种问题,它有丰富的元件库,电路中用到的各种元件都有,有的同一类元件都有好几种,比如7段共阴数码管,就有红绿蓝等几种颜色的,可以仿真各种电路。
除了元件,Proteus还提供了大量的虚拟元件,比如虚拟示波器,虚拟终端等。
本次课设用到的虚拟终端就可以模拟PC机,接收单片机发送的数据,并可以向单片机发送数据,功能强大。
Proteus虽然功能非常强大,但其操作却非常简单,只要找到相应的元件,进行参数设置,点击鼠标即可连线。
完成电路后加载HEX文件,点击仿真开始就可以仿真了,仿真结果会很直观的显示。
不过Proteus的元件库内容十分丰富,要找到所需的元件也不是很容易。
需要熟练掌握相关的英语,并在网上查阅相关资料,才能熟练掌握Proteus的应用。
在课程设计中我也巩固了单片机的相关知识,更深入了解了单片机与PC机串行通信的原理,并编制了相关程序,掌握了其基本的应用。
在这次课程设计中,我学到了很多关于Proteus的知识,但这还远远不够,我现在只掌握了一些基本的功能,而解决更高级问题我的知识还不够,我要在日后进一步学习,更好地掌握Proteus。
参考文献
[1]李群芳,张士军,黄建.单片微型计算机与接口技术.北京:
电子工业出版社,2007.
[2]王守中.51单片机开发入门与典型实例.北京:
人民邮电出版社,2007.
[3]倪志莲.单片机应用技术.北京:
北京理工大学出版社,2007.
[4]周润景.Proteus入门实用教程.北京:
机械工业出版社,2007.
[5]张靖武,周灵彬.单片机系统的Proteus设计与仿真.北京:
电子工业出版社,2007.
致谢
本次课设的指导老师老师XX给了我很大帮助,帮助我修订了课程设计说明书,巩固了单片机的相关知识,使我的知识水平有了较大提高。
XXX老师在数字图像处理课上认真细致的讲解也使我受益匪浅,在此对他表示诚挚的谢意。
我同组的同学也给了我很多帮助,我们共同努力完成了本次课程设计,在此也对他们表示感谢。
本科生课程设计成绩评定表
姓名
性别
专业班级
课程设计题目:
实现单片机与PC串行双工通信
课程设计答辩或质疑记录:
成绩评定依据:
指导教师签字:
_____________
年月日