完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #define uchar unsigned char #define uint unsigned int ***it dula=P2^6; ***it wela=P2^7; ***it beep=P3^6; ***it ds=P3^7; ***it key1=P2^1; ***it key2=P2^2; ***it key3=P2^3; bit flag; uchar code duan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code wei[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; uchar shi=0,fen=0,miao=0,num=0,temp,tempL=0,tempH=30; int tt=0; uchar temp1[8]; void delay(uchar x); void display(); void timer0init() { TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%256; EA=1; ET0=1; TR0=1; } void keyscan() { if(key1==0) { delay(2); if(key1==0) { while(!key1) display(); num++; if(num==5) num=1; } } if(key2==0) { delay(2); if(key2==0); while(!key2) display(); if(num==1) { fen++; if(fen==60) fen=0; } if(num==2) { shi++; if(shi==24) shi=0; } if(num==3) { tempL++; } if(num==4) { tempH++; } } if(key3==0) { delay(10); if(key3==0); while(!key3) display() ; if(num==1) { if(fen==0) fen=60; fen--; } if(num==2) { if(shi==0) shi=24; shi--; } if(num==3) { tempH--; } if(num==4) { tempL--; } } } void delay(uchar x) { uchar i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void display() { uchar i; for(i=0;i<8;i++) { P0=0xff; wela=1; P0=wei[i]; wela=0; dula=1; P0=temp1[i]; dula=0; delay(5); } temp1[4]=duan[fen%10]; temp1[5]=duan[fen/10]; temp1[6]=duan[shi%10]; temp1[7]=duan[shi/10]; } void timer0() interrupt 1 { TH0=(65535-50000)/256; TL0=(65535-50000)%256; tt++; if(tt==1200) { tt=0; if(miao==60) miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; } } } } void delayus(uint t) { while(--t); } void ds_reset() { ds=1; delayus(5); ds=0; delayus(80); //延时大概700us ds=1; delayus(14); if(ds==0) flag=1; //18b20存在 else flag=0; //18b20不存在 delayus(20); } bit ds_read_bit () { bit dat; ds=0; _nop_(); _nop_(); ds=1; _nop_(); dat=ds; delayus(10); return dat; } uchar ds_read_byte() { uchar i,j,k; for(i=0;i<8;i++) { j=ds_read_bit(); k=(j<<7)|(k>>1); } return k; } void ds_write_byte(uchar dat) { uchar i; for(i=0;i<8;i++) { ds=0; _nop_(); ds=dat&0x01; delayus(6); ds=1; dat=dat>>1 ; } delayus(6); } uint read_temperature() { uchar a,b; ds_reset(); ds_write_byte(0xcc); //写跳过读ROM指令 ds_write_byte(0xbe); //写温度转换指令 a=ds_read_byte(); //读低8位 b=ds_read_byte(); //读高8位 temp=b; temp=temp<<4; temp=temp|a; temp=temp*0.0625*10+0.5; return temp; } void display1(uchar temp) { uchar i; for(i=0;i<4;i++) { P0=0xff; wela=1; P0=wei[i]; wela=0; dula=1; P0=temp1[i]; dula=0; delay(1); } temp1[0]=0x39; temp1[1]=duan[temp%100/10]; temp1[2]=duan[temp%100%10]|0x80; temp1[3]=duan[temp/100] ; } void main() { timer0init(); while(1) { display(); keyscan(); if(temp==tempH) { beep=1; delay(2); } if(temp==tempL) { beep=1; delay(2); } ds_reset(); ds_write_byte(0xcc); ds_write_byte(0x44); display1(read_temperature()); } } |
|
相关推荐
2 个讨论
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 18:49 , Processed in 0.591175 second(s), Total 78, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号