ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:104.86KB ,
资源ID:12661125      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12661125.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第06章 单片机串行通信系统 习题解答.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第06章 单片机串行通信系统 习题解答.docx

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

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

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

4、T1的溢出率工作方式2:波特率有两种固定值。当SM0D=1时,波特率=(2SM0D/64)fosc=fosc/32当SM0D=0时,波特率=(2SM0D/64)fosc=fosc/64计算定时器的初值计算:4若fosc = 6MHz,波特率为2400波特,设SMOD =1,则定时/计数器T1的计数初值为多少?并进行初始化编程。 答:根据公式N=256-2SMODfosc /(24003212)= 242.98243 =F3HTXDA: MOV TMOD,#20H ;置T1定时器工作方式2 MOV TL1,#0F3H ;置T1计数初值. MOV TH1,#0F3H MOV PCON,#80H ;

5、置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,0xfe;/流水灯控制码,该数组被定义为全局变量sbit P17=P17;void delay(void) unsigned char m,n; for(m

6、=0;m200;m+) for(n=0;n250;n+) ; /*函数功能:发送一个字节的数据*/void Send(unsigned char dat) P17=0; /P1.7引脚输出锁存信号,对cd4094锁存 nop_(); /延时一个机器周期 _nop_(); /延时一个机器周期,保证锁存完成 P17=1; /结束对cd4094的锁存 SBUF=dat; /将数据写入发送缓冲器,启动发送 while(TI=0) /若没有发送完毕,等待 ; TI=0; /发送完毕,TI被置“1”,需将其清0/*函数功能:主函数*/ void main(void) unsigned char i; SC

7、ON=0x00; /SCON=0000 0000B,使串行口工作于方式0 while(1) for(i=0;i8;i+) Send(Tabi); /发送数据 delay(); /延时 三、Proteus仿真Proteus仿真1.在Proteus下,仿真实现6.6节内容。答:全自动洗衣机串行方式时间显示Proteus仿真为节省单片机并口资源,全自动洗衣机时间显示可用串口实现。一次洗衣时间一般不会超过99分钟,用2位LED数码管显示时间即可。电路如图6-9所示。图6-9 全自动洗衣机串行方式时间显示电路 图6-9中用AT89C51单片机串行口扩展2个并行口,接2位数码管组成显示电路。串行口工作于方

8、式0,与外接的2片移位寄存器74LS164连接。74LS164是一个8位串入并出的移位寄存器,功能是接收AT89C51单片机串行通信口输出的串行数据并转换成并行数据输出,从而驱动LED数码管显示。74LS164的1、2脚为数据输入端,接单片机串行口的RXD端(P3.0脚),74LS164的第8脚为时钟脉冲输入端(CLK),接单片机串行口的TXD端(P3.1脚),第9脚R为清零端,低电平清零,正常工作时接高电平。两只LED数码管采用共阴极静态显示方式。下列程序实现串行两位LED数码管时间显示,显示范围为0099分钟。使用串行口进行信息传送,程序编写相当简单,用户只需将需要显示的数据直接送串口发送

9、缓冲器,等待串行中断即可。汇编语言参考程序:ORG 0000H ;在0000H单元存放转移指令LJMP NAIN ;转移到主程序ORG 000BH ;定时器T0的中断入口地址 LJMP INTERRUPT ;转移到中断子程序ORG 0200H ;主程序从0200H开始MAIN: MOV TMOD,#01H ;使用定时器T0,工作方式1MOV TH0, #3CH ;置初T0值50msMOV TL0, #0B0HH MOV R0,#0 ;用于存1秒的计数次数SETB EA ;开中断总允许SETB ET0 ;允许T0中断 SETB TR0 ;启动计时LOOP: LCALL Display ;循环调用

10、显示子程序 SJMP LOOPTAB: DB 3FH,06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH ;09的共阴极段码DISPLAY: ;显示子程序(显示分钟)MOV DPTR, #TAB ;将表首地址赋给DPTRMOV A, 30H ;将30H中存放的分计数赋给累加器AMOV B, #0AH ;将10赋给累加器BDIV AB ;分计数除以10得十位数放在A中,个位数放在B中MOVX A, A+DPTR ;查表得十位数的显示段码MOV SBUF, A ;发送十位数L1: JBC TI, L2 ;判是否发送完,未发完循环等待,若发完则转L2SJMP L1

11、L2: MOV A, B ;将个位数赋给累加器AMOVX A, A+DPTR ;查表得个位数的显示段码MOV SBUF, A ;发送个位数L3: JBC TI, L4 ;判是否发送完,未发完循环等待,若发完则转L4SJMP L3L4: RET ;子程序返回INTERRUPT: ;中断服务子程序INC R0 ;每中断一次(50ms)加1CJNE R0, #20, L5 ;判是否中断20次,若不是则转L5中断返回,若是则顺序执行CLR R0 ;到1秒钟,清R0INC R1 ;秒计数加1CJNE R1, #60, L5 ;判秒是否计满60次,若未满则转L5中断返回,若满则顺序执行CLR R1 ;如果

12、秒计满60,将秒计数单元内容清0INC 30H ;分钟计数单元30H内容加1CJNE 30H, #99, L5 ;判分是否计满99次,若未满则转L5中断返回,若满则顺序执行CLR R1 ;如果分计满99,将秒计数单元内容清0CLR 30H ;同时将分计数单元内容清0L5: MOV TH0, #3CH ; 定时器重新赋初值MOV TL0, #0B0HH RETI ;中断返回C语言参考程序:#include / 包含51单片机寄存器定义的头文件unsigned char Tab =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /数组Tab放0

13、9的共阴极字段码unsigned char int_time; /设中断次数计数变量unsigned char second; /秒计数变量unsigned 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; /

14、计算出十位的值,查表转换成相应的段码送变量si SBUF=si; /发送显示十位while(TI=0); /等待发送完毕 TI=0; /发送完后清中断标志 ge=Tabm%10; /计算出十位的值,查表转换成相应的段码送变量ge SBUF=ge; /发送显示个位while(TI=0); /等待发送完毕 TI=0; /发送完后清中断标志 delay(); /调延时函数,是数码管显示有一定的亮度 delay(); void main(void) /主函数 TMOD=0x01; /使用定时器T0,工作方式1 EA=1; /开中断总允许ET0=1; /允许T0中断TH0=(65536-46083)/2

15、56; /定时器高八位赋初值(50ms)TL0=(65536-46083)%256; /定时器低八位赋初值TR0=1; /启动计时 PCON=0x00; /置SMOD=0 SCON=0x00; /串行口工作在方式0 while(1) /无限循环体 DisplayMinute(minute); /调用分钟显示子程序 void interserve(void ) interrupt 1 /计数器T0中断函数 int_time+; /每中断一次(50ms)加1if(int_time=20) / 50ms记20次为1秒(仿真时可将次数改小,减少等待时间)。 int_time=0; /中断计数变量清0

16、second+; /秒计数变量加1 if(second=60) /判是否到了60秒(仿真时可将次数改小,减少等待时间)。 second=0; /如果秒计满60,将秒计数变量清0 minute+; /分钟计数变量加1 if(minute=99) /判分钟是否等于99 minute=0; /如果分钟计满99,将分钟计数变量清0秒计数变量清0second=0; /将秒计数变量清0 TH0=(65536-46083)/256; /定时器重新赋初值TL0=(65536-46083)%256; 2.在Proteus下,仿真实现例6-2内容。答:电路如图6-8所示,试编制程序输入K1K8的状态信息,并存入内

17、部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 ;设定串行口为方式0 CLR ES ;禁止串行中断 SETB P1.0 ;锁存并行

18、输入数据 CLR P1.0 ;允许串行移位操作 SETB REN ;允许并启动接收(TXD发送移位脉冲) JNB RI,$ ;等待接收完毕 MOV 40H,SBUF ;存入K1K8状态数据 SJMP $ ;循环等待 END ;汇编结束C语言参考程序: # include /包含特殊功能寄存器库sbit P1_0=P10; /定义P1.0口,程序中用P1_0代替P1.0。void main() /主函数unsigned char i; /定义变量i,将接收到的数据放到变量i中。P1_0=1; /锁存并行输入数据P1_0=0; /允许串行移位操作SCON=0x00; /设定串行口为方式0while (!RI) ; /等待接收完毕RI=0; /清中断标志i=SBUF; /存入K1K8状态数据

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1