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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stm32多路巡回數據采集系統設計 含源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:425104 發表于 2020-2-22 10:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

此次設計是利用stm32開發板設計的。數據采集系統是模擬域與數字域之間必不可少的紐帶,它的存在具有著非常重要的作用。本文介紹的重點是數據采集系統,而該系統硬件部分的重心在于單片機芯片。數據采集與通信控制采用了模塊化的設計,數據采集與通信控制采用了單片機STM32來實現,硬件部分是以單片機為核心,還包括A/D模數轉換模塊,顯示模塊。該系統從機負責數據采集并應答主機的命令。輸入數據是由模擬信號產生器產生,實現對采集到的數據進行模擬量到數字量的轉換,并用TFTLCD來顯示所采集的結果。軟件部分應用C語言編寫控制軟件,對數據采集系統、模數轉換系統、數據顯示、數據通信等程序進行了設計。

2 總體方案設計

多路巡回數據采集儀設計需要將模擬量轉換為數字量,而 A/D是將模擬量轉換為數字量的器件,STM32單片機是該系統的基本的微處理系統,它完成數據讀取、處理及邏輯控制、數據傳輸、數據轉換等一系列的任務,然后通過控制液晶屏顯示。

數據采集系統不僅需要硬件設置,還需要軟件的相應配置才能調試好硬件,使系統正常工作。硬件電路的調試與硬件設計和軟件配置息息相關。系統的硬件包括STM32核心板、液晶屏顯示、數據采集電路等。


圖1 系統框圖


此多路巡回數據采集儀的設計采用的是紅外傳感器,煙霧傳感器,利用二個模塊分別檢測外圍環境的變化,通過最后采集的數據來反映不同環境下的數據的不同。

3 硬件設計

3.1 各個模塊的實現

  3.1.1 紅外對管傳感器

TCRT5000傳感器的紅外發射二極管不斷發射紅外線,當發射出的紅外線沒有被反射回來或被反射回來但強度不夠大時,紅外接收管一直處于關斷狀態,此時模塊的輸出端為高電平,指示二極管一直處于熄滅狀態;被檢測物體出現在檢測范圍內時,紅外線被反射回來且強度足夠大,紅外接收管飽和,此時模塊的輸出端為低電平,指示二極管被點亮。模擬輸出AO當發射管的紅外信號經反射被接收管接收后,接收管的電阻會發生變化,在電路上一般以電壓的變化形式體現出來,而經過ADC轉換或LM324等電路整形后得到處理后的輸出結果。電阻的變化起取于接收管所接收的紅外信號強度,常表現在反射面的顏色(反射率)、形狀和反射面接收管的距離等方面。

圖3.1.1 紅外對管傳感器原理圖
3.1.2 煙霧傳感器

       MQ-2型煙霧傳感器屬于二氧化錫半導體氣敏材料,屬于表面離子式N型半導體。處于200~300攝氏度時,二氧化錫吸附空氣中的氧,形成氧的負離子吸附,使半導體中的電子密度減少,從而使其電阻值增加。當與煙霧接觸時,如果晶粒間界處的勢壘收到煙霧的調至而變化,就會引起表面導電率的變化。利用這一點就可以獲得這種煙霧存在的信息,煙霧的濃度越大,導電率越大,輸出電阻越低,則輸出的模擬信號就越大。

圖3.1.2 煙霧傳感器原理圖

3.2 顯示部分

本次設計采用的為TFT型液晶屏,TFT型的液晶顯示器較為復雜,主要的構成包括了熒光管、導光板、偏光板、濾光板、玻璃基板、配向膜、液晶材料、薄模式晶體管等等。首先液晶顯示器必須先利用背光源,也就是熒光燈管投射出光源,這些光源會先經過一個偏光板然后再經過液晶,這時液晶分子的排列方式進而改變穿透液晶的光線角度。然后這些光線接下來還必須經過前方的彩色的濾光膜與另一塊偏光板。因此我們只要改變刺激液晶的電壓值就可以控制最后出現的光線強度與色彩,并進而能在液晶面板上變化出有不同深淺的顏色組合了。

本次設計還有一個就是設置屏幕的背景圖,采用的是320*240的分辨率進行圖片采樣,利用圖片轉化軟件對選中的圖片進行采點,然后轉化成16進制的數字,然后放到庫里面,需要用的時候直接調用就可以了。




圖3.2 利用Img2Lcd軟件進行代碼生成
4 軟件設計

4.1 整體設計框圖

本軟件系統是基于STM32的庫函數下進行的編程。需要對庫函數進行調用并對相應的函數進行初始化。然后對采集的模擬信號進行轉換,通過對波特率的調整,對信號進行實時檢測,然后通過均值濾波,控制液晶顯示屏顯示最終得到的結果。

其具體架構如圖:


            
(a)主程序流程圖





4.2 ADC采樣

   4.2.1 ADC原理

由于STM32自帶ADC模塊,所以只需要對其進行配置就可使用。12位ADC是一種逐次逼近型模擬數字轉換器。它有多達18個通道,可測量16個外部和2個內部信號源。各通道的A/D轉換可以單次、連續、掃描或間斷模式執行。ADC的結果可以左對齊或右對齊方式存儲在16位數據寄存器中。 模擬看門狗特性允許應用程序檢測輸入電壓是否超出用戶定義的高/低閥值。 ADC的輸入時鐘不得超過14MHz,它是由PCLK2經分頻產生。

本次設計采用了四路AD采樣ADC1-GPIOA1,ADC2-GPIOA2,ADC3-GPIOA3,ADC4-GPIOA4;利用四組不同的傳感器對環境的檢測,當達到對應的閾值時,控制相對應的器件。

圖4.2.5 ADC的時序圖

5系統調試
首先,將電路連接好如圖正常工作,adc1為4095,
然后將紅外傳感器遮住,adc1變小為177

圖5.2調試
調試完成,正常工作。
6總結

STM32芯片具有非常強大的功能,還有非常全面的庫函數,應用起來非常方便。此次設計在最開始的時候我們遇到了很多的問題,不知道如何使用ADC采集但是后來通過小組的努力共同查閱資料和向實驗室的同學請教對ADC有了一定的了解,順利的完成了課設。在過程中也遇到了許多的問題,比如在使用開發板時接線的時候要細心,不能夠接錯線,在程序編寫的時候要查閱很多資料和借鑒資料,遇到問題要善于查閱資料找解決辦法等等。不過最終一一克服困難順利完成設計,實現了多路巡回數據采集設計。通過本次的設計對32有了更深刻的理解,提高了我們同學之間的團隊合作能力與實踐能力。


單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "lcd.h"
  6. #include "ds18b20.h"
  7. #include "image2lcd.h"
  8. #include "adc.h"

  9. extern const u8 gImage_image1[];//圖片數據(包含信息頭),存儲在image1.c里面.
  10. int main(void)
  11. {
  12.               u8 t=0;            
  13.             
  14.                             u16 adcx1,adcx2;
  15.               float temp;
  16.             
  17.                 HEADCOLOR *imginfo;            
  18.               short temperature;  
  19.               delay_init();                                //延時函數初始化               
  20.               uart_init(9600);                            //串口初始化為9600
  21.               LED_Init();                                                          //初始化與LED連接的硬件接口
  22.               LCD_Init();
  23.                               Adc_Init();                                                          //ADC初始化            
  24.   LCD_Fill(0,0,470,350,WHITE);
  25.               srand(imginfo->h*imginfo->w);
  26.               image_display(0,0,(u8*)gImage_image1);//在指定地址顯示圖片
  27.             

  28.               while(DS18B20_Init())              //DS18B20初始化            
  29.               {
  30.                             LCD_ShowString(60,190,200,16,16,"DS18B20 Error");
  31.                             delay_ms(200);
  32.                  LCD_ShowString(60,210,200,16,16,"Temp:   . C");                                         
  33.               }                           

  34.               POINT_COLOR=BLUE;//設置字體為藍色   
  35.               LCD_ShowString(60,190,200,16,16,"DS18B20 OK");
  36.               LCD_ShowString(60,210,200,16,16,"Temp:   . C");            
  37.             
  38.               POINT_COLOR=BLUE;//設置字體為藍色
  39.               LCD_ShowString(60,230,200,16,16,"ADC1:");//傾倒
  40.               LCD_ShowString(60,270,200,16,16,"ADC2:");//紅外
  41.             
  42.               POINT_COLOR=RED;//設置字體為紅色
  43.   LCD_ShowString(120,250,48,16,16,"0.000V");
  44.   LCD_ShowString(120,290,48,16,16,"0.000V");
  45.             
  46.               while(1)
  47.               {            

  48.                             adcx1=Get_Adc_Average(ADC_Channel_1,10);//ADC1煙霧傳感器                            adcx2=Get_Adc_Average(ADC_Channel_2,10);//ADC2紅外傳感器
  49.                            
  50.                             POINT_COLOR=RED;//設置字體為紅色
  51.                             LCD_ShowxNum(120,230,adcx1,4,16,0);//顯示ADC的值
  52.                             LCD_ShowxNum(120,270,adcx2,4,16,0);//顯示ADC的值
  53.                            
  54.                             //第一個ADC轉換為電壓值
  55.                             temp=(float)adcx1*(3.3/4096);
  56.                             adcx1=temp;
  57.                             LCD_ShowxNum(120,250,adcx1,1,16,0);//顯示電壓值
  58.             
  59.                             //第二個ADC轉換為電壓值
  60.                             temp=(float)adcx2*(3.3/4096);
  61.                             adcx2=temp;
  62.                             LCD_ShowxNum(120,290,adcx2,1,16,0);//顯示電壓值

  63.                            
  64.                            
  65.                             if(t%10==0)//每100ms讀取一次
  66.                             {                                                                                                                              
  67.                                           temperature=DS18B20_Get_Temp();            
  68.                                           if(temperature<0)
  69.                                           {
  70.                                                         LCD_ShowChar(60+40,210,'-',16,0);                                          //顯示負號
  71.                                                         temperature=-temperature;                                                                      //轉為正數
  72.                                           }
  73.                                           else
  74.                                                         LCD_ShowChar(60+40,210,' ',16,0);                                          //去掉負號
  75.                                             LCD_ShowNum(60+40+8,210,temperature/10,2,16);              //顯示正數部分                 
  76.                                              LCD_ShowNum(60+40+32,210,temperature%10,1,16);              //顯示小數部分                              
  77.                             }                                                         
  78.                             delay_ms(10);
  79.                             t++;
  80.               }
  81. }
復制代碼

全部資料51hei下載地址:
源程序.7z (280.16 KB, 下載次數: 31)
文檔.doc (286.5 KB, 下載次數: 25)

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:59738 發表于 2023-11-21 10:54 | 只看該作者
感謝樓主分享  能幫我很好的開拓思路
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 先锋资源吧 | 久久久99国产精品免费 | 色天堂影院| 国产1区在线 | 久久一区二区三区四区 | 全免费a级毛片免费看视频免费下 | 免费a级毛片在线播放 | 9色视频在线| 亚洲免费在线观看视频 | 亚洲激情在线视频 | 国产亚洲精品久久久优势 | 久久高清国产 | 手机在线观看av | 在线观看中文字幕av | 国产成人短视频在线观看 | 99精品一区二区 | 网站黄色在线免费观看 | 亚洲精品在线免费看 | 99精品国产成人一区二区 | 日韩午夜激情 | 国产精品久久久久久久久久久新郎 | 电影91久久久 | 韩国成人在线视频 | 深夜福利亚洲 | 国产精品一区二区三区四区 | 中文字幕av网址 | 午夜精品一区 | 婷婷激情综合 | 国产欧美精品一区 | 精品一区二区三区在线观看国产 | 99精品国产一区二区三区 | 免费一区 | 男女污污动态图 | www久久99| av激情在线 | 婷婷综合在线 | 亚洲狠狠 | 日本欧美在线视频 | 在线视频一区二区三区 | av中文字幕在线 | 日韩精品一区二区三区中文字幕 |