《PC 机与单片机通信(RS232 协议).doc》由会员分享,可在线阅读,更多相关《PC 机与单片机通信(RS232 协议).doc(3页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、十二PC 机与单片机通信(RS232 协议)实验任务单片机串口通信的应用,通过串口,我们的个人电脑和单片机系统进行通信。个人电脑作为上位机,向下位机单片机系统发送十六进制或者ASCLL码,单片机系统接收后,用LED显示接收到的数据和向上位机发回原样数据。硬件电路图实验原理RS-232是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串行接口标准,用来实现计算机与计算机之间、计算机与外设之间的数据通讯。RS-232串行接口总线适用于:设备之间的通讯距离不大于15m,传输速率最大为20kBps。RS-232协议以-5V15V表示逻辑1;以+5V15V 表示逻辑0。 我们是用MAX232芯片
2、将RS232电平转换为TTL电平的。 一个完整的RS-232接口有22根线,采用标准的25芯插头座。我们在 这里使用的是简化的9芯插头座。注意我们在这里使用的晶振是11.0592M的,而不是12M。因为波特率的设置需要11.0592M的。“串口调试助手V2.1.exe” 软件的使用很简单,只要将串口选择CMO1波特率设置为9600 数据位为 8 位。打开串口(如果关闭)。然后在发送区里输入要发送的数据,单击手动发送就将数据发送出去了。注意,如果选中十六进制发送那么发送的数据是十六进制的,必须输入两位数据。如果没有选中,则发送的是ASCLL码,那么单片机控制的数码管将显示ASCLL码值。数字二进
3、制Px0Px7Abcdefg p十六进制00011111100000011111111000xco10000011010011111011000000xf920101101100100101110110100xa430100111100001101111100100xb040011011010010011011011000x9950110110101001001101101100x9260111110101000001101111100x8270000011100011111111000000xf880111111100000001111111100x809011011110000100111
4、1101100x90A111011100x88B0x83C0xc6D0xa1E0x86F0x8eC语言源程序#include reg52.h /包函8051 内部资源的定义unsigned char dat; /用于存储单片机接收发送缓冲寄存器SBUF里面的内容sbit gewei=P26; /个位选通定义sbit shiwei=P25; /十位选通定义sbit baiwei=P24;unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0
5、x40,;void Delay(unsigned int tc) /延时程序while( tc != 0 )unsigned int i;for(i=0; i100; i+);tc-;void LED() /LED显示接收到的数据(十进制)shiwei=0; P0=tabledat/10; Delay(10); shiwei=1;gewei=0; P0=tabledat%10; Delay(10); gewei=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();/串口初始化while(1) if ( RI ) /扫描判断是否接收到数据,dat = SBUF; /接收数据SBUF赋与datRI=0; /RI 清零。SBUF = dat; /在原样把数据发送回去LED(); /显示接收到的数据/这一个例子是以扫描的方式编写的,还可以以中断的方式编写,请大家思考/
限制150内