⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text2.c

📁 this is a PROGRAM FOR 80C51
💻 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 + -