OpenEdv-开源电子网

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

组合模块,编程实现温度超过30度蜂鸣器报警,出现问题

[复制链接]

1

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-2-16
在线时间
1 小时
发表于 2016-3-7 16:35:52 | 显示全部楼层 |阅读模式
1金钱
mini版开发版,DS18B20模块,led模块,lcd模块未改变,新增蜂鸣器模块buzzer,编译无误,但无法实现温度超过30度蜂鸣器报警,考虑过引脚被占用的问题(使用的是pc2和pc3引脚,插上了屏幕)以及buzzer中时钟使能与led冲突的问题,希望高手详解,1:如何实现功能2、若是led中是能过A时钟,buzzer中用A部分引脚在使能会不会出问题?具体怎么解决?3、如何选用合适的引脚,引脚复用怎么做?

buzzer.h文件
#ifndef __buzzer_H
#define __buzzer_H
#include "sys.h"
void buzzer_Init(void);
#endif




buzzer.c文件:
#include "buzzer.h"
void buzzer_Init(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;                                 //LED0-->PA.8 ¶Ë¿úÅäÖÃ
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //íÆíìêä3ö
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO¿úËù¶èÎa50MHz
        GPIO_Init(GPIOC, &GPIO_InitStructure);                                         //¸ù¾Yé趨2Îêy3õê¼»ˉGPIOA.8
        GPIO_ResetBits(GPIOC,GPIO_Pin_2);                                                 //PC.0 êä3öμí

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;                             //LED1-->PD.2 ¶Ë¿úÅäÖÃ, íÆíìêä3ö
        GPIO_Init(GPIOC, &GPIO_InitStructure);                                           //íÆíìêä3ö £¬IO¿úËù¶èÎa50MHz
        GPIO_ResetBits(GPIOC,GPIO_Pin_3);                                                 //PC.13êä3öμí
}


主函数:

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
#include "ds18b20.h"
#include "buzzer.h"

int main(void)
{
        u8 t=0;                            
        short temperature;   
        delay_init();                     //Ñóê±oˉêy3õê¼»ˉ          
        uart_init(9600);                 //′®¿ú3õê¼»ˉÎa9600
        LED_Init();                                  //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú
        LCD_Init();          
        LCD_ShowString(60,150,200,16,16,"Temp:    . C");         
        while(1)
        {                        
                if(t%10==0)//ÿ100ms¶áè¡ò»′Î
                {                                                                          
                        temperature=DS18B20_Get_Temp();       
                        if(temperature>300)
                                GPIO_SetBits(GPIOC,GPIO_Pin_2);
                        else if(temperature<0)
                        {
                                LCD_ShowChar(60+40,150,'-',16,0);                        //&#207;&#212;ê&#190;&#184;oo&#197;
                                temperature=-temperature;                                        //×a&#206;a&#213;yêy
                        }else LCD_ShowChar(60+40,150,' ',16,0);                        //è¥μ&#244;&#184;oo&#197;
                        if(temperature<1000)
                        {        LCD_ShowChar(60+40+8,150,'0',16,0);
                                LCD_ShowNum(60+40+16,150,temperature/10,2,16);        //&#207;&#212;ê&#190;&#213;yêy2&#191;·&#214;            
                                   LCD_ShowNum(60+40+40,150,temperature%10,1,16);        //&#207;&#212;ê&#190;D&#161;êy2&#191;·&#214;                
                        }   
                        else
                        {
                                LCD_ShowChar(60+40+8,150,'1',16,0);
                                LCD_ShowNum(60+40+16,150,temperature/10,2,16);        //&#207;&#212;ê&#190;&#213;yêy2&#191;·&#214;            
                                   LCD_ShowNum(60+40+40,150,temperature%10,1,16);        //&#207;&#212;ê&#190;D&#161;êy2&#191;·&#214;                
                        }
                }                                  
                 delay_ms(10);
                t++;
                if(t==20)
                {
                        t=0;
                        LED0=!LED0;
                }
        }
}




W3`ZUSAS}$YPXXFI5RGD_$W.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-3-10 00:13:49 | 显示全部楼层
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13108
金钱
13108
注册时间
2012-11-26
在线时间
3812 小时
发表于 2016-3-10 08:50:31 | 显示全部楼层

这种天气,除非用特殊手段,怎么会上30度。。。。
学无止境
回复

使用道具 举报

3

主题

261

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2014-2-20
在线时间
284 小时
发表于 2016-3-10 09:51:07 | 显示全部楼层
时钟使能一次就好了,使能多次应该也没啥问题吧
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-2-16
在线时间
1 小时
 楼主| 发表于 2016-4-14 23:30:19 | 显示全部楼层
Da Wen 发表于 2016-3-10 09:51
时钟使能一次就好了,使能多次应该也没啥问题吧

自己换了好几个引脚试试,可以了,但是还是没搞明白,插上液晶屏占用的引脚是不能用了吗?怎么看哪些引脚别占用了??
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-2-16
在线时间
1 小时
 楼主| 发表于 2016-4-14 23:43:51 | 显示全部楼层
jermy_z 发表于 2016-3-10 08:50
这种天气,除非用特殊手段,怎么会上30度。。。。

我用的探头型的,直接火上烤,100都没问题,不过我只是测试一下,keil仿真不太会用
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-2-16
在线时间
1 小时
 楼主| 发表于 2016-4-14 23:44:12 | 显示全部楼层

仿真不太会用
回复

使用道具 举报

29

主题

311

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1530
金钱
1530
注册时间
2012-9-4
在线时间
262 小时
发表于 2016-4-15 15:23:30 | 显示全部楼层
jermy_z 发表于 2016-3-10 08:50
这种天气,除非用特殊手段,怎么会上30度。。。。

哈哈。。。。
STM32---STM32---STM32---STM32---STM32---STM32---STM32---STM32---STM32
回复

使用道具 举报

29

主题

311

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1530
金钱
1530
注册时间
2012-9-4
在线时间
262 小时
发表于 2016-4-15 15:25:13 | 显示全部楼层
这应该不难解决吧, 你仿真跟踪一下,看一下你温度采集后变量的值是多少不就完了,在你判断的地方打个断点,看一下温度值。。。。
回复

使用道具 举报

cj970 该用户已被删除
发表于 2016-12-26 16:24:43 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-29 05:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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