• 大小: 100KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: 其他
  • 标签: STC89C52  LCD1602  DS18B20  

资源简介

用stc89c52单片机控制液晶1602显示温度(温度传感器ds18b20)和时间,不同温度段有不同的指示灯亮,四个按键进行调时,有原理图

资源截图

代码片段和文件信息

#include
#define uchar unsigned char
#define uint  unsigned int
#include 
sbit YLED=P1^6;
sbit GLED=P1^5;
sbit RLED=P1^4;  
sbit dq=P1^3;//18b20
sbit rs=P1^2;//1602      
sbit rw=P1^1;//1602
sbit ep=P1^0;//1602
sbit k3=P2^3; 
sbit k2=P2^1;      
sbit k1=P2^2;
sbit k0=P2^0; 
int temp;
unsigned char datas[10];
uchar tt;
uchar hou=12min=30sec=0
               nh=20nl=11 //2011年
               y=6r=12; //6月12日
void delay(uint z)    // 延时程序
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com) // 写入指令数据到LCD
{
rs=0;
ep=0;      
P0=com;
delay(5);
ep=1;
delay(5);
ep=0;
}
void write_data(uchar date)    // 写入字符显示数据到LCD 
{
rs=1;
P0=date;
delay(5);
ep=1;
delay(5);
ep=0;
}
void init()  // LCD初始化 
{   tt=0;
rw=0;    
write_com(0x38); // 显示模式设置
write_com(0x0c); // 显示开关及光标设置
write_com(0x06); // 显示光标设置
write_com(0x01); // 显示清屏设置
    TMOD=0X01;
    TH0=(65536-50000)/256; 
    TL0=(65536-50000)%256;
    TR0=1;
    ET0=1; 
    EA=1;
}
/*数据处理显示*/
void lcd_sfm(uchar adduchar aa) //时分秒
{
  uchar hl;
  h=aa/10;
  l=aa%10; 
  write_com(0xc0+add);
  write_data(0x30+h);
  write_data(0x30+l); 
}
void lcd_nh(uchar adduchar aa) // 年h
{
  uchar hl;
  h=aa/10;  //  2
  l=aa%10;     //  0
  write_com(0x80+add);
  write_data(0x30+h);
  write_data(0x30+l);
}
void lcd_nl(uchar adduchar aa) // 年l
{
  uchar hl;
  h=aa/10;         //1  
  l=aa%10;        //1
  write_com(0x80+add);
  write_data(0x30+h);
  write_data(0x30+l);
}
void lcd_yr(uchar adduchar aa) // 月日
{
  uchar hl;
  h=aa/10;
  l=aa%10; 
  write_com(0x80+add);
  write_data(0x30+h);
  write_data(0x30+l); 
}
void changetime()  
{  int s=0t=1;
   while(t)
  { if(k2==0)
   {delay(10);
    if(k2==0)
{
 while(k2==0);
 s++;
}
   }
  if(s==1)
  {write_com(0xc0+0x0b); write_com(0xc0+0x0c);  //  调分
   write_com(0x0f);
   if(k1==0)
 { delay(10); 
   if(k1==0)
   {while(k1==0); 
     min++;
    if(min==60)
 min=0;
 lcd_sfm(0x0bmin);
   }  
 }
       if(k3==0)
 { delay(10); 
   if(k3==0)
   {while(k3==0); 
     min--;
    if(min==-1)
     min=59;
 lcd_sfm(0x0bmin);
   }  
 }
     }
  if(s==2)
      {write_com(0xc0+0x08); write_com(0xc0+0x09); //    调时
   if(k1==0)
   {delay(10); 
    if(k1==0)
     {while(k1==0);
  hou++;
  if(hou==24)
      hou=0; 
  lcd_sfm(0x08hou);
     }  
   }
  if(k3==0)
   {delay(10); 
    if(k3==0)
     {while(k3==0);
  hou--;
  if(hou==-1)  
      hou=23;
  lcd_sfm(0x08hou);
     }  
   }
        }    
  if(s==3)    // 调日
      {write_com(0x80+0x0b); write_com(0x80+0x0c);
   if(k1==0)
   {delay(10); 
    if(k1==0)
     { while(k1==0);
   r++;
   if(r==32)
       r=1; 
   lcd_yr(0x0br);
     }  
   }

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-08-02 14:44  lcd1602 ds18b20  at89c51\
     文件       20519  2011-07-17 08:55  lcd1602 ds18b20  at89c51\l
     文件        6628  2011-07-17 08:55  lcd1602 ds18b20  at89c51\l.c
     文件        7074  2011-07-17 08:55  lcd1602 ds18b20  at89c51\l.hex
     文件          50  2011-07-17 08:55  lcd1602 ds18b20  at89c51\l.lnp
     文件       16277  2011-07-17 08:55  lcd1602 ds18b20  at89c51\l.LST
     文件       29025  2011-07-17 08:55  lcd1602 ds18b20  at89c51\l.M51
     文件       22211  2011-07-17 08:55  lcd1602 ds18b20  at89c51\l.OBJ
     文件        1239  2011-07-17 11:26  lcd1602 ds18b20  at89c51\l.Opt
     文件        1231  2011-06-13 19:48  lcd1602 ds18b20  at89c51\l.opt.bak
     文件         356  2011-07-17 11:26  lcd1602 ds18b20  at89c51\l.plg
     文件        2026  2011-06-12 19:54  lcd1602 ds18b20  at89c51\l.Uv2
     文件        2026  2011-06-12 19:54  lcd1602 ds18b20  at89c51\l.Uv2.bak
     文件       56614  2011-06-15 22:56  lcd1602 ds18b20  at89c51\l.uvopt
     文件       13388  2011-06-13 22:54  lcd1602 ds18b20  at89c51\l.uvproj
     文件      174853  2011-07-02 11:31  lcd1602 ds18b20  at89c51\Last Loaded LCD1602.DBK
     文件      175466  2011-07-17 08:50  lcd1602 ds18b20  at89c51\LCD1602.DSN
     文件        1054  2011-07-17 11:27  lcd1602 ds18b20  at89c51\LCD1602.PWI
     文件        1237  2011-07-13 16:30  lcd1602 ds18b20  at89c51\l_Opt.Bak
     文件       56614  2011-06-13 22:54  lcd1602 ds18b20  at89c51\l_uvopt.bak
     文件        5115  2002-04-16 14:32  lcd1602 ds18b20  at89c51\STARTUP.A51
     文件       11665  2011-07-17 08:55  lcd1602 ds18b20  at89c51\STARTUP.LST
     文件         749  2011-07-17 08:55  lcd1602 ds18b20  at89c51\STARTUP.OBJ

评论

共有 条评论