资源简介
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
- 上一篇:网上订票火车票UML图
- 下一篇:倒车雷达设计,实时语音播报距离,实时显示温度与距离
相关资源
- 51单片机 CH452驱动数码管,按键,按键
- 51单片机多任务的切换和堆栈的保护
- 基于51单片机的的电子密码锁设计.r
- 51单片机实现温度检测数码管显示,控
- 51单片机蜂鸣器音乐盒程序代码
- 基于51开发板的温度报警闹钟按键控制
- 51单片机8位抢答器源程序
- 基于51单片机指纹解锁设计程序
- 基于51单片机的智能小车循迹寻迹避障
- 51单片机例程1602显示秒表
- 基于51单片机的俄罗斯方块
- 基于51单片机音乐彩灯
- 51单片机测距报警.rar
- 单片机实现密码锁(1602显示)_带设置
- 基于51单片机的智能垃圾桶V4.01.docx
- 基于51单片机的温度显示报警系统
- 51单片机室温 体温测量
- 基于51单片机的ds18b20温度传感器实现
- 基于51单片机的温度报警系统
- 基于51单片机矩阵按键电子琴设计-完
- 基于51单片机的水箱水位检测系统.r
- 基于单片机的无线多路温度传输
- 51单片机点阵俄罗斯方块代码
- 51单片机Protues,仿真PT100温度传感器,
- 基于AT89C51单片机的家庭防盗报警系统
- 基于51单片机的温度报警
- 基于51单片机的智能调光台灯源码+原
- μC/OS-II在MCS-51单片机移植
- 基于stc89c52单片机的节拍音乐器设计
- 基于51单片机AD7705使用的C程序
评论
共有 条评论