0s_create_task(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/D转换子程序主要对配电箱传来的模拟信号进行采样、量化及返回值处理。软件编程时的电气时序及相关技术要求如图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时有二种常用的方法,即存储器映射寄存器寻址和模拟接口时序,本系统采用后一种方法。主要函数模块源代码分析: