单片机实训第四组实验报告(7)

2019-04-15 11:00

SCLK=0; //确保写数居前SCLK被拉低 RST=1; //启动数据传输 Write1302(Cmd); //写入命令字 dat=Read1302(); //读出数据

SCLK=1; //将时钟电平置于已知状态 RST=0; //禁止数据传递 return dat; //将读出的数据返回 }

/***************************************************** 函数功能: 对1302进行写设置和写数据

***************************************************/ void Init_DS1302(void) {

WriteSet1302(0x8E,0x00); //1302进行初始化,根据写状态寄存器命令字,写入不保护指令

WriteSet1302(0x80,((time_m/10)<<4|(time_m))); //根据写秒寄存器命令字,写入秒的初始值

WriteSet1302(0x82,((time_f/10)<<4|(time_f))); //根据写分寄存器命令字,写入WriteSet1302(0x84,((time_s/10)<<4|(time_s))); //根据写小时寄存器命令字,写入WriteSet1302(0x86,((time_r/10)<<4|(time_r))); //根据写日寄存器命令字,写入日WriteSet1302(0x88,((time_y/10)<<4|(time_y))); //根据写月寄存器命令字,写入月

分的初始值 小时的初始值 的初始值 的初始值

WriteSet1302(0x8a,((time_w/10)<<4|(time_w))); //根据写周寄存器命令字,写入周的初始值 }

二、温度模块程序(部分程序) /*产生复位脉冲初始化DS18B20*/ void Init() {

uint i=100; DQ=0;

while(i>0)i--;//拉低约900us

WriteSet1302(0x8c,((time_n/10)<<4|(time_n))); //根据写年寄存器命令字,写入

年的初始值

}

DQ=1;//拉高电平,产生上升沿 i=4; while(i>0)i--;

/*等待应答脉冲*/ void Wait() { }

/*读数据一位*/ bit Rebit() { }

/*读一个字节数据*/ uchar Rebyte() { }

uchar i,j=0,k=0; for(i=0;i<8;i++) { } return(j);

k=Rebit(); j=(k<<7)|(j>>1);

uint i; bit b; DQ=0;

i++;//保持低电平至少1us DQ=1;

i++;i++;//延时15us以上,读时隙下降沿后15us,DS18B20输出数据才有效 b=DQ; i=9;

while(i>0)i--;//读时隙不低于60us return(b); uint i; while(DQ); while(~DQ); i=4; while(i>0)i--;

//检测到应答脉冲

/*写一个字节数据*/ void Wrbyte(uchar b) { }

/*启动温度转化*/ void Convert() { }

Init();//初始化DS18B20 Wait();//等待应答 delay(1);//延时

Wrbyte(0xcc);//skip rom命令 Wrbyte(0x44);//convert T命令 uint i,j; bit temp; for(j=0;j<8;j++) { }

temp=b&0x01; b>>=1; if(temp) { } else { }

/*写0*/ DQ=0; i=8; while(i>0)i--; DQ=1; i++;i++; /*写1*/ DQ=0;

i++;i++;//延时15us DQ=1; i=8;

while(i>0)i--;//整个写1时隙不低于60us

/*读取温度值*/ void Retemp() {

Init();//初始化DS18B20

Wait();//等待应答 delay(1);//延时

Wrbyte(0xcc);//skip rom命令

Wrbyte(0xbe);//read scratchpad(读暂存器)命令

tplsb=Rebyte();//温度低位字节(其中第四位为小数部分) tpmsb=Rebyte();//温度高位字节(其中高五位为符号位) temp=(tpmsb*256+tplsb)*0.0625;//转换 }

//温度显示 void Display() {

Convert();//温度转换 delay(10); Retemp();//读温度 delay(10);

WriteAddress(0xb); WriteData(digit[temp/10]); }

WriteData(digit[temp]);


单片机实训第四组实验报告(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:跨局普快车底归属及机车交路

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

马上注册会员

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