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℃)且精度高。