资源简介

51,52单片机用keil建立好的工程文件,实现功能包括用18b20采集温度信息,将结果显示在1602屏上,可以通过按键设置温度报警值,温度值超过范围触发报警。

资源截图

代码片段和文件信息

#include
#include<1602.h>
#include
sbit ds   = P2^2;
sbit beep = P2^3;
sbit rd = P3^7;
bit flag;
uchar ds_rom[8];
uchar HLKey_value;
void TempDelay(uchar us)
{
while(us--); //6.51us
}
void ds_reset()
{
ds=1;
_nop_();
ds=0;
TempDelay(80);//520us
ds=1;
TempDelay(5);
if(ds==0)
flag=1;
else
flag=0;
TempDelay(20);
ds=1;
}
bit ds_read_bit()
{
bit dat;
ds=0;
_nop_();
_nop_();
ds=1;
_nop_();
dat=ds;
TempDelay(12);
return dat;
}
uchar ds_read_byte()
{
uchar ijvalue;
for(i=0;i<8;i++)
{
j=ds_read_bit();
value=(j<<7)|(value>>1);
}
return value;
}
void ds_write_byte(uchar dat)
{
uchar ionebit;
for(i=0;i<8;i++)
{
onebit=dat&0x01;
if(onebit)    //д1
{
ds=0;
TempDelay(1);
ds=1;
_nop_();
}
else  //д0
{
ds=0;
TempDelay(11);
ds=1;
_nop_();
}
dat>>=1;
}
}

void ds_change()
{
ds_reset();
ds_write_byte(0xcc);
ds_write_byte(0x44);
}
uchar get_temperature()
{
uint temp;
uchar abc;
ds_reset();
ds_write_byte(0xcc);
ds_write_byte(0xbe);
a=ds_read_byte();
b=ds_read_byte();
temp=b;
temp<<=8;
temp|=a;
c = temp*0.0625;
return c;
}

void key()
{
Key_value = P3;
Key_value = Key_value & 0x0f;
if ( Key_value != 0x0f )
{
delay(5);
if ( Key_value != 0x0f )
{
switch(Key_value)
{
case 0x0e: H++; break;
case 0x0d: H--; break;
case 0x0b: L++; break;
case 0x07: L--; break;
}
}
}
}

void main()
{
uchar i;
rd = 0;
init_1602();

write_com( 0x80 + 0 + 3);
write_data( ‘H‘ );
write_com( 0x80 + 0 + 8);
write_data( ‘L‘ );

lcd_distostr(110);

H = 40;
L = 10;
while(1)
{
ds_change();
i = get_temperature();
lcd_dis( 114uchartostr( i ) );
lcd_dis( 05uchartostr( H ) );
lcd_dis( 010uchartostr( L ) );
if ( i >= H || i <= L)
{
  beep = 0;
}
else
{
  beep = 1;
}
key(); 
}  
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1937  2014-06-18 19:04  18b20报警按键可设值1602显示\1602.h

     文件      13601  2015-05-09 22:53  18b20报警按键可设值1602显示\ds18b20_1

     文件       3903  2015-05-09 22:53  18b20报警按键可设值1602显示\ds18b20_1.hex

     文件         48  2015-05-09 22:53  18b20报警按键可设值1602显示\ds18b20_1.lnp

     文件      20083  2015-05-09 22:53  18b20报警按键可设值1602显示\ds18b20_1.M51

     文件       1173  2015-05-09 22:54  18b20报警按键可设值1602显示\ds18b20_1.Opt

     文件        234  2015-05-10 22:46  18b20报警按键可设值1602显示\ds18b20_1.plg

     文件       2185  2013-07-09 21:01  18b20报警按键可设值1602显示\ds18b20_1.Uv2

     文件       1173  2014-06-18 20:07  18b20报警按键可设值1602显示\ds18b20_1_Opt.Bak

     文件          0  2013-07-09 17:57  18b20报警按键可设值1602显示\ds18b20_1_Uv2.Bak

     文件        983  2013-07-09 17:55  18b20报警按键可设值1602显示\ds18b20_Opt.Bak

     文件          0  2013-07-09 12:52  18b20报警按键可设值1602显示\ds18b20_Uv2.Bak

     文件       2003  2015-05-09 22:53  18b20报警按键可设值1602显示\readrom.c

     文件       6273  2015-05-09 22:53  18b20报警按键可设值1602显示\readrom.LST

     文件      14892  2015-05-09 22:53  18b20报警按键可设值1602显示\readrom.OBJ

     目录          0  2016-02-22 15:56  18b20报警按键可设值1602显示

----------- ---------  ---------- -----  ----

                68488                    16


评论

共有 条评论