找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1929|回复: 0
收起左侧

DS18B20温度传感器温度报警,并将温度上传到上位机,仿真和程序

[复制链接]
ID:853104 发表于 2020-12-5 11:52 | 显示全部楼层 |阅读模式
/****
* 【外部晶振】: 11.0592mhz       
* 【主控芯片】: STC89C52
* 【编译环境】: Keil μVisio4
* 【程序功能】:                                                                                            
* 【使用说明】: 实时采集当前环境温度值,并显示于数码管上。
                  同时,当温度高于某一值时(此处设为40摄氏度)低于5也会响,蜂鸣器便会发出报警。
                  而当低于该值时,蜂鸣器自动停止报警。以及上传温度到pc
               
**********************************************************************************/

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit DS=P2^2;           //define interface
uint temp;             // variable of temperature
uchar flag1;            // sign of the result positive or negative
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
uint num;
uchar A1,A2,A2t,A3;
void uart();//函数声明

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
                        0x87,0xff,0xef};



//串口初始化
void uart()
{
        EA=1;//开总中断
        ES=1;//串口中断允许位,ES=1允许串口中断 ES=0禁止串口中断,IE中断允许寄存器
        SM0=0;SM1=1;//串口工作方式1,8位uart波特率可变
        REN=1;//串口允许接收
        TR1=1;//启动定时器1
        TMOD |= 0X20;//定时器1工作模式2,8位自动重装
        TH1=0XFD;
        TL1=0XFD;//设置波特率9600
}

void delay(uint count)      //delay
{
  uint i;
  while(count)
  {
    i=200;
    while(i>0)
    i--;
    count--;
  }
}
void mx()
{
        TI=1;
        SBUF=0x00;;//送sbuf
        while(!TI);
        TI=0;       
        delay(10);
}
void dsreset(void)       //send reset and initialization command
{
  uint i;
  DS=0;
  i=103;
  while(i>0)i--;
  DS=1;
  i=4;
  while(i>0)i--;
}
............完整代码在文件中

屏幕截图(95).png

DS18B20--温度报警器,串口通信.rar

227.04 KB, 下载次数: 53, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表