Пример #1
0
void setup()
{
    unsigned char sec;

    write1302(WRITE_PROTECT, 0x00);

    sec = read1302(READ_SECOND);
    sec &= ~(1 << 7);
    write1302(WRITE_SECOND, sec);  // disable halt mode

    write1302(WRITE_PROTECT, 0x80);
}
Пример #2
0
void main()
{
	bit  ds18b20_exit;	 			//存储ds18b20是否存在
	int time_temp;					//存储时间数据
	unsigned char temp;				//存储char型温度

	led_1 = 1;
	led_2 = 1;
	BEEP = 1;
	warning();
	serial_int(enable, baud9600, disable);
	int_lcd1602( rightmove, cursornotdisplay);

	setds1302(second,0);
	setds1302(minute,0);
	setds1302(hour,0);
	setds1302(year,14);
	setds1302(month,2);
	setds1302(day,7);
	setds1302(weekday,5);
	ele_mode(1);
	EA = 1;

	while(1)
	{
		/*显示温度阈值*/
		display_temp[0] = temp_set/10%10+0x30;
		display_temp[1] = temp_set%10+0x30;
		display_temp[2] = '\0';
		print1602( display_temp, 0,14);
		printchar1602(' ', 1, 15);

		/*开始测量温度*/
		ds18b20_exit =int_18b20();
		if( ds18b20_exit ==0 )
		{
			temperature = read_temper(); 
			if(temperature<=80.0)
			{
				translate( temperature, display_temp);
				print1602( display_temp, 0, 0);
			}
		}
		else
		{
			print1602( "Not Found", 0, 1);
			led_1 = 0;
			led_2 = 0;
			warning();
			waitms(500);
			clear1602_10(0);
		}
		
		/*设置温度阈值*/
		if(key_1==0)
			temp_set++;
		if(key_2==0)
			temp_set--;
		if(temp_set<10)
			temp_set = 10;
		if(temp_set>70)
			temp_set = 70;

		/*开始判断温度并指示升温降温*/
		temp = (unsigned char)temperature; 
		if(temp>temp_set)
		{
			
			if(temp-temp_set>1)
			{
				 led_1 = 1;
				 led_2 = 0;
				 warning();
			}
			else
			{
				 led_1 = 1;
				 led_2 = 1;
			}
		}
		else
		{
		   	if(temp_set-temp>1)
			{
				 led_1 = 0;
				 led_2 = 1;
				 warning();
			}
			else
			{
				 led_1 = 1;
				 led_2 = 1;
			}
		}

		/*开始显示时间*/
		time_temp =read1302(hour);
		if(time_temp<=23)
		{
			translate_print(time_temp,display_temp);
			print1602(display_temp,1,2);
		}
				    
		time_temp =read1302(minute);
		if(time_temp<=60)
		{
			translate_print(time_temp,display_temp);
			print1602(display_temp,1,5);
		}
			
		time_temp =read1302(second);
		time_temp =read1302(second);		//读取两次为了保证能够读取数据成功
		if(time_temp<=60)
		{
			translate_print(time_temp,display_temp);
			print1602(display_temp,1,8);


			/*设置冒号闪烁*/
			if(time_temp%2!=1)
			{
		    	print1602(" ",1,4);	
				print1602(" ",1,7);
			}
			else
			{
				print1602(":",1,4);
				print1602(":",1,7);	
			}
		}


	}
}