一種基于DDS和Qt的“所見即所得”波形發生器
(3)6 B只使用了最低位,為1啟動DDS,為0則停止DDS。
(4)地址7是一個虛地址,并不對應著實際的物理寄存器,而是與相位累加器組合指向RAM的某一個單元,通過對地址7的寫操作就間接的實現了對整個RAM的操作,這樣大大簡化了對DDS的控制操作。
1.3 電平偏移及放大電路
電平偏移及放大電路用于消除輸出信號中疊加的無效直流分量(允許有效直流量輸出)和調整信號增益,其電路圖如圖2所示。本文引用地址:http://www.104case.com/article/187626.htm
根據圖2電路有:
式中:Rv是R4兩部分的并聯電阻,當
2 Qt程序設計
2.1 GUI設計
GUI(圖形用戶界面)是人機交互的窗口,GUI的設計直接關系到產品的可操作性,是軟件設計中非常重要部分。考慮到觸摸屏面板的空間有限,因此控件(Widgets)的設計盡量緊湊。該系統的GUI設計見圖3。
左側為工具欄,右側黃色區域為繪圖區。繪圖區提供了滾動條,用于繪制超出屏幕范圍的波形。可以繪制較長的序列信號。工具欄從上到下分為繪圖模式選擇區,波形輸出設定區,時間設定區及清屏和退出按鈕。波形的繪制只允許從左向右進行,一個時刻只對應一個數據點;已繪制波形允許修改,修改過程中自動變成紅色,修改完畢自動變成默認顏色。
2.2 Qt編程原理和方法
Qt程序設計采用面向對象和事件驅動的方法,整個GUI程序劃分為兩個類,其中主窗口為一個類,類名為MainWindow,繼承自Qt的QMa-inWindow類,它提供了工具條(toolbar)和一個主窗口(mainwindow);另一個類是DrawWidget,提供了一個繪圖區域,有4種事件,分別為觸摸筆按下(mousePressEvent),移動(mouseMoveEvent),松開(mouseReleaseEvent)和繪圖區重繪事件(paintEvent)。同時提供了處理波形的函數waveProcess和調用底層驅動的接口。滾動條是通過QScrollView類提供的視圖功能來實現的。延遲輸出功能通過Qtimer類來實現,延遲范圍0~999 s。觸摸筆的3個事件的發生順序和處理過程見圖4。
評論