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

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

QQ登錄

只需一步,快速開始

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

STM32單片機(jī)水質(zhì)檢測(cè)-濁度與葉綠素傳感器程序源碼(modbus rtu通訊方式)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:232646 發(fā)表于 2017-9-12 15:04 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
附件是使用濁度與葉綠素傳感器檢測(cè)水中濁度與葉綠素值得程序
采用modbus rtu 通訊方式

所有資料51hei提供下載:
禹山葉綠素 -CRC.rar (329.59 KB, 下載次數(shù): 293)

單片機(jī)源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"         
  7. #include "rs485.h"
  8. #include "stdio.h"
  9. #include "math.h"

  10. /************************************************

  11. ************************************************/
  12. uint32_t        i1;
  13. u8  num2500[8]={0x01,0x03,0x25,0x00,0x00,0x00,0x4e,0xc6};
  14. u8  num2600[8]={0x01,0x03,0x26,0x00,0x00,0x04,0x4f,0x41};
  15. u8 crc1_H,crc1_L,crc2_H,crc2_L,num1,num2;
  16. u8 usart2_rx_buf[13],usart1_rx_buf[13];
  17. float fdata,pfvalue;
  18. u8  usart1len,usart2len;
  19. char usart1_ch,usart2_ch;
  20. int length;
  21. u8 key;
  22. u8 i=0,t=0;
  23. u8 cnt=0;
  24. union data
  25. {
  26.         unsigned char A[4];
  27.         float Temp;
  28. };


  29. void My_USART1_Init(void)
  30. {
  31.         GPIO_InitTypeDef  GPIO_InitStructure;   /*定義相關(guān)結(jié)構(gòu)體*/
  32.         USART_InitTypeDef  USART_InitStructure;
  33.         NVIC_InitTypeDef  NVIC_InitStructure;   
  34.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//① 使能相應(yīng)的時(shí)鐘
  35.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
  36.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
  37.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
  38.         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
  39.         GPIO_Init(GPIOA,&GPIO_InitStructure);//②   初始化相應(yīng)的IO口模式
  40.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
  41.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
  42.         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
  43.         GPIO_Init(GPIOA,&GPIO_InitStructure);//②  初始化相應(yīng)的IO口模式
  44.         USART_InitStructure.USART_BaudRate=9600;//波特率
  45.         USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//無硬件流控
  46.         USART_InitStructure.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;//模式
  47.         USART_InitStructure.USART_Parity=USART_Parity_No;//校驗(yàn)
  48.         USART_InitStructure.USART_StopBits=USART_StopBits_1;//停止位
  49.         USART_InitStructure.USART_WordLength=USART_WordLength_8b;//數(shù)據(jù)長(zhǎng)度
  50.         
  51.         USART_Init(USART1,&USART_InitStructure);//③ 初始化串口相關(guān)參數(shù)
  52.         
  53.         USART_Cmd(USART1,ENABLE);//使能串口1
  54.         
  55.         USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);//開啟接收中斷
  56.         
  57.         NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;//通道
  58.         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//開啟中斷通道
  59.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;//設(shè)置中斷優(yōu)先級(jí)
  60.         NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;//子優(yōu)先級(jí)
  61.         NVIC_Init(&NVIC_InitStructure);
  62. }

  63. void        USART1_IRQHandler(void)
  64. {
  65.         if(USART_GetITStatus(USART1,USART_IT_RXNE))
  66.         {
  67.                
  68.                 usart1_ch=USART_ReceiveData(USART1);
  69.                 usart1_rx_buf[usart1len++]=usart1_ch;
  70.         }        
  71. }

  72.         
  73. void Usart1Send(u8 *buf1)
  74. {        
  75.                 int i;
  76.                 for(i=0;i<8;i++)
  77.                 {        
  78.                
  79.                         USART_SendData(USART1, buf1[i]);
  80.                         while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){}; //等待發(fā)送完成
  81.                 }
  82.         return;
  83. }
  84. void RS485_Init(u32 bound)
  85. {  
  86.   GPIO_InitTypeDef GPIO_InitStructure;
  87.   USART_InitTypeDef USART_InitStructure;
  88.          NVIC_InitTypeDef NVIC_InitStructure;

  89.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);//使能GPIOA,D時(shí)鐘
  90.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//使能USART2時(shí)鐘
  91.         
  92.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;                                 //PD7端口配置
  93.          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽輸出
  94.          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  95.          GPIO_Init(GPIOD, &GPIO_InitStructure);
  96.         GPIO_SetBits(GPIOD,GPIO_Pin_7);
  97.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;        //PA2
  98.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //復(fù)用推挽
  99.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  100.    
  101.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PA3
  102.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空輸入
  103.   GPIO_Init(GPIOA, &GPIO_InitStructure);  

  104.         RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2,ENABLE);//復(fù)位串口2
  105.         RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2,DISABLE);//停止復(fù)位
  106.         
  107.         USART_InitStructure.USART_BaudRate = bound;//波特率設(shè)置
  108.         USART_InitStructure.USART_WordLength = USART_WordLength_8b;//8位數(shù)據(jù)長(zhǎng)度
  109.         USART_InitStructure.USART_StopBits = USART_StopBits_1;//一個(gè)停止位
  110.         USART_InitStructure.USART_Parity = USART_Parity_No;///奇偶校驗(yàn)位
  111.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//無硬件數(shù)據(jù)流控制
  112.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//收發(fā)模式

  113.   USART_Init(USART2, &USART_InitStructure); ; //初始化串口
  114.   
  115.         NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; //使能串口2中斷
  116.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; //先占優(yōu)先級(jí)2級(jí)
  117.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //從優(yōu)先級(jí)2級(jí)
  118.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中斷通道
  119.         NVIC_Init(&NVIC_InitStructure); //根據(jù)NVIC_InitStruct中指定的參數(shù)初始化外設(shè)NVIC寄存器

  120.   USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//開啟中斷
  121.    
  122.   USART_Cmd(USART2, ENABLE);                    //使能串口
  123. }
  124. void        USART2_IRQHandler(void)
  125. {
  126.         
  127.         if(USART_GetITStatus(USART2,USART_IT_RXNE))
  128.         {

  129.                 /*構(gòu)建字節(jié)FIFO*/
  130.                         
  131.                         usart2_ch=USART_ReceiveData(USART2);
  132.                         usart2_rx_buf[usart2len++]=usart2_ch;
  133.         }
  134. }

  135. void Usart2Send(u8 *buf2)
  136. {        
  137.                 int i;
  138.                 for(i=0;i<8;i++)
  139.                 {        
  140.                
  141.                         USART_SendData(USART2, buf2[i]);
  142.                         while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET){}; //等待發(fā)送完成
  143.                 }
  144.         return;
  145. }
  146. void delay_ms1(u16 time)
  147. {      
  148.   u16 y=0;     
  149.         while(time--)   
  150.                 {        
  151.                         y=12000;  //????      
  152.                         while(y--);   
  153.                 }
  154. }

  155. void numinit()
  156. {
  157.         int h;
  158.         for( h=0;h<12;h++)
  159.         {
  160.                 usart1_rx_buf[h]=0;
  161.         }
  162. }

  163. u16 crc_check(u8 *ptr , int len)
  164. {
  165.         u16 crc16=0xffff;
  166.         int i,j,tmp;
  167.         for(i=0;i<len;i++)
  168.         {
  169.                 crc16=*ptr^crc16;
  170.                 for(j=0;j<8;j++)
  171.                 {
  172.                         tmp=crc16&0x0001;
  173.                         crc16=crc16>>1;
  174.                         if(tmp)
  175.                                 crc16=crc16^0xa001;
  176.                 }
  177.                 *ptr++;
  178.         }
  179.         return crc16;
  180.         
  181. }
  182. int main(void)
  183. {        
  184.         
  185.         union data  a;
  186.         delay_init();
  187.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級(jí)分組為組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
  188.         LED_Init();                                  //初始化與LED連接的硬件接口                        
  189.         KEY_Init();        
  190.         My_USART1_Init();        
  191.         RS485_Init(9600);
  192.         Usart1Send(num2500);
  193.         delay_ms1(1000);
  194.         numinit();
  195.                          while(1)
  196.                 {
  197.                         USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
  198.                         Usart1Send(num2600);
  199.                         if(usart1len>=13)
  200.                         {
  201.                                         a.A[0]=usart1_rx_buf[3];
  202.                                         a.A[1]=usart1_rx_buf[4];
  203.                                         a.A[2]=usart1_rx_buf[5];
  204.                                         a.A[3]=usart1_rx_buf[6];
  205.                                         fdata=a.Temp;
  206.                                         a.A[0]=usart1_rx_buf[7];
  207.                                         a.A[1]=usart1_rx_buf[8];
  208.                                         a.A[2]=usart1_rx_buf[9];
  209.                                         a.A[3]=usart1_rx_buf[10];
  210.                                         pfvalue=a.Temp;
  211.                                         usart1len=0;
  212.                                 
  213.                         }
  214.                         
  215.                         delay_ms1(100);
  216.                 }
  217. }
復(fù)制代碼




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

使用道具 舉報(bào)

沙發(fā)
ID:266751 發(fā)表于 2017-12-25 20:45 | 只看該作者
thanks,好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:344928 發(fā)表于 2018-6-4 22:23 | 只看該作者
51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

地板
ID:68712 發(fā)表于 2018-6-8 09:13 | 只看該作者
謝謝,收藏了
回復(fù)

使用道具 舉報(bào)

5#
ID:233873 發(fā)表于 2018-6-27 13:22 | 只看該作者
謝謝,收藏了,
51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

6#
ID:435771 發(fā)表于 2018-11-29 15:08 | 只看該作者
haxvn 發(fā)表于 2017-12-25 20:45
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

真好真好真好
回復(fù)

使用道具 舉報(bào)

7#
ID:335466 發(fā)表于 2018-12-13 16:21 | 只看該作者

謝謝,收藏了,
回復(fù)

使用道具 舉報(bào)

8#
ID:351567 發(fā)表于 2019-1-13 11:48 | 只看該作者
有沒有防真圖
回復(fù)

使用道具 舉報(bào)

9#
ID:476548 發(fā)表于 2019-2-15 10:37 | 只看該作者
參考參考


回復(fù)

使用道具 舉報(bào)

10#
ID:541246 發(fā)表于 2019-6-29 21:02 | 只看該作者
要是有引腳接線說明就更好了
回復(fù)

使用道具 舉報(bào)

11#
ID:541246 發(fā)表于 2019-6-29 21:03 | 只看該作者
很不錯(cuò)
回復(fù)

使用道具 舉報(bào)

12#
ID:979424 發(fā)表于 2021-11-10 15:57 | 只看該作者
你好,有沒有具體的引腳連接圖啊
回復(fù)

使用道具 舉報(bào)

13#
ID:668925 發(fā)表于 2022-6-29 08:59 | 只看該作者
51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲在线免费观看 | 中文字幕啪啪 | 一级毛片在线播放 | 日本高清aⅴ毛片免费 | 久久一区二区三区四区 | 91精品国产91 | 日本高清视频在线播放 | 精品国产一区二区三区久久久四川 | 青娱乐av| 久久久久久久国产精品视频 | 日本黄色影片在线观看 | 精品久久一区二区三区 | 色婷婷激情综合 | 国产福利在线播放 | 福利视频一二区 | 欧美成人精品一区二区男人看 | 91精品国产一区二区三区蜜臀 | 91视频在线看 | 国产免费观看一区 | 99亚洲综合 | 亚洲一区国产精品 | 性一爱一乱一交一视频 | 看真人视频一级毛片 | 激情国产 | 天天夜夜操 | 国产第1页 | 日韩欧美三区 | 精品一区二区在线观看 | 欧美日韩国产一区二区 | 久久久久久久一级 | 成年人视频在线免费观看 | 亚洲永久| 久热电影 | 日韩欧美精品 | 国产ts人妖系列高潮 | 色综合一区二区 | 超碰网址| 欧美日韩精品综合 | 毛片免费视频 | 国产乱码精品一区二区三区忘忧草 | 久久久久久九九九九 |