マイコンSTC12C5204ADの使い方7
マイコン側のシリアル通信プログラムを更新しました。
シリアル通信のPythonのプログラムを更新しました。
使用機材
aitendo_8051コアマイコン [STC12C5204AD]
aitendo_USB-TTL変換モジュール [U2TL2303-10P]
aitendo_抵抗内蔵角形LED [LED234R-WC5V]
aitendo_ブレッドボード[SYB-46]
回路
マイコンPORT/
3/--10K--GND
4/--USB-TTL変換TX
5/--USB-TTL変換RY(RX?)
13/--LED234R--GND
14/--GND--USB-TTL変換GND
15/--SW--GND
|--4.7K--+5V
28/--+5V--USB-TTL変換5V
下記がマイコンのプログラムです。
------------------------------------------------------
#include <8051.h>
void main() {
char c ;
//出力ポートをゼロにします。
P2_5 = 0x00;
// Timer1 を使って、9600bps に設定する
TMOD |= 0x20; // Timer1: mode=2
TH1 = 0xFD; // set reload value
TCON |= 0x40; // start Timer1
// UART を 8bit mode に設定、受信を許可(REN=1)
SCON= 0x50; // 8bit-UART(SM0=0,SM1=1), REN=1
/*
UARTでデータを受信すると、RIフラグが立つ。
RI フラグを検出後、RIフラグをクリアして、SBUF からデータを受信。
送信は、SBUF にデータを書き込むと送信される。
*/
for(;;) {
if(RI) {
RI = 0;
c = SBUF;
if(c == 0x01){
P2_5 = 0x00;
}
if(c == 0x02){
P2_5 = 0xff;
}
if(P2_6 == 0x00){
c = 0x01;
SBUF = c;
} else {
c = 0x02;
SBUF = c;
}
}
}
}
------------------------------------------------------
プログラムをコンパイルしてマイコンに入力します。
------------------------------------------------------
Pythonのプログラムを下に示します。
------------------------------------------------------
import sys
import tkinter
import serial
root = tkinter.Tk()
root.title(u"WriteRead 12C5204")
root.geometry("400x300")
def SendValue(event):
ser = serial.Serial('/dev/ttyUSB0',9600)
ser.write(b'\x02')
print(ser.read())
ser.close()
button = tkinter.Button(text=u'Send to MPU')
button.bind("",SendValue)
button.pack()
root.mainloop()
------------------------------------------------------
上のプログラムをtest2.pyとして実行します。
------------------------------------------------------
aaa@aaa:~/Desktop/シリアル_C言語/prog2$ python3 test2.py
b'\x02'
SWを切り替えて
b'\x01'
------------------------------------------------------
今回はpythonのプログラムを全部VBのようにしようとしましたが
まだ半分はterminal使用です。
実験中のpythonの写真です。