单片机串行通信系统习题解答_第1页
单片机串行通信系统习题解答_第2页
单片机串行通信系统习题解答_第3页
单片机串行通信系统习题解答_第4页
单片机串行通信系统习题解答_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 6 章单片机串行通信系统习题解答一、填空题1在串行通信中,把每秒中传送的二进制数的位数叫波特率。2当 SCON中的 M0M1=10时,表示串口工作于方式2,波特率为fosc/32 或 fosc/64。3 SCON中的 REN=1表示允许接收。4 PCON中的 SMOD=1表示波特率翻倍。5 SCON中的 TI=1 表示串行口发送中断请求。6 MCS-51单片机串行通信时,先发送低位,后发送高位。7 MCS-51单片机方式 2 串行通信时,一帧信息位数为11位。8设 T1 工作于定时方式2,作波特率发生器,时钟频率为11.0592MHz,SMOD=0,波特率为2.4K 时, T1 的初值为F

2、AH。9 MCS-51单片机串行通信时,通常用指令MOVSBUF,A启动串行发送。10 MCS-51单片机串行方式0 通信时,数据从P3.0引脚发送 / 接收。二、简答题1串行口设有几个控制寄存器?它们的作用是什么?答:串行口设有 2 个控制寄存器, 串行控制寄存器SCON和电源控制寄存器PCON。其中 PCON中只有 PCON.7的 SMOD与串行口的波特率有关。在SCON中各位的作用见下表:SCOND7D6D5D4D3D2D1D0位名称SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能工作方式多机通信控 接收 发 送第 接 收 第 发 送

3、 中 接收中选择制允许9 位9 位断断2 MCS-51单片机串行口有几种工作方式?各自的特点是什么?答:有 4 种工作方式。各自的特点为:SM0SM1方式功能波特率00方式 0移位寄存器方式fosc/1201方式 18 位异步通信方式可变10方式 29 位异步通信方式fosc/32或 fosc/6411方式 39 位异步通信方式可变3 MCS-51单片机串行口各种工作方式的波特率如何设置,怎样计算定时器的初值?答:串行口各种工作方式的波特率设置:工作方式O:波特率固定不变,它与系统的振荡频率fosc 的大小有关,其值为fosc/12 。工作方式1 和方式 3:波特率是可变的,波特率=( 2SM

4、OD/32)定时器T1 的溢出率工作方式2:波特率有两种固定值。当 SM0D=1时,波特率 =( 2SM0D/64) fosc=fosc/32当 SM0D=0时,波特率 =( 2SM0D/64) fosc=fosc/64计算定时器的初值计算:2SMODf OSC2SMODf OSCN 256B256B32 123844若 fosc = 6MHz ,波特率为2400 波特,设SMOD =1,则定时 / 计数器 T1 的计数初值为多少?并进行初始化编程。答:根据公式SMODN=256-2 fosc /( 2400 32 12)= 242.98 243 =F3HTXDA: MOV TMOD,#20H

5、; 置 T1 定时器工作方式2MOVTL1,#0F3H;置 T1 计数初值 .MOVTH1,#0F3HMOVPCON,#80H;置 SMOD =15用 8051 串行口外接CD4094扩展 8 位并行输出口, 驱动 8 个 LED发光二极管。 画出硬件电路图,编写程序,使LED发光二极管从左到右依次闪亮。答:电路图如下LED发光二极管从左到右循环点亮的C51参考程序:#include/包含 51 单片机寄存器定义的头文件#include / 包含函数 _nop_()定义的头文件unsigned char code Tab=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0

6、xfe;/ 流水灯控制码, 该数组被定义为全局变量sbit P17=P17;void delay(void)unsigned char m,n;for(m=0;m200;m+)for(n=0;n250;n+);/*函数功能:发送一个字节的数据*/void Send(unsigned char dat)P17=0;/P1.7 引脚输出锁存信号,对cd4094 锁存nop_();/延时一个机器周期_nop_();/延时一个机器周期,保证锁存完成P17=1;SBUF=dat;while(TI=0)/结束对 cd4094 的锁存/将数据写入发送缓冲器,启动发送/ 若没有发送完毕,等待;TI=0;/发送

7、完毕, TI 被置“ 1”,需将其清0/*函数功能:主函数*/void main(void)unsigned char i;SCON=0x00;/SCON=0000 0000B ,使串行口工作于方式0while(1)for(i=0;iC2R1X113470R33p33p2&1DP00VCCR24470RR3P01CRYSTAL5470RFREQ=12MHzR4P02U16470RP00R5P03193910470RP01XTAL1P0.0/AD0P0238R6P04P0.1/AD1470RP033711P0.2/AD2P041836R7P05XTAL2P0.3/AD3470RP053512P0

8、.4/AD4P0634P06P0.5/AD533139P0.6/AD6DS0RST32P0.7/AD774164R01AT89C51P2.0/A821VCC221kP2.1/A9U32329P2.2/A10249RSRG8PSENP2.3/A113025C3ALEP2.4/A1231268C1/-EAP2.5/A13P2.6/A142733p28R8470RP2.7/A1513P101P1.0P3.0/RXD102&1DP10P11211R9470RP12R02P1.1P3.1/TXD43P1.2P3.2/INT012R10P14P13C470R4P1.3P3.3/INT1135470RP14

9、5P1.4P3.4/T014P15C6156R11P12P16V7P1.5P3.5/T116470R8P1.6P3.6/WR17R12P14DS1P1.7P3.7/RD10470RR13P1411470RR14P1512470RP161374164图 6-9 中用 AT89C51单片机串行口扩展 2 个并行口,接2 位数码管组成显示电路。图 6-9 全自动洗衣机串行方式时间显示电路位串串行口工作于方式 0 ,与外接的 2 片移位寄存器 74LS164 连接。 74LS164 是一个 8入并出的移位寄存器, 功能是接收 AT89C51 单片机串行通信口输出的串行数据并转换成并行数据输出,从而驱动

10、LED 数码管显示。 74LS164 的 1 、2 脚为数据输入端,接单片机串行口的 RXD 端( P3.0脚),74LS164 的第 8 脚为时钟脉冲输入端( CLK ),接单片机串行口的 TXD 端( P3.1脚),第 9 脚 R 为清零端,低电平清零,正常工作时接高电平。两只LED 数码管采用共阴极静态显示方式。下列程序实现串行两位LED 数码管时间显示,显示范围为00 99 分钟。使用串行口进行信息传送, 程序编写相当简单, 用户只需将需要显示的数据直接送串口发送缓冲器,等待串行中断即可。汇编语言参考程序:ORG 0000H;在 0000H 单元存放转移指令LJMP NAIN;转移到主

11、程序ORG 000BH;定时器 T0 的中断入口地址LJMP INTERRUPT;转移到中断子程序ORG 0200H;主程序从 0200H 开始MAIN: MOV TMOD,#01H;使用定时器 T0,工作方式 1MOV TH0, #3CH;置初 T0 值 50msMOV TL0, #0B0HHMOV R0,#0;用于存 1 秒的计数次数SETB EA;开中断总允许SETB ET0;允许 T0 中断SETB TR0;启动计时LOOP: LCALLDisplay; 循环调用显示子程序SJMPLOOPTAB: DB 3FH,06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7F

12、H, 6FH; 09 的共阴极段码DISPLAY:;显示子程序(显示分钟)MOVDPTR,#TAB;将表首地址赋给 DPTRMOVA, 30H;将 30H 中存放的分计数赋给累加器AMOVB, #0AH;将 10 赋给累加器 BDIVAB; 分计数除以 10 得十位数放在A 中,个位数放在B 中MOVXA,A+DPTR;查表得十位数的 显示段码MOVSBUF,A;发送十位数L1: JBC TI,L2;判是否发送完,未发完循环等待,若发完则转L2SJMPL1L2: MOVA,B;将个位数赋给累加器 AMOVXA, A+DPTR;查表得个 位数的显示段码MOVSBUF,A;发送个位数L3: JBC

13、 TI,L4;判是否发送完,未发完循环等待,若发完则转L4SJMPL3L4: RET;子程序返回INTERRUPT:;中断服务子程序INC R0;每中断一次( 50ms)加 1CJNE R0, #20, L5;判是否中断 20 次,若不是则转 L5中断返回,若是则顺序执行CLR R0;到 1 秒钟,清 R0INC R1;秒计数加 1CJNE R1, #60, L5;判秒是否计满60 次,若未满则转L5中断返回,若满则顺序执行CLR R1;如果秒计满 60,将秒计数单元内容清0INC 30H;分钟计数单元30H 内容加 1CJNE 30H, #99, L5;判分是否计满99 次,若未满则转L5中

14、断返回,若满则顺序执行CLR R1;如果分计满 99,将秒计数单元内容清0CLR 30H;同时将分计数单元内容清 0L5: MOV TH0, #3CH; 定时器重新赋初值MOV TL0, #0B0HHRETI;中断返回C语言参考程序:#include/包含 51 单片机寄存器定义的头文件unsigned char Tab =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/数组 Tab 放 09 的共阴极字段码unsigned char int_time;/设中断次数计数变量unsigned char second;/秒计数变量unsigne

15、d char minute;/分钟计数变量void delay(void)/延时函数unsigned char n,j;/设计数循环变量for(j=0;j200;j+);/通过循环延时for(n=0;n200;n+); /通过循环延时void DisplayMinute(unsigned char m) /显示函数 unsigned char ge, si;/定义变量 ge、 si ,用于存放个位、十位si=Tabm/10;/计算出十位的值,查表转换成相应的段码送变量siSBUF=si;/发送显示十位while(TI=0);/等待发送完毕TI=0;/发送完后清中断标志ge=Tabm%10;/计

16、算出十位的值,查表转换成相应的段码送变量geSBUF=ge;/发送显示个位while(TI=0);/等待发送完毕TI=0;/发送完后清中断标志delay();/调延时函数,是数码管显示有一定的亮度delay();void main(void)/主函数TMOD=0x01;/使用定时器T0, 工作方式1EA=1;/开中断总允许ET0=1;/允许T0 中断TH0=(65536-46083)/256; /定时器高八位赋初值(50ms)TL0=(65536-46083)%256; /定时器低八位赋初值TR0=1;/启动计时PCON=0x00;/置SMOD=0SCON=0x00;/串行口工作在方式0whi

17、le(1)/无限循环体DisplayMinute(minute);/调用分钟显示子程序void interserve(void ) interrupt 1/计数器T0 中断函数int_time+;/每中断一次(50ms)加1if(int_time=20)/50ms记20 次为1 秒(仿真时可将次数改小,减少等待时间) 。int_time=0;/中断计数变量清0second+;/秒计数变量加1if(second=60)/判是否到了60 秒(仿真时可将次数改小,减少等待时间)。second=0;/如果秒计满60,将秒计数变量清0minute+;/分钟计数变量加1if(minute=99) /判分钟

18、是否等于99 minute=0; /如果分钟计满99,将分钟计数变量清0 秒计数变量清0second=0;/将秒计数变量清0TH0=(65536-46083)/256;/TL0=(65536-46083)%256;定时器重新赋初值2. 在 Proteus 下,仿真实现例 6-2 内容。答:电路如图6-8 所示,试编制程序输入K1 K8 的状态信息,并存入内部RAM 40H。图 6-8串行通讯方式0 应用4014 是一个并入串出转换芯片, Q8端为串行数据输出端, CLK为时钟脉冲输入端, P/S 为操作控制端, P/S=1:锁存并行输入数据, P/S=0:允许串行移位操作。要完成题目的要求,应先将开关状态锁存,然后串行传送给单片机。在 Proteus 下画出电路图。汇编语言参考程序如下 :ORG 0000H;上电后程序从00000H 开始,在0000H单元存放转移指令LJMP KIN;转移到主程序ORG 0100H;主程序从 0100H 开始KIN: MOV SCON,#00H; 定串行口 方式0CLR ES;禁止串行中断SETB P1.0; 存并行 入数据CLR P1.0;允 串行移位操作SETB REN;允 并启 接收(TXD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论