📄 text2.c
字号:
#include<reg51.h>
#include<absacc.h>
unsigned char code tab[]={0x0c0,0x0f9,0x0a4,0xb0,0x99,0x92,0xf82,0xf8,0x80,0x90,0xc6};
unsigned char code tabd[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
sbit s4=P3^3;
sbit s3=P3^4;
sbit s2=P3^5;
sbit s1=P3^6;
sbit s0=P3^7;
sbit sdata=P0^0;
sbit clk=P0^1;
sbit com1=P0^2;
sbit com2=P0^3;
sbit com3=P0^4;
sbit com4=P0^5;
sbit com5=P0^6;
sbit com6=P0^7;
sbit DQ=P2^0;
sbit bell=P3^1;
unsigned char tempL=0;
unsigned char tempH=0;
float temperature;
char tg=20;
void delay(unsigned int time)
{
unsigned int n;
n=0;
while (n<time)
{n++;}
return;
}
void delay1(void)
{
int k;
for(k=0;k<100;k++);
}
void send(char num)
{char i,var,a=0x80;
for(i=0;i<8;i++)
{var=num&a;
if(var==a)sdata=1;
else sdata=0;
num=num<<1;
clk=0;
clk=1;
}
}
void display(int k)
{
char num;
num=tab[k/1000];
send(num);
com1=0;
delay1();
com1=1;
num=tabd[k%1000/100];
send(num);
com2=0;
delay1();
com2=1;
num=tab[k%100/10];
send(num);
com3=0;
delay1();
com3=1;
num=tab[k%10/1];
send(num);
com4=0;
delay1();
com4=1;
num=tab[10];
send(num);
com5=0;
delay1();
com5=1;
/* k=(i%1)*1000;
num=tab[k%1000/100];
send(num);
com6=0;
delay1();
com6=1; */
}
Init_DS18B20(void)
{
unsigned char x=0;
DQ=1;
delay(8);
DQ=0;
delay(85);
DQ=1;
delay(14);
x=DQ;
delay(20);
}
Readonechar(void)
{
unsigned char i=0;
unsigned char dat=0;
for (i=8;i>0;i--)
{
DQ=1;
delay(1);
DQ=0;
dat>>=1;
DQ=1;
if(DQ)
dat|=0x80;
delay(4);
}
return(dat);
}
Writeonechar(unsigned char dat)
{
unsigned char i=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
delay(4);
}
Readtemperature(void)
{
Init_DS18B20();
Writeonechar(0xcc);
Writeonechar(0x44);
delay(125);
Init_DS18B20();
Writeonechar(0xcc);
Writeonechar(0xbe);
tempL=Readonechar();
tempH=Readonechar();
temperature=((tempH*256)+tempL)*0.0625*100;
delay(200);
return(temperature);
}
void chuli(int t)
{ if(t<tg)
bell=1;
else
bell=0;
}
void displaykey(int k)
{
char num;
num=tab[k/10];
send(num);
com1=0;
delay1();
com1=1;
num=tabd[k%10];
send(num);
com2=0;
delay1();
com2=1;
num=tab[0];
send(num);
com3=0;
delay1();
com3=1;
num=tab[0];
send(num);
com4=0;
delay1();
com4=1;
}
void delaykey(char n)
{char i,j;
for(i=0;i<n;i++)
for(j=0;j<120;j++);
}
void keytemp()
{while(1)
{if(s4==0)
{delaykey(2);
if(s4==0);
break;
}
else
{if(s2==0)
{delaykey(10);
if(s2==0)
{while(s2==0);
tg++;
if(tg>=99)
tg=99;
}
displaykey(tg);
}
else if(s3==0)
{delaykey(10);
if(s3==0)
{while(s3==0);
tg--;
if(tg<=0)
tg=0;
}
}
displaykey(tg);
}
}
}
void keyscan()
{if(s1==0)
{delaykey(2);
if(s1==0)
keytemp();
}
return;
}
void main()
{
float i;
int j;
while(1)
{ keyscan();
i=Readtemperature();
j=i/100;
display(i);
chuli(j);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -