#define uchar unsigned char
#define uint unsigned int
uint temp;
float f_temp;
sbit Ds=P2^2;
sbit Dula=P2^6;
sbit Wela=P2^7;
sbit LcdCS=P3^5; //寄存器选择输入 通过rs确定是写数据还是写命令
sbit LcdSID=P3^6; //液晶读/写控制 因为不从液晶读取任何数据,所以rw一直为0
sbit LcdSCLK=P3^4; //液晶使能控制 给en一个高脉冲将数据送入液晶控制器
sbit LcdPSB=P3^7; //串并方式控制
sbit DSCS=P1^4; //片选信号,低电平有效
sbit DSAS=P1^5; //地址选通输入端 AS的上升沿将AD0~AD7上出现的地址信息锁存到DS12C887上,下降沿清除地址信息
sbit DSRW=P1^6; //
sbit DSDS=P1^7; //
uchar code table1[]={" CHPAVC 天若海愚"};
uchar code table3[]={"星期一"};
uchar code table4[]={"星期二"};
uchar code table5[]={"星期三"};
uchar code table6[]={"星期四"};
uchar code table7[]={"星期五"};
uchar code table8[]={"星期六"};
uchar code table9[]={"星期日"};
uchar code table10[]={"°C"};
uchar buff[4];
char year,month,day,week,miao,fen,shi;
uchar nyrsfm[17]; //Write_nyrsfm函数中,方法二nyrsfm只需申明成nyrsfm[16]
/***************************************************************
文件名称: wannianli
作者 : 天若海愚
版本号 : V1.0
说明 :
创建时间: 2013年9月17日13:30:38
修改记录: 无
备注 : 在12864液晶屏上显示从DS12C887采集到的年、月、日、时、分数据,并且利用DS18B20采集温度显示在12864上
***************************************************************/
#include<reg52.h>
#include<define.h>
#include<intrins.h>
#include<stdio.h>
/***********************************
函数名称: Delay()
函数功能: 延时
入口参数: z
备注 :
***********************************/
void Delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/**********************************
函数名称: Ds_reset()
函数功能: DS18B20复位,初始化函数
入口参数: 无
备注 :
**********************************/
void Ds_reset()
{
uint i;
Ds=1; //书P348,时序图,先将数据线置高电平1
_nop_(); //延时,尽可能短一点
Ds=0;
i=103;
while(i>0)
i--; //当总线停留在低电平超过480us,总线上所以器件都将被复位,这里
//延时约680us总线停留在低电平超过480μs,总线上的所有器件都将被复位
_nop_(); //延时,尽可能短一点
Ds=1;
i=5;
while(i>0)
i--; //释放总线后,如果初始化成功则在15~60us内产生一个由DDS18B20返回的低电平0,据
//该状态可以确定它的存在,但是不能无限制地等
}
/**********************************
函数名称: Ds_read_bit()
函数功能: 读一位数据函数
入口参数: 无
备注 :
**********************************/
bit Ds_read_bit()
{
uint i;
bit dat;
Ds=0; //单片机(微处理器)将总线拉低
_nop_(); //读时隙起始于微处理器将总线拉低至少1us
Ds=1; //拉低总线后接着释放总线,让从机18b20能够接管总线,输出有效数据