桂林电子科技大学毕业设计(论文)报告用纸 第38 页
}
Couter++; //计算速度 Couter1++; //计算路程
DS18B20模块程序: #include\#include\#include\#include\ unsigned 组显示数字
unsigned char tltemp;
sbit DQ=P2^2; //DS18B20数据管脚
bit Init_DS18B20(void) //函数功能:将DS18B20传感器初始化,读取应答信号 出口参数:flag
{ }
unsigned char ReadOneChar(void)
38
char code
digit[10]={'0','1','2','3','4','5','6','7','8','9'}; //定义字符数
//临时暂存变量
unsigned char time;
bit flag; DQ = 1;
for(time=0;time<2;time++) ; DQ = 0;
for(time=0;time<200;time++) ; DQ = 1;
for(time=0;time<10;time++) ; flag=DQ; for(time=0;time<200;time++) ; return (flag);
//函数功能:从DS18B20读取一个
桂林电子科技大学毕业设计(论文)报告用纸 第39 页
字节数据 出口参数:dat
{
unsigned char i=0; unsigned char dat; for (i=0;i<8;i++) {
DQ =1; _nop_();
DQ = 0; _nop_(); DQ = 1;
for(time=0;time<2;time++) ; dat>>=1; if(DQ==1) dat|=0x80; else dat|=0x00;
for(time=0;time<8;time++) ; } return(dat);
}
void WriteOneChar(unsigned char dat) 一个字节数据 入口参数:dat
{ unsigned char i=0; for (i=0; i<8; i++) { DQ =1; _nop_(); DQ=0; DQ=dat&0x01; for(time=0;time<10;time++)
DQ=1;
39
函数功能:向
DS18B20写入 //
; 桂林电子科技大学毕业设计(论文)报告用纸 第40 页
}
for(time=0;time<1;time++); dat>>=1;
}
for(time=0;time<4;time++) ;
// 函数功能:做好读温度的准备
void ReadyReadTemp(void) {
Init_DS18B20(); }
void display_temp1(unsigned char x) 分 入口参数:x
{ }
void Display_DS18B20(void) //函数功能:温度显示 {
unsigned int TL; unsigned int TH; unsigned int TN;
40
WriteOneChar(0xCC); WriteOneChar(0x44); Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0xBE);
delay(200);
//函数功能:显示温度的整数部
unsigned char shi,ge; shi=x/10;
ge=x; Write_Address(2,1); Write_Data(digit[ge]); delay(1);
Write_Data(digit[shi]);
桂林电子科技大学毕业设计(论文)报告用纸 第41 页
}
delay(1);
ReadyReadTemp(); TH=ReadOneChar(); TN=TH*16+TL/16;
display_temp1(TN); delay(1);
{
TL=ReadOneChar();
}
DS1302时钟模块程序: #include\#include\#include\#include\
sbit SCLK=P2^3; //位定义1302芯片的接口,时钟输出端口 sbit DATA=P2^4; //位定义1302芯片的接口,数据输出端定 sbit RST=P2^5; //位定义1302芯片的接口,复位端口
unsigned char code digit1[10]={\定义字符数组显示数字
void Write1302(unsigned char dat) //函数功能:向1302写一个字节数据 低位在前,高位在后 Eg;0000 0001 写入后变成 1000 0000
{
unsigned char i; SCLK=0; _nop_(); _nop_();
for(i=0;i<8;i++) {
DATA=dat&0x01;
41
桂林电子科技大学毕业设计(论文)报告用纸 第42 页
}
_nop_(); _nop_(); SCLK=1; _nop_(); _nop_(); SCLK=0; dat>>=1;
}
void WriteSet1302(unsigned char Cmd,unsigned char dat) //函数功能:根据命令字,向1302写一个字节数据 入口参数:Cmd,储存命令字;dat,储存待写的数据
{
RST=0; SCLK=0; }
unsigned char Read1302(void) //函数功能:从1302读一个字节数据 {
unsigned char i,dat; _nop_(); _nop_(); for(i=0;i<8;i++)
{
dat>>=1;
42
RST=1; _nop_();
_nop_(); Write1302(Cmd); Write1302(dat); SCLK=1; RST=0;