基于VB的单片机温度数据采集与传输系统设计 下位机程序

/****************************************************/
#include <reg52.h>
#include "intrins.h"
#include "1602.h"
#include "DS18B20.h"
#include "AT.h"
#define uint  unsigned int
#define uchar unsigned char
sbit speaker=P2^3;
sbit P1_0=P1^0;    /*P1_0~P1_3键盘*/
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
uchar i,w_num=0;
uchar n=0;
uchar a=0x87;
uchar ii=0;
uint temp,save_low,save_high;
uchar warn_mark=1,key_warn=0;//1默认启动
char zhifu[17]="T:        Link:N*",low[8]="L_temp*",high[9]="H_temp*"; //*结束标志
uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09}; //温度小数位表值
uchar data temp_data[2]={0x00,0x00}; //温度数据存储
uchar display[5]={0x30,0x30,0x30,0x30,0x30},save[2]={0xD0,0x07},save_h[2]={0x90,0xfc}; //温度LCD编码
uchar sendtemp[6]={0x41,0x00,0x00,0x00,0x2e,0x00};
uchar lowtemp[5]={0x30,0x32,0x35,0x2e,0x30} ,hightemp[5]={0x30,0x32,0x37,0x2e,0x30}; //正常温度范围
/************延时函数*************/
/*********************初始化函数*********************/
void Init(void)
{
  Write_Instruction(0x38);
  Delay(20);
  Write_Instruction(0x0c);
  Delay(20);
  Write_Instruction(0x06);
  Delay(20);
  Cls();
  TMOD=0X20;
  TH1=0XF3;TL1=0XF3;
  SCON=0X50;
  TR1=1;
  //EA=1;
  //ES=1;
  speaker=1;//报警声默认关闭
  P1=0x0f;
   AT24C64_R(save,0x00,2);
  save_low=save[1];
  save_low=save_low<<8;
  save_low=save_low|save[0];

  AT24C64_R(lowtemp,0x03,5);
  AT24C64_R(hightemp,0x09,5);

  AT24C64_R(save_h,0x10,2);
  save_high=save_h[1];
  save_high=save_high<<8;
  save_high=save_high|save_h[0];
}
/****************读出温度函数************************/
read_temp()
{
  ow_reset();                  //总线复位
  Delay(200);
  write_byte(0xcc);            //发命令
  write_byte(0x44);            //发转换命令
  ow_reset();
  Delay(1);
  write_byte(0xcc);            //发命令
  write_byte(0xbe);
  temp_data[0]=read_byte();    //读温度值的低字节
  temp_data[1]=read_byte();    //读温度值的高字节
  temp=temp_data[1];
  temp<<=8;                                              
  temp=temp|temp_data[0];      // 两字节合成一个整型变量。
  return temp;                 //返回温度值
}
/****************温度值编码**************************/
void work_temp(uint tem)
{
n=0;
if((tem<6348&&save_low<6348&&tem<save_low)||(tem>6348&&save_low>6348&&tem<save_low)||(tem>6348&&save_low<6348))
{
save_low=tem;
save[0]=save_low;//&0x00ff;
save[1]=(save_low>>8);//&0x00ff;
AT24C64_W(save,0x00,2);
}
if((tem<6348&&save_high<6348&&tem>save_high)||(tem<6348&&save_high>6348)||(tem>6348&&save_high>6348&&tem>save_high))
{
save_high=tem;
save

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值