代码功能:联合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版本与本套教程差别较大,又不想重装,可用之运行本期代码。
以上就是本期的所有内容了,谢谢观看。