


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PC机和单片机通信(RS232协议)目录:1、单片机串口通信的使用2、PC控制单片机10 口输出3、单片机控制实训指导及综合使用实例 4、单片机给计算机发送数据:实验任务单片机串口通信的使用,通过串口,我们的个人电脑和单片机系统进行通信。个人电脑作为上位机,向下位机单片机系统发送十六进制或者ASCLL码,单片机系统接收后,用LED显示接收到的数据和向上位机发回原样数据。硬件电路图实验原理RS-232是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串 行接口标准,用来实现计算机和计算机之间、计算机和外设之间的数据通讯。RS-232串行接口总线适用于:设备之间的通讯距离不大于15m,传输
2、速率最大为20kBps。RS-232协议以-5V 15V表示逻辑1;以+5V 15V表示逻辑0。我们是 用MAX232芯片将RS232电平转换为TTL电平的。 一个完整的RS-232接口有22 根线,采用标准的25芯插头座。我们在 这里使用的是简化的9芯插头座。注意我们在这里使用的晶振是11.0592M的,而不是12M。因为波特率的设置 需要11.0592M的。“串口调试助手”软件的使用很简单,只要将串口选择 CMO1 '波 特率设置为 9600'数据位为8位。打开串口(如果关闭)。然后在发送区里输入要发送的数据,单击手动发送就将数据发送出去了。注意,如果选中十六 进制发送那么
3、发送的数据是十六进制的,必须输入两位数据。如果没有选中, 则发送的是ASCLL码,那么单片机控制的数码管将显示 ASCLL码值。数字二进制Px0Px7Abcdefg p十六进制00xco10xf920xa430xb040x9950x9260x8270xf880x8090x90A0x88B0x83C0xc6D0xa1E0x86F0x8eASCII常用代码表字符代码字符代码字符代码字符代码字符3252 1472H92112p3353573I93113q3454674J94A114r35#55775K95115s36$56876L96'116t37%57 I977M97a117u38&
4、;5878N98b118v395979O99c119w40(60<80P100d120x41)61=81Q101e121y42*62>82R102f122z43+ 63?83S103g12344J6484T104h124|45-65A85U105i1254666B86V106j12647/67C87W107k48068D88X108l49169E89Y109m50270F90Z110n51371G91111o1C语言源程序#include "reg52.h" 包函8051内部资源的定义unsigned char dat; /用于存储单片机接收发送缓冲寄存器SBU
5、F里面的内容sbit gewei=P2A4; /个位选通定义sbit shiwei=P2A5; 十位选通定义sbit baiwei=P2A6; 百位选通定义unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,; /110 void Delay(unsigned int tc) /延时程序while( tc != 0 )unsigned int i;for(i=0; i<100; i+);tc-;void LED() /LED 显示接收到的数据(十进制)gewei=0; P0=tabledat
6、%10; Delay(10); gewei=1;shiwei=0; P0=tabledat/10; Delay(10); shiwei=1;baiwei=0; P0=tabledat/100; Delay(10); baiwei=1;/功能:串口初始化,波特率 9600,方式1/void Init_Com(void)TMOD = 0x20;PCON = 0x00;SCON = 0x50;TH1 = 0xFd;TL1 = 0xFd;TR1 = 1;/主程序功能 :实现接收数据并把接收到的数据原样发送回去 /void main()In it_Com(); 串口初始化while(1)if ( RI
7、) /扫描判断是否接收到数据,dat = SBUF; /接收数据 SBUF 赋和 datRI=0; /RI 清零。SBUF = dat; 在原样把数据发送回去(接收数据为发送数据的 ASCII码,如发送q显示为113)LED(); /显示接收到的数据/这一个例子是以扫描的方式编写的,还可以以中断的方式编写,请大家思考/实验任务 PC 控制单片机 IO 口输出#include "reg52.h" /包函 8051 内部资源的定义 unsigned char dat; /用/ 于存储单片机接收发送缓冲寄存器 SBUF 里面的内容 void Delay(unsigned int
8、tc) /延时程序 while( tc != 0 ) unsigned int i; for(i=0; i<100; i+);tc-;/功能:串口初始化,波特率 9600,方式1/void Init_Com(void)TMOD = 0x20;PCON = 0x00;SCON = 0x50;TH1 = 0xFd;TL1 = 0xFd;TR1 = 1;/ 主程序功能 :实现接收数据并把接收到的数据原样发送回去 / void main()Init_Com();/ 串口初始化 while(1) if ( RI ) /扫描判断是否接收到数据,dat = SBUF; 接收数据SBUF赋和dat if
9、(dat=OxOO) 如果PC发送十六进制00,单片机P1 口全亮。 P1=0x00;else if(dat=0x01)P1=0x01;else if(dat=0x02) P1=0x02;else if(dat=0x03) P1=0x03;else if(dat=0x04) P1=0x04;RI=0; /RI 清零。SBUF = dat; 在原样把数据发送回去(接收数据为发送数据的 ASCII码,如发送q显示为113) 实验任务 单片机控制实训指导及综合使用实例#include "reg52.h" /包函 AT89S52 内部资源的定义(注视参看书 160 页)#defin
10、e uchar unsigned char/宏定义uchar led 10=0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef;数字 1 10,字符串uchar led164; /存储接收数据unsigned int i,j,t,k;sbit P32=P3A2;void scjs(void)interrupt 4 /定义中断ES=0;/ 使能串行口的中断k=1;while(1)RI=0;led1k-1=SBUF;/将接收数据送段码表k+;TH0=0x3c; /t0 定时 50sm 内接收不到数据跳过接收TL0=0xb0;TR0=1;while(!
11、RI)if(!TF0) goto FH;FH:TF0=0;/TF0 不清零不能重新接收TR0=0;P32=1;for(j=1;j<k;j+)SBUF=ledj-1; 数据送回给 pcwhile(!TI);TI=0;P32=0;delay(t)ES=1;SCON=0x50;for(i=0;i<t;i+);ES=0;SCON=0x00;void main (void)int a,c;TMOD=0x21;TH1=0Xfd;TL1=0xfd;SCON=0x50;PCON=0x00;IE=0x90;TR1=1;k=1;P32=0;while(1)ES=0;SCON=0x00; for(a=0
12、;a<=k+1/k*8;a+) for(c=5;c>=0;c-) if(a+c<k+1/k*8+1) if(k=1)SBUF=leda+c; else SBUF=led1a+c;else SBUF=0x00; while(!TI);TI=0;delay(39000);#include "reg52.h" /包函 8051 内部资源的定义 #define uchar unsigned charsbit P3_2=P3A2;uchar zdzt=0x0c;uchar zsgw=0x02;uchar zsdw=0x00;uchar bs=0;uchar zqsb
13、w=0;uchar zqssw=0;uchar zqsgw=0;uchar yxsj=0x11;uchar zs=20;int zqs=0;uchar zqsgzj=0x00;uchar zqsdzj=0x00;uchar zsscgw=0x1f;uchar zsscdw=0x00;uchar bzsj;uchar ztsj;void key (void);void keyprc();void binbcd();void disp();void delay();code uchar tab13=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,
14、0x7c,0x39; code uchar zssc160=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c, 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f, 0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x
15、77,0x7c,0x3f, 0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f, 0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06, 0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,;void key(voi
16、d)TR0=0;if(!(P2&0X01)delay();while(!(P2&0X01);zdzt=0x0a;disp();else if(!(P3&0X08)delay();while(!(P3&0X08);zdzt=0x0b;disp();else if(!(P3&0X10)delay();while(!(P3&0X10);zs=zs+1;keyprc();disp();else if(!(P2&0X02)delay(); while(!(P2&0X02); zs=zs-1;keyprc();disp();void keyp
17、rc()if(zs<20) zs=20;if(zs>99)zs=99;zsgw=zs/10;zsdw=zs%10;void djzd(void) interrupt 1 TH0=zssc(zs-20)*2;TL0=zssc(zs-20)*2+1; if(zdzt=0x0a) yxsj=yxsj<<1|yxsj>>7; else if (zdzt=0x0b) yxsj=yxsj<<7|yxsj>>1; else if(zdzt=0x0c) P1=0xff;goto LP;P1=yxsj;bs+; if(bs=48) bs=0;zqs+;
18、LP:binbcd();disp();void binbcd()zqsbw=zqs/100; zqssw=zqs%100/10; zqsgw=zqs%10; void disp() TR1=0; ES=0;SCON=0x00;TMOD=0x01; SBUF=tabzqsgw; while(!TI);TI=0; SBUF=tabzqssw; while(!TI);TI=0; SBUF=tabzqsbw; while(!TI);TI=0; SBUF=tabzsdw; while(!TI);TI=0; SBUF=tabzsgw; while(!TI);TI=0; SBUF=tabzdzt; whil
19、e(!TI);TI=0;TMOD=0x02; TH1=0Xfd; TL1=0xfd;SCON=0x50;TR1=1;ES=1;void delay() int k; for(k=0;k<1200;k+); void sin()interrupt 4 P1=0xff;ES=0; bzsj=SBUF;RI=0; while(!RI);RI=0; ztsj=SBUF; if(bzsj=0x30)zdzt=ztsj-0x37;if(bzsj=0x31)if(ztsj=0x49) zs+; else zs-;ES=1;P3_2=0;keyprc();zqs=0;disp();main()TMOD=
20、0x21;TH1=0xfd;TL1=0xfd;SCON=0x50;PCON=0x00;IE=0X92;PS=1;TR1=1;P3_2=0;TH0=0x1f;TL0=0x00;SP=0x60;disp();while(1)key();if(zdzt=0x0c)TR0=0;P1=0xff;else TR0=1;单片机给计算机发送数据 :#include "reg52.h" /包函 8051 内部资源的定义SBUF 里面的内容unsigned char dat; /用/ 于存储单片机接收发送缓冲寄存器 unsigned char fan;int i,j;void Delay() / 延时程序for(i=0; i<100; i+)for(j=0; j<100; j+);void delays()int k;for (k=0;k<1200;k+);/功能:串口初始化,波特率 9600,方式1/void Init_Com(void)TMOD = 0x20;PCON = 0x00;SCON = 0x50;TH1 = 0xFd;TL1 = 0xFd;TR1 = 1;/ 主程序功能 :实现接收数据并把接收到的数据原样发送回去/void m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- poct考试试题及答案
- 2025年VFP考试全景体验试题及答案
- pdp职业性格测试题及答案
- 乡村振兴视角下2025年职业技能培训的师资队伍建设与培养路径报告
- 车间安全生产责任保险合同
- 风光制氢一体化项目运营管理方案
- 领导科学中的伦理与责任试题及答案
- 应用领导科学提升团队协作效率的方法试题及答案
- 2025集体土地租赁合同法
- 各类软件测试技术考试题型及答案详解
- 小学经典诵读社团活动计划、安排、记录
- 中职高教版(2023)语文基础模块下册-第五单元写作-说明的关键在于说得“明”【课件】
- 手机售后培训方案
- 2025年度全国大学生创新创业竞赛项目保密承诺书3篇
- DB33T 2288-2020 淡水池塘养殖尾水处理技术规范
- 中资出海企业数字化发展(亚太)蓝皮报告(2024年)
- 安保工作的多元化发展
- 【MOOC】人格与精神障碍-学做自己的心理医生-暨南大学 中国大学慕课MOOC答案
- 新能源汽车电气系统检修(微课版) 课件 项目二任务2无钥匙进入和起动系统
- 生成式人工智能讲解
- 林权投资合作协议范本
评论
0/150
提交评论