本文從本人的163博客搬遷至此。
前面幾個例子介紹了NI數據采集卡的模擬輸入和輸出功能,本例則集中介紹USB-6009的數字輸入輸出功能。本例包括基本數字IO電路及在LabVIEW中控制USB-6009的數字IO的方法。作為"用NI的數據采集卡實現簡單電子測試"系列的結束,本文最后還介紹了本系列博文的實驗板/平台。
一、數字I/O電路
1、數字輸入電路
為了形象的展示I/O口的輸入功能,使用了圖1a所示的電路,其中的DIP_SW是四位撥碼開關(又稱DIP開關或平撥開關),P1.0~P1.3被直接連接到USB-6009的數字輸入端口。
圖1a 數字輸入電路圖 圖1b四位撥碼開關
四位撥碼開關外形如圖1b所示,向上撥動則開關導通,向下撥動則開關斷開。為使開關向上撥時輸出高電平,采用了圖1a所示的電阻下拉電路。值得注意的是,如本系列第一篇所述,USB-6009的I/O口在即使在輸入狀態下也具有4.7K歐姆的上拉電阻,為使撥動開關斷開時獲得低電平輸出,電路采用了1K歐姆的下拉電阻——與普通單片機電路不同。
2、數字輸出電路
數字I/O的輸出功能,可由數字輸出I/O連接的LED的亮或滅得到展示。但當USB-6009的I/O口被配置為輸出功能時,也只能提供4.7K歐姆的上拉——如果只用於點亮一只普通的LED燈則不夠明亮。如果反過來用USB-6009的灌電流來電量LED,則與學生"高電平亮,低電平滅"的思維習慣相左。因此我采用了圖2所示的LED驅動電路。
圖2 數字輸出電路
二、測試程序
1、數字輸入程序
數字輸入程序框圖如下圖所示。
圖3 數字輸入程序框圖
輸入的二進制值時以數組的形式從讀取函數中輸出的,采用"數組索引"函數將其分解為單個二進制值,最后再分別送到前面板顯示控件,如下圖所示。
圖4 數字輸入程序運行圖
2、數字輸出程序
數字輸出控制程序框圖如下圖所示。
圖5 數字輸出控制程序
其中"P0.0控制"、"P0.1控制"……"P0.7控制"為八個二進制開關輸入控件。它們全部被一個事件結構所控制,只在波動二進制開關輸入控件數組變化時,才被統一置位和清零。運行時前面板如下圖所示。
圖6 數字輸出控制程序運行效果
三、本系列的實驗平台
為完成上述基於數據采集卡的測試實驗,我設計了一塊面積為78×68mm的雙層實驗電路板,PCB圖和實物圖如下所示。
圖7 實驗平台PCB圖