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区域内。

3.3 DS18820的1-Wire子程序

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