王子卿
摘 要科學(xué)探測(cè)呈現(xiàn)出向深度智能化和三維方向發(fā)展的趨勢(shì),智能傾角測(cè)量系統(tǒng)成為發(fā)展的關(guān)鍵。本文采用模塊化設(shè)計(jì)思想,以HMC1022傳感器、CS5550模數(shù)轉(zhuǎn)換器、AT89S52單片機(jī)以及顯示模塊等為基礎(chǔ),設(shè)計(jì)實(shí)現(xiàn)了智能傾角測(cè)量系統(tǒng),并基于uVision開(kāi)發(fā)環(huán)境,采用C51語(yǔ)言編程實(shí)現(xiàn)了智能傾角測(cè)量系統(tǒng)的單片機(jī)軟件程序設(shè)計(jì)。
【關(guān)鍵詞】C51語(yǔ)言 智能傾角 電子羅盤(pán) 科學(xué)探測(cè)
隨著社會(huì)經(jīng)濟(jì)的高速發(fā)展,數(shù)字式電子羅盤(pán)在現(xiàn)代科學(xué)探測(cè),以及工、農(nóng)業(yè)生產(chǎn)和日常生活中應(yīng)用越來(lái)越廣泛,并呈現(xiàn)出向深度智能化和三維方向發(fā)展的趨勢(shì)。這就需要大量高精度的方位及傾角的測(cè)量及處理,而要保證方向測(cè)量的高精度,需研制高精度電子羅盤(pán)。同時(shí),隨著電子羅盤(pán)應(yīng)用的廣泛性,其系統(tǒng)本身的要求體現(xiàn)在抗干擾性好、設(shè)計(jì)靈活、方便、成本低,適合于比較惡劣的環(huán)境等方面。本文給出了智能傾角測(cè)量系統(tǒng)的設(shè)計(jì)方案,并給出了C51語(yǔ)言的實(shí)現(xiàn)方法。
1 智能傾角測(cè)量系統(tǒng)設(shè)計(jì)
本文智能傾角測(cè)量系統(tǒng)采用模塊化設(shè)計(jì)思想,為確保傾角數(shù)據(jù)采集的穩(wěn)定性和準(zhǔn)確性,采用HMC1022傳感器集成芯片,并通過(guò)模數(shù)轉(zhuǎn)換后,由單片機(jī)進(jìn)行控制和分析,實(shí)現(xiàn)傾角數(shù)據(jù)采集,傾角數(shù)據(jù)數(shù)字化的顯示等功能。整個(gè)數(shù)據(jù)采集模塊采用集成了測(cè)量?jī)A角傳感器的HMC1022芯片,它是霍尼維爾公司的新產(chǎn)品之一,是一款高精度低成本型的磁通傳感器。模數(shù)轉(zhuǎn)換采用高精度低成本低功耗的CS5550芯片,它是一個(gè)包含兩個(gè)Δ-Σ模數(shù)轉(zhuǎn)換器(ADC)和一個(gè)串行接口的高度集成的Δ-Σ雙通道低成本模數(shù)轉(zhuǎn)換器。CS5550具有方便的片上AC/DC 偏移和增益校準(zhǔn)功能,包含一個(gè)可與控制器雙向通訊的串行接口、一個(gè)可用于增益補(bǔ)償?shù)钠蠝囟葌鞲衅?。而控制處理的單片機(jī)采用的是AT89S52單片機(jī),是一種低功耗、高性價(jià)比的8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器,具有成本低、穩(wěn)定性好的優(yōu)點(diǎn)。
整個(gè)系統(tǒng)的硬件部分由HMC1022傳感器、CS5550模數(shù)轉(zhuǎn)換器、AT89S52單片機(jī)以及顯示模塊構(gòu)成。系統(tǒng)整體結(jié)構(gòu)圖如圖1所示。
HMC1022處于工作狀態(tài)之下的時(shí)候,當(dāng)其檢測(cè)到外部有傾角信號(hào)的時(shí)候,便進(jìn)行數(shù)據(jù)采集工作,并存儲(chǔ)在寄存器之中。HMC1022采集的信號(hào)是模擬信號(hào),須經(jīng)過(guò)模數(shù)轉(zhuǎn)換后才能進(jìn)入單片機(jī)進(jìn)行處理及數(shù)字化顯示,CS5550是一款高精度低成本的模數(shù)轉(zhuǎn)換芯片,配合CS5550的軟件編程,對(duì)HMC1022所采集的模擬信號(hào)進(jìn)行模數(shù)轉(zhuǎn)換后,模擬信號(hào)變成了數(shù)字信號(hào)。數(shù)字信號(hào)送入AT89S52單片機(jī),利用軟件編程進(jìn)行分析處理,讓這些數(shù)字信號(hào)通過(guò)串口連接通信至計(jì)算機(jī),可以在計(jì)算機(jī)或是液晶顯示屏上把HMC1022所測(cè)得的傾角信號(hào)以數(shù)字化的形式顯示出來(lái),給科學(xué)探測(cè)提供準(zhǔn)確有效的數(shù)據(jù)。
2 C51語(yǔ)言編程實(shí)現(xiàn)
本文給出了主程序方案,進(jìn)一步使用軟件編程C51語(yǔ)言在uVision編輯器中實(shí)現(xiàn)了主程序設(shè)計(jì)。
2.1 主程序方案
主程序先初始化各IO端口及各分立器件,如AT89S52單片機(jī)的管腳選用及定義,開(kāi)外部中斷等。主程序主要調(diào)用了3個(gè)主要子程序,分別是HMC1022工作驅(qū)動(dòng)程序,CS5550模數(shù)轉(zhuǎn)換程序、數(shù)據(jù)分析處理及顯示程序。
主程序流程如圖2所示。
2.2 主要程序設(shè)計(jì)
2.2.1 初始化定義程序
#include
#include
#include
#include
sbit AT P42=P1^0;//管腳端口位定義
sbit AT P41=P1^1;
sbit AT P40=P1^2;
sbit AT P43=P1^3;
sbit AT P44=P1^4;
sbit AT P1=P1^5;
sbit AT P2=P1^6;
sbit AT P5=P3^0;
sbit AT P7=P3^1;
#define clrclk AT P42=0
#define setclk AT P42=1
#define clrout AT P41=0
#define setout AT P41=1
#define setcs AT P40=1
#define clrcs AT P40=0
#define setled1 AT P44=1
#define clrled1 AT P44=0
#define setled2 AT P5=1
#define clrled2 AT P5=0
#define setAcgnd AT P7=1
#define clrAcgnd AT P7=0
#define uchar unsigned char
#define uint unsigned int
#define ulint unsigned long int
#define TR 1
unchar idata buf[16];
unchar pf;
uint min=11;
uint max=22;
uint dat1,dat2;
void cttx();
2.2.2 寫(xiě)命令函數(shù)
void spiwrite_com(uchar Input) //寫(xiě)命令函數(shù)
{
uchar i,j;
setcs;
clrclk;
shortdelay();
clrcs;
for (i=0;i<8;i++)
{
clrclk;
if (0x80 == (Input & 0x80)){setout;}
else clrout;
for(j=0;j<10;j++);
setclk;
for(j=0;j<8;j++);
Input = Input<<1 ;
}
clrclk;
for(j=0;j<5;j++);
setcs;
clrout;
clrcs;
}
2.2.3 CS5550轉(zhuǎn)換部分程序
void cs5550initial() //初始化
{
uchar i,data0=0;
spiwrite_com(0x80);
for(i=0;i<50;i++);
for(i=0;i<15;i++){spiwrite_com(0x0ff);}
spiwrite_com(0xfe);
spiwrite_com(0x80);
}
void cs5550adjust(void) //校準(zhǔn)函數(shù)
{ uchar i,j,k;
setAcgnd;
spiwrite_com(0x0dd); //AIN1,AIN2通道AC偏移校準(zhǔn)
spiwrite_dat(0xffffff);
spiwrite_com(0x0CD);
for(i=0;i<200;i++)
{for(k=0;k<200;k++)
{for(j=0;j<100;j++);}
}
spiwrite_dat(0xffffff);
spiwrite_com(0x0d9); //DC偏移校準(zhǔn)
for(i=0;i<200;i++)
{for(k=0;k<200;k++)
{for(j=0;j<50;j++);}
}
clrAcgnd;
}
void cs5550start(void)
{
spiwrite_com(0x40); //寫(xiě)配置寄存器,增益10,下降沿有效采樣率1KHz;
spiwrite_dat(0x1074);
spiwrite_com(0x5e); //寫(xiě)狀態(tài)寄存器
spiwrite_dat(0xffffff);
spiwrite_com(0x74);
spiwrite_dat(0x836019); //寫(xiě)中斷屏蔽寄存器
spiwrite_com(0x4A); //寫(xiě)轉(zhuǎn)換次數(shù)計(jì)數(shù)器,更新頻率100hz;
spiwrite_dat(0x10);
spiwrite_com(0xE8); //開(kāi)啟轉(zhuǎn)換
3 結(jié)論
本文采用模塊化設(shè)計(jì)思想設(shè)計(jì)了智能傾角測(cè)量系統(tǒng),整個(gè)系統(tǒng)的硬件部分由HMC1022傳感器、CS5550模數(shù)轉(zhuǎn)換器、AT89S52單片機(jī)以及顯示模塊構(gòu)成。本文給出了主程序方案,進(jìn)一步使用軟件編程C51語(yǔ)言實(shí)現(xiàn)了包含HMC1022工作驅(qū)動(dòng)程序,CS5550模數(shù)轉(zhuǎn)換程序、數(shù)據(jù)分析處理及顯示程序3個(gè)子程序的設(shè)計(jì)。本文為科學(xué)探測(cè)工程中對(duì)方位傾角數(shù)據(jù)采集模塊的實(shí)現(xiàn)提供了一種可以應(yīng)用的解決方案。
參考文獻(xiàn)
[1]Honeywell HMC1022 Data Book.2000.
[2]CirrusLogic,Inc.CS5550 Datasheet [EB/OL].2008.http://www.cirrus.com/en/pubs/proDatasheet/CS5550_F1.pdf.
[3]ATMEL公司.AT89S52芯片資料[S].http://www.atmel.com,2007.
[4]Keil uVision2入門(mén)教程(英文版)[DB/OL].2001.
作者單位
華北電力大學(xué)國(guó)際教育學(xué)院 北京市 102206