标题:
单片机与pc串口通信,虚拟端口发送1接收却显示q,发送2接收显示r,求大佬帮帮
[打印本页]
作者:
XIBAYUE
时间:
2024-12-17 22:57
标题:
单片机与pc串口通信,虚拟端口发送1接收却显示q,发送2接收显示r,求大佬帮帮
#include <REGX51.H>
#define uchar unsigned char
#define uint unsigned int
sbit RS = P2^0;
sbit RW = P2^1;
sbit E = P2^2;
sbit KEY = P3^7;
uchar received_data;
void delayms(uint ms)
{
uchar i;
while (ms--)
for (i = 0; i < 123; i++);
}
void w_com(uchar com)
{
RS = 0;
RW = 0;
E = 1;
P0 = com;
E = 0;
delayms(1);
}
void w_dat(uchar dat)
{
RS = 1;
RW = 0;
E = 1;
P0 = dat;
E = 0;
delayms(1);
}
void lcd_ini(void)
{
delayms(10);
w_com(0x38);
delayms(10);
w_com(0x0c);
delayms(10);
w_com(0x06);
delayms(10);
w_com(0x01);
delayms(10);
w_com(0x80);
delayms(10);
}
void send_data(uchar data_to_send)
{
SBUF = data_to_send;
while (TI == 0);
TI = 0;
}
void uart_init()
{
// 9600bps 11.0592MHz
SCON = 0x50;
TMOD &= 0x0F;
TMOD |= 0x20;
TL1 = 0xFD;
TH1 = 0xFD;
ET1 = 0;
TR1 = 1;
EA = 1;
ES = 1;
}
void main()
{
uchar data_to_send[8] = "12345678";
uchar i;
lcd_ini();
uart_init();
while (1)
{
if (KEY == 0)
{
delayms(20);
if (KEY == 0)
{
for (i = 0; i < 8; i++)
{
send_data(data_to_send[ i]);
}
while (KEY == 0);
}
}
}
}
void uart_interrupt() interrupt 4
{
if (RI)
{
RI = 0;
received_data = SBUF;
w_dat(received_data);
}
}
51hei.jpg
(305.67 KB, 下载次数: 0)
下载附件
2024-12-18 02:09 上传
仿真图
作者:
lzw991101
时间:
2024-12-18 08:27
发送的字符 +0x30 试试
作者:
xzh5508
时间:
2024-12-18 09:28
两边的格式不一样吧,都设置成16进制看看
作者:
tyrl800
时间:
2024-12-18 15:34
单片机与虚拟终端是同一个设备
作者:
lkc8210
时间:
2024-12-19 11:50
检查一下单片机晶振设置,如果也是11.0592Mhz
那就可能是电脑太慢引致仿真速度不匹配现实
作者:
zhang32568
时间:
2024-12-28 17:26
ASCII码 0 的ASCII码是 0X30 你发送 1 实际发送(1+0x30)试试
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1