Python与C51单片机交互,嘿嘿,其实是在OSX下用串口交互了~~
1.首先装上CH340/CH341 For Mac USB转串口驱动程序
2.安装Python串口模块 pip install pySerial
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2016-08-14 19:47:05 # @Author : PiaoYun (piaoyunsoft@163.com) # @Link : http://www.dllhook.com import serial import time def test(): # 连接单片机 ser = serial.Serial('/dev/tty.wchusbserial1420', 9600) # 查看状态 if ser.isOpen(): # 发送指令 -- 方便测试 写个死循环 while True: for x in xrange(0, 3): ser.write(str(x)) #图片上面忘记写读取单片机传回来数据的代码了,这里补上... s = ser.read(10) print s time.sleep(2) # 端口连接 ser.close() if __name__ == '__main__': test()
// 单片机程序 #include <reg52.h> uint8 c; uint8 flag; void initUART(void) { TMOD = 0x20; // 定时器工作方式2 //SCON = 0x50; // 打开串口为方式1-如下分解: SM0 = 0; SM1 = 1; SM2 = 0; REN = 1; TH1 = 0xFD; // 波特率6900 TL1 = TH1; EA = 1; // 打开中断总开关 ES = 1; // 打开串口中断开关 TR1 = 1; // 启动定时器1 } // 发送一个字节数据 void sendOneByte(uint8 c) { SBUF = c; while(!TI); // 等待数据发送结束 TI = 0; } // 串口中断 void serial() interrupt 4 { flag = 1; c = SBUF; if(RI) { RI = 0; //P1 = c; // 这里随便写了两个功能 switch (c) { case '1': P1 = 0xAA; break; case '2': P1 = 0x55; break; default: P1 = 0xFE; break; } } else TI = 0; } void main(void) { initUART(); P1 = 0x7F; while(1){ if (flag == 1) { ES = 0; // 关闭串口中断 flag = 0; // 复位标记 sendOneByte('p'); sendOneByte('i'); sendOneByte('a'); sendOneByte('o'); sendOneByte('y'); sendOneByte('u'); sendOneByte('n'); ES = 1; } } }
已有871位网友发表了看法:
发表评论