单片机 串口编程之串口通信仿真实验

2019-04-15 18:32发布

单片机 串口编程之串口通信仿真实验

一、简述        记--简单的使能串口,串口收发数据的例子。(使用Proteus仿真+虚拟串口调试)        代码,仿真文件打包:链接: https://pan.baidu.com/s/1nyb46fTJrYcAy_VarFdO3A 提取码: j44s           蓝奏:https://www.lanzous.com/i2fx3oh       虚拟串口调试软件打包:链接: https://pan.baidu.com/s/1qaOgM8P7ZRmXb903NkiMOQ 提取码: r18u           蓝奏:https://www.lanzous.com/i2fx41a        串口助手源码:链接: https://pan.baidu.com/s/1T9ZA8jnsjXDhNLuL1ezGdg 提取码: 6usr  二、效果         PC机通过串口调试助手发送数据给单片机,单片机收到之后回复:I received.。如果单片机收到的是'1'则点亮LED灯,否则熄灭LED灯。                使用c#编写的串口助手          (真实硬件实验:使用Keil C51将代码编译为HEX文件,用串口线/USB转串口线连接PC机,可以使用STC-ISP软件烧写到51单片机,在PC机可以使用串口调试助手(STC-ISP也有这个功能,也可以是其他软件,当然也可以自己编写串口程序)与单片机进行串口通信。实际中,电脑串口采用232电平,而单片机串口则采用TTL电平,如果不进行电平转换,单片机与电脑就无法正常通信,甚至单片机芯片可能会被烧坏。MAX232 芯片可以进行电平转换,是将单片机输出的TTL电平转换成PC机能接收的232电平或将PC机输出的232电平转换成单片机能接收的TTL电平。​​​​电平是个电压范围,如可能规定输出电压>2.4V则为高电平,输出电压低于<0.4V则为低电平,不同的电子器件、不同的标准有着不同的电压范围​​​)        注:一个COM一般不能同时被两个程序占用。 三、工程结构及各属性设置         keil工程                                                  proteus仿真          添加虚拟串口                                  四、源文件        main.c文件  #include sbit p1_0 = P1^0; //初始化串口 (设置串口,开启串口中断) void init_uart(void) { SCON = 0x50; // SCON: 方式 1, 8-bit, 允许接收数据 TMOD |= 0x20; // TMOD: 设置定时器1工作在方式2, 8-bit 自动重装 TH1 = 0xFD; // TH1: 初始值为0xFD 波特率:9600 晶振频率:11.0592MHz TL1 = 0x0; TR1 = 1; // TR1: 开启定时器1 EA = 1; //打开总中断 ES = 1; //打开串口中断 } // 发送一个字节数据 void uart_send_byte(unsigned char dat) { SBUF = dat; // 将数据送到发送缓冲寄存器SBUF,一位一位的发送 while(!TI); // 等待发送完毕 (发送完毕TI硬件置1) TI = 0;// 将TI清零,表示可以发送下一字节数据。 } // 发送字符串 void uart_send_str(unsigned char *s) { while(*s != '