资源简介
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图
- 下一篇:倒车雷达设计,实时语音播报距离,实时显示温度与距离
相关资源
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 8051单片机教程第二十七课:单片机几
- 8051单片机教程第二十六课:矩阵式键
- 适用于STC单片机和51单片机的SX1262驱动
- 基于51单片机的计算器(C51编写,有
- 51单片机大量源码
- 基于51单片机的交通信号灯程序
- GSM监控系统51单片机设计
- 51单片机定时器/计数器的结构和原理
- MCS-51单片机定时器和计数器区别的理
评论
共有 条评论