代码功能:联合51单片机控制Windows系统关机
  Python代码如下:

import os  # 导入os模块,处理操作系统相关事务
import serial  # 导入serial模块,串口通信相关

com = serial.Serial('COM4', 9600)  # 打开指定串口,设置串口通信波特率


def rec_data():  # 接收数据函数
    while True:  # 循环检测
        a = com.read()  # 从串口接收数据,类型为bytes
        b = int(a.hex(), 16)  # 将接收的数据转化为16进制数字型,注意是数字型,不是字符串型
        if b == 0xff:  # 按照自己的要求进行条件判断
            os.system("shutdown -s -t 0")  # 控制Windows系统关机


rec_data()  # 调用函数


'''
# 代码功能:通过串口从51单片机接收一个16进制数
# 注:
     1. 第4行代码中的"com4"需改成自己51单片机连接电脑的串口号,不一定是com4,不要照搬
     2. 第2行的serial模块不是Python自带的,需要自行安装。
        (1). cmd命令行安装命令:pip install pyserial
        (2). Pycharm安装:去Pycharm标准库安装窗口,搜索pyserial安装
     3. 第4行的波特率需要与51单片机端波特率设为一致,否则会导致数据接收失败或出错
# 操作系统环境:Win10 1909
# Python环境:Python3.8.6
'''



  51单片机代码:

#include <reg52.h>  // 导入基础头文件
sbit button=P3^4;  // 定义了愚者51单片机开发板上的一个按钮,用作发送数据的触发条件

void main()
{
	 TMOD=0X20;  // 设置定时器1工作于方式2
	 TH1=0XFD;  // 设置串口通信波特率为9600
	 TL1=0XFD;
	 TR1=1;  // 开启定时器1,用以产生波特率
	 REN=1;  // 打开串行中断允许
	 SM0=0;  // 设置串行口工作于方式1
	 SM1=1;
	 if(button==0)  // 按下按钮的情况下
	  {
			SBUF=0XFF;  // 发送数据0XFF
			if(TI==1)  // 判断数据是否发送完,如果发送完将发送完成标志位软件置0
				TI=0;           
	  }
 }

 
 /*
 // 代码功能:按下按钮,单片机通过串口向PC端发送一个16机制数(0XFF)
 // 注:本代码的作用主要是开发者提供基本思路,实际应用还不够完善,比如对按钮的检测缺少松手检测等等。
 */



  注:本套教程使用的Python编辑器均为Pycharm,资料包中附带Python虚拟环境,包含了本期代码必须的标准库,如果小伙伴们的Python版本与本套教程差别较大,又不想重装,可用之运行本期代码。

以上就是本期的所有内容了,谢谢观看。