欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    单片机串行通信实验报告.doc

    • 资源ID:43240723       资源大小:319.50KB        全文页数:13页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机串行通信实验报告.doc

    实验六 串行通信实验报告班级: 学号: 姓名: 教师: 一、双机通信由两套单片机试验装置(两个实验小组)共同完成该实验。我们U1为甲机,U2为乙机。甲机发送本机(学生本人)学号后8位给乙机,乙机接收该8位数据,并显示在8位数码管上。 电路如图1所示。要求串行通信方式为方式1,波特率为2400bit/s,不加倍,单片机外部晶振频率为11.0592M。实验电路图:1、C源程序清单甲机(U1)代码:#include<STC12C5A60s2.h>#define uchar unsigned charvoid delay(uchar i);void send(uchar temp);void init(void);void main(void)init(); delay(200);while(1) send(''); send(1); send(2); send(1); send(3); send(2); send(2);send(3); send(1);/*初始化*/void init(void) SCON=0x40; /串口模式1 只发送不接收 TMOD=0x20; /T1 工作模式2 TH1=0xf4; /波特率2400 TL1=0xf4; PCON=0x00; /不加倍 SMOD=0 TI=0; TR1=1; /开定时中断/*发送函数*/void send(uchar temp)SBUF=temp;while(TI=0); TI=0;delay(50);/*延时函数*/void delay(uchar i) unsigned int j; for(i;i>0;i-) for(j=0;j<100;j+);乙机(U2)代码:#include<STC12C5A60s2.h>#define uchar unsigned char#define uint unsigned intvoid init(void);void delay(uchar t);void xianshi(void);uchar code distable = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/共阴数码管段码uchar code wi = 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;uchar tab9 = 0,0,0,0,0,0,0,0,0;uchar i=0,temp;uint a,b,c,d,e,f,g,h;void main()init();while(1)xianshi();/初始化/void init(void)PCON = 0x00; /不加倍SMOD=0SCON = 0x50; /设置串口方式1且允许串口接收 REN=1TMOD = 0x20; /设置T1为方式2TH1 = 0xf4;TL1 = 0xf4; /设置波特率2400TR1 = 1; /开启定时器1ES = 1; /允许串行口中断EA = 1; /允许全局中断/串口中断接收程序/void receive() interrupt 4temp=SBUF;while(RI=0);RI=0;if(temp='')temp=0;tabi=temp;i+;if(i =9)i=0;a=tab1;b=tab2;c=tab3;d=tab4;e=tab5;f=tab6;g=tab7;h=tab8;/数码管显示/void xianshi(void)uchar i,dm,wx;/m1:m0 00=标准; 01=推挽; 10=输入; 11=开漏输出P1M1 = 0X00;P1M0 = 0Xff;P2M1 = 0X00;P2M0 = 0Xff; /设定P1,P2推挽输出while(1) for(i=1;i<9;i+) /rami=tabi; dm=distabletabi;/取显示段码 wx=wii-1; /取位选码 P1=0x00; /关显示 P2=dm; /段码赋给P2口 P1=wx; /点亮位选的那个数码管 delay(1); /延时/*uchar k,ram8;ram0 = a;ram1 = b;ram2 = c;ram3 = d;ram4 = e;ram5 = f;ram6 = g;ram7 = h;for(k=0;k<8;k+)P2=distableramk;P1=wik;P2=0x00;delay(1);*/延时函数/void delay(uchar t )uchar x,y,z;for(x=t;x>0;x-)for(y=25;y>0;y-)for(z=100;z>0;z-); 2、仿真结果3、问题分析在数码管显示这块,刚开始是这样写的在proteus上仿真的时候是没有任何问题的,但是后来在实验板上数码管显示特别暗,几乎看不出来有显示数字,想了想可能是没有加推挽输出,然后就将推挽输出代码加入,然后重新下载,但是结果和之前没什么不同。后来想既然这样的话,那就不是推挽的问题了,是这段显示代码有问题,于是将显示代码改为数码管的动态扫描。这样的话,在Proteus上仿真和实验板上都能出来结果了。二、单片机与PC机通信单片机向PC机发送数据。单片机向PC机重复发送本机(学生本人)学号,发送波特率为1200,采用方式1,单片机外部晶振频率为11.0592M。Proteus仿真电路:由于是1200的波特率,需要注意的是:将这里要改为12001、C源程序清单#include<reg51.h>#define uchar unsigned charvoid delay(uchar i);void send(uchar temp);void init(void);void main(void)init(); /delay(50);while(1) send(0x31); send(0x32); send(0x31); send(0x33); send(0x32); send(0x32);send(0x33); send(0x31);send(0x20);/*初始化*/void init(void) SCON=0x40; /串口模式1 只发送不接收 TMOD=0x20; /T1 工作模式2 TH1=0xe8; /波特率1200 TL1=0xe8; PCON=0x00; /不加倍 SMOD=0 TI=0; TR1=1; /开定时中断/*发送函数*/void send(uchar temp)SBUF=temp;while(TI=0); TI=0;delay(50);/*延时函数*/void delay(uchar i) unsigned int j; for(i;i>0;i-) for(j=0;j<100;j+);2、运行结果Proteus仿真:PC机:3、问题分析这个程序其实和上一个的甲机程序大同小异,需要注意的是,发送的是ASCll码。三、问题解答1、在该实验中,单片机串行口工作在什么工作方式下?说明该工作方式的特点。答:串行口是工作在方式1。方式1特点:(1)、8位UART接口。  (2)、帧结构为10位,包括起始位(为0),8位数据位,1位停止位。  (3)、波特率由指令设定,由T1的溢出率决定。2、波特率是什么?怎样设置单片机串口通讯的波特率?如果实验要求通讯波特率为4800bps,怎样修改程序? 答:模拟线路信号的速率,以波形每秒的振荡数来衡量。如果数据不压缩,波特率等于每秒钟传输的数据位数,如果数据进行了压缩,那么每秒钟传输的数据位数通常大于调制速率,使得交换使用波特和比特/秒偶尔会产生错误。在信息传输通道中,携带数据信息的信号单元叫码元,每秒钟通过信道传输的码元数称为码元传输速率,简称波特率。波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变的次数来表示(也就是每秒调制的符号数),其单位是波特(Baud,symbol/s)。波特率是传输通道频宽的指标。波特率设置:串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。方式0的波特率 = fosc/12方式2的波特率 =((2SMOD)/64) fosc 方式1的波特率 =((2SMOD)/32)(T1溢出率)方式3的波特率 =((2SMOD)/32)(T1溢出率)注意:SMOD为PCON寄存器的最高位(即PCOM<7>)。T1 溢出率 = fosc /12×256 (TH1) -将该公式代人方式1或3 最后推出公式:TH1=256-(fosc*2SMOD)/(baudrate*12*32)如果你用方式2(波特率 =((2SMOD)/64) fosc )的话,12M的晶振就不能得到9600波特率了(除非你改变你的晶振),所以你只能选择方式1或3。而且12M的晶振在串口传输时会有误差,就如你上面算的那样结果会有小数点,TH1又只能是整数的,所以传输时会有误差。如果是4800的波特率,将初始化程序里的TH1、TL1的值改为0xfa即可11.0592MHZ的晶振标准波特率 实际波特率 定时器预置数150 150 0X41 200 200 0X70 300 300 0XA0 600 600 0XD0 1200 1200 0XE8 2400 2400 0XF4 4800 4800 0XFA 7200 7200 0XFC 9600 9600 0XFD 14400 14400 0XFE 28800 28800 0XFF

    注意事项

    本文(单片机串行通信实验报告.doc)为本站会员(知****量)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开