OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8674|回复: 10

DS18B20温度传感器实验遇到的问题,求大侠指点

[复制链接]

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-7-25
在线时间
0 小时
发表于 2013-11-23 09:57:20 | 显示全部楼层 |阅读模式

 想在DS18B20温度传感器实验中加入按键程序,当按键为 KEY_UP 时 LCD 屏显示的温度加 1 ,一直加到屏幕显示温度为 50,当按下KEY_LEFT 时,LCD显示屏的温度减 1,一直减到 0,当按键为KEY_DOWN 时,屏幕显示温度为 50,同时蜂鸣器鸣叫,当按下 KEY_RIGHT 时,温度屏幕温度显示为 0,同时蜂鸣器鸣叫,现在遇到的问题是当按下 KEY_UP 时,屏幕显示的温度值不会增加,感觉就好像 case KEY_UP 下面一段程序不会执行一样,当按下KEY_DOWN 和 KEY_RIGHT 时,蜂鸣器不会鸣叫,但是我加了 BEEP=! BEEP;这句啊。希望大家能指点一下,谢谢啊,以下红色部分是我在原子哥的程序上加进去的一小段按键应程序(再次感谢大家)


 

#include "led.h"
#include "beep.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h" 
#include "ds18b20.h" 
 
 int main(void)
 { 
 u8 t=0,h,i;      
 short temperature;       

 delay_init();       //延时函数初始化  
 NVIC_Configuration();   //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
 uart_init(9600);   //串口初始化为9600
  LED_Init();        //LED端口初始化
 LCD_Init();             //LCD初始化
 KEY_Init();     //KEY初始化
 
  OINT_COLOR=RED;//设置字体为红色
 LCD_ShowString(60,50,200,16,16,"ke cheng she ji"); 
 LCD_ShowString(60,70,200,16,16,"wen du cai ji xi tong"); 
 LCD_ShowString(60,90,200,16,16,"zhang chu zhong zhi hao");
 LCD_ShowString(60,110,200,16,16,"2013/11/23");   
  while(DS18B20_Init()) //DS18B20初始化 
 {
  LCD_ShowString(60,130,200,16,16,"DS18B20 Error");
  delay_ms(200);
  LCD_Fill(60,130,239,130+16,WHITE);
   delay_ms(200);
 }          
 LCD_ShowString(60,130,200,16,16,"DS18B20 OK");
 OINT_COLOR=BLUE;//设置字体为蓝色
  LCD_ShowString(60,150,200,16,16,"Temp:   . C"); 
 while(1)
 { 
 
 
     h=KEY_Scan(0);
  
  
         
   if(t%10==0)//每100ms读取一次
  {          
   temperature=DS18B20_Get_Temp(); 
   if(temperature<0)
   {
    LCD_ShowChar(60+40,150,'-',16,0);   //显示负号
    temperature=-temperature;     //转为正数
   }else LCD_ShowChar(60+40,150,' ',16,0);   //去掉负号
   LCD_ShowNum(60+40+8,150,temperature/10,2,16); //显示正数部分    
      LCD_ShowNum(60+40+32,150,temperature%10,1,16); //显示小数部分     
  }      
   delay_ms(10);


 if(h)
 {
   switch(h)
   {
   case KEY_UP:
   for(i=temperature;i<50;i++)
   LCD_ShowNum(60+40+8,150,i/10,2,16);
   LCD_ShowNum(60+40+32,150,i%10,1,16);
   delay_ms(300);
   if(h==50)
   LCD_ShowString(60,170,200,16,16,"warning");
   delay_ms(300); break;

   case KEY_LEFT:
   for(i=temperature;i>0;i--)
   LCD_ShowNum(60+40+8,150,i/10,2,16);
   LCD_ShowNum(60+40+32,150,i%10,1,16);
   delay_ms(300);
   if(h==1)
   LCD_ShowString(60,170,200,16,16,"warning");
   delay_ms(3000);  break;

   case KEY_DOWN:
   delay_ms(300);
   LCD_ShowNum(60+40+8,150,50,2,16);
   LCD_ShowNum(60+40+32,150,0%10,1,16);
      BEEP=!BEEP; 
   delay_ms(3000);break;

   case KEY_RIGHT:
   LCD_ShowNum(60+40+8,150,0/10,2,16);
   LCD_ShowNum(60+40+32,150,0%10,1,16);
   BEEP=!BEEP; 
   delay_ms(300); break;
   }

 

 }

 

  t++;
  if(t==20)
  {
   t=0;
   LED0=!LED0;
  }
 }
}

 

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-23 10:50:46 | 显示全部楼层
仿真是个好东西啊,楼主这种问题,仿真一下就解决了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-7-25
在线时间
0 小时
 楼主| 发表于 2013-11-23 11:17:06 | 显示全部楼层
就是还不怎么会用仿真(>_<),可以指点到底哪里出问题了么一下么,谢谢啦
回复 支持 反对

使用道具 举报

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-7-25
在线时间
0 小时
 楼主| 发表于 2013-11-23 12:32:44 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
就是还不怎么会用仿真(>_<),可以指点到底哪里出问题了么一下么,谢谢啦.原子哥
回复 支持 反对

使用道具 举报

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-7-25
在线时间
0 小时
 楼主| 发表于 2013-11-23 13:09:04 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,我试了下仿真,你原本的那个18B20数字温度传感器实验仿真时候都出错了啊,显示没有读或写允许,接着就仿就一直出现error了。
*** error 65: access violation at 0x6C000800: no 'read' permission
*** error 65: access violation at 0x6C0007FE: no 'write' permission
就是这两条,一直重复
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-23 16:46:17 | 显示全部楼层
回复【5楼】渐臻佳境:
---------------------------------
你买的是不是战舰板?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-23 16:46:34 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
这个要硬件仿真才可以.软仿真不行.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-7-25
在线时间
0 小时
 楼主| 发表于 2013-11-23 18:38:38 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
对呀,是你那边买的战舰的板子,现在的只要问题是按下按键后蜂鸣器不会叫
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-24 11:53:02 | 显示全部楼层
回复【8楼】渐臻佳境:
---------------------------------
你自己改的代码吧?
检查下代码.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-7-25
在线时间
0 小时
 楼主| 发表于 2013-11-25 16:31:09 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
原子哥,但是我没有改蜂鸣器那部分的代码啊,我就是把beep.c文件和key.c文件加入到工程里面,然后在你原本的程序里面添加
了一段按键响应的程序,我自己已经看了好几遍了,感觉没有什么问题,按下按键之后屏幕也会有相应的变化,但就是蜂鸣器不会叫,
即BEEP=! BEEP这句实现不了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-25 19:55:13 | 显示全部楼层
回复【10楼】渐臻佳境:
---------------------------------
那你直接下载我们的例程,看看蜂鸣器叫不叫?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-8 19:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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