本帖最后由 ark8976 于 2018-12-13 13:48 編輯
360截圖20181213133628675.jpg (100.52 KB, 下載次數: 40)
下載附件
2018-12-13 13:43 上傳
#include <reg51.h> //包含頭文件reg51.h,定義了51單片機的專用寄存器
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P2^0;/*上翻頁*/
sbit key2=P2^1;/*功能選擇*/
sbit key3=P2^2;/*下翻頁*/
sbit led=P2^7;
sbit jdq=P2^6;
sbit DQ=P2^4;
void key1_jianyi(void);
void key2_pueren(void);
void key3_jiayi(void);
void key_shaomio(void);
void int_18b20(void);//初始化DS18B20
void read_one_char(void);
void write_one_char(uchar);
void read_temp(void);
uchar temp_mea;
uchar set_flag;
usigned char t0,t1;//定義全局變量,用來保存延時時間循環次數
void delay0_5s1()
{
for(t0=0;t0<10;t0++) //采用全局變量t0作為循環控制變量
{
TH1=(65536-50000)/256; //設置定時器初值
TL1=(65536-50000)%256;
TR1=1; //啟動T1
while(!TF1); //查詢計數是否溢出,即50ms定時時間到,TF1=1
TF1=0; //50ms定時時間到,將定時器溢出標志位TF1清零
}
}
//函數名:delay_t1
//函數功能:實現0.5~128s延時
//形式參數:unsigned char t;
// 延時時間為0.5s×t
//返回值:無
void delay_t1(unsigned char t)
{
for(t1=0;t1<t;t1++) //采用全局變量t1作為循環控制變量
delay0_5s1();
}
void main()
{
uchar code display1[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code bitcode[]={0x7f,0xbf,0xdf,0xef};
}
void int_18b20(void) //初始化DS18B20
{
uchar x=0;
DQ=1; //復位
delay0_5s1();
DQ=0;
delay0_5s1();
DQ=1;
delay0_5s1();
x=DQ;
delay0_5s1();
}
void read_one_char(void)
{
uchar i=0;
uchar dat=0;
for(i=8;i>0;i--)
{
DQ=0;
_nop_();
dat>>=1;
DQ=1;
delay0_5s1();
if(DQ)dat|=0x80;
}
return(dat);
}
void write_one_char(uchar dat)
{
uchar i=0;
for(i=8;i>0;i--);
{
DQ=0;
_nop_();
DQ=dat&0x01;
delay0_5s1();
DQ=1;
dat>>=1;
delay0_5s1();
}
}
void read_temp(void)
{
uchar a=0;
uchar b=0;
uchar t=0;
int_18b20();
write_one_char(0xcc);
write_one_char(0x44);
int_18b20();
write_one_char(0xcc);
write_one_char(0xbe);
a=read_one_char();
b=read_one_char();
t=b;
t<<=8;
t=t|a;
temp_mea=t*(0.0625);
}
void key_shaomio(void)
{
uchar temp;
P2=0xff;
if(P2!=0xff)
{
delay0_5s1();
if(P2!=0xff)
{
temp=P2;
switch(temp)
{
case 0xfe:key2_pueren();break;//P2.1按下,功能選擇
case 0xfd:key1_jianyi();break;//P2.0按下,數字加1
case 0xfd:key3_jiayi();break;//P2.2按下,數字減一
default:break;
},
}
}
}
key2_pueren(void)
{
set_flag++;
if( set_flag>=3) //set_flag=1設定上限值
set_flag=0; //set_flag=2設定下限值
}
key1_jianyi(void)
{
switch(set_flag)
{
case 1:temp_set1++;if(temp_set1>=99)temp_set1=99;break;
case 2:temp_set2++;if(temp_set2>=temp_set1)temp_set2=temp_set1;break;
default:break;
}
}
key3_jiayi(void)
{
switch(set_flag)
{
case 1:temp_set1--;if(temp_set1<=temp_set2)temp_set1=temp_set2;break;
case 2:temp_set2--;if(temp_set2<=1)temp_set2=1;break;
default:break;
}
}
|