m0_66357616 2022-01-19 19:40 采纳率: 0%
浏览 45

为什么基于51单片机用gy906测温时一直显示-k3.15

img


#include"reg52.h"
#include"intrins.h" 
//************************************
#define  uint  unsigned int
#define  uchar unsigned char
#define  Nack_counter  10 
//**************端口定义************** 
//LCD 控制线接口
uchar flag0; 
sbit  RW=P2^6; 
sbit  RS=P2^5; 
sbit  LCDE=P2^7;
//mlx90614 端口定义
sbit  SCL=P1^4;//时钟线 
sbit  SDA=P1^3;//数据线 
//按键接口
sbit  key1=P1^0;
sbit  key2=P1^1;
sbit  key3=P1^2;
//蜂鸣器接口
sbit  beep=P2^0;

//************数据定义**************** 
bdata uchar flag;//可位寻址数据 
sbit bit_out=flag^7; 
sbit bit_in=flag^0; 
uchar DataH,DataL,Pecreg; 
//************函数声明***************************************** 
void   start_bit();                 //MLX90614 发起始位子程序 
void   stop_bit();                 //MLX90614 发结束位子程序 
uchar  rx_byte(void);              //MLX90614 接收字节子程序 
void   send_bit(void);             //MLX90614 发送位子程序 
void   tx_byte(uchar dat_byte);     //MLX90614 接收字节子程序 
void   receive_bit(void);           //MLX90614 接收位子程序 
void   delay(uint N);              //延时程序 
uint   memread(void);             //读温度数据 
void   init1602(void);      //LCD 初始化子程序 
void   chk_busy_flg(void);         //LCD 判断忙子程序 
void   dis_cmd_wrt(uchar cmd);     //LCD 写命令子程序 
void   dis_dat_wrt(uchar dat);       //LCD 写数据子程序 
void   display(uint Tem);           //显示子程序 
void beep_warning(int number);    //蜂鸣器报警
void too_hot(); //过热
//void out_of_range(); //超出范围
uint Tem;  //温度
 
//*************主函数******************************************* 
void main() 
{ 
 uint tem_warning=3700;
 SCL=1;
 SDA=1;
 _nop_();  
 _nop_();
 _nop_();
 _nop_();  
 SCL=0;  
 delay(1000);  
 SCL=1;  
 init1602(); 
 beep=1;

  while(1)
  {
   if(key1==0||key2==0||key3==0)
   {
    delay(1000);
    if(key1==0)//按1号键,测量温度
    {
     Tem=memread();
     //Tem+=200;//++++
     display(Tem);
//     if((Tem*2-27315<2800)||(Tem*2-27315>4700))
//     out_of_range();
     if(Tem*2-27315>tem_warning)
      beep_warning(6);
     while(!key1);
    }
    if(key2==0||key3==0)//按2/3号键,调制报警温度
    {
     int i=40;
     display((tem_warning+27315)/2);//显示当前报警温度
     while(i--)
     {
   
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/447374976246127.jpeg "#left")


```插上传感器测温一直是-k3.15 拔了就是382.1
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/822484976246144.jpeg "#left")
  • 写回答

2条回答 默认 最新

  • jianqiang.xue 嵌入式领域优质创作者 2022-01-19 20:20
    关注

    怎么读?ADC还是数字

    评论

报告相同问题?

问题事件

  • 修改了问题 1月20日
  • 创建了问题 1月19日

悬赏问题

  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用