導航:首頁 > 軟體知識 > 感測器採集程序怎麼寫

感測器採集程序怎麼寫

發布時間:2023-05-28 21:47:22

A. 單片機採集兩個感測器的數據發送到電腦,程序設計可以分為幾個步驟

第一 編寫單片機程序純燃 用 I2C或模擬者尺量 採集感測器首褲高數值。
第二 單片機編寫232通信中斷程序
第三 用電腦上位機軟體 通過232轉TTL轉換 器 讀取單片機內的感測器數值。

B. 多個溫度感測器18b20並聯使用,一個單片機採集信息程序怎麼寫告訴我個網路鏈結地址就可以!

你是想測多個點的溫度么?先寫好採集溫度的子函數,幾個點就寫幾個子函數,感測器和哪個腳連接 子函數中就用單片機的這個引腳 其他的一樣。 然後主程序中 把這幾個子函數寫出來 就是在各個點測態拍行溫後帆嘩 賦值給幾個變數 然後用鍵盤檢賀虧測原理 定義幾個鍵 按下哪個鍵 就用顯示函數顯示對應點測得的變數 。在數碼管上顯示。。。不知是不是你的意思?

C. 誰能提供一下STM32W108無線射頻無線感測器網路煩霧採集的程序源代碼與實例非常感謝

STM32W108無線射頻模塊AD轉換器煙霧感測器數據採集
STM32W108 AD轉換器是一個一階∑-△轉換器,具有以下特性:
l 解析度可達12位
l 采樣最小時間5.33us(188KHz)
l 6個外部和4個內部輸入源,可進行差分和單端轉換
l 兩個電壓轉換范圍(差分):-VREF~+VREF,-VDD_PADS~+VDD_PADS
l 可選擇內部和外部參考標准VREF:內部的VREF可用於輸出
l 數字偏移和增益校準
l 專用DMA通道,通道支持一次和連續的操作模式
應用實例解析
編寫煙霧感測器測試程序,讀取煙霧感測器的AD值,並輸出到串口顯示。
9.3.1開發環境與硬體說明
硬體:STM32W108 無線開發板、煙冊梁霧感測器、J-LINK調試器、PC機等。
軟體:IAR Embedded Workbench開發軟體、SimpleMac協議棧。

圖9.13為煙霧感測器的原理圖,煙霧感測器的引腳連接圖如圖9.14所示,煙霧感測器的5V接引腳1,GND接引腳4,DOUT接稿段引腳2(即晶元中的PA3),AOUT接引腳3(即晶元中的PA4)。

圖9.14. 煙霧感測器與STM32W108晶元管腳連接圖
9.3.2軟體設計與規劃
本實例煙霧感測器中用到adc.c中的函數,有StStatus halStartAdcConversion(ADCUser id, ADCReferenceType reference, ADCChannelType channel, ADCRateTyperate),該州敬運函數是開啟AD轉換功能;其中ADCUser id在adc.h中定義,有三種,本實例中用到ADC_USER_APP;ADCReferenceType reference為參考類型,adc.h中定義,本實例中用ADC_REF_INT,ADCChannelType channel為模擬輸入通道,在adc.h中定義,本實例中用到的是PA4作為模擬輸入的通道;ADCRateType rate為AD轉換頻率,在adc.h中定義,本實例中用到的是ADC_CONVERSION_TIME_US_4096,4096us,12個有效位。
無線節點上電首先進行硬體初始化,然後等按鍵S2被按下,只要S2被按下,無線節點就周期性的進行AD轉換。
9.3.3感測器數據採集程序設計
在煙霧感測器的驅動程序中涉及到了AD轉換的內容:
其中adc.h中的內容有:

static int16u adcData; //DMA中的ADC轉換結果

在煙霧感測器的驅動程序中涉及到了AD轉換的函數:
在adc.c中的添加函數有:

/**************************************************************************

功能描述:完成對AD轉換後數據的獲取

輸入參數:無

輸出參數:AD轉換後的16位無符號數

*************************************************************************/

int16u getData(void)

{

int16s data; //存放AD轉換後的電壓的數值

while ( !(INT_ADCFLAG & INT_ADCULDFULL)); //無效時,空等待

data=halConvertValueToVolts(adcData); //將AD轉換的電壓數據存至data變數中

return (int16u)data;

}

/**************************************************************************

功能描述:內部ADC初始化

輸入參數:無

輸出參數:無

*************************************************************************/

void halInternalInitAdc(void)

{

//初始化狀態變數

adcPendingRequests = 0;

adcPendingConversion = NUM_ADC_USERS;

adcCalibrated = FALSE;

adcStaticConfig = ADC_1MHZCLK | ADC_ENABLE; //初始化配置:1MHz, 低壓范圍

// 設置所有ADC讀取無效

adcReadingValid = 0;

// 關閉ADC

ADC_CFG = 0; //禁用ADC,關閉HV緩沖區

ADC_OFFSET = ADC_OFFSET_RESET;

ADC_GAIN = ADC_GAIN_RESET;

ADC_DMACFG = ADC_DMARST;

ADC_DMABEG = (int32u)&adcData;

ADC_DMASIZE = 1;

ADC_DMACFG = (ADC_DMAAUTOWRAP | ADC_DMALOAD);

//清空ADC中斷,並使能中斷

INT_ADCCFG = INT_ADCULDFULL;

INT_ADCFLAG = 0xFFFF;

INT_CFGSET = INT_ADC;

stCalibrateVref(); //校準參考電壓

}

MQ2.h編寫(煙霧感測器)

/*****************************************************************

文件名:MQ2.h

版本號:v1.0

創建日期:2012-4-1

硬體描述:煙霧感測器的數字輸出接STM32W晶元的PA3,模擬輸出接STM32W晶元的PA4

主要函數描述:MQSetStatus(int32u status):設置對應引腳;

MQGetStatus():獲得對應埠值

MQGetDCData():獲得煙霧感測器數字輸出的值

MQADCInit():設置PA4為模擬輸入狀態

MQGetADCStart():開啟AD轉換

*****************************************************************/

#ifndef __MQ_H__

#define __MQ_H__

//設置MQ2煙霧感測器的數字輸出埠與STM32W的PA3埠相連接

#define MBUS PORTA_PIN(3)

#define MBUS_INPUT_GPIO GPIO_PAIN

#define MBUS_OUTPUT_GPIO GPIO_PAOUT

#define MBUS_GPIO_PIN PA3_BIT

#define MBUS_WAKE_SOURCE 0x00000080

#define MBUS_SET (GPIO_PASET_ADDR+((GPIO_PBCFGL_ADDR

-GPIO_PACFGL_ADDR)*(MBUS/8)))

#define MBUS_CLR (GPIO_PACLR_ADDR+((GPIO_PBCFGL_ADDR

-GPIO_PACFGL_ADDR)*(MBUS/8)))

extern void MQSetStatus(int32u status); //設置對應引腳;

extern u8 MQGetStatus(); //獲得對應埠值

extern u8 MQGetDCData(); //獲得煙霧感測器數字輸出的值

extern void MQADCInit(); //設置PA4為模擬輸入狀態

extern void MQGetADCStart(); //開啟AD轉換

#endif

MQ2.c編寫(煙霧感測器)

/*****************************************************************

文件名:MQ2.c

版本號:v1.0

創建日期:2012-4-1

硬體描述:煙霧感測器的數字輸出接STM32W晶元的PA3,模擬輸出接STM32W晶元的PA4

主要函數描述:MQSetStatus(int32u status):設置對應引腳;

MQGetStatus():獲得對應埠值

MQGetDCData():獲得煙霧感測器數字輸出的值

MQADCInit():設置PA4為模擬輸入狀態

MQGetADCStart():開啟AD轉換

*****************************************************************/

#include PLATFORM_HEADER

#include BOARD_HEADER

#include "MQ2.h"

#include "hal/micro/micro-common.h"

#include "hal/micro/cortexm3/micro-common.h"

#include "hal/micro/adc.h"

#include "stdio.h"

#define LOW 0//低電平

#define HIGH 1//高電平

/**************************************************************************

功能描述:完成對特定埠的設置

輸入參數:status:埠參數,高電平或低電平

輸出參數:無

*************************************************************************/

void MQSetStatus(int32u status)

{

halGpioConfig(MBUS,GPIOCFG_OUT);

if(MBUS/8 < 3)

{

if(status==HIGH) //設置為高電平

*((volatile int32u *)MBUS_SET) = BIT(MBUS&7);

else //設置為低電平

*((volatile int32u *)MBUS_CLR) = BIT(MBUS&7);

}

}

/**************************************************************************

功能描述:完成獲取對應埠的值

輸入參數:無

輸出參數:對應埠的值

*************************************************************************/

u8 MQGetStatus()

{

return (MBUS_INPUT_GPIO & (1<<MBUS_GPIO_PIN)) ? 1 : 0;

}

/**************************************************************************

功能描述:完成對煙霧感測器數字輸出的獲取

輸入參數:無

輸出參數:煙霧感測器數字輸出值

*************************************************************************/

u8 MQGetDCData()

{

halGpioConfig(MBUS,GPIOCFG_IN);

if(MQGetStatus()==0)

{

halCommonDelayMicroseconds(500); //延時抗干擾

if(MQGetStatus()==0)

return 0;

else

return 1;

}

else

return 1;

}

/**************************************************************************

功能描述:設置PA4埠為模擬輸入輸出

輸入參數:無

輸出參數:無

*************************************************************************/

void MQADCInit()

{

halGpioConfig(PORTA_PIN(4),GPIOCFG_ANALOG);

}

/**************************************************************************

功能描述:完成對給定數字的顯示

輸入參數:無

輸出參數:無

*************************************************************************/

void MQGetADCStart()

{

halAdcCalibrate(ADC_USER_APP); //設置ADC校準

halStartAdcConversion(ADC_USER_APP,ADC_REF_INT, ADC_SOURCE_ADC4_VREF2,ADC_CONVERSION_TIME_US_4096 ); //開啟AD轉換,ADC4,轉換速率4096

}

9.3.4測試程序編寫
編寫測試程序源文件solar-system.c:

/*****************************************************************

文件名:solar-system.c

版本號:v1.0

創建日期:2012-4-1

硬體描述:對於無線節點上煙霧感測器數字輸出接PA3,模擬輸出接PA4

主要函數描述:main( )函數實現對各個感測器的控制。

*****************************************************************/

#include PLATFORM_HEADER

#include BOARD_HEADER

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include "error.h"

#include "hal/hal.h"

#include "include/phy-library.h"

#include "hal/micro/cortexm3/iap_bootloader.h"

#include "MQ2.h"

/**************************************************************************

功能描述:完成對某種感測器的檢測

輸入參數:無

輸出參數:無

*************************************************************************/

int main(void)

{

boolean preesed = FALSE;

halInit();//初始化硬體

uartInit(115200, 8, PARITY_NONE, 1); //初始化UART

.

//配置PA4和PA5作為復用輸出引腳,用於數據包的跟蹤

halGpioConfig(PORTA_PIN(4),GPIOCFG_OUT_ALT);

halGpioConfig(PORTA_PIN(5),GPIOCFG_OUT_ALT);

GPIO_IRQDSEL = PORTB_PIN(2); //連接IRQD到PB2/SC1RXD

//允許IRQD標志位激活任何的IRQD

GPIO_INTCFGD = (3<<GPIO_INTMOD_BIT);

INT_GPIOFLAG = INT_IRQDFLAG;

INT_PENDCLR = INT_IRQD;

INTERRUPTS_ON();

halInitLed(); //初始化LED

halInitButton(); //初始化按鍵

halInternalInitAdc();//內部ADC初始化

MQADCInit(); //煙霧感測器介面初始化

printf("Press S2 to begin ADC Change\n");

while(TRUE)

{

halCommonDelayMilliseconds(10);

if (halGetButtonStatus(BUTTON_S2) == BUTTON_PRESSED||preesed == TRUE)

{

preesed = TRUE;

/********讀取煙霧感測器AD值*******************/

MQGetADCStart();

u16 mqacdata=getData();

u8 flag=0;

if(mqacdata&(0x01<<15)!=0)

{

mqacdata=~(mqacdata-1);//負數,2進制補碼

flag=1;

}

if(mqacdata<32768)

{

if(flag==1)

{

printf("Smoke -%d\n",mqacdata);

}

else

{

printf("Current ADC: %d\n",mqacdata);

}

}

halCommonDelayMilliseconds(2000);//2000ms

}

}

}

9.3.5測試結果及分析
煙霧感測器的模擬輸出經過AD轉換後的值通過串口發送到PC機,AD轉換的電壓范圍最大為1.2V,操作各感測器時,可以調節煙霧感測器模塊上面的滑動變阻器,以改變感測器的靈敏度。

本文出自《STM32W108嵌入式無線感測器網路》邱鐵,夏鋒,周玉編著.清華大學出版社,2014年5月
同時參考http://blog.csdn.net/u010273356/article/details/46932007

D. 基於51單片機和AD590溫度感測器溫度採集的程序

這是一個項目中的匯編程序,供你參考
org 000h
jmp main
org 0030h
main:
mov r0,#40h
mov dptr,#0bff8h ;指向0809首地址
movx @dptr,a ;啟動A/D轉換
tt1:
movx a,@dptr ;讀數
movx @r0,a ;存數
movx @dptr,a ;啟動A/D轉換
lcall delay128us ;等待轉換完畢(至少128us)
movx a,@dptr
mov @r0,a
lcall tran ;模數-數據轉換
lcall disp ;數據的靜態顯示
lcall delay1s
sjmp main
;;;;;;;;;;;;;;;;數據轉換;;;;;;;;;;;;;;;
tran: ;數據轉換
mov r0,#40h
mov r3,#00h
mov a,@r0 ;把r0中的數給a
mov b,#03h ;標度變換 3格一度
div ab
mov r3,b
mov b,#0ah ;將標度變換結果的整數部伍舉分進行BCD碼轉換
div ab
mov @r0,a ;將十位數送顯示緩沖單元

inc r0 ;指向緩沖單元下一地址
mov @r0,b ;將個位數送顯示緩沖單元

mov a,r3 ;標度轉換結果小數部分處理
mov b,#03h ;實現三格一度
mul ab
inc r0
mov @r0,a ;送顯示緩沖單元
lop: ret
;;;;;;;;;;靜態顯示子程序-串入並出;;;;;;;

disp:
mov dptr,#tab
mov r0,#40h ;r0指向緩存區首地址
mov a,@r0 ;將整數位數給a
movc a,@a+dptr ;利用表格計算十位七段LED數碼管的段碼
mov 40h,a ;將段碼結果送入40h

inc r0 ;r0指向緩存區下一地址
mov a,@r0 ;將個位腔和碧數給a
movc a,@a+dptr ;利用表格計算個位七段LED數碼管的段碼
mov 41h,a ;將段碼結果送入41h

inc r0 ;r0指向緩存區下一地址
mov a,@r0 ;將小數給a
movc a,@a+dptr ;利用表格計算小數位七段LED數碼管的段碼
mov 42h,a ;將段碼結果送入42h
;;;;;;;;;;;最後一棚侍位清零;;;;;;;;;;;;
mov 43h,#00h
mov a,43h
mov r7,#8
ccc: jb acc.7,aaa ;
clr p3.0 ;
jmp bbb
aaa: setb p3.0
bbb: setb p3.1
clr p3.1
rl a
djnz r7,ccc

;;;;;;;;小數位數顯示;;;;;;;
mov a,42h
mov r7,#8
cc:
jb acc.7,aa ;
clr p3.0 ;
jmp bb
aa: setb p3.0
bb: setb p3.1
clr p3.1
rl a
djnz r7,cc ;所有位檢測後順序執行
;;;;;;;;;;;;個位數顯示;;;;;;;;;;;
orl 41h,#80h ;個位數後置小數點
mov a,41h
mov r7,#8
dd: jb acc.7,ee
clr p3.0
jmp ff
ee: setb p3.0
ff: setb p3.1
clr p3.1
rl a
djnz r7,dd
;;;;十位數數顯示;;;;;
mov a,40h
mov r7,#8
gg: jb acc.7,hh
clr p3.0
jmp ii
hh: setb p3.0
ii: setb p3.1
clr p3.1

rl a
djnz r7,gg

tab: db 3fh,06h,5bh,4fh,66h
db 6dh,7dh,07h,7fh,6fh

lop1:
ret
;;;;;;;;;;ADC0809轉換所需時間;;;;;;;;;;
delay128us:
mov r5,#30
delay1:
mov r7,#5
delay2:
nop
nop
djnz r7,delay2
djnz r5,delay1
ret

;;;;;;;;;;為使數據顯示穩定延時;;;;;;;;
delay1s:
mov r4,#10
delay00:
mov r5,#100
delay11:
mov r7,#249
delay22:
nop
nop
djnz r7,delay22
djnz r5,delay11
djnz r4,delay00
Ret

E. 三菱PLCFX系列油門採集感測器程序怎麼寫

你是或核哪一款 FX系列的,這個簡單呀,此團薯看手冊就可以了森者 LD M8000 MOV D8080 D100
設D8080為通道1 地址,那D100就是輸入的模擬量的值

F. 如何實現用c#編寫採集多個感測器程序

可以開一個線程來逐個收集感測器數據,也友圓可以拿悶開多個線程,每個線程收集對應的感測器,這個取決於你具體需求。消告彎

閱讀全文

與感測器採集程序怎麼寫相關的資料

熱點內容
如何聘用技術崗位 瀏覽:623
安迪蘇有哪些化工產品 瀏覽:403
ug後處理如何減少程序段 瀏覽:812
中國科學技術館坐什麼公交車 瀏覽:860
adobe應用程序更新怎麼關閉 瀏覽:326
ebar系列有哪些產品 瀏覽:642
株洲批發市場的租金多少錢 瀏覽:341
哪裡可以理解更多經濟信息 瀏覽:883
有什麼醫學類的刷題小程序 瀏覽:978
清除血管毒垢有哪些產品 瀏覽:270
目前西安市場韭菜銷售情況怎麼樣 瀏覽:969
winform程序圖標怎麼修改 瀏覽:483
深圳招銀金融資產交易中心怎麼樣 瀏覽:98
什麼產品是求著買的 瀏覽:885
如何用數據線做好玩的東西 瀏覽:627
如何以低解析度運行特定程序 瀏覽:234
手游代理需要注意什麼細節 瀏覽:55
懸浮技術怎麼做 瀏覽:537
如何預約茅台小程序 瀏覽:469
氬氣瓶多少錢一瓶批發市場 瀏覽:984