单片机原理及应用.doc_第1页
单片机原理及应用.doc_第2页
单片机原理及应用.doc_第3页
单片机原理及应用.doc_第4页
单片机原理及应用.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

一、实验目的 1掌握单片机串行口工作方式; 2掌握双机通讯的接口电路设计及程序设计。 二、实验设备 1. pc机;2单片机最小系统教学实验模块; 3. 数码管显示模块三、实验内容 1双机通信由两套单片机试验装置(两个实验小组)共同完成该实验。我们u1为甲机,u2为乙机。甲机发送本机(学生本人)学号后8位给乙机,乙机接收该8位数据,并显示在8位数码管上。乙机接收完毕后,将本机(乙机)的学号后8位发送回甲机,甲机显示在数码管上。 电路如图1所示。 要求串行通信方式为方式1,波特率为2400bit/s,不加倍,单片机外部晶振频率为11.0592m。(1)、程序流程图开始初始化串口判断数据是否传输 y存入sbuf判断数据是否接收接收存入sbuf的值 y显示数据结束(2)、源程序清单甲机#include void delay(void);void send(unsigned char dat);#define uchar unsigned char;#define uint unsigned int;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;uchar code num=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;uchar ram=0x01,0x02,0x01,0x03,0x02,0x02,0x01,0x01;uchar wi=0,wx=0,dx;main() p1m1 = 0x00;p1m0 = 0xff;p2m1 = 0x00;p2m0 = 0xff; /设定p1,p2推挽输出scon=0x50;/方式1pcon=0x00;/波特率不加倍tmod=0x21;/定时、串行都是方式1th1=0xf4;/波特率为2400tl1=0xf4;th0=(65536-2000)/256;/2ms定时tl0=(65536-2000)%256;ea=1;tr1=1;tr0=1;et0=1;while(1);void to() interrupt 1/定时中断服务程序,数码管显示 th0=(65536-2000)/256;tl0=(65536-2000)%256;p1=0x00;p1=numwi;p2=tableramwi;wi+;if(wi=8) wi=0;void t1() interrupt 4/串行中断服务程序if(ti=1)/传输数据ti=0;sbuf=wi;wi+;if(wi=8)wi=0;if(ri=1)/接收数据ri=0;wx=sbuf;p1=0x00;p1=numsbuf;p2=tableramsbuf;void delay()/延时函数 unsigned int n,m; for(m;m0;m-) for(n=0;n100;n+) ; 乙机#include#define uchar unsigned char void delayms(unsigned int xms); uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00; uchar code num=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80; uchar ram=0x01,0x02,0x01,0x03,0x02,0x02,0x01,0x02; uchar wi=0,wx=0,dx;void initial() /串口初始化 p1m1 = 0x00;p1m0 = 0xff;p2m1 = 0x00;p2m0 = 0xff; /设定p1,p2推挽输出tmod=0x21; pcon=0x00; /波特率不加倍th0=(65536-2000)/256;tl0=(65536-2000)%256; th1=0xf4; tl1=0xf4; / 定时器1初值,波特率为2400bpset0=1; tr0=1; / 启动定时器1tr1=1; scon=0x50; /串口工作方式1并允许接收控制位 ea=1; es=1; void main()initial();while(1) if(ri=1)/接收数据ri=0; wi=sbuf; p2=0x00; p1=numsbuf; p2=tableramsbuf; delayms(2); if(ti=1)/传送数据ti=0;sbuf=wx; wx+; if(wx=8) wx=0; void to() interrupt 1/定时中断,数码管显示 th0=(65536-2000)/256; tl0=(65536-2000)%256;p1=0x00;p1=numwx;p2=tableramwx;wx+;if(wx=8)wx=0; void delayms(unsigned int xms)/延时函数 unsigned int i, j; for(i = xms; i 0; i-) for(j = 200; j 0; j-);2.单片机与pc机通信单片机向pc机发送数据。单片机向pc机重复发送本机(学生本人)学号,发送波特率为1200,采用方式1,单片机外部晶振频率为11.0592m。(1)、源程序清单#include#define uchar unsigned char void delayms(unsigned int xms);uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;uchar code num=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80; uchar ram=0x01,0x02,0x01,0x03,0x02,0x02,0x01,0x01; uchar tbuf=1,2,1,3,2,2,1,1; uchar wi=0,wx,dx,flag=0;void initial() /串口初始化 p1m1=0x00; p1m0=0xff; p2m1=0x00; p2m0=0xff; tmod=0x21; /定时器1方式2 pcon=0x00; /smod=0 th1=0xe8; tl1=0xe8; / 定时器1初值,波特率为1200bpsth0=(65536-2000)/256; tl0=(65536-2000)%256; tr1=1; / 启动定时器1tr0=1;et0=1; scon=0x50; /串口工作方式1并允许接收控制位 ea=1; es=1;ps=1; sbuf=tbufwi;void main()initial();while(1); void t1() interrupt 4 /串口中断服务程序 flag=1; if(ti=1)ti=0;sbuf=tbufwi+0x30; wi+;if(wi=8)wi=0;if(ri=1)ri=0; tbufwi=sbuf-0x30; void t0() interrupt 1 /定时中断,数码管显示th0=(65536-2000)/256; /初始化定时 tl0=(65536-2000)%256; p1=0x00; p1=numwi; p2=tableramwi; wi+; if(wi=8) wi=0; (2)、在该实验中,单片机串行口工作在什么工作方式下?说明该工作方式的特点。 在实验中单片机串行口的方式都为方式1,即为8位数据异步通讯方式,用t1作为波特率发生器,发送时数据写入sbuf,同时启动发送,一帧发送结束,接收完一帧,若ri=0且停止位为1 (或sm2=0),将接收数据装入sbuf,停止位装入rb8,并使ri=1;否则丢弃接收数据,不置位ri。(3)、波特率是什么?怎样设置单片机串口通讯的波特率?如果实验要求通讯波特率为4800bps,怎样修改程序? 串行口每秒钟发送或接收的位数称为波特率,根据公式可以计算当波特率为480

温馨提示

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

评论

0/150

提交评论