串口通信技术的实现单片机课程设计.docx
- 文档编号:27314598
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:18
- 大小:300.22KB
串口通信技术的实现单片机课程设计.docx
《串口通信技术的实现单片机课程设计.docx》由会员分享,可在线阅读,更多相关《串口通信技术的实现单片机课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
串口通信技术的实现单片机课程设计
1单片机简介
如果将8位单片机的推出作为起点,那么单片机的发展历史大致可分为以下几个阶段。
第一阶段(1976-1978):
单片机的控索阶段。
以Intel公司的MCS–48为代表。
MCS–48的推出是在工控领域的控索,参与这一控索的公司还有Motorola、Zilog等,都取得了满意的效果。
这就是SCM的诞生年代,“单机片”一词即由此而来。
第二阶段(1978-1982)单片机的完善阶段。
Intel公司在MCS–48基础上推出了完善的、典型的单片机系列MCS–51。
第三阶段(1982-1990):
8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。
Intel公司推出的MCS–96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。
随着MCS–51系列的广应用,许多电气厂商竞相使用80C51为内核,将许多测控系统中使用的电路技术、接口技术、多通道A/D转换部件、可靠性技术等应用到单片机中,增强了外围电路路功能,强化了智能控制的特征。
第四阶段(1990—):
微控制器的全面发展阶段。
随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。
2硬件设计
2.1整体设计
在PC系统中都装有异步通信适配器,利用它可以实现异步串行通信。
适配器的核心元件是可编程的intel8251芯片,它使PC有能力与其他具有RS-232标准的接口的计算机或设备进行通信,而MCS-51单片机本身具有一个双全工的串行口,因此只要配上电平转换电路就可以和RS-232接口组成一个简单的通信通道。
简单的PC与单片机通信只要3根线就可以了,单片机的TXD、RXD与PC的RXD、TXD分别相连,连接地线。
由于51系列单片机的串行口使用的是TTL电平,因此在PC和单片机间要有RS-232电平转换电路,图1所示为PC与单片机的通信图。
89C51
TXD
232电平转换
RXD2
串行口
PC
RXD
RXD3
GND
GND5
图2.1PC机与单片机的通信图
2.2单片机选择
2.2.1AT89C51
AT89C51是美国ATMEL公司生产的低电压,高性能的CMOS8位单片机。
片内4Kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存储器(RAM),器件采用ATMEL公司的高密度、非易失存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。
AT89C51单片机可为提供许多高性价的应用场合,可灵活的应用于各种控制领域。
图2.2.1单片机AT89C51
2.2.2AT89C51功能特性描述
AT89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量中断结构,一个全双工串行通信口,片内震荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件的可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,窜行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但震荡器停止工作并禁止所有部件工作直到下一个硬件复位。
2.2.3AT89C51引脚功能说明
Vcc:
电源电压
GND:
地
P0口:
PO口是一组8位漏极开路行双向I/O口,也既地址/数据总线复用口。
P1口:
P1口是一个内部上拉电阻的8位双向I/O口,P1的输入缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
P2口:
P2口是一个带有内部上拉电阻的8位双向I/O口,
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口,,P1的输入缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
RST:
复位输出。
当震荡器工作时,RST引脚出现两个机器周期以上高电平使机器复位。
ALE/
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节,即使不访问外部字节,ALE仍时钟震荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟脉冲或用于定时目的。
:
程序存入允许(
)输出的是外部程序存储器的读选通信号。
EA/VPP:
外部访问允许。
·XTAL1:
震荡器反向放大器及内部时钟的输入端。
XAAL2:
震荡器反向放大器的输出端。
2.2.4AT89C51的串行接口
AT89C51单片机内部有一个全双工的串行接收和发射缓冲器(SBUFF),这两个在物理上独立的接收发射器,即可以接收也可以发射数据,但接收缓冲器只可以读出不能写入,而发送缓冲器只能写入不能读出,它们的地址是99H。
这个通信口即可以用于网络通信,亦可以实现串行异步通信,还可以构成同步移位寄存器使用。
如果在串行口的输入输出引脚上加上电平转换器,就可以方便的构成标准的RS-232接口。
SBUF为串行口的收发缓冲器,它是一个可寻址的专用寄存器,其中包含了接收器和发射器寄存器,可以实现全双工通信。
但这两个寄存器具有同一地址(99H)。
MCS-51的串行数据传输很简单,只要向缓冲器写入数据就可发送数据。
而从接收缓冲器读出数据既可接收数据。
SCON控制寄存器,它是一个可寻址的专用寄存器,用于串行数据通信的控制,单元地址是98H,其结构格式如下:
表1寄存器SCON结构
SCON
D7
D6
D5
D4
D3
D2
D1
D0
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
位地址
9FH
9EH
8DH
9CH
9BH
9AH
99H
98H
图2.2.4.1SCON寄存器结构
特殊功能寄存器PCON,主要是CHMOS型单片机的电源控制而设置的专用寄存器,单元地址为87H其机构格式如下表:
PCON
D7
D6
D5
D4
D3
D2
D1
D0
位符号
SMOD
GF1
GF0
PD
IDL
图2.2.4.2特殊功能寄存器PCON
2.2.5串行口工作方式的选择
波特率(BoudRate)就是在串口通信中每秒能够发送的位数。
MSC-51串行端口在四种工作模式下有不同的波特率计算方法。
其中,模式0和模式2波特率计算很简单;模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择。
在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。
在此模式下波特率计算公式为:
波特率=(1+SMOD)*晶振频率/(384*(256-TH1))
其中,SMOD——寄存器PCON的第7位,称为波特率倍增位;TH1——定时器的重载值。
在选择波特率的时候需要考虑两点:
首先,系统需要的通信速率。
这要根据系统的运作特点,确定通信的频率范围。
然后考虑通信时钟误差。
使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。
为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。
2..3、RS-232简介
2.3.1RS-232电平转换器—MAX232
图2.3.1RS-232电路
RS-232规定了自己的电气标准,由于它是在TTL电路之前研制的,因此它的电平不是+5V和地,而是采用负逻辑,即逻辑“0”:
+5V~—5V,逻辑“1”:
—5V~—15V。
因此RS-232不能和TTL电平直接相连,必须进行电平转换。
本设计选用MAX232。
管脚说明如下
①C0+、C0-、C1+、C1-是外接电容端;
②R1IN、R2IN是2路RS-232C电平信号接收输入端;
③RlOUT、R2OUT是2路转换后的TTL电平接收信号输出端,送8051的RXD接收端;
④TlIN、T2IN是2路TTL电平发送输入端,接8051的TxD发送端;
⑤TlOUT、T2OUT是2路转换后的发送RS-232C电平信号输出端,接传输线;
⑥V+经电容接电源+5V;
⑦V-经电容接地。
2.3.2RS-232的接口信号
RS-232规标准接口有25条线,4条数据线、11条控制线、3条定时线、7条备用和未定义线。
常用的只有9根,它们是:
2个数据信号:
发送TXD;接收RXD。
1个信号地线:
SG。
6个控制信号:
DSR;数传机(即modem)准备好,DataSetReady.
DTR;数据终端(DTE,即微机接口电路,如Intel8250/8251,16550)准备好,DataTerminalReady。
RTS;DTE请求DCE发送(RequestToSend)。
CTS;DCE允许DTE发送(ClearToSend),该信号是对RTS信号的回答。
DCD;数据载波检出,DataCarrierDetection当本地DCE设备(Modem)收到对方的DCE设备送来的载波信号时,使DCD有效,通知DTE准备接收,并且由DCE将接收到的载波信号解调为数字信号,经RXD线送给DTE。
RI;振铃信号Ringing当DCE收到交换机送来的振铃呼叫信号时,使该信号有效,通知DTE已被呼叫。
3数码显示管
要用单片机构成发射机,就需要一个人机界面。
常采用的方式是LED数码管显示测试结果,用一个小键盘执行某些功能,如请零、预置值、改变测量范围等。
3.1LED显示器的工作原理
LED显示是用发光二极管显示字段的显示器件,也可称为数码管,其外形结构如图所示,由图可见它由8个发光二极管构成,通过不同的组合可用来显示0~9、A~F及小数点。
图3.1.1“8”字型数码管
LED显示器分为共阴极和共阳极,共阴极是将8个发光二极管阴极连接在一起作为公共端,而共阳极是将8个发光二极管的阳极连接在一起作为公共端。
我们这次就是采用的共阳极LED,所以这里要介绍共阳极数码管。
如图所示,LED显示器有静态和动态显示两种方式,静态显示是将共阴极联到一起接地,每位的显示段(a-dp)分别与一个8位的锁存器输出相连。
由于显示的各位可以相互独立,各位可以互相显示,只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。
并且由于各位由一个8位锁存器控制段选线,故在同一时间内每一位显示的字符可以不同。
段码
D7
DP
D6
g
D5
f
D4
e
D3
d
D2
c
D2
b
D0
a
字形
3FH
0
0
1
1
1
1
1
1
0
06H
0
0
0
0
0
0
1
0
1
5BH
0
1
0
1
1
0
1
1
2
4FH
0
1
0
0
1
1
1
1
3
66H
0
1
1
0
0
1
1
0
4
6DH
0
1
1
0
1
1
0
1
5
7DH
0
1
1
1
1
1
0
1
6
07H
0
0
0
0
0
1
1
1
7
7FH
0
1
1
1
1
1
1
1
8
6FH
0
1
1
0
1
1
1
1
9
77H
0
1
1
1
0
1
1
1
a
7CH
0
1
1
1
0
1
1
1
b
39H
0
0
1
1
1
0
0
1
c
5EH
0
1
0
1
1
1
1
0
d
79H
0
1
1
1
1
0
0
1
e
71H
0
1
1
1
0
0
0
0
f
图3.1.2段码与字型的关系
这种方式占用锁存器较多。
动态显示是将所有位的段选线相应的并联在一起,由一个8位的I/O口控制,形成段选线的多路复用。
而各位的阴极分别由相应的I/O口控制,实现各位的分时选通。
要LED能够显示相应的字符,就必须采用动态扫描方式,只要每位显示的时间足够短,则可造成多位同时显示的假象,达成显示的目的。
在数字电路中常常要把数据或运算结果通过半导体数码管、液晶数码和荧光数码管,用十进制数显示出来。
发光二极管的工作电压为1.5-3.0伏,工作电流为己毫安到几十毫安,寿命很长。
半导体数码管将十位数分成七个字段,每段为一个发光二极管,其字形结构如图所示,选择不同的字段发光,可显示出不同的字型。
例如:
当a,b,c,d,e,f,g七个字段同时亮时,显示8,a,b,c段亮时显示出1。
3.2原理图
图3.2数码管原理图
4软件编程及调试
双方约定:
波特率为2400bit/s,通信格式为8个数据位,一个停止位,无奇偶校验位。
4.1单片机通讯软件
单片机通过中断方式接收PC机发送的数据,并回送。
根据信息格式,可以设定单片机的串行口工作在方式1。
在串行口方式1中,波特率是由定时器T1产生的。
如晶振为6MHZ,波特率为2400bit/s,这时T1工作在方式2(自动重新装入初值)。
经计算,T1的初始值应为F3H,SMOD=1。
程序框图如图所示:
图4.1.1程序流程图
图4.1.2中断服务子程序流程图
程序设计如下:
ORG0000H
LJMPSTART;主程序入口
ORG0023H
LJMPINTS;串行口中断入口
ORG0100H
START:
MOVTMOD,#20H;初始化定时器1为方式2
MOVTL1,#0F3H;与2400波特率相应的定时器初值
MOVTH1,#0F3H
SETBTR1;启动定时器1
MOVSCON,#50H;串行口工作在方式1,允许接收
MOVPCON,#80H;SMOD=1
SETBEA;开串行口中断
SETBES;允许中断
LOOP:
SJMPLOOP;等待数据接收
INTS:
CLREA;禁止中断
CLRRI;清除中断标志RI
MOVA,SBUF;从SBUF取接收到的数据
MOVSBUF,A;回送
WAIT:
JNBTI,WAIT;判断回送是否完毕
CLRTI;清除TI标志
POPA;发送完,恢复现场
POPDPH
POPDPL
SETBEA;允许中断,准备接收新的数据
RETI;中断返回
END
4.2PC机通信软件
PC机方面的通信程序用汇编语言编写。
程序如下:
stackSegmentparastack'code'
Db256dup(0)
Stackends
CodeSegmentparapublic'code'
Startprocfar
Assumecs:
code,ss:
stack
PUSHDS
MOVAX,0
PUSHAX
CLI
INPUT:
MOVAL,80H;置DLAB=1
MOVDX,3FBH;写入通信线控制寄存器
OUTDX,AL
MOVAL,30H;置产生2400b/s波特率除数低位
MOVDX,3F8H
OUTDX,AL;写入除数锁存器低位
MOVAL,00H;置产生2400b/s波特率除数高位
MOVDX,3F9H
OUTDX,AL;写入除数锁存器高位
MOVAL,03H;设置数据格式
MOVDX,3FBH;写入通信线路控制寄存器
OUTDX,AL
MOVAL,00H;禁止所有中断
MOVDX,3F9H
OUTDX,AL
WAIT1:
MOVDX,3FDH;发送保持寄存器不空则循环等待
INAL,DX
TESTAL,20H
JZWAIT1
WAIT2:
MOVAH,1;检查键盘缓冲区,无字符则循环等待
INT16H
JZWAIT2
MOVAH,0;若有,则取键盘字符
INT16H
SEND:
MOVDX,3F8H;发送键入的字符
OUTDX,AL
RECE:
MOVDX,3FDH;检查接收数据是否准备好
INAL,DX
TESTAL,01H
JZRECE
TESTAL,1AH;判断接收到的数据是否出错
JNZERROR
MOVDX,3F8H
INAL,DX;读取数据
ANDAL,7EH;去掉无效位
PUSHAX
MOVBX,0;显示接收字符
MOVAH,14
INT10H
POPAXCMPAL,0DH;接到的字符若不是回车则返回
JNZWAIT1
MOVAL,0AH;是回车则回车换行
MOVBX,0
MOVAH,14H
INT10H
JMPWAIT1
ERROR:
MOVDX,3F8H;读接收寄存器,清除错误字符
INAL,DX
MOVAL,'?
';显示‘?
’号
MOVBX,0
MOVAH,14H
INT10H
JMPWAIT1;继续循环
Startends
Codeends
endstart
4.3调试
将PC机键盘的输入发送给单片机,单片机收到PC机发来的数据后,回送同一数据给PC机,并在屏幕上显示出来。
只要屏幕上显示的字符和所键入的字符相同,说明两者之间的通信正常。
5心得体会
通过这次的课程设计,使我对单片机有了更深的认识,从理论和实践上都得到了很大的提高,所以这次任务的完成是我学到了很多东西。
首先,丰富了自己的知识面,学到了以前没能学通的东西,具体了解了怎样去完成一个电路的设计:
从流程图、电路图、焊接电路板、检查电路板、仿真到烧片一整套东西。
从课程设计中,学到了单片机AT89C51的内部结构及其工作原理,了解了时钟电路和控制电路的工作原理,还有共阳极数码管的工作原理,巩固了汇编语言的使用能力,提高了自己动手的能力,学到了很多经验,并且提高了自己分析问题的能力和创新能力,得到了理论联系实际的机会,做出了成果。
使自己在硬件设计方面树立了信心,为以后从事这方面的工作打好了基础,这也是这次毕业设计的最大收获。
这次的课程设计总的来说还是很成功的,自己从中学到很多,也发现了不少问题,为自己以后的学习、进步打下了不错的基础。
参考文献
1.姚福安,电子电路设计与实践,山东科学技术出版社,2001年10月
2.涂时亮,单片机软件设计技术,重庆科技文献出版社,1987
3.张毅刚,新编MCS51实用汇编程序设计,哈尔滨工业大学出版社,2003
4.康华光,电子技术基础,高教出版社,2003
5.胡汉才,单片机原理及接口技术,清华大学出版社,1996
附录:
原理图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串口 通信 技术 实现 单片机 课程设计