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

📄 lcd1602.c

📁 基于单片机的测温程序
💻 C
字号:
#include <reg52.h>
#include "lcd1602.h"
 #include "18b20Dir.h"
  #include "Key.h"
uchar code time[]="time 19:20:30";
//float *p;
char strzu[20];
char MoudleFlag;



 char * change_num(unsigned int num)
{
  char temp;
  char i,j,lenth;
  bit  flg;
  char tempstr[20 ] ;
  
  
  if(num>=0)
	{
	flg=1;
	}
	else
	{
	flg=0;
	num=-num;
	}//判0

i=0;
while(num)
	{
	temp=num%10;
	num=num/10;
	tempstr[i]=temp+0x30;
	i++;
	}	  //将数字转化为数组 依次从低位到高位放置

	 if(flg==0)
	 {
	 tempstr[i++]="-" ;
	 }//	   如果数字小于0 那么就在这个数组最后一位加上符号的ASKII码
	 	lenth=i-1;
		j=i-1;	//此时i  的长度表示这个字符串的长度+1  (因为上面装入了最后一个有效值之后i++,了 这样正好是装\0的位置)	 j为字符串长度
		strzu[i+1]=0;
		strzu[i]=0;//将字符串最后一位加 \0 表示字符串结束;
		
		while(i)
			{
			i--;					  //i--后 i的值为字符串的长度不包括\0
			strzu[i]=tempstr[j-i]  ;//从字符串的最后一位开始装入tempstr中的字符串  
      
			}
 }

void disTem(char addr)
{
char *str;
char addr0,addr1;
read18B20();
 if(Tflag==0)
 {
 WriteString(addr,"-");	
 addr=addr+1;
 }
 
 change_num(tm_y);
 str= strzu;
 if(tm_y==0)
 str="0";
 WriteString(addr,str);		//80  c0
 
 
 addr0=addr+3;
 addr1=addr+4;
 if (tm_y<=99)
  {addr0=addr+2;
   addr1=addr+3;
   }
 WriteString(addr0,".");		//80  c0
 
 change_num(tm_dot);
 str= strzu;
 if(tm_dot==0)
 str="0";
 WriteString(addr1,str);		//80  c0
 WriteString(addr1+3,"C");		//80  c0


} 
void main()
{unsigned char alar_tm_y=20;
 char *str;
 unsigned char last;
 MoudleFlag=1;
 

 InitLCD1602();				 // 初始化LCD
 tmstart();	
 dmsec(450);				// 初始化ds18b20
 ucKeyTemp=1;
 MoudleFlag=1; 
  
  
   while(1)
   {
   GetKey(); 
   if(tm_y>alar_tm_y)
   {MoudleFlag=0;
   }
   if(MoudleFlag==0)
   {
   GetKey();
 
   WriteString(0x80,"Worring!!!!");
    	 ucKeyTemp=0xff;
	 GetKey();

	 if(ucKeyTemp==1)
	 {alar_tm_y++;
	  	 ucKeyTemp=0xff;
	 }
	 if(ucKeyTemp==2)
	 {alar_tm_y--;
	  	 ucKeyTemp=0xff;
	 }
	 if(ucKeyTemp==3)
	 {MoudleFlag=1;
	  	 ucKeyTemp=0xff;
	 }
	change_num(alar_tm_y);
    str= strzu;
    if(alar_tm_y==0)
    str="0";
    WriteString(0xc0,str);		//80  c0
   }  
   


 
   if(MoudleFlag==1)
   {
   GetKey();
    	 if(ucKeyTemp==3)
	 {MoudleFlag=2;
	  	 ucKeyTemp=0xff;
	 }
   WriteString(0x80,"T=           ");
    disTem(0x82);
   }
   if(MoudleFlag==2)
   {WriteString(0x80,"Please Set ");
 	 ucKeyTemp=0xff;
	 GetKey();

	 if(ucKeyTemp==1)
	 {alar_tm_y++;
	  	 ucKeyTemp=0xff;
	 }
	 if(ucKeyTemp==2)
	 {alar_tm_y--;
	  	 ucKeyTemp=0xff;
	 }
	 if(ucKeyTemp==3)
	 {MoudleFlag=1;
	  	 ucKeyTemp=0xff;
	 }
	change_num(alar_tm_y);
    str= strzu;
    if(alar_tm_y==0)
    str="0";
    WriteString(0xc0,str);		//80  c0
   }  
   
   }

}

⌨️ 快捷键说明

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