STC89C52与pycharm建串口通信,pycharm发送"open K0"P10口输入低压,发送"close K0"P10口输出高压,发送"open K1"P11口输入低压, 发送"close K1"P11口输出高电压,电压上位机代码,和下位机代码怎么写。
时间: 2023-10-22 18:20:19 浏览: 105
用python和C语言完成,包含一个上位机界面编程和STM3232编程 上位机完成参数设置,通过串口通信将控制指令下达给STM3
下位机代码:
```
#include <reg52.h>
sbit K0 = P1^0; // 定义K0口
sbit K1 = P1^1; // 定义K1口
void initUART(void) // 初始化串口
{
TMOD = 0x20;
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1;
SCON = 0x50;
ES = 1;
EA = 1;
}
void sendByte(unsigned char byte) // 发送一个字节
{
SBUF = byte;
while(!TI);
TI = 0;
}
void main()
{
initUART(); // 初始化串口
while(1)
{
// 等待接收上位机指令
while(!RI);
RI = 0;
// 判断指令并执行
if(SBUF == 'o')
{
while(!RI);
if(SBUF == 'p')
{
while(!RI);
if(SBUF == 'e')
{
while(!RI);
if(SBUF == 'n')
{
while(!RI);
if(SBUF == ' ')
{
while(!RI);
if(SBUF == 'K')
{
while(!RI);
if(SBUF == '0')
{
K0 = 0; // P10口输入低电平
}
else if(SBUF == '1')
{
K1 = 0; // P11口输入低电平
}
}
}
}
}
}
}
else if(SBUF == 'c')
{
while(!RI);
if(SBUF == 'l')
{
while(!RI);
if(SBUF == 'o')
{
while(!RI);
if(SBUF == 's')
{
while(!RI);
if(SBUF == 'e')
{
while(!RI);
if(SBUF == ' ')
{
while(!RI);
if(SBUF == 'K')
{
while(!RI);
if(SBUF == '0')
{
K0 = 1; // P10口输出高电平
}
else if(SBUF == '1')
{
K1 = 1; // P11口输出高电平
}
}
}
}
}
}
}
}
}
}
```
上位机代码:
```
import serial
import time
ser = serial.Serial('COM3', 9600) # 串口号和波特率
def openK0():
ser.write(b'open K0')
time.sleep(1) # 等待下位机执行
def closeK0():
ser.write(b'close K0')
time.sleep(1) # 等待下位机执行
def openK1():
ser.write(b'open K1')
time.sleep(1) # 等待下位机执行
def closeK1():
ser.write(b'close K1')
time.sleep(1) # 等待下位机执行
while True:
cmd = input('请输入指令:') # 获取用户输入的指令
# 判断指令并执行
if cmd == 'open K0':
openK0()
elif cmd == 'close K0':
closeK0()
elif cmd == 'open K1':
openK1()
elif cmd == 'close K1':
closeK1()
else:
print('指令错误!')
```
阅读全文