鄭 洪,曲 博
(沈陽工程學(xué)院 a.產(chǎn)業(yè)管理處;b.新能源學(xué)院,遼寧沈陽110136)
根據(jù)模擬量數(shù)據(jù)采集系統(tǒng)的功能,將整體程序劃分為上位機(jī)和下位機(jī)兩部分。上位機(jī)完成編寫界面,將執(zhí)行命令通過串口發(fā)送給下位機(jī);下位機(jī)將上位機(jī)發(fā)送來的信號(hào)進(jìn)行采集、轉(zhuǎn)換、處理,然后返回給上位機(jī)。
上位機(jī)運(yùn)用VB進(jìn)行編程,設(shè)計(jì)界面,選擇通道口,發(fā)送執(zhí)行指令給下位機(jī),下位機(jī)將處理完的數(shù)據(jù)返回給上位機(jī),使其顯示,如圖1所示。
圖1 上位機(jī)程序
上位機(jī)人機(jī)界面的轉(zhuǎn)換設(shè)置分為單路轉(zhuǎn)換、多路轉(zhuǎn)換和八路轉(zhuǎn)換,如圖2所示,采集數(shù)據(jù)的結(jié)果可以在對(duì)應(yīng)通道內(nèi)顯示出來。
圖2 上位機(jī)人機(jī)界面
下位機(jī)主要是將上位機(jī)發(fā)送來的選擇信號(hào)進(jìn)行采集和轉(zhuǎn)換,然后通過端口返回給上位機(jī),使其顯示,其程序如圖3所示。
轉(zhuǎn)換過程是A/D轉(zhuǎn)換,其程序如圖4所示。
#include<reg52.h>
#include“intrins.h”//調(diào)用_nop_();延時(shí)函數(shù)用
unsigned char code dispbitcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char dispbuf;
unsigned char getdata;
unsigned int temp;
sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^3;
sbit ALE=P3^7;
sbit P34=P3^4;
sbit P35=P3^5;
sbit P36=P3^6;
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P17=P1^7;
sbit button1=P2^4;
sbit button2=P2^5;
sbit button3=P2^6;
sbit button4=P2^7;
void TimeInitial();
void Delay(unsigned int i);
void TimeInitial()
{
TMOD=0x01;
TH0=(65536-200)/256;
TL0=(65536-200)%256;
EA=1;
ET0=1;
TR0=1;
}
圖3 下位機(jī)程序流程
圖4 A/D轉(zhuǎn)換程序流程
調(diào)試的主要任務(wù)包括硬件調(diào)試、軟件調(diào)試和整體聯(lián)調(diào)。由于硬件和軟件的研制是相對(duì)獨(dú)立進(jìn)行的,而且軟件和硬件的調(diào)試過程也相對(duì)獨(dú)立,這使得軟、硬件的調(diào)試過程存在缺陷,易發(fā)生故障,所以需對(duì)其故障源進(jìn)行判斷,并進(jìn)行反復(fù)修復(fù),直至沒有故障之后,再接入單片機(jī)進(jìn)行整機(jī)聯(lián)調(diào)。
由于整體調(diào)試必須要在軟件調(diào)試成功的基礎(chǔ)上進(jìn)行,所以按照先主后次的原則首先進(jìn)行主程序調(diào)試,其次是子程序調(diào)試,最后進(jìn)行主程序調(diào)用各子程序調(diào)試。軟件調(diào)試中整個(gè)測(cè)試過程通過Keil系統(tǒng)完成。完成軟件調(diào)試后,需要在采集板上進(jìn)行整體調(diào)試。整個(gè)電路板分為4大主要部分,分別是單片機(jī)部分、輸入部分、輸出部分和電平轉(zhuǎn)換部分,還有其他具有輔助作用的小規(guī)模電路。
完成整體程序的設(shè)計(jì)和硬件的搭接之后,確保軟、硬件調(diào)試正確無誤,再對(duì)軟、硬件進(jìn)行聯(lián)合調(diào)試。在調(diào)試中,繼續(xù)尋找單獨(dú)調(diào)試時(shí)無法顯現(xiàn)的故障并進(jìn)行修復(fù),反復(fù)對(duì)單片機(jī)是否能接收和發(fā)送信號(hào)進(jìn)行核對(duì)和調(diào)試。當(dāng)單片機(jī)能夠完成信號(hào)的接收和發(fā)送,達(dá)到所設(shè)計(jì)系統(tǒng)的現(xiàn)實(shí)需求,然后與上位機(jī)進(jìn)行聯(lián)機(jī)通信,最后進(jìn)行軟件固化與整機(jī)組裝的工作。
1)先對(duì)輸入和輸出模塊進(jìn)行調(diào)試,看是否能正常輸入和輸出數(shù)據(jù)。
2)在單片機(jī)里寫入一個(gè)簡單的輸出高電平程序,測(cè)試單片機(jī)是否好用。
3)對(duì)串口通信模塊進(jìn)行調(diào)試,加入串口通信程序,并連接好RS-232線,用調(diào)試工具進(jìn)行收發(fā)信息。
4)將整個(gè)數(shù)據(jù)采集系統(tǒng)電路連接上,測(cè)試數(shù)據(jù)的接收與發(fā)送。
5)與上位機(jī)進(jìn)行通信,進(jìn)行最后的調(diào)試。
1)如果檢測(cè)單片機(jī)的TX和RX引腳時(shí)沒有信號(hào),是因?yàn)殡娖睫D(zhuǎn)換芯片MAX-232與串口連線錯(cuò)誤,未能進(jìn)行電平轉(zhuǎn)換,需要將MAX-232與串口的RxD和TxD反接,將電腦發(fā)出的電平轉(zhuǎn)換為單片機(jī)所能接收的TTL電平。
2)如果單片機(jī)不能正常復(fù)位,是因?yàn)閺?fù)位電路的+5 V電源接錯(cuò)地方,需重新焊接到電容和電阻中間。
3)如果單片機(jī)通電之后系統(tǒng)不能正常運(yùn)行,是因?yàn)閱纹瑱C(jī)的EA懸空,需將EA接1 K電阻后,再接上+5 V電源。
4)如果不能采集到從輸入部分傳來的信號(hào),是因?yàn)楣怆婑詈掀鞯腃OM接地端沒有接地,處于懸空狀態(tài)。光電耦合器輸入端的電源要與系統(tǒng)板的電源隔開,才能實(shí)現(xiàn)隔離作用。所以,光電耦合器的接地端要接地,并且要與系統(tǒng)板分開,接在與輸入端的電源對(duì)應(yīng)的地上。
在軟件和硬件聯(lián)合調(diào)試后,下位機(jī)與上位機(jī)通信并進(jìn)行實(shí)物演示。演示結(jié)果證明:電腦可以通過發(fā)送指令控制單片機(jī),從而控制模擬信號(hào)的采集,且下位機(jī)能夠?qū)⒉杉瘉淼慕Y(jié)果返回給上位機(jī)。
以AT89C52單片機(jī)作為核心控制部分的模擬量數(shù)據(jù)采集系統(tǒng)實(shí)現(xiàn)了對(duì)串口通信環(huán)境下模擬信號(hào)的實(shí)時(shí)采集。通過運(yùn)用單片機(jī)和多路數(shù)據(jù)采集技術(shù),成功開發(fā)出基于單片機(jī)的多路數(shù)據(jù)模擬信號(hào)采集的下位機(jī)系統(tǒng),進(jìn)而完成了指令和數(shù)字傳達(dá),實(shí)現(xiàn)了數(shù)據(jù)的接收和發(fā)送過程。
[1]曹衛(wèi)芳.基于MCS-51系列單片機(jī)的通用控制模塊的研究[D].青島.山東科技大學(xué),2005.
[2]張毅剛,彭喜元.單片機(jī)原理與應(yīng)用[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2004.
[3]周興華.單片機(jī)智能化產(chǎn)品C語言設(shè)計(jì)實(shí)例詳解[M].北京.北京航空航天大學(xué)出版社,2006.