单片机与PC机串口通信.docx
《单片机与PC机串口通信.docx》由会员分享,可在线阅读,更多相关《单片机与PC机串口通信.docx(19页珍藏版)》请在冰豆网上搜索。
![单片机与PC机串口通信.docx](https://file1.bdocx.com/fileroot1/2023-2/9/f2e48d62-ab7d-4eaf-9160-3fd54fff6abd/f2e48d62-ab7d-4eaf-9160-3fd54fff6abd1.gif)
单片机与PC机串口通信
摘要
本设计是根据我们所学习的单片机课程,按照大纲要求对我们进行的一次课程检验,是进行单片机课程训练的必要任务,也对我们掌握单片机应用有很大的帮助。
掌握单片机技术是一门不可或缺的技术,对我们将来的工作以及生活和学习都有很密切的联系。
近年来,随着电子技术和微机计算机的迅速发展,单片机的档次不断提高,其应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产
中得到了广泛的应用,成为现代电子系统中最重要的智能化的核心部件。
本单片机系统采用AT89S51控制,整个硬件系统由A/D、D/A转换、LED显示、键盘、串行通信等模块组成。
本设计只完成了单片机部分的开发设计,没有设计外部的采集和控制电路。
因为没有外部采集电路,所以不能完成具体的测量功能,要完成具体的测量功能(如测量压力、温度、湿度)还要配上外部的各种传感器采集电路和相应的软件。
若配上采集电路和相应的软件就能将测量结果用LED数码管十进制显示出来,其中包括了A/D、D/A转换,还可以用按键来控制,进行人机对话;系统中设置了5个按键,其中1个是复位键,其余的4个键,用程序来控制实现不同的功能。
之所以没有设计外部采集电路是因为设计了外部采集电路系统的功能就比较单一,不方便系统功能的外部扩展。
该系统还能实现单片机与PC机的串行通信和编程的下载、软件设计的时钟显示。
关键词:
单片机AT89C51,串行通信,A/D转换,D/A转换,LED数码管显示
目录
1、课程设计说明1
1.1课程设计内容1
1.2任务分析与设计思路1
1.3总体方案设计1
2、引言2
2.1单片机与PC机串行通信研究背景2
2.2单片机与PC机串行通信研究目的和意义2
3、实验设备3
3.1Proteus3
3.1.1Proteus软件简介3
3.1.2Proteus软件仿真4
3.2汇编软件keilc514
3.2.1汇编软件4
3.2.2汇编编程4
4、相关参考程序内容4
4.1资料转移指令4
4.2算术指令5
4.3逻辑指令5
4.4控制转移类指令6
4.5位变量指令6
5、相关硬件内容7
5.1MCS-517
5.2VirtualTerminal(VT)7
5.3COMPIM器件8
6、流程图8
7、源程序10
8、汇编结果14
9、电路连接14
10、小结15
参考文献16
附录17
1、课程设计说明
1.1课程设计内容
运用所学单片机、模拟和数字电路等方面的知识,完成单片机与PC计算机的串口接口设计。
此系统具有如下功能:
1)单片机可以从RS-232串口接收PC计算机来的一组4位10进数,并显示在4位LED数码管显示器上,波特率可选1200、2400、4800、9600,采用奇偶校验。
2)设置一个按键,按下按键时停止接收PC计算机发送的信号,再次按下按键又继续接收。
1.2任务分析与设计思路
1)设计要求接收数据并显示,接收数据的波特率可选1200、2400、4800、9600,并采用奇偶校验。
设计思路为使用89c51的串行接口来接收数据,波特率越高,数据传输速度越快,任务对传输速度未作要求,考虑到定时器T1的时间常数初值与相应波特率之间有误差,在选择单片机时钟频率为12M情况下,4800的误差较小,所以波特率选择4800。
由于采用奇偶校验,所以串口工作方式选择3。
2)采用4位LED数码管对接收数据进行显示,从节约硬件的角度考虑,采用软件译码,并采用动态显示。
3)按键控制接收,通过INT0中断实现。
1.3总体方案设计
通过RS-232实现PC机与单片机的连接,由于需要电平转换,采用MAX232芯片,设计采用两块单片机,其中一块作添加校验位来用。
单片机通过P0.0~P0.6(字形码),P2.0~P2.3(字位码)与LED数码管相连。
按键接INT0脚。
设计框图如下
RS-232
2、引言
2.1单片机与PC机串行通信研究背景
近年来,随着科学技术的发展,PC机以其优越的性价比和丰富的软件资源成为计算机应用的主流机种。
在工业控制中单片机得到广泛的应用,现代化集中管理需要对现场数据进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置进行实时控制,完成各种规定操作,达到集中管理的目的。
由于单片机的计算能力有限,难以进行复杂的数据处理。
因此在功能比较复杂的控制系统中,通常以PC机为上位机,单片机为下位机,由单片机完成数据的采集及对装置的控制,而由上位机完成各种复杂的数据处理及对单片机的控制,二者结合,使得单片机的应用已不仅仅局限于传统意义上的自动监测或控制,而形成了向以网络为核心的分布式多点系统发展的趋势。
2.2单片机与PC机串行通信研究目的和意义
现代信息网络技术的一个突出特点,就是使工业控制系统中的所有设备连接成网,从而在一个核心软件管理下工作,形成一个有机的整体。
这种整体网络方式在现代工业控制系统具有传统独立控制系统所无法比拟的先进性,不仅能极大地提高工业设备的生产效率,还可以大大提高系统的安全性和可靠性。
单片机自诞生以来以其性能稳定、价格低廉、功能强大,在智能仪器、工业装备以及日用电子消费品中得到了广泛的应用。
在单片机的输入输出控制中,除直接接上小键盘和LCD显示屏等方法外,一般都通过串口和上位机PC进行通信。
这样不仅能够实现远程控制,而且能够利用PC机强大的数据处理功能以及友好的控制界面。
在一般的利用PC机对单片机进行控制的场合,都是采用Windows作为上位机的平台,其优点是界面友好,编程和操作都比较容易。
因此研究PC机与单片机串行通信具有重要的现实及工业意义。
3、实验设备
Proteus7Professional软件及汇编软件keilc51
3.1Proteus
3.1.1Proteus软件简介
Proteus不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。
因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。
对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。
3.1.2Proteus软件仿真
在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:
*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。
3.2汇编软件keilc51
3.2.1汇编软件
KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。
C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。
C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:
编译器,汇编器,实时操作系统,项目管理器,调试器。
uVision2IDE可为它们提供单一而灵活的开发环境。
3.2.2汇编编程
(1)新建工程→保存工程
(2)新建文件→保存文件(按格式保存)
(3)为sourcegroup增加文件
(4)调整目标属性
(5)生成HEK文件以备proteus仿真
4、相关参考程序内容
4.1资料转移指令
MOV移动
MOVC程式记忆体移动
MOVX外部RAM和扩展I/O口与累加器A的数据传送指令
PUSH放入堆叠
POP由堆叠取回
XCH8位元交换
XCHD低4位元交换
SWAP高低4位元交换
4.2算术指令
ADD两数相加
ADDC两数相加再加C
SUBB两数相减再减C
INC加一指令
DEC减一指令
MUL(MULAB乘法指令仅此一条)相乘指令,所得的16位二进制数低8位存累加器A高8位存B
DIV(DIVAB除法指令仅此一条)相除指令,所得商存A,余数存B
DA(DAA只此一条指令)调整为十进数
4.3逻辑指令
ANL做AND(逻辑与)运算
ORL做OR(逻辑或)运算
XRL做(逻辑异或)运算
CLR清除为0
CPL取反指令
RL不带进位左环移
RLC带进位左环移
RR不带进位右环移
RRC带进位右环移
4.4控制转移类指令
JCC=1时跳
JNCC=0时跳
JB位元=1时跳
JNB位元=0时跳
JBC位元=1时跳且清除此位元
LCALL长调用子程序
ACALL绝对调用子程序
RET由副程式返回
RETI由中断副程式返回
AJMP绝对转移
SJMP相对转移
JMP@A+DPTR散转,相对DPTR的间接转移
JZA=0时跳
JNZA0时跳
CJNE二数比较,不相等时跳
DJNZ减一,不等於0时跳
NOP空操作
4.5位变量指令
SETB设定为1
ORG程序开始,规定程序的起始地址
END程序结束
EQU等值指令(先赋值后使用)例:
SUMEQU30H
DB定义字节指令
DW定义字内容
DS定义保留一定的存贮单元数目
BIT位地址符号指令例:
SAMBITP1.0
RET子程序返回指令
RETI中断子程序返回指令
$本条指令地址
5、相关硬件内容
5.1MCS-51
80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(PUSH)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源。
采用40引脚双列直插式DIP(DualInLinePackage),内有128个RAM单元及4K的ROM。
80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。
80C51内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。
由于80C51的系统性能满足系统数据采集及时间精度的要求,而且产品产量丰富来源广,应用也很成熟,故采用来作为控制核心。
5.2VirtualTerminal(VT)
虚拟终端(VT)是一种提供类似于Internet的Telnet协议的远程终端仿真的国际标准化组织(ISO)协议。
在远程终端的用户,可以在远程计算机上运行应用程序,就象他们是坐在这台计算机前面一样。
虚拟终端是在个人电脑上虚拟的一个终端以及为此目的而写的软件。
虚拟终端的目的是达到个人电脑及其用户能够与大型计算机的连接。
一般来说需要连接的大型计算机是IBM的大型计算机或者所谓的超小型计算机(过去往往是迪吉多的VAX)。
虚拟终端使得个人电脑的用户可以直接使用他的个人电脑来与大型计算机联系,而不必使用专门的终端。
通过虚拟终端的软件虚拟终端还可以扩展大型计算机的标准终端的功能,通过虚拟终端不但可以将个人电脑上的数据传递给大型计算机,而且还可以将大型计算机的数据传递给个人电脑,并在个人电脑上继续加工。
一般大型计算机的终端是字母式的输入和输出接口,因此一个虚拟终端至少需要一个能够模拟这样的字母式(比如ASCII)输入和输出接口的能力。
最常见的平台是图像式的用户表面。
要使得新的、图像式的程序能够使用老的字母式的或者没有图像式输入和输出能力的程序也需要虚拟终端。
现代的大型计算机也内部使用虚拟终端,这样它们可以向老的、需要终端的程序假装一个终端,而实际上它则将程序的显示转到显示卡上。
比如Linux以及其它大多数基于个人电脑的类似Unix的操作系统假装有六至十个这样的“虚拟”的终端。
字母程序<--->虚拟终端<--->图像显示
5.3COMPIM器件
protues的解释:
COMPortPhysicalInterfacemodel串口物理端口模型。
在protues里面COMPIM可以调用实际的串口和外部通信。
比如台式机有个串口COM1,我在protues里添加COMPIM后设置属性,就能在仿真里通过COM1和外部实际的东西进行通信
6、流程图
软件部分包括按键、通信、显示等,按键采用INT0中断,通信涉及对单片机串口的编程,采用动态显示编程
7、源程序
ORG0000H
LJMP1000H
ORG1000H
MOV70H,#0;显示区70H~73H
MOV71H,#0
MOV72H,#0
MOV73H,#0
MOVR0,#70H;R0指向显示区
MOVR3,#11H;R3存位控位
MOVTMOD,#20H;选择定时器T1,方式2
MOVTH1,#0F3H;选择波特率4800,计算初值0F3H
MOVTL1,#0F3H
SETBTR1;启动定时器
MOVSCON,#0D0H;串口选择方式3,允许接收
MOVPCON,#80H;SMOD=1
MOVR1,#60H;R1指向接收区60H~63H
MOVR4,#04H;R4存接收个数
SETBEA
SETBES;开串口中断
SETBIT0;INT0中断选负边沿触发
SETBEX0;开INT0中断
MOVA,R3
LD0:
MOVP2,A
MOVA,@R0
ADDA,#15
MOVCA,@A+PC
MOVP0,A
ACALLDELAY
INCR0
MOVA,R3
RLA
MOVR3,A
CJNER0,#74H,LD0
MOVR0,#70H
SJMPLD0;显示显示区的数
DB40H,4FH,24H,30H,19H,12H,02H,78H,00H,18H
DELAY:
;1ms延时程序
MOVR7,#02H
DELAY1:
MOVR6,#0FFH
DELAY2:
DJNZR6,DELAY2
DJNZR7,DELAY1
RET
ORG0023H;串口终端服务程序
LJMP2000H
ORG2000H
RE:
CLRRI;清标志位
MOVA,SBUF
MOVR5,A
MOV20H,#00H
MOV21H,#00H
MOVC,P
MOV00H,C
MOVC,RB8
MOV08H,C
MOVA,20H
XRLA,21H
JNZL3
MOVA,R5;奇偶校验
L5:
CJNEA,#30H,L2
L2:
JCL3
CJNEA,#3AH,L4
L4:
JNCL3;判断接收数据是否在30H~39H之间
ANLA,#0FH;清接收数据高四位
MOV@R1,A;送数据接收区
INCR1
L3:
CJNER1,#64H,L1;判断是否接受完4个数据
MOVR1,#60H
MOV70H,60H
MOV71H,61H
MOV72H,62H
MOV73H,63H;若接收完则接收数据送显示区
L1:
RETI
ORG0003H;INT0中断服务程序
LJMP2500H
ORG2500H
CPLREN;允许接收位取反
MOVR1,#60H
RETI
END
8、汇编结果
9、电路连接
仿真前
仿真后
10、小结
通过本次课程设计,我有对51单片机有了更进一步的了解,对51单片机的更能结构更记得熟悉了。
课程设计是在原有的学科基础上所进行的更深层次的综合性较强的学习。
在本次课程设计中,我们3个人分为一组,彼此合作,经过几天的努力,终于基本上完成了本次课程设计。
在本次课程设计中,我们的课程设计题目为:
单片机与PC机的串口通信。
刚一接触这个题目,我们觉得找不到具体的着手点。
但在3个人的努力思考下,我们决定彼此分工,各自完成自己的任务。
这一学期我们学习了《单片机原理及应用》。
但由于所学时间不长,外加书本上的内容相对简单,我不太清楚如何去利用从中所学的知识,很难将书本上的基本理论与实际的问题结合起来。
但在这次单片机的课程设计中,我加深了对单片机原理及应用的认识,并结合自己学到的知识,掌握了根据硬件电路设计软件的方法,培养了自己的实际能力。
这也为我今后的实际应用奠定了基础。
总之,本次课程设计我完成了自己的任务,达到了课程设计的目的,为小组设计的成功贡献了自己的一份力量,并从中受益匪浅。
11、结束语
首先,理论课的重要性。
平时上理论课的时候总觉得理论课上的知识与实践总有很远的距离,不知道上理论课的重要性,所以在学的时候兴致缺缺,但在课程设计时,才发现根修房子最重要是打好地基一样,没有理论课所学知识的支撑设计根本无法完成。
其次,不刚愎自用。
在做该课程设计过程中遇到困难的时候,不要忘记学习除了一个人独自琢磨外还应多与同学切磋,一个人学习容易走进死胡同,而且进入死胡同后会大大的打击做设计的积极性,这时候应与同学多交流,从一个新的角度去看待问题、分析问题、解决问题,会有耳目一新的感觉。
再做起设计来事倍功半,最主要的是,从课程设计中学会了把课本上的理论知识实践化,还有良好的编程风格,注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。
如果注释和代码不一致,那就更加糟糕。
参考文献
1).胡汉才.单片机原理及其接口技术.清华大学出版社,2004
2).吴飞青等.单片机原理与应用实践指导.机械工业出版社2009.2
3).李建忠.单片机原理与应用(第二版).西安电子科技大学出版社
4).李朝青.单片机原理及接口技术(简明修订版).杭州:
北京航天航空大学出版社,1998
5).李广弟.单片机基础[M].北京:
北京航天航空大学出版社,1994
6).阎石.数字电子技术基础(第三版).北京:
高等教育出版社,1989
7).廖常初.现场总线概述[J].电工技术,1999
8).周良权,傅恩锡,李世馨.模拟电子技术基础(第二版).北京:
北京高等教育出版社,2001..12
9).李干林.《STARES598PCI试验仪微机原理实验指导书》[M].南京工
附录
附录A:
元件清单如下:
元件名称
数量(个)
元件名称
数量(个)
7SEG-MPX4-CA
1
CAP-POL
4
80C51
2
COMPIM
1
BUTTON
1
CRYSTAL
2
CAP
4
MAX232
1
CAP-ELEC
2
RES
2