- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机实验单片机控制串行口实验-单机实验.doc
华 南 农 业 大 学 实 验 报 告
专业班次 08电信1 组别 200831120102
题目 实验七 单片机控制串口(单机) 姓 名 陈 建 泽 日期 2010.10.23
一、实验目的
1.掌握89C51串行口方式1的工作方式及编程方法。
2.掌握串行通讯中波特率的设置。
3.在给定通讯波特率的情况下,会计算定时时间常数。
二、实验设备:
STC89C52单片机实验板、串口下载线、USB连接线、电脑
实验原理
89C51单片机串行通讯的波特率随串行口工作方式选择的不同而不同,除与振荡频率f,电源控制寄存器PCON的SMOD位有关外,还与定时器T1的设置有关。
1.在工作方式0时,波特率固定,仅与系统振荡频率有关,其大小为f/12。
2.在工作方式2时,波特率也只固定为两种情况:
当SMOD=1时, 波特率=f/32
当SMOD=0时, 波特率=f/64
3.在工作方式1和3时,波特率是可变的:
当SMOD=1时, 波特率=定时器T1的溢出率/16
当SMOD=0时, 波特率=定时器T1的溢出率/32
其中,定时器T1的溢出率=f/(12*(256-N)),N为T1的定时时间常数。在实际应用中,往往是给定通讯波特率,而后去确定时间常数。
在实际应用中,往往是给定通讯波特率,而后去确定时间常数。例如:f=6.144MHZ,波特率等于1200,SMOD=0时,则1200=6144000/(12*32*(256-N)),计算得N=F2H。
时间常数可通过教材中P163的表7-2查询。
RS232串行通信是常见的通信方式之一,本板采用MAX232电平转换芯片使单片机的串口和计算机的串口相连进行通信。具体电路原理图下图。
成绩: 教师: 日期:
串口电路原理图
四、实验步骤
1.分析实验所用到的电路原理图,根据需要连接跳线帽。
2.本实验要求通过单片机的串行口循环向PC发送从0-100的数据。定时器T1采用方式1,波特率为1.2Kbps,不加倍,计算定时常数。
3.发送的数据能够在数码管中显示。
4.画出流程图。
5.根据流程图编写实验程序,并完成调试。
五、实验流程图
实验程序
根据实验流程图,编写出一下实验程序。为了能够实时显示当前所发送的数据,本例还增加了数码显示所发送的数据的子程序。
//*******************实验7 单片机控制串行口实验**************
;实验名称:单片机控制串行口实验-单机实验(从单片机发送数据到PC机)
;功 能:通过单片机的串行口循环向PC发送从0-100的数据。定时器T1采用方式
; 2,波特率为1.2Kbps,不加倍, 发送的数据能够在数码管中显示 。
;编 写 人:08电信1 陈建泽
;编写时间:2010年11月8日
//***********************程序代码如下**************************
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV TMOD,#20H ;定时器1为工作模式2,8位自动重装
MOV TH1,#0E6H ;@12MHz,误差为0.16%
MOV TL1,#0E6H
SETB TR1 ;启动定时器1
SETB SM1 ;设置串口在工作模式1,10为UART
MOV R0,#00H ;发送数据寄存器
LOOP1:INC R0 ;R0增1,初始发送1
CJNE R0,#101,LOOP2 ;加到101时,R0赋初值
MOV R0,#00H
AJMP LOOP1
LOOP2:MOV A,R0 ;把R0的值给A,再发送出去
MOV SBUF,A
JNB TI,$ ;查询方式,TI为1则发送了一个数据,继续执行
LCALL DIS ;调用数码管数据显示子程序
CLR TI ;显示完后,请中断标志位,发送下个数据
AJMP LOOP1
//************
文档评论(0)