资源简介

全套基于单片机的DS18B20液晶屏温度采集与显示,包括电路图。

资源截图

代码片段和文件信息

/***************   writer:shopping.w   ******************/
#include 
#include 
#define uint unsigned int
#define uchar unsigned char
#define delayNOP() {_nop_();_nop_();_nop_();_nop_();}

sbit DQ = P3^3;
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;

uchar code Temp_Disp_title[]={“Current Temp : “};
uchar Current_Temp_Display_Buffer[]={“ TEMP:   “};

uchar code Temperature_Char[8] = 
{
  0x0c0x120x120x0c0x000x000x000x00
};

uchar code df_Table[]=
{
  0112334456678899
};

uchar CurrentT = 0;
uchar Temp_Value[]={0x000x00};
uchar Display_Digit[]={0000};
bit DS18B20_IS_OK = 1;

void DelayXus(uint x)
{
  uchar i;
while(x--)
{
  for(i=0;i<200;i++);
}
}

bit LCD_Busy_Check()
{
  bit result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EN = 1;
delayNOP();
result = (bit)(P0&0x80);
LCD_EN=0;
return result;
}

void Write_LCD_Command(uchar cmd)
{
while(LCD_Busy_Check());
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
_nop_();
_nop_();
P0 = cmd;
delayNOP();
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
}

void Write_LCD_Data(uchar dat)
{
while(LCD_Busy_Check());
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 0;
P0 = dat;
delayNOP();
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
}

void LCD_Initialise()
{
  Write_LCD_Command(0x01);  //清屏指令
DelayXus(5);
Write_LCD_Command(0x38);  //功能指令 八字节输入
DelayXus(5);
Write_LCD_Command(0x0c);  //显示设定:整体显示,游标关闭。不反白
DelayXus(5);
Write_LCD_Command(0x06);  //进入点设定:地址指针加1
DelayXus(5);
}

void Set_LCD_POS(uchar pos)
{
  Write_LCD_Command(pos|0x80);
}

void Delay(uint x)
{
  while(--x);
}

uchar Init_DS18B20()
{
  uchar status;
DQ = 1;
Delay(8);
DQ = 0;
Delay(90);
DQ = 1;
Delay(8);
DQ = 1;
return status;
}

uchar ReadOneByte()
{
  uchar idat=0;
DQ = 1;
_nop_();
for(i=0;i<8;i++)
{
  DQ = 0;
dat >>= 1;
DQ = 1;
_nop_();
_nop_();
if(DQ)
dat |= 0X80;
Delay(30);
DQ = 1;
}
return dat;
}

void WriteOneByte(uchar dat)
{
  uchar i;
for(i=0;i<8;i++)
{
  DQ = 0;
DQ = dat& 0x01;
Delay(5);
DQ = 1;
dat >>= 1;
}
}

void Read_Temperature()
{
  if(Init_DS18B20()==1)
DS18B20_IS_OK=0;
else
{
WriteOneByte(0xcc);
WriteOneByte(0x44);
Init_DS18B20();
WriteOneByte(0xcc);
WriteOneByte(0xbe);
Temp_Value[0] = ReadOneByte(); 
Temp_Value[1] = ReadOneByte();
DS18B20_IS_OK=1;
}
}

void Display_Temperature()
{
  uchar i;
uchar t = 150 ng = 0;
if((Temp_Value[1]&0xf8)==0xf8)
{
  Temp_Value[1] = ~Temp_Value[1];
Temp_Value[0] = ~Temp_Value[0]+1;
if(Temp_Value[0]==0x00)
Temp_Value[1]++;
ng = 1;
}
Display_Digit[0] = df_Table[Temp_Value[0]&0x0f];
CurrentT = ((Temp_Value[0]&0xf0)>>4) | ((Temp_Value[1]&0x07)<<4);
Display_Digit[3] = CurrentT/100;
Display_Digit[2] = CurrentT%100/10;
Display_Digit[1] = CurrentT%10;
Current_Temp_Display_Buffer[11] = Display_Digit[0] + ‘0‘;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-03-30 14:29  25 DS18B20温度传感器实验\
     目录           0  2014-04-18 10:54  25 DS18B20温度传感器实验\code\
     文件       10858  2009-08-13 14:37  25 DS18B20温度传感器实验\code\25
     文件        4182  2014-03-30 11:07  25 DS18B20温度传感器实验\code\25.c
     文件        2355  2009-08-13 14:37  25 DS18B20温度传感器实验\code\25.hex
     文件          36  2009-08-13 14:37  25 DS18B20温度传感器实验\code\25.lnp
     文件        9985  2009-08-13 14:37  25 DS18B20温度传感器实验\code\25.LST
     文件       15534  2009-08-13 14:37  25 DS18B20温度传感器实验\code\25.M51
     文件       12836  2009-08-13 14:37  25 DS18B20温度传感器实验\code\25.OBJ
     文件         981  2009-08-13 14:39  25 DS18B20温度传感器实验\code\25.opt.bak
     文件           0  2014-04-18 10:53  25 DS18B20温度传感器实验\code\25.plg
     文件        2134  2009-08-13 14:39  25 DS18B20温度传感器实验\code\25.Uv2.bak
     文件       68366  2014-04-18 10:54  25 DS18B20温度传感器实验\code\25.uvgui.Administrator
     文件        6060  2014-04-18 10:54  25 DS18B20温度传感器实验\code\25.uvopt
     文件       13256  2014-04-18 10:54  25 DS18B20温度传感器实验\code\25.uvproj
     文件           0  2009-08-13 13:28  25 DS18B20温度传感器实验\code\25_Uv2.Bak
     文件       37674  2009-03-06 21:55  25 DS18B20温度传感器实验\DS18B20温度传感器实验.DSN
     文件        1197  2014-03-30 14:29  25 DS18B20温度传感器实验\DS18B20温度传感器实验.PWI
     目录           0  2014-02-21 15:52  25 DS18B20温度传感器实验\Keil C\
     文件       10291  2009-03-06 21:54  25 DS18B20温度传感器实验\Keil C\DS18B20温度传感器实验
     文件        2408  2009-03-06 21:54  25 DS18B20温度传感器实验\Keil C\DS18B20温度传感器实验.hex
     文件       37674  2009-02-08 12:33  25 DS18B20温度传感器实验\Last Loaded DS18B20温度传感器实验.DBK

评论

共有 条评论