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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

PC机单片机通信协议.docx

1、PC机单片机通信协议PC 机与单片机通信(RS232 协议)目录:1、单片机串口通信的应用2、PC控制单片机IO口输出3、单片机控制实训指导及综合应用实例4、单片机给计算机发送数据:实验任务单片机串口通信的应用,通过串口,我们的个人电脑和单片机系统进行通信。个人电脑作为上位机,向下位机单片机系统发送十六进制或者ASCLL码,单片机系统接收后,用LED显示接收到的数据和向上位机发回原样数据。硬件电路图实验原理RS-232是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串行接口标准,用来实现计算机与计算机之间、计算机与外设之间的数据通讯。RS-232串行接口总线适用于:设备之间的通讯距离

2、不大于15m,传输速率最大为20kBps。RS-232协议以-5V15V表示逻辑1;以+5V15V 表示逻辑0。 我们是用MAX232芯片将RS232电平转换为TTL电平的。 一个完整的RS-232接口有22根线,采用标准的25芯插头座。我们在 这里使用的是简化的9芯插头座。注意我们在这里使用的晶振是11.0592M的,而不是12M。因为波特率的设置需要11.0592M的。“串口调试助手V2.1.exe” 软件的使用很简单,只要将串口选择CMO1波特率设置为9600 数据位为 8 位。打开串口(如果关闭)。然后在发送区里输入要发送的数据,单击手动发送就将数据发送出去了。注意,如果选中十六进制发

3、送那么发送的数据是十六进制的,必须输入两位数据。如果没有选中,则发送的是ASCLL码,那么单片机控制的数码管将显示ASCLL码值。数字二进制Px0Px7Abcdefg p十六进制00011111100000011111111000xco10000011010011111011000000xf920101101100100101110110100xa430100111100001101111100100xb040011011010010011011011000x9950110110101001001101101100x9260111110101000001101111100x8270000011

4、100011111111000000xf880111111100000001111111100x8090110111100001001111101100x90A0111011100010001111011100x88B0111110011000001001111100x83C0011100101100011100111000xc6D0101111010000101011110100xa1E0111100101100001100111100x86F0111000101110001100011100x8e ASCII常用代码表字符代码字符代码字符代码字符代码字符3252472H92112p33!5

5、3573I93113q34”54674J94114r35#55775K95_115s36$56876L96116t37%57977M97a117u38&58:78N98b118v3959。79O99c119w40(6082R102f122z43+63?83S103g12344,6484T104h124|45-65A85U105i12546.66B86V106j12647/67C87W107k48068D88X108l49169E89Y109m50270F90Z110n51371G91111oC语言源程序#include reg52.h /包函8051 内部资源的定义unsigned char

6、dat。 /用于存储单片机接收发送缓冲寄存器SBUF里面的内容sbit gewei=P24。 /个位选通定义sbit shiwei=P25。 /十位选通定义sbit baiwei=P26。 /百位选通定义unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,。 /110void Delay(unsigned int tc) /延时程序while( tc != 0 )unsigned int i。for(i=0。 i100。 i+)。tc-。void LED() /LED显示接收到的数据(十进制)ge

7、wei=0。 P0=tabledat%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()Init_Com()。/串口初始化wh

8、ile(1) if ( RI ) /扫描判断是否接收到数据,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 tc) /延时程序wh

9、ile( tc != 0 )unsigned int i。for(i=0。 i100。 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赋与datif(dat=0x00) /如果PC发送十六进制00,

10、单片机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页)#define uchar unsigned char /宏定义uchar led 10=0xbf,0

11、x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef。 /数字110,字符串uchar led164。 /存储接收数据unsigned int i,j,t,k。sbit P32=P32。 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(!RI)if(!TF0) goto FH。FH:TF0=0。/TF0不清零不能重新接收 TR0=

12、0。 P32=1。for(j=1。jk。j+)SBUF=ledj-1。/数据送回给pcwhile(!TI)。TI=0。P32=0。delay(t)ES=1。SCON=0x50。for(i=0。it。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。a=0。c-)if(a+ck+1/k*8+1)if(k=1)SBUF=leda+c。else SBUF=led

13、1a+c。else SBUF=0x00。while(!TI)。TI=0。delay(39000)。#include reg52.h /包函8051 内部资源的定义#define uchar unsigned charsbit P3_2=P32。uchar zdzt=0x0c。uchar zsgw=0x02。uchar zsdw=0x00。uchar bs=0。uchar zqsbw=0。uchar zqssw=0。uchar zqsgw=0。uchar yxsj=0x11。uchar zs=20。int zqs=0。uchar zqsgzj=0x00。uchar zqsdzj=0x00。uch

14、ar 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,0x7c,0x39。code uchar zssc160=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,

15、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,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,

16、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(void)TR0=0。if(!(P2&0X01)delay()。while(!(P2&0X01)。zdzt=0x0a。disp()。else if(!(P3&0X08)delay()。while(!(P3&0X08)。zdzt=0x0b。d

17、isp()。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 keyprc()if(zs99)zs=99。zsgw=zs/10。zsdw=zs%10。void djzd(void) interrupt 1TH0=zssc(zs-20)*2。TL0=zssc(zs-20)*2+1。if(zdzt=0x0a)yxsj=yxsj7。else if (zdzt=0x0b)yxs

18、j=yxsj1。else if(zdzt=0x0c)P1=0xff。goto LP。P1=yxsj。bs+。if(bs=48)bs=0。zqs+。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(

19、!TI)。TI=0。SBUF=tabzsgw。while(!TI)。TI=0。SBUF=tabzdzt。while(!TI)。TI=0。TMOD=0x02。TH1=0Xfd。TL1=0xfd。SCON=0x50。TR1=1。ES=1。void delay()int k。for(k=0。k1200。k+)。void sin()interrupt 4P1=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。

20、P3_2=0。keyprc()。zqs=0。disp()。main()TMOD=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 内部资源的定义unsigned char dat。 /用于存储单片机接收发送缓冲寄存器SBUF里面的内容unsigned char fan

21、。int i,j。void Delay() /延时程序for(i=0。 i100。 i+)for(j=0。 j100。 j+)。void delays()int k。for (k=0。k1200。k+)。/功能:串口初始化,波特率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

22、 = SBUF。 /接收数据SBUF赋与datif(dat=0x30) /如果PC发送十六进制00,单片机P1口全亮。P1=0x00。Delay()。 else if(dat=0x31)P1=0x01。Delay()。else if(dat=0x32)P1=0x03。Delay()。else if(dat=0x33)P1=0x07。Delay()。 else if(dat=0x34)P1=0x0f。Delay()。 else if(dat=0x35)P1=0x1f。Delay()。else if(dat=0x06)P1=0x3f。Delay()。 else if(dat=0x07)P1=0x7

23、f。Delay()。else if(dat=0x08)P1=0xff。Delay()。 else if(!(P2&0x01) delays()。while(!(P2&0x01)。fan = 0x36。else if(!(P2&0x02) delays()。while(!(P2&0x02)。fan = 0x37。else if(!(P2&0x04) delays()。while(!(P2&0x04)。fan = 0x38。else if(!(P2&0x08) delays()。RI=0。 /RI 清零。SBUF =dat。 /在原样把数据发送回去(接收数据为发送数据的ASCII码,如发送q显示为113)

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

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