PC端為Python所寫,運行時需要增加2個虛擬串口。
PC(Python)運行界面
PC(Python)運行界面.jpg (14 KB, 下載次數: 59)
下載附件
PC(Python)運行界面
2022-11-6 17:20 上傳
仿真電路圖
仿真電路圖.jpg (157.68 KB, 下載次數: 55)
下載附件
仿真電路圖
2022-11-6 17:21 上傳
- import serial #導入serial
- import tkinter as tk #導入tkinter
- ser = serial.Serial("COM2", 9600,timeout = 0)
- def btn1Clicked():
- ser.write('1'.encode())
- labelHello.config(text = "LED ON")
- def btn2Clicked():
- ser.write('2'.encode())
- labelHello.config(text = "LED OFF")
- def winsafter():
- Ent1.delete(0,"end")
- Ent1.insert(0,ser.read(1))
- top.after(1000,winsafter)
- # 建立tkinter窗口,設置窗口標題
- top = tk.Tk()
- top.title("Device Control(BPS:9600)")
- top.geometry("380x180")
- # 在窗口中創建標簽及設置位置
- labelHello = tk.Label(top, text = "Press the button……")
- labelHello.place(x=130, y=40)
- # 在窗口中創建按鈕
- btn1 = tk.Button(top, text = "打開", command = btn1Clicked)
- btn2 = tk.Button(top, text = "關閉", command = btn2Clicked)
- # 設置按鈕位置
- btn1.place(x=130, y=80)
- btn2.place(x=210, y=80)
- tk.Label(top, text = "報警狀態:").place(x=130, y=130)
- Ent1 = tk.Entry(top,width=7)
- Ent1.place(x=190, y=130)
- top.after(1000,winsafter)
- # 運行并顯示窗口
- top.mainloop()
復制代碼
- #include "reg52.h"
- sbit LED=P2^0;
- sbit key1=P1^0;
- sbit key2=P1^3;
- unsigned char senddata;
- unsigned char putdata[]={0x31,0x32,0x33,0x34,'\0'};
- void delay(unsigned int z)
- {
- unsigned int x,y;
- for(x=z;x>0;x--)
- for(y=1000;y>0;y--);
- }
- //串口初始化,波特率9600BPS(晶振為11.0592M)
- void InitializeSystem()
- {
- SCON = 0X50;//串口方式1,允許接收
- TMOD = 0X20;//定時器1定時方式2
- TCON = 0x40;//設定時器1開始計數
- TH1 = TL1 = 250;
- PCON = 0x80; //波特率加倍控制,SMOD位
- RI = 0; //清收發標志
- TI = 0;
- TR1 = 1; //啟動定時器
- EA=1; //開啟總中斷
- ES = 1;
- ET1=0;
- }
- //字符發送函數
- void putchar(unsigned char data1)
- {
- SBUF = data1; //將待發送的字符送入發送緩沖器
- while(TI == 0); //等待發送完成
- TI = 0; //發送中斷標志請0
- }
- //字符串發送函數
- void putstring(unsigned char *dat)
- {
- while(*dat != '\0') //判斷字符串是否發送完畢
- {
- putchar(*dat); //發送單個字符
- dat++; //字符地址加1,指向先下一個字符
- delay(5);
- }
- }
- //主函數
- void main( )
- {
- InitializeSystem( );
- while(1)
- {
- if(senddata=='1')
- {
- LED=0;
- }
- if(senddata=='2')
- {
- LED=1;
- }
-
- if(key1==0)
- {
- while(key1==0){}
- putchar(0x31);
- }
- if(key2==0)
- {
- while(key2==0){}
- putstring(putdata);
- }
-
- }
- }
-
- //接收中斷函數
- void revdata(void) interrupt 4
- {
- if(RI == 0) return; //如果沒有接收中斷標志,返回
- ES = 0; //關閉串口中斷
- RI = 0; //清串行中斷標志位
- senddata=SBUF;
- ES = 1; //開啟串口中斷
- }
復制代碼
工程包
工程包.jpg (29.59 KB, 下載次數: 47)
下載附件
工程包
2022-11-6 17:26 上傳
以上資料51hei附件下載:
PC(Python) 51單片機(C51).rar
(55.85 KB, 下載次數: 28)
2022-11-6 17:28 上傳
點擊文件名下載附件
PC(Python)+51單片機(C51) 下載積分: 黑幣 -5
|