本科毕业论文-基于单片机STC89C52控制的数字温度计设计(8)

2019-05-17 16:52

}

return;

uchar OutputByte() //1302-读单字节 { }

void write_ds1302(uchar add,uchar date)//1302-写子程序 {

rst=0; _nop_(); clk=0; _nop_(); rst=1; uchar i; for(i=8;i>0;i--) { }

return(ACC);

ACC=ACC>>1; ACC7=IO; clk=1; clk=0;

InputByte(add); }

uchar read_ds1302(uchar add)//1302-读子程序 {

uchar date;

32

_nop_(); InputByte(date); clk=1; _nop_(); rst=0;

}

rst=0; _nop_(); clk=0; _nop_(); rst=1;

InputByte(add); date=OutputByte(); clk=1; _nop_(); rst=0; return(date);

void write_time()//写DS1302时间子程序 {

write_ds1302(0x8e,0x00);

//写保护寄存器

nian1=((nian/10)<<4|(nian)); write_ds1302(0x8c,nian1);

//年

yue1=((yue/10)<<4|(yue)); write_ds1302(0x88,yue1); ri1=((ri/10)<<4|(ri)); write_ds1302(0x86,ri1); xq1=((xq/10)<<4|(xq)); write_ds1302(0x8A,xq1); shi1=((shi/10)<<4|(shi)); write_ds1302(0x84,shi1); //时 fen1=((fen/10)<<4|(fen)); write_ds1302(0x82,fen1); //分 miao1=((miao/10)<<4|(miao)); write_ds1302(0x80,miao1); //秒

//星期 //日 //月

33

}

write_ds1302(0x8e,0x80); //写保护寄存器

void read_time()//读DS1302时间子程序 { }

void write_sj1(uchar date)//1602时间的划分 { }

void dingwei()//1602年月日等的定位 {

writecom(0x80+0x02);

34

miao1=read_ds1302(0x81); //秒寄存器 miao=((miao1&0x70)>>4)*10+(miao1&0x0f); fen1=read_ds1302(0x83);

//分

fen=((fen1&0x70)>>4)*10+(fen1&0x0f); shi1=read_ds1302(0x85);

//时

shi=((shi1&0x70)>>4)*10+(shi1&0x0f); xq1=read_ds1302(0x8b);

//星期

xq=((xq1&0x70)>>4)*10+(xq1&0x0f); ri1=read_ds1302(0x87);

//日

ri=((ri1&0x70)>>4)*10+(ri1&0x0f); yue1=read_ds1302(0x89);

//月

yue=((yue1&0x70)>>4)*10+(yue1&0x0f); nian1=read_ds1302(0x8d);

//年

nian=((nian1&0xf0)>>4)*10+(nian1&0x0f);

uchar shi,ge; shi=date/10; ge=date; writedate(0x30+shi); writedate(0x30+ge);

}

write_sj1(nian); writecom(0x80+0x05); write_sj1(yue); writecom(0x80+0x08); write_sj1(ri);

writecom(0x80+0x4A); writedate(0x30+xq); writecom(0x80+0x40); write_sj1(shi); writecom(0x80+0x43); write_sj1(fen); writecom(0x80+0x46); write_sj1(miao);

void xianshi(uchar *s)//1602显示 { }

/************18b20的程序**********/ void delay_18B20(unsigned int i)//延时1微秒 { while(i--); }

void ds1820rst()/*ds1820复位*/ {

uchar x=0;

DQ = 1; //DQ复位 while(*s>0) { }

writedate(*s); s++;

35

delay_18B20(4); //延时 DQ = 0; //DQ拉低

delay_18B20(100); //精确延时大于480us DQ = 1; //拉高 delay_18B20(40);

}

uchar ds1820rd()/*读数据*/ { uchar i=0; uchar dat = 0; for (i=8;i>0;i--) { DQ = 0; //给脉冲信号 dat>>=1;

DQ = 1; //给脉冲信号 if(DQ)

dat|=0x80;

delay_18B20(10);

}

return(dat); }

void ds1820wr(uchar wdata)/*写数据*/ { uchar i=0; for (i=8; i>0; i--) { DQ = 0;

DQ = wdata&0x01;

delay_18B20(10);

DQ = 1;

wdata>>=1;

36


本科毕业论文-基于单片机STC89C52控制的数字温度计设计(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年纤维素人造纤维现状研究及发展前景趋势(目录)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: