欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

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

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

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

    1、单片机串行通信实验报告实验六 串行通信实验报告班级: 学号: : 教师: 一、双机通信由两套单片机试验装置两个实验小组共同完成该实验。我们U1为甲机,U2为乙机。甲机发送本机学生本人学号后8位给乙机,乙机接收该8位数据,并显示在8位数码管上。 电路如图1所示。要求串行通信方式为方式1,波特率为2400bit/s,不加倍,单片机外部晶振频率为。实验电路图:1、C源程序清单甲机U1代码:#include#define uchar unsigned charvoid delay(uchar i);void send(uchar temp);void init(void);void main(void

    2、) 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

    3、=0); TI=0; delay(50);/*延时函数*/void delay(uchar i) unsigned int j; for(i;i0;i-) for(j=0;j100;j+);乙机U2代码:#include#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;/共阴数码管段码uch

    4、ar 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=0 SCON = 0x50; /设置串口方式1且允许串口接收 REN=1 TMOD = 0x20; /设置T1为方式2 TH1 = 0xf4; TL1 = 0xf4; /设置波特率2400 TR

    5、1 = 1; /开启定时器1 ES = 1; /允许串行口中断 EA = 1; /允许全局中断/串口中断接收程序/void receive() interrupt 4 temp=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=开漏输

    6、出 P1M1 = 0X00; P1M0 = 0Xff; P2M1 = 0X00; P2M0 = 0Xff; /设定P1,P2推挽输出 while(1) for(i=1;i9;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 =

    7、h; for(k=0;k0;x-) for(y=25;y0;y-) for(z=100;z0;z-); 2、仿真结果3、问题分析在数码管显示这块,刚开始是这样写的在proteus上仿真的时候是没有任何问题的,但是后来在实验板上数码管显示特别暗,几乎看不出来有显示数字,想了想可能是没有加推挽输出,然后就将推挽输出代码加入,然后重新下载,但是结果和之前没什么不同。后来想既然这样的话,那就不是推挽的问题了,是这段显示代码有问题,于是将显示代码改为数码管的动态扫描。这样的话,在Proteus上仿真和实验板上都能出来结果了。二、单片机与PC机通信单片机向PC机发送数据。单片机向PC机重复发送本机学生本人

    8、学号,发送波特率为1200,采用方式1,单片机外部晶振频率为。Proteus仿真电路:由于是1200的波特率,需要注意的是:将这里要改为12001、C源程序清单#include#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)

    9、; 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;i0;i-) for(j=0

    10、;j100;j+);2、运行结果Proteus仿真:PC机:3、问题分析这个程序其实和上一个的甲机程序大同小异,需要注意的是,发送的是ASCll码。三、问题解答1、在该实验中,单片机串行口工作在什么工作方式下?说明该工作方式的特点。答:串行口是工作在方式1。方式1特点:1、8位UART接口。2、帧结构为10位,包括起始位为0,8位数据位,1位停止位。3、波特率由指令设定,由T1的溢出率决定。2、波特率是什么?怎样设置单片机串口通讯的波特率?如果实验要求通讯波特率为4800bps,怎样修改程序? 答:模拟线路信号的速率,以波形每秒的振荡数来衡量。如果数据不压缩,波特率等于每秒钟传输的数据位数,如

    11、果数据进行了压缩,那么每秒钟传输的数据位数通常大于调制速率,使得交换使用波特和比特/秒偶尔会产生错误。在信息传输通道中,携带数据信息的信号单元叫码元,每秒钟通过信道传输的码元数称为码元传输速率,简称波特率。波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变的次数来表示(也就是每秒调制的符号数),其单位是波特Baud,symbol/s。波特率是传输通道频宽的指标。波特率设置:串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。方式0的波特率 = fosc/12方式2的波特率 =(2SMOD/64 fosc 方式1的波特率 =(

    12、2SMOD/32T1溢出率方式3的波特率 =(2SMOD/32T1溢出率注意:SMOD为PCON寄存器的最高位即PCOM。T1 溢出率 = fosc /12256 TH1 -将该公式代人方式1或3 最后推出公式:TH1=256-(fosc*2SMOD)/(baudrate*12*32)如果你用方式2(波特率 =(2SMOD/64 fosc )的话,12M的晶振就不能得到9600波特率了(除非你改变你的晶振),所以你只能选择方式1或3。而且12M的晶振在串口传输时会有误差,就如你上面算的那样结果会有小数点,TH1又只能是整数的,所以传输时会有误差。如果是4800的波特率,将初始化程序里的TH1、TL1的值改为0xfa即可标准波特率 实际波特率 定时器预置数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


    注意事项

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

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开