没有合适的资源?快使用搜索试试~ 我知道了~
首页PC 机与单片机通信(RS232 协议)
资源详情
资源评论
资源推荐

PC 机与单片机通信(RS232 协议)
目录:
1、单片机串口通信的应用
2、PC 控制单片机 IO 口输出
3、单片机控制实训指导及综合应用实例
4、单片机给计算机发送数据:
[实验任务]
单片机串口通信的应用,通过串口,我们的个人电脑和单片机系统进行通信。
个人电脑作为上位机,向下位机单片机系统发送十六进制或者 ASCLL 码,单片机
系统接收后,用 LED 显示接收到的数据和向上位机发回原样数据。
[硬件电路图]
[实验原理]
RS-232 是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串
行接口标准,用来实现计算机与计算机之间、计算机与外设之间的数据通讯。
RS-232 串行接口总线适用于:设备之间的通讯距离不大于 15m,传输速率最大为
20kBps。RS-232 协议以-5V-15V 表示逻辑 1;以+5V-15V 表示逻辑 0。 我们是
用 MAX232 芯片将 RS232 电平转换为 TTL 电平的。 一个完整的 RS-232 接口有 22
根线,采用标准的 25 芯插头座。我们在 这里使用的是简化的 9 芯插头座。
注意我们在这里使用的晶振是 11.0592M 的,而不是 12M。因为波特率的设置
需要 11.0592M 的。
“串口调试助手 V2.1.exe” 软件的使用很简单,只要将串口选择‘CMO1’波
特率设置为‘9600’ 数据位为 8 位。打开串口(如果关闭)。然后在发送区里
输入要发送的数据,单击手动发送就将数据发送出去了。注意,如果选中‘十六
进制发送’那么发送的数据是十六进制的,必须输入两位数据。如果没有选中,
则发送的是 ASCLL 码,那么单片机控制的数码管将显示 ASCLL 码值。

数字 二进制 Px0~Px7
Abcdefg p
十六进制
0 00111111 00000011 11111100 0xco
1 00000110 10011111 01100000 0xf9
2 01011011 00100101 11011010 0xa4
3 01001111 00001101 11110010 0xb0
4 00110110 10010011 01101100 0x99
5 01101101 01001001 10110110 0x92
6 01111101 01000001 10111110 0x82
7 00000111 00011111 11100000 0xf8
8 01111111 00000001 11111110 0x80
9 01101111 00001001 11110110 0x90
A 01110111 00010001 11101110 0x88
B 01111100 11000001 00111110 0x83
C 00111001 01100011 10011100 0xc6
D 01011110 10000101 01111010 0xa1
E 01111001 01100001 10011110 0x86
F 01110001 01110001 10001110 0x8e
ASCII 常用代码表
字符 代码 字符 代码 字符 代码 字符 代码 字符
! " # $ %
& ' ( ) *
+ , + -.. + / ++ 0 + 1
2 3 4 + 5 6
7 8.. 9 + : ;
< = > + ? @
A B C + D E
F G H + I J
K L M + N O
P Q R + S
+ T U + V

W X + Y
+ + Z + [ + \
] ^ _
[C 语言源程序]
#include "reg52.h" //包函 8051 内部资源的定义
unsigned char dat; //用于存储单片机接收发送缓冲寄存器 SBUF 里面的内容
sbit gewei=P2^4; //个位选通定义
sbit shiwei=P2^5; //十位选通定义
sbit baiwei=P2^6; //百位选通定义
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}; //1~10
void Delay(unsigned int tc) //延时程序
{
while( tc != 0 )
{unsigned int i;
for(i=0; i<100; i++);
tc--;}
}
void LED() //LED 显示接收到的数据(十进制)
{
gewei=0; P0=table[dat%10]; Delay(10); gewei=1;
shiwei=0; P0=table[dat/10]; Delay(10); shiwei=1;
baiwei=0; P0=table[dat/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 ) //扫描判断是否接收到数据,
{
剩余12页未读,继续阅读









安全验证
文档复制为VIP权益,开通VIP直接复制

评论1