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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32F103控制ds18b20溫度采集,帶電腦端上位機源碼

[復制鏈接]
跳轉到指定樓層
樓主
STM32F103控制ds18b20溫度采集,帶電腦端上位機源碼。

vs源碼與上位機的執行文件都有


stm32單片機下位機源程序如下:
  1. /*************************************************
  2. Template:遠程傳輸設備
  3. author:ncy
  4. date:2017-6-26
  5. complete data:2017-6-27
  6. **************************************************/
  7. #include "sys.h"
  8. #include "delay.h"
  9. #include "led.h"
  10. #include "rtc.h"
  11. #include "time.h"
  12. #include "stmflash.h"
  13. #include "exti.h"
  14. #include "adc.h"
  15. #include "key.h"
  16. #include "timer.h"
  17. #include "ds18b20.h"
  18. #include "DS18B20_2.h"
  19. #include "24cxx.h"
  20. #include "usart.h"
  21. #include "mlx90614.h"
  22. #define Write_Base_Address 0x0807F800//保存參數
  23. u8 Set_Cal_Time=10;
  24. u16 data_cnt=0x00;
  25. u8 Send_Led_Flag=0x00;
  26. u8 Recv_Led_Flag=0x00;
  27.         float tm_mlx=0.0;
  28. int main(void)
  29. {
  30.   float AD_values;
  31.   u16 year;
  32.         u16 write_address=50;//start address 讀寫的基地址
  33.   u8 month,day,hour,min,sec;
  34.         u8 time_buf[8];
  35.         u8 data_buf[10];
  36.         u8 tm1_buf[4],tm2_buf[4];
  37.         u8 ad_buf[6];
  38.         u8 write_buf[41];//暫時100個字
  39.   u8 read_buf[40];
  40.         u8 i=0;
  41.         u8 set_time_ok[2]={0x4F,0x4B};
  42.         u8 set_cj_ok[2]={0x1c,0xc1};
  43.         float tm1,tm2;         
  44.         delay_init();           
  45.         LED_Init();                          
  46.         RTC_Init();      
  47.   uart_init(115200);
  48.         TIM2_Int_Init(999,7199);//定時器2初始化
  49.         TIM3_Int_Init(999,7199);
  50.         TIM4_Int_Init(999,7199);
  51.   EXTIX_Init();
  52.         Adc_Init();
  53.         DS18B20_Init();
  54.         DS18B20_2_Init();
  55.   AT24CXX_Init();               
  56.         SMBus_Init();        
  57.   while(AT24CXX_Check())//cheak 24c02 is valid
  58.         {
  59.          //AT24C02 IS NOT
  60.         }         
  61.         //讀取參數配置信息
  62.         //1.當前配置的定時器讀取時間參數
  63.         AT24CXX_WriteOneByte(0x00,data_cnt);
  64.         data_cnt=AT24CXX_ReadOneByte(0X00);
  65.         Set_Cal_Time=AT24CXX_ReadOneByte(0X01);
  66.         //當前存取的條目數字
  67.         //record


  68.         while(1)
  69.         {
  70. /****************設置定時時長和日期******************************************************************/        

  71.         
  72.                  if(USART_RX_STA&0X4000)
  73.                  {
  74.                                 if(USART_RX_STA&0X1000)
  75.                                 {
  76.                                          Set_Cal_Time=USART_RX_BUF[2];
  77.                                          USART1_SendNums(set_cj_ok,2);
  78.                                          AT24CXX_WriteOneByte(0x01,Set_Cal_Time);
  79.                                 }
  80.                                 if(USART_RX_STA&0X0400)
  81.                                 {
  82.                                 //設置的格式
  83.                                         u16 year;
  84.                                         u8 month,day,hour,min,sec,temp;
  85.                                         year=2000+10*(USART_RX_BUF[2]/16)+USART_RX_BUF[2]%16;
  86.                                         month=10*(USART_RX_BUF[3]/16)+USART_RX_BUF[3]%16;
  87.                                         day=10*(USART_RX_BUF[4]/16)+USART_RX_BUF[4]%16;
  88.                                         hour=10*(USART_RX_BUF[5]/16)+USART_RX_BUF[5]%16;
  89.                                         min=10*(USART_RX_BUF[6]/16)+USART_RX_BUF[6]%16;
  90.                                         sec=10*(USART_RX_BUF[7]/16)+USART_RX_BUF[7]%16;
  91.                                         RTC_Set(year,month,day,hour,min,sec);//set local time
  92.                                         USART1_SendNums(set_time_ok,2);
  93.                                 }
  94.                                 count=0;
  95.                                 USART_RX_STA=0;
  96.                         }
  97. /*****************獲取各個物理量*************************************************************/        
  98.                 tm1=DS18B20_Get_Temp(); //get tm1
  99.   
  100.                 tm_mlx=SMBus_ReadTemp();        
  101.                 //讀取ADvalues
  102.                 AD_values=Get_Adc_Average(0x01,10);
  103.                         
  104.                 year=calendar.w_year; //
  105.                 month=calendar.w_month;
  106.                 day=calendar.w_date;
  107.                 //AD values
  108.                 ad_buf[0]='0';//暫時不上傳
  109.                 ad_buf[1]='.';
  110.                 ad_buf[2]=(u8)AD_values*10%10+'0';
  111.                 ad_buf[3]=(u8)AD_values*100%10+'0';
  112.                 ad_buf[4]=(u8)AD_values*1000%10+'0';
  113.                 ad_buf[5]=(u8)AD_values*10000%10+'0';
  114.                 //報文格式
  115.     write_buf[0]=0xee;
  116.     for(i=0;i<6;i++)
  117.                 {
  118.                     write_buf[1+i]=ad_buf[i];
  119.                 }
  120.                
  121.     write_buf[7]=0x20;
  122.     //tm1
  123.                 tm1_buf[0]=(u8)tm1/10+'0';
  124.                 tm1_buf[1]=(u8)tm1%10+'0';
  125.                 tm1_buf[2]='.';
  126.                 tm1_buf[3]=(u8)tm1*10%10+'0';
  127.           for(i=0;i<4;i++)
  128.                 {
  129.                     write_buf[8+i]=tm1_buf[i];
  130.                 }
  131.                 write_buf[12]=0x20;
  132.     //tm2
  133.                 tm2_buf[0]=(u8)tm_mlx/10+'0';
  134.                 tm2_buf[1]=(u8)tm_mlx%10+'0';
  135.                 tm2_buf[2]='.';
  136.                 tm2_buf[3]=(u8)(tm_mlx*10)%10+'0';
  137.                 for(i=0;i<4;i++)
  138.                 {
  139.                     write_buf[13+i]=tm2_buf[i];
  140.                 }
  141.                 write_buf[17]=0x20;
  142.                
  143.                 //date
  144.                 data_buf[0]=year/1000+'0';
  145.                 data_buf[1]=year/100%10+'0';
  146.                 data_buf[2]=year/10%10+'0';
  147.                 data_buf[3]=year%10+'0';
  148.                 data_buf[4]='-';
  149.                 data_buf[5]=month/10+'0';
  150.                 data_buf[6]=month%10+'0';
  151.                 data_buf[7]='-';
  152.                 data_buf[8]=day/10+'0';
  153.                 data_buf[9]=day%10+'0';
  154.     for(i=0;i<10;i++)
  155.                 {
  156.                     write_buf[18+i]=data_buf[i];
  157.                 }
  158.                 write_buf[28]=0x20;
  159.                 //time
  160.                 hour=calendar.hour;
  161.                 min=calendar.min;
  162.                 sec=calendar.sec;
  163.                 time_buf[0]=hour/10+'0';
  164.                 time_buf[1]=hour%10+'0';
  165.                 time_buf[2]=':';
  166.                 time_buf[3]=min/10+'0';
  167.                 time_buf[4]=min%10+'0';
  168.                 time_buf[5]=':';
  169.                 time_buf[6]=sec/10+'0';
  170.                 time_buf[7]=sec%10+'0';
  171.                 for(i=0;i<8;i++)
  172.                 {
  173.                     write_buf[29+i]=time_buf[i];
  174.                 }
  175.                 write_buf[37]=0xff;
  176.                 write_buf[38]=0xfc;
  177.                 write_buf[39]=0xff;
  178.                 write_buf[40]=0xff;
  179.                 //USART1_SendNums(write_buf,41);//發送偏移的計算
  180.                 if(read_flag==1&&write_flag==0)
  181.                 {
  182.                     TIM_Cmd(TIM3, DISABLE);//OPEN
  183.                           TIM_Cmd(TIM4, ENABLE);//OPEN
  184.         if((time4_flag==1)&&(data_cnt>0))
  185.                                 {               
  186.                                         data_cnt--;
  187.           AT24CXX_Read((data_cnt*41+write_address),(u8*)read_buf,41);//讀取read_buf
  188.                                         USART1_SendNums(read_buf,41);//發送偏移的計算
  189.                                         AT24CXX_WriteOneByte(0x00,data_cnt);//write one byte to 24Cxx
  190.                                         time4_flag=0;
  191.                                         Recv_Led_Flag=0X00;
  192.                                         Send_Led_Flag=0x01;
  193.                                 }               
  194.                                 if(data_cnt==0)
  195.                                 {
  196.                                         Send_Led_Flag=0x00;
  197.                                         TIM_Cmd(TIM4,DISABLE);//定時器3close
  198.                                 }
  199.                 }
  200.                 if(read_flag==0&&write_flag==1)
  201.                 {
  202.                     TIM_Cmd(TIM3, ENABLE);  //OPEN
  203.                           TIM_Cmd(TIM4, DISABLE);  //OPEN
  204.         if(time3_flag==1)
  205.                                 {
  206.                 AT24CXX_Write((write_address+data_cnt*41),(u8*)write_buf,41);
  207.                                         data_cnt++;
  208.                                         if(data_cnt==100)//存儲了100條,表示空間已滿
  209.                                         {
  210.                                            data_cnt=0;//歸位
  211.                                         }
  212.                                         //保存基地址
  213.                                         AT24CXX_WriteOneByte(0x00,data_cnt);//write one byte to 24Cxx
  214.                                         Send_Led_Flag=0x00;
  215.                                         Recv_Led_Flag=0X01;
  216.                                         time3_flag=0;
  217.                                 }                                       
  218.                 }        
  219.         }
  220. }
復制代碼

所有資料51hei提供下載:
遠程溫濕度采集.rar (2.5 MB, 下載次數: 146)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:482998 發表于 2019-3-1 22:13 | 只看該作者
很好,謝謝
回復

使用道具 舉報

板凳
ID:482998 發表于 2019-3-1 22:36 | 只看該作者
我下載壓縮包,怎么不能打開上位機,麻煩說一下,謝謝了
回復

使用道具 舉報

地板
ID:488051 發表于 2019-3-17 13:30 | 只看該作者
謝謝樓主分享!!
回復

使用道具 舉報

5#
ID:249826 發表于 2019-9-25 15:54 | 只看該作者
quyuan 發表于 2019-3-1 22:36
我下載壓縮包,怎么不能打開上位機,麻煩說一下,謝謝了

你重新試試,vs的工程
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: аⅴ资源新版在线天堂 | 久久久久网站 | 久久久久久久久久性 | 91久久久精品国产一区二区蜜臀 | 国产精品1区2区3区 欧美 中文字幕 | 国产一区亚洲 | 欧美成人精品激情在线观看 | 伊人春色在线观看 | 天天天插 | 久久久久国产一区二区三区四区 | 91精品久久久久 | 精品日韩在线观看 | 久久久www成人免费无遮挡大片 | 久久九九免费 | 久久综合九色综合欧美狠狠 | 亚洲精彩视频 | 亚洲在线一区二区 | 国产精品免费一区二区三区四区 | 成人在线精品视频 | www.天天操.com | 国产黄色一级片 | 黄色亚洲网站 | 国产精品区二区三区日本 | 成人av一区| 欧美日韩一区二区视频在线观看 | 欧美成人精品在线 | 亚洲一区欧美 | 欧美精品成人 | 超碰超碰 | 国产在线97 | 日韩在线观看网站 | 午夜久久久 | 麻豆久久久久久久久久 | 欧美激情久久久 | www国产亚洲精品 | av免费电影在线 | 午夜精品久久久久久久久久久久 | 亚洲丝袜天堂 | 日本精品视频一区二区 | 久久伊人精品一区二区三区 | 精品久久精品 |