微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于RlTOS和ISP功能数字仪表系统设计实现

基于RlTOS和ISP功能数字仪表系统设计实现

时间:02-09 来源:互联网 点击:

k(LCMI)isplay);

0s_delete_task(Intial);

}

其中相关的宏定义变量值为:

#define Intial O

#define ADC0809Data 1

#define DSl 8820Temperate 2

#define LCMDisplay 3

在Keil集成开发环境下调试本程序时,除了要包括相应的头文件(rtx51tny.h)外,还必须设置好相应的环境参数值。

3.1数模转换子程序

数据采集与A/I)转换子程序主要对配电箱传来的模拟信号进行采样、量化及返回值处理。软件编程时的电气时序及相关技术要求如图4所示。

在时序图中,上升沿清空量化结果寄存器内的值,下降沿启动,A/D转换;采样启动脉冲的高电平状态至少应维持100μs;EOC变为低电平表示转换过程正在进行,且启动信号的硬件迟滞效应时间至少应为10μs;MSB对应AT89S52并口的:P0.7,LSB对应P0.0。

关键部分的程序源代码及注释如下:

unsigned int AI)C0809(void)

{

unsigned int wait=3;

ChannelChooseA=1;

ChannelChooseB=0;

ChannelChooseC=0;

ADStartPulse=0;

ADStartPulse=1;//产生A/D转换的启动脉冲

(上升沿部分)

delay();//保证启动脉冲的高电平宽度

至少大于100μs

ADStartPulse=0;//产生A/D转换的启动脉冲

(下降沿部分)

wait--;

wait--; //指令延时以保证达到:EOC

变为低电平所需的硬件迟滞要求。

‘whilefADConvertEOC==0):

return(Result);/将A/[)转换后的量化值返

回到主函数中。

}

3.2液晶显示模块

MSl2232B 型图形点阵液晶显示(LCM)模块左右分为Master和Slave控制器,上下共分4页,左边列地址为0-61,右边列地址为0-61,对该器件的操作关键是按时序图正确配置好主、辅控制器的工作状态。利用AT89S52访问LCM时有二种常用的方法,即存储器映射寄存器寻址和模拟接口时序,本系统采用后一种方法。主要函数模块源代码分析:

void MasterWriteD(unsigned char Ramdata)

//向Master控制器写数据

{

ReadOrWrite=0;

InstructionOrData=1;

MasterEl=1;

P0=Ramdata;

MasterEl:0;

}

void MasterWriteI(unsigned char Ramdata)

//向Master控制器写指令

{

ReadOrWrite=0;

InstructionOrData=0;

MasterEl=1;

P0=Ramdata;

MasterE1=O;

}

void ReadState(void) //检测主、辅控制器工作状态

{

ReadOrWrite=1;

InstructionOrData=0;

MasterEl=1:

SlaveE2=1;

PO=0xff;

while(BusStateBusy==1);

}

void SetPage(unsigned char page0,unsigned char pagel)

{

MasterWriteI(0xb8 | pagel);

SlaveWriteI(0xb8 | page0);

}

void SetColumn(unsigned char address0,unsigned char addressl)

{

MasterWriteI(0x3f addressl);

SlaveWfiteI(0x3f address0);

}

//在主控制器操作的左边LCM屏上显示一列信息(由8个像素点构成)

void MasterPutChar(unsigned char masterchar)

{

ReadState();

MasterWriteD(masterchar);

}

一般说来。AT89S52的RAM存储空间是有限的,而图形或字符的点阵代码(可以下载相关的应用插件,由.bmp文件或字符自动生成)如果太大,放置到RAM区会出现内存不足的告警提示,为此可按如下方式处理:

unsigned char code Dotn[]=lOxOO,Ox00,0x30,

0x00,0x30,Ox00,Ox00,0x00};

即将点阵代码通过code关键字限定后放于ROM区域内。

}

return(midtemp);

}

void delay(unsigned char out)

{

unsigned char in;

for(in=out;in>O;in--);

}

4 ISP的结构原理

将ISP功能集成到成型的PCB上就可以实现程序的实时更新与升级操作,其结构原理如图5所示,这对于复杂工程系统设计显然是很方便的,也是切实可行的。

5

5 结论

随着智能仪器仪表技术的发展,显示模块的液晶化已成为一种较为流行的趋势。本文给出的软硬件设计方案已在某武器系统的调试过程中得到正确、可靠、稳定的运行。它不仅克NT模似仪表体积大、故障率高的缺陷,而且由于运用了RTOS技术,使数据检测的敏捷度得到大幅提升。另外,ISP功能的在线集成也为系统功能的扩充预留了空间。


3.3 DSl8820的1-Wire子程序

DSl8820的突出优点是将现场采集的环境温度直接以数字形式输出,这样可以省去后续的信号放大及模/数转换部分,构建外围电路的元件少且相对简单,系统成本低廉;1-Wire接口与AT89S52通信,其结构便于多点测量且易于扩展;测温范围宽(-550℃~1250℃)且精度高。

对l-Wire的操作关键是软件时序的处理,对于不同的晶体振荡器其延时参数是不同的,本系统以12MHz为例给出如下主要程序代码:

bit DallassReset(void)

{

unsigned char presence=0;

DallassDataout=1; //发出复位脉冲前先释

放总线

delay(10);

DallassDataout=0;

delay(240);//保证延时在4801μs~9

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top