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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
STM32F103控制ds18b20溫度采集,帶電腦端上位機(jī)源碼。

vs源碼與上位機(jī)的執(zhí)行文件都有


stm32單片機(jī)下位機(jī)源程序如下:
  1. /*************************************************
  2. Template:遠(yuǎn)程傳輸設(shè)備
  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//保存參數(shù)
  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];//暫時(shí)100個(gè)字
  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);//定時(shí)器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.         //讀取參數(shù)配置信息
  62.         //1.當(dāng)前配置的定時(shí)器讀取時(shí)間參數(shù)
  63.         AT24CXX_WriteOneByte(0x00,data_cnt);
  64.         data_cnt=AT24CXX_ReadOneByte(0X00);
  65.         Set_Cal_Time=AT24CXX_ReadOneByte(0X01);
  66.         //當(dāng)前存取的條目數(shù)字
  67.         //record


  68.         while(1)
  69.         {
  70. /****************設(shè)置定時(shí)時(shí)長(zhǎng)和日期******************************************************************/        

  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.                                 //設(shè)置的格式
  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. /*****************獲取各個(gè)物理量*************************************************************/        
  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';//暫時(shí)不上傳
  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.                 //報(bào)文格式
  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);//發(fā)送偏移的計(jì)算
  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);//發(fā)送偏移的計(jì)算
  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);//定時(shí)器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)//存儲(chǔ)了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. }
復(fù)制代碼

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


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

你重新試試,vs的工程
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲乱码国产乱码精品精98午夜 | 岛国毛片在线观看 | 国产视频二区 | 中文字幕日韩欧美一区二区三区 | 亚洲第一在线 | 欧美日批| 91在线观看 | 国产精品久久久久久妇女6080 | 午夜视频在线播放 | 黄a在线观看 | 麻豆国产一区二区三区四区 | 人人干人人爽 | 国产精品成人69xxx免费视频 | 999精品视频| 亚洲狠狠 | xxx.在线观看 | 欧美男人天堂 | 日韩中文字幕av | 久久久精品久久久 | 在线日韩视频 | 亚洲国产精品久久久久婷婷老年 | 精品在线一区二区三区 | 成人精品鲁一区一区二区 | 久久久亚洲一区 | 超碰97在线免费 | 先锋资源站| 99re视频在线| 中文字幕丁香5月 | 完全免费在线视频 | 99精品久久| 一区二区三区久久 | 岛国二区| 欧美国产视频 | 天天操天天射综合 | 欧美在线精品一区 | 国产香蕉视频在线播放 | 亚洲精品2区| 粉嫩av| av国产精品 | 国产女人第一次做爰毛片 | 激情五月综合 |