{
reset();
write_byte(0xcc); //直接向18b20发送温度变换命令 write_byte(0x44); //启动18b20进行温度转换 }
uint tmp() //获取温度 {
float tt; uchar a,b; reset();
write_byte(0xcc); //直接向18b20发送温度变换命令 write_byte(0xbe); //读取温度寄存器的温度值 a=read_byte(); //读低八位 b=read_byte(); //读高八位 temp=b;
temp<<=8; //两个字节的值相加 temp=temp|a;
if(temp>>11!=0) //判断是否是负数 {
fushu=1;
temp=~temp; temp=temp+1;
} else {fushu=0;} tt=temp*0.0625; temp=tt; return temp; }
//***************温度数据处理显示*****************************// void display_temp() {
uchar A1,A2,a,b,c,d; uint wendu; tmpchange(); wendu=tmp(); A1=wendu/10; A2=wendu; c=wendu*10; a=A1/10; b=A1; c=A2;
if(fushu==1) // 读出的温度为负数 {
led_send7(1,11);
delay(2); led_send7(2,b); delay(2); led_send8(3,c); delay(2); led_send7(4,d); delay(2); }
else //读出的温度值为正数 {
led_send7(1,a); delay(1); led_send7(2,b); delay(1); led_send8(3,c); delay(1); led_send7(4,d); delay(1); } }
//******获取冷藏室的温度**********// void init_cang(void) //初始化函数 { }
bit read_bitcang(void) //读取一位 { bit temp2; }
uchar read_bytecang(void) //读一个字节 {
uchar i,byte1=0; bit j;
DQ1=0; _nop_(); DQ1=1; _nop_(); temp2=DQ1; delay1(200); return temp2; DQ1=0; delay1(100); DQ1=1; delay1(4); delay1(200);
for(i=0;i<8;i++) {
byte1=_cror_(byte1 ,1); j=read_bitcang();
if(j==0) byte1=byte1|0x00; else byte1=byte1|0x80; }
return byte1; }
void write_bytecang(uchar command1) //写一个字节函数 {
uchar i;
for(i=0;i<8;i++) {
if((command1&0x01)==0) { DQ1=0; delay1(8); DQ1=1; _nop_(); } else { DQ1=0; _nop_(); DQ1=1; delay1(8); }
command1=_cror_(command1,1); } }
void tmp_cang(void) //温度获取命令函数 {
init_cang();
write_bytecang(0xcc); //直接向18b20发送温度变换命令 write_bytecang(0x44); //启动18b20进行温度转换 }
uint tmp_cang1() //获取温度 {
float t; uchar a,b; init_cang();
write_bytecang(0xcc); //直接向18b20发送温度变换命令
write_bytecang(0xbe); //读取温度寄存器的温度值 a=read_bytecang(); //读低八位 b=read_bytecang(); //读高八位 temp1=b;
temp1<<=8; //两个字节的值相加 temp1=temp1|a;
if(temp1>>11!=0) //判断是否是负数 {
fushu_c=1;
temp1=~temp1; temp1=temp1+1;
} else {fushu_c=0;} t=temp1*0.0625; temp1=t; return temp1; }
//***************冷藏室温度数据处理显示*****************************// void display_tempcang() {
uchar a1,a2,a,b,c,d; uint wendu1; tmp_cang(); wendu1=tmp_cang1(); a1=wendu1/10; a2=wendu1; c=wendu1*10; a=a1/10; b=a1; c=a2;
if(fushu_c==1) // 读出的温度为负数 {
led_send7(1,11); delay(2); led_send7(2,b); delay(2); led_send8(3,c); delay(2); led_send7(4,d); delay(2); }
else //读出的温度值为正数 {
led_send7(1,a); delay(2); led_send7(2,b); delay(2); led_send8(3,c); delay(2); led_send7(4,d); delay(2); } }
//********键盘处理函数*******************// char keyscan() //键盘扫描 {
static char key_num=0; uchar num; if(Flag1==1) {
if(k1==0) {
for(num=0;num<10;num++); //延时消除键抖 if(k1==0) { delay(10); if(k1==1)
key_num=key_num+1; } } if(k2==0) {
for(num=0;num<10;num++); //延时,消除键抖 if(k2==0) { delay(10); if(k2==1)
key_num=key_num-1; } }
}
return key_num; }
//*****************键盘显示函数 ******* // display_key() {