王子卿
摘 要科學探測呈現出向深度智能化和三維方向發展的趨勢,智能傾角測量系統成為發展的關鍵。本文采用模塊化設計思想,以HMC1022傳感器、CS5550模數轉換器、AT89S52單片機以及顯示模塊等為基礎,設計實現了智能傾角測量系統,并基于uVision開發環境,采用C51語言編程實現了智能傾角測量系統的單片機軟件程序設計。
【關鍵詞】C51語言 智能傾角 電子羅盤 科學探測
隨著社會經濟的高速發展,數字式電子羅盤在現代科學探測,以及工、農業生產和日常生活中應用越來越廣泛,并呈現出向深度智能化和三維方向發展的趨勢。這就需要大量高精度的方位及傾角的測量及處理,而要保證方向測量的高精度,需研制高精度電子羅盤。同時,隨著電子羅盤應用的廣泛性,其系統本身的要求體現在抗干擾性好、設計靈活、方便、成本低,適合于比較惡劣的環境等方面。本文給出了智能傾角測量系統的設計方案,并給出了C51語言的實現方法。
1 智能傾角測量系統設計
本文智能傾角測量系統采用模塊化設計思想,為確保傾角數據采集的穩定性和準確性,采用HMC1022傳感器集成芯片,并通過模數轉換后,由單片機進行控制和分析,實現傾角數據采集,傾角數據數字化的顯示等功能。整個數據采集模塊采用集成了測量傾角傳感器的HMC1022芯片,它是霍尼維爾公司的新產品之一,是一款高精度低成本型的磁通傳感器。模數轉換采用高精度低成本低功耗的CS5550芯片,它是一個包含兩個Δ-Σ模數轉換器(ADC)和一個串行接口的高度集成的Δ-Σ雙通道低成本模數轉換器。CS5550具有方便的片上AC/DC 偏移和增益校準功能,包含一個可與控制器雙向通訊的串行接口、一個可用于增益補償的片上溫度傳感器。而控制處理的單片機采用的是AT89S52單片機,是一種低功耗、高性價比的8位微控制器,具有8K在系統可編程Flash存儲器,具有成本低、穩定性好的優點。
整個系統的硬件部分由HMC1022傳感器、CS5550模數轉換器、AT89S52單片機以及顯示模塊構成。系統整體結構圖如圖1所示。
HMC1022處于工作狀態之下的時候,當其檢測到外部有傾角信號的時候,便進行數據采集工作,并存儲在寄存器之中。HMC1022采集的信號是模擬信號,須經過模數轉換后才能進入單片機進行處理及數字化顯示,CS5550是一款高精度低成本的模數轉換芯片,配合CS5550的軟件編程,對HMC1022所采集的模擬信號進行模數轉換后,模擬信號變成了數字信號。數字信號送入AT89S52單片機,利用軟件編程進行分析處理,讓這些數字信號通過串口連接通信至計算機,可以在計算機或是液晶顯示屏上把HMC1022所測得的傾角信號以數字化的形式顯示出來,給科學探測提供準確有效的數據。
2 C51語言編程實現
本文給出了主程序方案,進一步使用軟件編程C51語言在uVision編輯器中實現了主程序設計。
2.1 主程序方案
主程序先初始化各IO端口及各分立器件,如AT89S52單片機的管腳選用及定義,開外部中斷等。主程序主要調用了3個主要子程序,分別是HMC1022工作驅動程序,CS5550模數轉換程序、數據分析處理及顯示程序。
主程序流程如圖2所示。
2.2 主要程序設計
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 寫命令函數
void spiwrite_com(uchar Input) //寫命令函數
{
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轉換部分程序
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) //校準函數
{ uchar i,j,k;
setAcgnd;
spiwrite_com(0x0dd); //AIN1,AIN2通道AC偏移校準
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偏移校準
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); //寫配置寄存器,增益10,下降沿有效采樣率1KHz;
spiwrite_dat(0x1074);
spiwrite_com(0x5e); //寫狀態寄存器
spiwrite_dat(0xffffff);
spiwrite_com(0x74);
spiwrite_dat(0x836019); //寫中斷屏蔽寄存器
spiwrite_com(0x4A); //寫轉換次數計數器,更新頻率100hz;
spiwrite_dat(0x10);
spiwrite_com(0xE8); //開啟轉換
3 結論
本文采用模塊化設計思想設計了智能傾角測量系統,整個系統的硬件部分由HMC1022傳感器、CS5550模數轉換器、AT89S52單片機以及顯示模塊構成。本文給出了主程序方案,進一步使用軟件編程C51語言實現了包含HMC1022工作驅動程序,CS5550模數轉換程序、數據分析處理及顯示程序3個子程序的設計。本文為科學探測工程中對方位傾角數據采集模塊的實現提供了一種可以應用的解決方案。
參考文獻
[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入門教程(英文版)[DB/OL].2001.
作者單位
華北電力大學國際教育學院 北京市 102206