久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2054|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

STM32單片機(jī)溫度報(bào)警器和無線通信的問題,要重新按一次rest按鈕,溫度才會改變

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:975500 發(fā)表于 2021-12-5 21:34 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
這個程序一運(yùn)行,溫度就不會改變,每次都需要重新按一次rest按鈕,溫度才會改變,怎么去解決這個問題
單片機(jī)源程序如下:
#include "string.h"
#include "stm32f10x.h"
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "tftlcd.h"
#include "beep.h"
#include "key.h"
#include "ds18b20.h"
#include "24l01.h"
#include "spi.h"


u8 waring[] = {10,35};
u8 *p = waring;
u8 data[200];


int main(void)
{
    u8 key,mode;
    u8 t1=0;
    u16 t2=0;
    u8 tmp_buf[1];
    float temperature;
    int tmp;
    NRF24L01_Init();
    LED_Init();
    KEY_Init();
    delay_init();
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  
    uart_init(115200);
   
    LCD_Init();  
    BEEP_Init();
   
    POINT_COLOR=RED;
    LCD_ShowString(30,80,lcddev.width,lcddev.height,16,"4 ZU ZY PCC LXK YQK");
   
    while(DS18B20_Init())
    {
        LCD_ShowString(30,100,lcddev.width,lcddev.height,16,"DS18B20 Error");
        delay_ms(200);
        LCD_Fill(30,100,100,66,WHITE);
        delay_ms(200);
    }
    LCD_ShowString(30,100,lcddev.width,lcddev.height,16,"DS18B20 OK!");
    while(NRF24L01_Check())
    {
        LCD_ShowString(30,120,lcddev.width,lcddev.height,16,"NRF24L01 Error");
        delay_ms(200);
        LCD_Fill(30,120,239,120+16,WHITE);
         delay_ms(200);
    }
    LCD_ShowString(30,120,lcddev.width,lcddev.height,16,"NRF24L01 OK");
    POINT_COLOR=BLUE;
    LCD_ShowString(30,150,lcddev.width,lcddev.height,16,"xiaxian:");
    LCD_ShowString(30,170,lcddev.width,lcddev.height,16,"shangxian:");

   
    while(1)
    {
        if(t1%10==0)
        {
            temperature=DS18B20_Get_Temp();
            if(temperature<0)
            {
                LCD_ShowChar(30+80,190,'-',16,0);
                temperature = -temperature;
            }
            else LCD_ShowChar(30+80,190,' ',16,0);
            
            sprintf((char *)data,"temperature:%.2f",temperature);
                LCD_ShowString(30,190,lcddev.width,lcddev.height,16,data);
            LCD_ShowNum(30+80+8,150,waring[0],2,16);
            LCD_ShowNum(30+80+8,170,waring[1],2,16);        
        }   
        

        t1++;
        if(t1==20)
        {
            t1=0;
            LED0 = !LED0;
        }
        delay_ms(10);
        
        tmp = (int)temperature;
        if((tmp<=waring[0]) || (tmp >= waring[1]))
        {
            BEEP = !BEEP;
            LED1 = 1;
        }
        else
        {
            BEEP = 0;
            LED1 = 0;
        }
    while(1)
    {   
        key=KEY_Scan(0);
        if(key==KEY0_PRES)
        {
            mode=0;   
            break;
        }else if(key==KEY1_PRES)
        {
            mode=1;
            break;
        }
        t2++;
        if(t2==100)LCD_ShowString(10,210,lcddev.width,lcddev.height,16,"KEY0:RX_Mode  KEY1:TX_Mode");
         if(t2==200)
        {   
            LCD_Fill(10,210,240,210+16,WHITE);
            t2=0;
        }
        delay_ms(5);      
    }   
     LCD_Fill(10,210,240,210+16,WHITE);      
     POINT_COLOR=BLUE;   
    if(mode==0)
    {
        LCD_ShowString(30,210,lcddev.width,lcddev.height,16,"NRF24L01 RX_Mode");   
        LCD_ShowString(30,230,lcddev.width,lcddev.height,16,"Received DATA:");   
        NRF24L01_RX_Mode();         
        while(1)
        {                                               
            if(NRF24L01_RxPacket(tmp_buf)==0)
            {
                if((tmp<=waring[0]) || (tmp >= waring[1]))
        {
            LCD_ShowString(30,250,lcddev.width,lcddev.height,16,"wendubaojin");
        }
        else
        {
            LCD_ShowString(30,250,lcddev.width,lcddev.height,16,"wenduzhengchang");
        }
                                
            }else delay_us(100);      
            t2++;
            if(t2==10000)
            {
                t2=0;
                LED0=!LED0;
            }                     
        };   
    }else//TXģʽ
    {                                
        LCD_ShowString(30,210,lcddev.width,lcddev.height,16,"NRF24L01 TX_Mode");
        NRF24L01_TX_Mode();
        while(1)
        {                                 
            if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
            {
                LCD_ShowString(30,230,lcddev.width,lcddev.height,16,"Sended DATA:");   
                if((tmp<=waring[0]) || (tmp >= waring[1]))
        {
            LCD_ShowString(30,250,lcddev.width,lcddev.height,16,"wendubaojin");
        }
        else
        {
            LCD_ShowString(30,250,lcddev.width,lcddev.height,16,"wenduzhengchang");
        }
                key=mode;
                for(t2=0;t2<32;t2++)
                {
                    key++;
                    if(key>('~'))key=' ';
                    tmp_buf[t2]=key;   
                }
                mode++;
                if(mode>'~')mode=' ';        
                tmp_buf[0]=0;        
            }else
            {                                               
                 LCD_Fill(0,230,lcddev.width,230+16*3,WHITE);            
                LCD_ShowString(30,230,lcddev.width-1,32,16,"Send Failed ");
            };
            LED0=!LED0;
            delay_ms(1500);                    
    };
    }
}
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:975500 發(fā)表于 2021-12-5 21:35 | 只看該作者
無線通信模塊沒有while循環(huán)就發(fā)送不了信息
回復(fù)

使用道具 舉報(bào)

板凳
ID:313048 發(fā)表于 2021-12-6 14:35 | 只看該作者
當(dāng)你理解了while是做啥的  你就知道你程序?yàn)樯队袉栴}了
回復(fù)

使用道具 舉報(bào)

地板
ID:228494 發(fā)表于 2021-12-6 16:17 | 只看該作者
大師們研究我學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

5#
ID:624769 發(fā)表于 2021-12-6 16:33 | 只看該作者
從表面來講,問題在于 while(1) 太多了。

從本質(zhì)來講,你需要先學(xué)一下C語言的基礎(chǔ)概念。
回復(fù)

使用道具 舉報(bào)

6#
ID:975500 發(fā)表于 2021-12-6 19:59 | 只看該作者
AUG 發(fā)表于 2021-12-6 14:35
當(dāng)你理解了while是做啥的  你就知道你程序?yàn)樯队袉栴}了

我知道是由while導(dǎo)致的,后面的while循環(huán)導(dǎo)致這個程序返回不到第一個while,就是不知道怎么改
回復(fù)

使用道具 舉報(bào)

7#
ID:624769 發(fā)表于 2021-12-6 20:16 | 只看該作者
2719221825zy 發(fā)表于 2021-12-6 19:59
我知道是由while導(dǎo)致的,后面的while循環(huán)導(dǎo)致這個程序返回不到第一個while,就是不知道怎么改

原則上,整個程序, 有且僅有一個 while(1)  你按這個思路去改就行了。
回復(fù)

使用道具 舉報(bào)

8#
ID:420836 發(fā)表于 2021-12-7 09:06 | 只看該作者
不要到處使用 while() 函數(shù),它可能很容易捕獲程序的執(zhí)行。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩高清一区 | 羞羞视频免费观看 | 97精品一区二区 | 国产激情视频网址 | 国产99视频精品免费视频7 | 激情 亚洲 | 乱码av午夜噜噜噜噜动漫 | 国产中文一区二区三区 | 国产日韩精品一区二区 | 二区三区视频 | 天天综合永久入口 | 国产精品中文字幕在线播放 | 天天色天天色 | 视频1区| 黄色一级在线播放 | 日韩视频在线免费观看 | 女朋友的闺蜜3韩国三级 | 6080亚洲精品一区二区 | 成人午夜精品 | 日韩电影一区 | 色眯眯视频在线观看 | 男人的天堂视频网站 | 亚洲久久久| 最新日韩在线 | 狠狠操狠狠干 | 日本网站免费观看 | 91社区在线观看播放 | 久久精品69 | 欧美日高清视频 | 精品久久国产 | 天堂一区二区三区四区 | 久久精品一区二区 | 国产精品免费av | 久久久久久久久国产精品 | 中文字幕在线看第二 | 久久精品二区亚洲w码 | 成人一级视频在线观看 | 国产999精品久久久久久 | 欧美男人天堂 | 久草视频2| 性欧美精品一区二区三区在线播放 |