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

📄 setsoft.c

📁 atmega128 读取18b20并液晶显示
💻 C
📖 第 1 页 / 共 2 页
字号:
	     wr_data1(*p1);	 
		 }
	     p1++;   
	    }
	    page++;
		}
	  x++;
     }
} 
void wd_xs(uchar wdz,uchar sta)   //display temperature sub
{
 uchar L1,L2,L3;
 L1=wdz%10;             //
 L2=wdz%100/10;         //
 L3=wdz%1000/100;
 draw_clr1();
 //draw_clr0();
 if(sta==0)
 draw_16x16(0,0,5,menkan,0);
 //draw_16x16(0,0,5,shinei,0);
 else
 draw_16x16(0,0,5,wdzhi,1);   
       if(L3==0)
   		{
	    	if(L2==0)
			//display "  "
		    delay(1);
			else
			draw_8x16(11,L2,1,fig,sta); //display  " ten bit "
		 }
   		else
		{
		draw_8x16(11,L2,1,fig,sta); //display  " ten bit "
		draw_8x16(10,L3,1,fig,1); //display  " hundred bit "
		}
		draw_8x16(12,L1,1,fig,sta);
 if(neg==0x01) 
 	    draw_8x16(10,10,1,fig,sta);//display  “- ”
////////draw_8x16(13,11,1,fig,sta);//display  “℃ ”
		draw_8x16(14,11,1,fig,sta);//display  “℃ ”
}
void volt_xs(void)
{
uint zheng,ji;
uchar shi,ge;
float xiao,zheng1;
draw_clr1();
draw_16x16(0,0,5,voldat,1);
voltage=(float)adrel*5/255.0;
zheng=(int)voltage;
xiao=voltage-zheng;
xiao=xiao*100;
ji=(int)xiao;
shi=(uchar)ji%100/10;
ge=(uchar)ji%10;
draw_8x16(10,(uchar)zheng,1,fig,1);
draw_8x16(11,13,1,fig,1);
draw_8x16(12,shi,1,fig,1);
draw_8x16(13,ge,1,fig,1);
draw_8x16(14,12,1,fig,1);

}    

//*************** main programmer ****************//
void main(void)
		{
        uchar r,i,j,k;
		//WDR();
        delay(20);   
        //key_data=0;
		//WDR();
		//led3flg=1; 
		init_devices(); 
		CLI();          
		delay(100);		
        SEI();
		r=PORTE;
		lcd_ini();
		backflg=1;
		delay(10);
		draw_clr();
		delay(10);
		draw_boot();
		delay(100);
start:		draw_16x16(0,0,8,start0,0);
		draw_16x16(0,0,7,start1,1);
		while(1)
		{
keycai:	// if((adrel-adrelold)>3)
        // {  adrelold=adrel;
          //  volt_xs();
			//goto wdcai;
		// }
        // delay(800);
         leddat=PIND;
         if((leddat|0b11111110)==0xfe)
		
		{
		//goto keycai;
		delay(10);
		leddat=PIND;
        if((leddat|0b11111110)==0xfe)
		   {draw_clr();
		   draw_end();
		   delay(500);
		   PORTD&=0b11111101;
		   }
		}
		
         keydata=PINB;
		if((keydata|0b11000011)==0xff)
		
		{
		goto keycai;
		}
		else
		{
		 	delay(10);
			keydata=PINB;
			if((keydata|0b11000011)==0xff)
			  {
			    goto keycai;
			  }
			else
			 {  
			    backflg=1;
				backcnt=0;
			    keybak=keydata;
			    while((keybak|0b11000011)!=0xff)
				{
				keybak=PINB;
				}
				
		 	 	if(keydata==0xdf) //设定
			  	  {  draw_clr();
				     draw_16x16(0,0,8,dumk,0);
					 delay(2000);
					 r=reset();
					 if(r)
					 {
					 keyval=0;
					 draw_clr();
					 draw_16x16(0,0,7,cuowu,0);
					 goto keycai;
					 }
					 keyval=1;
					 wr_byte(0xcc);
	    			 wr_byte(0x44);
	    			 delay(100);
	    			 r=reset();
	   			 	 wr_byte(0xcc);
	    		 	 wr_byte(0xBE);
 	    		 	 for(j=0;j<5;j++)
	    		 	 ds_char[j]=rd_byte();
				 	 k=ds_char[2];
					  if(k>99||k<0)
				     	 k=50;
				     	 dzwd=k;
						 draw_clr0();
			 	     	 wd_xs(dzwd,0);		   		
			         goto keycai;	
			   	  }
				 else if(keydata==0xf7) //加
			 	  {
			         
				        if(keyval==0x01)
		   	  	 	{draw_clr0();
					dzwd--;
			  		if(dzwd<10)
			        dzwd=55;
			        wd_xs(dzwd,0);
			        }
				   else
					   {
					   con_down();
					   } 
					goto keycai;
			 	   } 
				 else if(keydata==0xef) //减
				 {
				   
						if(keyval==0x01)
		   	  	  	   {draw_clr0(); 
					    dzwd++;
			            if(dzwd>55)
			            dzwd=10;
			            wd_xs(dzwd,0);
			           }
					  else
					   {
					   con_up();
					   } 
					 goto keycai;
				 }
				 else if(keydata==0xfb) //确定
			     {
				    draw_clr();
				    draw_16x16(0,0,8,xiemk,1);
				    if(keyval==0x01)
		             {    
		              keyval=0x00;
		   	          r=reset();
			         wr_byte(0xcc);
	    	         wr_byte(0x4e);  //write action temperation 
			         wr_byte(dzwd);
			         wr_byte(dzwd);
			         wr_byte(0x1f);
			         r=reset();
			         wr_byte(0xcc);
			         wr_byte(0x48);
					 goto wdcai;
				    }
					else
					{
					//adc_isr();
					//wd_xs(adrel,1);
					//volt_xs();
					goto start;
					}
					goto keycai;
				}
				  else 
			      goto keycai;
		
			     }
		
		}
		//delay(100);
		//}
		
		//PORTE^=0b00000100;
		//PORTA=0x55;
		//PORTC&=0b11111011;                  //clr  pc2 a0  
	
wdcai:         r=reset();
			   wr_byte(0xcc);
	    	   wr_byte(0x44);
	    	   delay(1000);
			   delay(1000);
			  // delay(1000);
	    	   r=reset();
	    	   wr_byte(0xcc);
	    	   wr_byte(0xBE);
 	    	   for(j=0;j<9;j++)
	    	   ds_char[j]=rd_byte();
			   if(ds_char[4]==0x0ff) 
			      {      
			  draw_16x16(0,0,7,cuowu,0);
			     goto xxx;
			     } 
			 crc=crc_ck(&ds_char[0],9);
	    	 if (crc!=0x00)
		 	 {
			   draw_16x16(0,0,7,cuowu,0);		
			   goto xxx;               	
        	 }
			 if(ds_char[2]!=ds_char[3])
			 {
			   draw_16x16(0,0,7,cuowu,0);		
			   goto xxx;               	
        	 } 
		wd1820.pb[0]=ds_char[0];      //programmer of temperature disposal
		wd1820.pb[1]=ds_char[1];
		//wdint=wd1820.PI;
			if(wd1820.pI<0)
			{
			wd1820.pI=(~wd1820.pI)+1;
			wd1820.pI=wd1820.pI/16;
			neg=1;		
			}
		else
		    {
			wd1820.pI=wd1820.pI/16;
			neg=0;
			}
			if(wd1820.pI>0&&wd1820.pI<100)
			{wd_xs(ds_char[2],0);
			wd_xs(wd1820.pb[0],1);//xsdat);
			delay(2000);
			draw_clr();
			draw_16x16(0,0,5,success,0);
		    draw_16x16(0,0,8,fanhui,1);
			}
			else
			{
			draw_16x16(0,0,7,cuowu,0);
			draw_16x16(0,0,8,fanhui,1);
			}
keycai2: keydata=PINB;
		if((keydata|0b11000011)==0xff)
		{
		goto keycai2;
		}
		else
		{
		 	delay(10);
			keydata=PINB;
			if((keydata|0b11000011)==0xff)
			  {
			    goto keycai2;
			  }
		    else
			{
keycai3:    keydata=PINB;
		    if((keydata|0b11000011)==0xff)
			 // delay(500);
			  goto start;
			  else
			  goto keycai3;
			 }
		}
xxx:delay(2000);
	}
	}			

//-----------key programmer external interrupt 0  ---------
#pragma interrupt_handler int0_isr:2
void int0_isr(void)
{
//power_off();
//leddat++;
//if(leddat>3)
//{
//draw_clr();
//draw_16x16(0,0,6,off,0);
//}
}
#pragma interrupt_handler timer0_ovf_isr:17
void timer0_ovf_isr(void)
{
 TCNT0 = 0x3D; //reload counter value
 if(backflg==1)
 {back_on();
  backcnt++;
  if(backcnt>200)
    {
	back_off();
	backcnt=0;
	backflg=0;
	}
 }
}
#pragma interrupt_handler adc_isr:22
void adc_isr(void)
{
 //conversion complete, read value (int) using...
 // value=ADCL;            //Read 8 low bits first (important)
 // value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
 adrel=ADCH;
 adrel=adrel-25;
// wd_xs(adrel,1);
 ADMUX|=0b01100000;
 ADCSRA|=0b01000000;
 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -