资源简介
基于STC89S52单片机的温度控制系统,可以通过按键设置最大最小温度值,DS18B20温度传感器采集回来温度通过1602液晶显示屏显示。内含电路图和程序源码
代码片段和文件信息
/**********************BST-V51实验开发板例程************************
* 平台:BST-V51 + Keil 5 + STC89C52
* 名称:18B20实时温度计1602显示
* 日期:2018-10-28
* 晶振:11.0592MHZ
******************************************************************/
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit ds = P2^2; //ds18b20端口定义
sbit rw = P1^1; //LCD1602端口定义
sbit RS = P1^0;
sbit LCDEN = P2^5;
sbit kaiguan = P2^0;
sbit K1 = P3^4; //K1独立按键设置温度+
sbit K2 = P3^5; //K1独立按键设置温度-
void delayUs() //延时一个机器周期
{
_nop_();
}
void delayMs(uint a) //延时a毫秒
{
uint i j;
for(i = a; i > 0; i--)
for(j = 100; j > 0; j--);
}
/*******************************LCD1602*******************************/
void writeComm(uchar comm) //LCD写命令
{
RS = 0;
P0 = comm;
LCDEN = 1;
delayUs();
LCDEN = 0;
delayMs(1);
}
void writeData(uchar dat) //写数据:RS=1 RW=0;
{
RS = 1;
P0 = dat;
LCDEN = 1;
delayUs();
LCDEN = 0;
delayMs(1);
}
void init() //LCD初始化
{
rw = 0;
writeComm(0x38);
writeComm(0x0c);
writeComm(0x06);
writeComm(0x01);
}
void writeString(uchar * str uchar length) //LCD写字符串
{
uchar i;
for(i = 0; i < length; i++)
{
writeData(str[i]);
}
}
/*******************************DS18B20*******************************/
void dsInit() //ds18b20初始化
{
unsigned int i;
ds = 0;
i = 100;
while(i>0) i--;
ds = 1;
i = 4;
while(i>0) i--;
}
void dsWait() //等待
{
unsigned int i;
while(ds);
while(~ds);
i = 4;
while(i > 0) i--;
}
bit readBit() //读一位数据
{
unsigned int i;
bit b;
ds = 0;
i++;
ds = 1;
i++; i++;
b = ds;
i = 8;
while(i>0) i--;
return b;
}
unsigned char readByte() //读一个字节
{
unsigned int i;
unsigned char j dat;
dat = 0;
for(i=0; i<8; i++)
{
j = readBit();
dat = (j << 7) | (dat >> 1);
}
return dat;
}
void writeByte(unsigned char dat) //写一个字节
{
unsigned int i;
unsigned char j;
bit b;
for(j = 0; j < 8; j++)
{
b = dat & 0x01;
dat >>= 1;
if(b)
{
ds = 0; i++; i++;
ds = 1;
i = 8; while(i>0) i--;
}
else
{
ds = 0;
i = 8; while(i>0) i--;
ds = 1;
i++; i++;
}
}
}
void sendChangeCmd() //温度转换
{
dsInit();
dsWait();
delayMs(1);
writeByte(0xcc); //跳过64位光刻ROM操作
writeByte(0x44); //写入RAM操作
}
void sendReadCmd()
{
dsInit();
dsWait();
delayMs(1);
writeByte(0xcc);
writeByte(0xbe);
}
int getTmpValue() //获取温度
{
unsigned int tmpvalue;
int
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 14721 2018-10-29 00:57 DS18B20温度控制(1602显示)\1602-wendu
文件 994 2018-10-29 00:57 DS18B20温度控制(1602显示)\1602-wendu.build_log.htm
文件 5131 2018-10-29 00:55 DS18B20温度控制(1602显示)\1602-wendu.c
文件 6745 2018-10-29 00:57 DS18B20温度控制(1602显示)\1602-wendu.hex
文件 37 2018-10-29 00:57 DS18B20温度控制(1602显示)\1602-wendu.lnp
文件 10411 2018-10-29 00:57 DS18B20温度控制(1602显示)\1602-wendu.LST
文件 20590 2018-10-29 00:57 DS18B20温度控制(1602显示)\1602-wendu.M51
文件 15635 2018-10-29 00:57 DS18B20温度控制(1602显示)\1602-wendu.OBJ
文件 259 2013-11-02 22:23 DS18B20温度控制(1602显示)\1602-wendu.plg
....... 85507 2018-11-01 21:45 DS18B20温度控制(1602显示)\1602-wendu.uvgui.36564
文件 5564 2018-10-28 18:46 DS18B20温度控制(1602显示)\1602-wendu.uvopt
文件 13851 2018-10-28 19:32 DS18B20温度控制(1602显示)\1602-wendu.uvproj
文件 1330 2013-11-02 22:23 DS18B20温度控制(1602显示)\1602-wendu_Opt.Bak
文件 2153 2012-02-15 20:38 DS18B20温度控制(1602显示)\1602-wendu_Uv2.Bak
文件 39936 2018-05-04 14:38 DS18B20温度控制(1602显示)\温度传感器ds18b20模块化程序.doc
文件 16491 2018-10-29 01:12 DS18B20温度控制(1602显示)\电路\@Q9(Q~{HR_MGYWS4U)GS@19.png
文件 4032397 2018-10-29 01:17 DS18B20温度控制(1602显示)\电路\IMG_20181029_011728.jpg
文件 52569 2018-10-29 01:12 DS18B20温度控制(1602显示)\电路\P32Y3]BCE0IRCU5NPU94WR9.png
文件 192150 2018-10-29 01:11 DS18B20温度控制(1602显示)\电路\ZI_CR$9Z~2[%(‘FPW%4VY_3.png
目录 0 2018-10-29 01:22 DS18B20温度控制(1602显示)\电路
目录 0 2019-01-03 08:59 DS18B20温度控制(1602显示)
----------- --------- ---------- ----- ----
4516471 21
- 上一篇:IET作者指南
- 下一篇:室内火灾烟雾识别算法研究
相关资源
- DS18B20测温
- 基于STM32的LCD1602显示
- 1_蔬菜大棚恒温控制系统设计.rar
- FPGA和DS18B20通信verilog实现
- STM32 TIM2+LCD1602定时闹钟设计
- Verilog驱动DS18B20
- Proteus模拟可显示温度与气压的时钟
- LCD1602显示 基于nios ii
- 基于组态王51单片机温度控制
- 温湿度、火灾气体检测,LCD1602串口双
- 毕业设计,温度控制,基于DS18B20
- 红外遥控收发机;电子综合设计课程报
- STM32_ds18b20_oled显示
- 基于STM32的电压和温度采集DS18B20
- DS18b20温度传感器协调器终端zigbee程序
- ap1g2-k9w8-tar.152-4.JB4.tar
- OLED显示温度和时间-STM32F103C8T6完整程
- 51单片机液晶万年历LCD1602万用板制作
- 基于FPGA-VERILOG语言的DS18B20温度检测带
- 思科胖AP软件版本1602、3602系列含操作
- 基于stm32 的LCD1602驱动代码
- 51单片机ADC0804程序1602显示带仿真
- 单片机温度控制系统設計
- 用数码管与DS18B20设计温度报警器PRO
- ds18b20控制逻辑VerilogHDL
- DS18B20单总线读取
- 基于FPGA的温度传感器ds18b20数据采集
- 单片机温度控制风扇C51程序完整版
- 51单片机实现电子闹钟1602+DS18B20+EEPR
- 智能电子秤arduino+hx711+DS1302+dh11+lcd16
评论
共有 条评论