编写主程序,初始化串口,设置波特率为9600,无校验,数据位8位,停止位1位。编写中断服务程序代码实现将发送过来的数据回送,并在OLED显示屏上显示
时间: 2024-10-27 15:08:04 浏览: 48
在编写主程序中,首先需要导入必要的库以便处理串口通信和OLED显示。这里假设你是在嵌入式系统或者使用Python的`pySerial`库,以及用于OLED显示的库如`Adafruit_CircuitPython_SSD1306`。
```python
import board
import busio
from adafruit_ht16k33 import sevensegment
import adafruit_ssd1306
# 初始化串口
uart = busio.UART(board.TX, board.RX, baudrate=9600, bytesize=8, parity=None, stopbits=1)
# 初始化OLED显示屏
i2c = busio.I2C(board.SCL, board.SDA)
display = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c)
# 创建7段数码管对象
seg = sevensegment.SevenSegment(i2c)
def handle_data_received(data):
# 处理接收到的数据并回送
display.fill(0) # 清屏
seg.print(data, decimal_point=True) # 显示数据
display.show() # 更新屏幕
uart.write(data) # 发送数据回原路
# 设置中断服务程序
def interrupt_service_program():
while True:
if uart.in_waiting: # 检查是否有数据接收
received_data = uart.read(1) # 读取一位数据
handle_data_received(received_data[0]) # 调用处理函数
# 主程序启动中断服务
uart.timeout = None # 禁止超时
uart.readline() # 防止首次启动时有未读数据
uart.readall() # 同理清空缓冲区
interrupt_thread = threading.Thread(target=interrupt_service_program) # 使用线程运行中断程序
interrupt_thread.start()
```
阅读全文