#include<reg51.h>
#include<absacc.h>
#define SEND_INIT XBYTE[0xf400]
#define SEND_DATA XBYTE[0xf500]
#define READ_BUSY XBYTE[0xf600] //
#define READ_DATA XBYTE[0xfF00] //读点地址
#define COM8155 XBYTE[0x8000]
#define PB XBYTE[0X8002]
#define PC XBYTE[0X8003]
#define DQ PA5
#define uchar unsigned char
#define uint unsigned int
#define comm 0 //定义传送指令代码为0
#define dat 1
bit busy;
sbit DQ=P1^0; //ds18b20与单片机连接口
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2; //定义LCD忙标志位
void first();// 初始化
void wr_lcd (uchar dat_comm,uchar content); //写控制字与数据
void wr_str(unsigned char addr,unsigned char counts,const unsigned char *ps);//写字符串
void chk_busy (void);
void delay (uint us);
void init_lcd();
void clrram(void);
void loose();
void dshi();
void dge();
void Write_hms(uint add,uchar date) ;
uchar data disdata[5];
uint tvalue; //温度值
uchar tflag; //温度正负标志
uchar yu=0;
uint a=5,b;
uchar shi=0,ge=0,ai;//定义变量
uchar code TAB1A[]={"题目:时钟显示"};
uchar code TAB1B[]={"时间: 00: 00: 00"};
uchar code TAB1C[]={"摄氏温度: 0000"};
uchar code TAB1D[]={"华氏温度:00"};
//uchar code disdata[]={0,1,2,3};
uchar miao,fen,shi;
/******************************************************************************************
* 函数名称 :init_lcd
* 功能描述 :初始化LCD
******************************************************************************************/
void init_lcd()
{ wr_lcd(comm,0x30); //0011 0000 扩充功能设定——8位数据 基本指令操作
wr_lcd(comm,0x34); //扩展指令操作
wr_lcd(comm,0x01); //0000 0001 清屏——将DDRAM填满"20H",并且设定DDRAM的地址计数器为"00H"
wr_lcd(comm,0x06); //0000 0110 进入点设定——指定在数据的读取与写入时,设定游标的移动方向
wr_lcd(comm,0x0c); //0000 1100 游标或显示移位控制——开显 //开显示,关光标,不闪烁
}
/******************************************************************************************
* 函数名称 :clrram
* 功能描述 :将DDRAM填满"20H",并且设定DDRAM的地址计数器(AC)到"00H"
******************************************************************************************/
void clrram(void)
{
wr_lcd(comm,0x30);
delay(10);
wr_lcd(comm,0x01);
delay(10);
}
/*********写字符串**************************************/
void wr_str(unsigned char addr,unsigned char counts,const unsigned char *ps)
{
int i;
wr_lcd(comm,addr);
delay(1);
for(i=counts;i>0;i--) //循环counts次
{