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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2057|回復: 3
打印 上一主題 下一主題
收起左側

基于STM3240X的無線傳輸電子秤的代碼實現

[復制鏈接]
跳轉到指定樓層
樓主
ID:134542 發表于 2019-4-21 22:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
附件是我的電子秤的實現程序,還加有關于32的無線傳輸是如何進行傳輸的。

單片機源程序如下:
[code]#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "spi.h"
#include "key.h"
#include "24l01.h"
#include "HX711.h"
#include "dht11.h"

//程序需要學習,學習永無止境

//要寫入到W25Q16的字符串數組
const u8 TEXT_Buffer[]={"Explorer STM32F4 SPI TEST"};
#define SIZE sizeof(TEXT_Buffer)         
        void Send_Name();
        char *itoa(); //
//  int d=500; //
   char buff[];
       
int main(void)
{
        u8 humidity;  
        u8 jiage;   
        u8 temperature;  
        u8 key;
  float mode;       
        u8 tmp_buf[33];       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2
        delay_init(168);  //初始化延時函數
        uart_init(115200);        //初始化串口波特率為115200
        Init_HX711pin();
        LED_Init();                                        //初始化LED
        LCD_Init();                                        //LCD初始化  
        KEY_Init();                                        //按鍵初始化
        NRF24L01_Init();                    //初始化NRF24L01
       
        Get_Maopi();                                //稱毛皮重量
        delay_ms(1000);
        delay_ms(1000);
        Get_Maopi();                                //重新獲取毛皮重量

        POINT_COLOR=RED;//設置字體為紅色
        LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");
       
            DHT11_Read_Data(&temperature,&humidity);                //讀取溫濕度值                                            
                        LCD_ShowString(30,230,200,16,16,"temperature");
      LCD_ShowNum(130,230,temperature,7,16);//顯示溫度       
//        LCD_ShowString(30,70,200,16,16,"NRF24L01 TEST");       
        LCD_ShowString(30,110,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(30,130,200,16,16,"2014/5/9");
       
        while(1)
        {
                        while(1)
        {       
                key=KEY_Scan(0);
                if(key==KEY0_PRES)
                {
                        delay_ms(5);
                        mode=0.8;   
                        break;
                }else if(key==KEY1_PRES)
                {
                        delay_ms(5);
                        mode=0.5;
                        break;
                }
                break;
        }
                Get_Weight();
//                LCD_ShowNum(30,70,(u8)Weight_Shiwu,7,16);       
//////////                printf("凈重量 = %d g\r\n",Weight_Shiwu); //打印
//////////                delay_ms(500);
//////////    LCD_ShowString(30,70,200,16,16,"food weight");
    Weight_Shiwu=Weight_Shiwu*0.25;       
//////////    LCD_Fill(130,70,lcddev.width,170+16*3,WHITE);               
//////////                LCD_ShowNum(130,70,Weight_Shiwu,7,16);
                jiage=Weight_Shiwu*mode;
////                LCD_ShowString(30,90,200,16,16,"food price");       
                LCD_ShowNum(130,90,jiage,7,16);
    itoa(jiage, buff, 10);
          Send_Name(buff);//"buff"       
    delay_ms(50);                 
        }
                       
}

void Send_Name(u8 tmp_buf[36])
{
        while(NRF24L01_Check())
        {
                LCD_ShowString(30,150,200,16,16,"NRF24L01 Error");
                delay_ms(200);
                LCD_Fill(30,150,239,130+16,WHITE);
                delay_ms(200);
        }
        LCD_ShowString(30,150,200,16,16,"NRF24L01 OK");          
          
        LCD_Fill(10,170,240,166,WHITE);//清空上面的顯示                  
        POINT_COLOR=BLUE;//設置字體為藍色          
                                                            
                LCD_ShowString(30,170,200,16,16,"NRF24L01 TX_Mode");       
                NRF24L01_TX_Mode();
                while(1)
                {                                                              
                        if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
                        {
                                LCD_Fill(0,210,lcddev.width,170+16*3,WHITE);//清空顯示       
                                LCD_ShowString(30,190,239,32,16,"Sended DATA:");       
                                LCD_ShowString(30,210,lcddev.width-1,32,16,tmp_buf);
                                               
                        }else
                        {                                                                                          
                                LCD_Fill(0,190,lcddev.width,170+16*3,WHITE);//清空顯示                          
                                LCD_ShowString(30,190,lcddev.width-1,32,16,"Send Failed ");
                        };
                        LED0=!LED0;
                        delay_ms(300);       
      break;               
                };
        }               

       
       
       
       
/******************************************************
                ??????????
        char *itoa(int value, char *string, int radix)
                radix=10 ???10??        ????,?????0;  

            ?:d=-379;
                ??        itoa(d, buf, 10); ?
               
                buf="-379"                                                                                     
**********************************************************/
char *itoa(int value, char *string, int radix)
{
    int     i, d;
    int     flag = 0;
    char    *ptr = string;

    /* This implementation only works for decimal numbers. */
    if (radix != 10)
    {
        *ptr = 0;
        return string;
    }

    if (!value)
    {
        *ptr++ = 0x30;
        *ptr = 0;
        return string;
    }

    /* if this is a negative value insert the minus sign. */
    if (value < 0)
    {
        *ptr++ = '-';

        /* Make the value positive. */
        value *= -1;
    }

    for (i = 10000; i > 0; i /= 10)
    {
        d = value / i;

        if (d || flag)
        {
            *ptr++ = (char)(d + 0x30);
            value -= (d * i);
            flag = 1;
        }
    }

    /* Null terminate the string. */
    *ptr = 0;

    return string;

}

int atoi_my(const char *str)  
{  
    int s=0;  
    int falg=0;  
      
    while(*str==' ')  
    {  
        str++;  
    }  
  
    if(*str=='-'||*str=='+')  
    {  
        if(*str=='-')  
        falg=1;  
        str++;  
    }  
  
    while(*str>='0'&&*str<='9')  
    {  
        s=s*10+*str-'0';  
……………………

…………限于本文篇幅 余下代碼請從51黑下載附件…………
[/code]
所有資料51hei提供下載:
智能電子秤.7z (350.78 KB, 下載次數: 12)


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

使用道具 舉報

沙發
ID:134542 發表于 2019-4-21 22:04 | 只看該作者
樓主自己先頂一下
回復

使用道具 舉報

板凳
ID:134542 發表于 2019-4-21 22:05 | 只看該作者
希望各位小伙伴踴躍提出自己寶貴的建議,我很期待哦
回復

使用道具 舉報

地板
ID:1 發表于 2019-4-28 16:45 | 只看該作者

回帖獎勵 +1

本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品91视频 | 精品欧美激情在线观看 | 国产精品一区二区三区99 | 久久久久久亚洲精品 | 欧美视频一级 | 成人夜晚看av | 操操日| 午夜免费电影 | 人人干免费 | 国产在线区 | 中文字幕一区二区三区四区五区 | 欧美精品在线免费 | 欧美乱人伦视频 | 91精品国产高清久久久久久久久 | 亚洲精品在线观看网站 | 一级在线免费观看 | 欧美一区精品 | 日韩精品久久久久 | 99视频免费| 91亚洲国产精品 | 久久久久久国产精品 | 午夜小视频在线观看 | 日韩欧美一区二区三区四区 | 亚洲欧美国产毛片在线 | 亚州精品天堂中文字幕 | 成人在线免费看 | 亚州毛片 | 亚洲网在线 | 久久一| 日韩精品视频一区二区三区 | 国产成人av在线 | 二区久久| 日韩视频精品在线 | 亚洲中字在线 | 亚洲精品综合 | 久99久视频 | 91久久精品国产91久久性色tv | 欧美视频在线看 | 国产精品网址 | 久久精品 | 精品中文字幕久久 |