from PyQt5.QtWidgets import (QWidget, QApplication, QDesktopWidget, QLabel, QGridLayout, QComboBox,
QSpinBox, QPushButton)
from PyQt5.QtCore import Qt, QBasicTimer
from PyQt5.QtGui import QFont
import sys
import numpy as np
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FC
from MyDataRom import *
import matplotlib.pyplot as plt
from MyWSPI import *
from MyWiringPiSPI import *
from CZTAlgorithm import *
plt.rcParams['axes.unicode_minus'] = False
class Oscilloscope(QWidget):
def __init__(self):
super().__init__()
self.s = MyWiringPiSPI()
self.w = MyWSPI()
self.c = CZTAlgorithm()
self.resultQLabel = QLabel('频率为:')
self.f_sample = 100e6
self.point_sample = 1
self.timer = QBasicTimer()
#self.timer.start(2000, self)
if self.timer.isActive():
self.timer.stop()
self.fig = plt.figure(figsize=(10, 4), dpi=80)
self.canvas = FC(self.fig)
self.ax = self.fig.add_subplot('111')
self.ax.set_xlabel('UNIT : MicroSecond', fontsize=20)
self.ax.axis(ymin=-2100, ymax=2100)
self.initUI()
def initUI(self):
def update_param(sss):
self.point_sample = int(sss)
print(self.point_sample)
def update_gain(g):
self.s.trans_reg([5,int((g+5)/3)])
rateQLabel = QLabel('采样频率选择')
rateQLabel.setFont(QFont('Serif', 20))
rateQLabel.setAlignment(Qt.AlignCenter)
rateQLabel.setMinimumSize(200, 1)
rateQLabel.setMaximumSize(200, 500)
rateQLabel.setStyleSheet("QWidget { background-color: #ffffb8 }")
rateQComoBox = QComboBox(self)
rateQComoBox.addItem("100MSPS")
rateQComoBox.setFont(QFont('Serif', 30))
rateQComoBox.setMinimumSize(200, 1)
rateQComoBox.setMaximumSize(200, 500)
rateQComoBox.setStyleSheet("QWidget { background-color: #ffffb8 }")
gainQLabel = QLabel('AD8369\n增益选择(dB)')
gainQLabel.setFont(QFont('Serif', 20))
gainQLabel.setAlignment(Qt.AlignCenter)
gainQLabel.setMinimumSize(200, 1)
gainQLabel.setMaximumSize(200, 500)
gainQLabel.setStyleSheet("QWidget { background-color: #ffffb8 }")
gainQSpinBox = QSpinBox()
gainQSpinBox.setRange(-5, 40) # 设置范围
gainQSpinBox.setSingleStep(3) # 设置步长
gainQSpinBox.setValue(-5) # 设置spinbox的值
update_gain(-5)
gainQSpinBox.setFont(QFont('Serif', 30))
gainQSpinBox.setMinimumSize(200, 1)
gainQSpinBox.setMaximumSize(200, 500)
gainQSpinBox.setStyleSheet("QWidget { background-color: #ffffb8 }")
gainQSpinBox.valueChanged[int].connect(update_gain)
pointQLabel = QLabel('相参积累次数')
pointQLabel.setFont(QFont('Serif', 20))
pointQLabel.setAlignment(Qt.AlignCenter)
pointQLabel.setMinimumSize(200, 1)
pointQLabel.setMaximumSize(200, 500)
pointQLabel.setStyleSheet("QWidget { background-color: #ffffb8 }")
pointQComoBox = QComboBox(self)
pointQComoBox.addItem("1")
pointQComoBox.addItem("10")
pointQComoBox.addItem("50")
pointQComoBox.addItem("100")
pointQComoBox.setFont(QFont('Serif', 30))
pointQComoBox.setMinimumSize(200, 1)
pointQComoBox.setMaximumSize(200, 500)
pointQComoBox.setStyleSheet("QWidget { background-color: #ffffb8 }")
pointQComoBox.activated[str].connect(update_param)
self.resultQLabel.setFont(QFont('Serif', 40))
self.resultQLabel.setAlignment(Qt.AlignCenter)
self.resultQLabel.setMinimumSize(800, 1)
self.resultQLabel.setMaximumSize(800, 500)
self.resultQLabel.setStyleSheet("QWidget { background-color: #ffffb8 }")
self.switchQPushButton = QPushButton('Start', self)
self.switchQPushButton.setFont(QFont('Serif', 30))
self.switchQPushButton.setMinimumSize(200, 1)
self.switchQPushButton.setMaximumSize(200, 500)
self.switchQPushButton.setStyleSheet("QWidget { background-color: #ff0000 }")
self.switchQPushButton.clicked.connect(self.doAction)
grid = QGridLayout()
grid.addWidget(self.resultQLabel, 1, 1, 1, 1)
grid.addWidget(self.switchQPushButton, 1, 2, 1, 1)
grid.addWidget(self.canvas, 2, 1, 5, 2)
grid.addWidget(rateQLabel, 1, 3, 1, 1)
grid.addWidget(rateQComoBox, 2, 3, 1, 1)
grid.addWidget(gainQLabel, 3, 3, 1, 1)
grid.addWidget(gainQSpinBox, 4, 3, 1, 1)
grid.addWidget(pointQLabel, 5, 3, 1, 1)
grid.addWidget(pointQComoBox, 6, 3, 1, 1)
cc = QDesktopWidget().availableGeometry()
cc.setY(cc.top()+50)
self.setGeometry(cc)
self.setLayout(grid)
self.setWindowTitle('Oscilloscope')
self.my_paint()
def my_paint(self):
self.ax.cla()
y = self.w.fifo_sample(int(self.point_sample*400))
x = np.linspace(0, (len(y)-1)/self.f_sample, len(y))
x = x * 1e6
self.ax.plot(np.real(x), np.real(y))
self.ax.set_xlabel('UNIT : MicroSecond', fontsize=20, verticalalignment='bottom')
self.ax.axis(ymin=-2100, ymax=2100)
self.canvas.draw() # 绘制
hp = self.c.fft_czt(y)
di = hp*6/1e6
self.resultQLabel.setText('频率为: ' + '%.1f Hz' % hp)
def timerEvent(self, e):
self.my_paint()
def doAction(self):
if self.timer.isActive():
self.timer.stop()
self.switchQPushButton.setText('Start')
self.switchQPushButton.setStyleSheet("QWidget { background-color: #ff0000 }")
else:
self.timer.start(1000, self)
self.switchQPushButton.setText('Stop')
self.switchQPushButton.setStyleSheet("QWidget { background-color: #00ff00 }")
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Oscilloscope()
ex.show()
sys.exit(app.exec_())
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
可以与树莓派合体的FPGA开发板 (177个子文件)
SILKSCREEN_BOTTOM.art 1.96MB
SILKSCREEN_TOP.art 1.55MB
TOP.art 96KB
BOTTOM.art 38KB
DRILL_DRAWING.art 21KB
SOLDERMASK_TOP.art 20KB
PASTEMASK_TOP.art 15KB
POWER.art 14KB
GND.art 10KB
SOLDERMASK_BOTTM.art 8KB
PASTEMASK_BOTTOM.art 4KB
OUTLINE.art 977B
pingpang_fifo.v.bak 3KB
sm_spidata.v.bak 2KB
DDS_top.v.bak 1KB
reg_core.v.bak 841B
key_qudou.v.bak 684B
wire_qudou.v.bak 577B
led.v.bak 263B
AD9233_control.v.bak 132B
E18_1_MONIKA.bdf 27KB
MONIKA.BOM 3KB
monika.brd 9.98MB
my_spi.bsf 6KB
my_spi.bsf 3KB
sm_spidata.bsf 3KB
reg_core.bsf 3KB
pll100.bsf 3KB
AD9233_control.bsf 3KB
DDS_top.bsf 3KB
pingpang_fifo.bsf 3KB
wire_qudou.bsf 2KB
key_qudou.bsf 2KB
led.bsf 2KB
my_spi.cmp 1KB
MONIKA_0.DBK 494KB
my_spi.debuginfo 19KB
devices.dml 43B
MONIKA.DRC 3KB
monika-1-4.drl 10KB
MONIKA.DSN 494KB
3.gif 17.1MB
2.gif 15.02MB
1.gif 9.51MB
show.gif 980KB
sanjiao.hex 64KB
juchi_up.hex 64KB
juchi_dn.hex 64KB
sinsin.hex 64KB
my_spi.html 6KB
output_file.jic 8MB
FPGA_PCB.jpg 701KB
zongti.jpg 674KB
type_6p.jpg 628KB
device_choice.jpg 593KB
pcb.jpg 527KB
osci_1.jpg 512KB
AD9233.jpg 434KB
hq.jpg 423KB
dds.jpg 422KB
adshortda.jpg 409KB
dds_all.jpg 397KB
AD9742.jpg 377KB
waiguan.jpg 365KB
diff_amp.jpg 363KB
AD8047.jpg 362KB
config.jpg 350KB
56.jpg 348KB
wspi_sm.jpg 345KB
46.jpg 342KB
tps54531.jpg 342KB
51.jpg 341KB
lianjie.jpg 338KB
52.jpg 333KB
44.jpg 333KB
54.jpg 332KB
43.jpg 330KB
55.jpg 329KB
53.jpg 327KB
42.jpg 327KB
41.jpg 327KB
FIFO.jpg 325KB
45.jpg 323KB
33.jpg 319KB
32.jpg 311KB
31.jpg 306KB
jialichuang.jpg 301KB
AD8369.jpg 255KB
sg_gui.jpg 226KB
sg_1.jpg 223KB
spi_yuanli.jpg 191KB
other_power.jpg 176KB
czt_gui.jpg 173KB
sg_sm.jpg 170KB
apfft_gui.jpg 164KB
mechnical.jpg 143KB
test_ad.jpg 132KB
AD8369_2.jpg 113KB
wspi.jpg 103KB
sch1V2.jpg 95KB
共 177 条
- 1
- 2
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 7288
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于python实现的大麦抢票脚本README说明
- C++ Calculate CGPA and GPA 代码
- 2023-04-06-项目笔记 - 第三百零五阶段 - 4.4.2.303全局变量的作用域-303 -2025.11.02
- LabVIEW练习34,在一个波形表中显示三条随机数组成的曲线
- ch340串口驱动程序+2011版本
- bili-mac-v1.15.0.dmg
- 引入注意力机制的resnet鸟类识别
- 技术资料分享ZigBee网络管理实验例程手册非常好的技术资料.zip
- 技术资料分享Zigbee技术规范与协议栈分析非常好的技术资料.zip
- 技术资料分享zigbee各版本规范比较非常好的技术资料.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功