国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

8路灰度傳感器與stm32f1

這篇具有很好參考價值的文章主要介紹了8路灰度傳感器與stm32f1。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1.連接

2.adc配置

3.主函數(shù)


1.連接

8路灰度,stm32,keil5,stm32文章來源地址http://www.zghlxwxcb.cn/news/detail-643748.html

2.adc配置

 #include "adc.h"
 #include "delay.h"

	   	   
//初始化ADC
void  Adc_Init(void)
{ 	
    /*定義兩個初始化要用的結(jié)構(gòu)體,下面給每個結(jié)構(gòu)體成員賦值*/
	ADC_InitTypeDef ADC_InitStructure; 
	GPIO_InitTypeDef GPIO_InitStructure;
	
	/*
	  使能GPIOA和ADC1通道時鐘
	  注意:除了RCC_APB2PeriphClockCmd還有RCC_APB1PeriphClockCmd,那么該如何選擇?
      APB2:高速時鐘,最高72MHz,主要負(fù)責(zé)AD輸入,I/O,串口1,高級定時器TIM
      APB1:低速時鐘,最高36MHz,主要負(fù)責(zé)DA輸出,串口2、3、4、5,普通定時器TIM,USB,IIC,CAN,SPI
  	*/
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1, ENABLE );	  
    RCC_ADCCLKConfig(RCC_PCLK2_Div6);  //72M/6=12, ADC的采樣時鐘最快14MHz  
      
    /*配置輸入電壓所用的PA0引腳*/         

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; 
  GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; 
  GPIO_Init(GPIOB, &GPIO_InitStructure);
	
	ADC_DeInit(ADC1); //復(fù)位,將ADC1相關(guān)的寄存器設(shè)為默認(rèn)值
	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;	//工作模式:ADC1和ADC2獨立工作模式  (還有其他什么模式?請看下面的附錄圖2)
	ADC_InitStructure.ADC_ScanConvMode = DISABLE;	//數(shù)模轉(zhuǎn)換工作:掃描(多通道)模式=ENABLE、單次(單通道)模式=DISABLE
	ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//數(shù)模轉(zhuǎn)換工作:連續(xù)=ENABLE、單次=DISABLE
	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;	//ADC轉(zhuǎn)換由軟件觸發(fā)啟動 (還有其他什么模式?請看下面的附錄圖3)
	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;	//ADC數(shù)據(jù)右對齊   除了右就是左:ADC_DataAlign_Left
	ADC_InitStructure.ADC_NbrOfChannel = 1;	//順序進(jìn)行規(guī)則轉(zhuǎn)換的ADC通道的數(shù)目   范圍是1-16
	ADC_Init(ADC1, &ADC_InitStructure);	//根據(jù)ADC_InitStruct中指定的參數(shù)初始化外設(shè)ADC1的寄存器
 
    
	 ADC_RegularChannelConfig(ADC1, ADC_Channel_0|ADC_Channel_1|ADC_Channel_5|ADC_Channel_6|ADC_Channel_7|ADC_Channel_8|ADC_Channel_9, 1, ADC_SampleTime_239Cycles5 );//添加通道	  	
	 
	ADC_Cmd(ADC1, ENABLE);	//使能指定的ADC  注意:函數(shù)ADC_Cmd只能在其他ADC設(shè)置函數(shù)之后被調(diào)用

    /*下面4步按流程走,走完就行*/
	ADC_ResetCalibration(ADC1);	//重置指定的ADC的校準(zhǔn)寄存器
	while(ADC_GetResetCalibrationStatus(ADC1)); //等待上一步操作完成
	ADC_StartCalibration(ADC1);	//開始指定ADC的校準(zhǔn)狀態(tài)	
	while(ADC_GetCalibrationStatus(ADC1));//等待上一步操作按成		
 }	


//獲得ADC值
//ch:通道值 0~3
u16 Get_Adc(u8 ch)// 
{
  	//設(shè)置指定ADC的規(guī)則組通道,一個序列,采樣時間
	ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );	//ADC1,ADC通道,采樣時間為239.5周期	  			    
  
	ADC_SoftwareStartConvCmd(ADC1, ENABLE);		//使能指定的ADC1的軟件轉(zhuǎn)換啟動功能	
	 
	while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待轉(zhuǎn)換結(jié)束

	return ADC_GetConversionValue(ADC1);	//返回最近一次ADC1規(guī)則組的轉(zhuǎn)換結(jié)果
}

u16 Get_Adc_Average(u8 ch,u8 times)//電壓平均值
{
	u32 temp_val=0;
	u8 t;
	for(t=0;t<times;t++)
	{
		temp_val+=Get_Adc(ch);
		delay_ms(5);
	}
	return temp_val/times;
} 	 

3.主函數(shù)

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"	 
#include "adc.h"

   
 int main(void)
 {	 
	float tempa0,tempa1,tempa4,tempa5,tempa6,tempa7,tempb0,tempb1;
	delay_init();	    	 //延時函數(shù)初始化	  
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
	uart_init(115200);	 	//串口初始化為115200
 	LED_Init();			     //LED端口初始化
	LCD_Init();			 	
 	Adc_Init();		  		//ADC初始化
   
	while(1)
	{
		tempa0=(float)Get_Adc_Average(ADC_Channel_0,10)*(3.3/4096);
		tempa1=(float)Get_Adc_Average(ADC_Channel_1,10)*(3.3/4096);
		tempa4=(float)Get_Adc_Average(ADC_Channel_4,10)*(3.3/4096);
		tempa5=(float)Get_Adc_Average(ADC_Channel_5,10)*(3.3/4096);
		tempa6=(float)Get_Adc_Average(ADC_Channel_6,10)*(3.3/4096);
		tempa7=(float)Get_Adc_Average(ADC_Channel_7,10)*(3.3/4096);
		tempb0=(float)Get_Adc_Average(ADC_Channel_8,10)*(3.3/4096);
		tempb1=(float)Get_Adc_Average(ADC_Channel_9,10)*(3.3/4096);
		
		printf("v0 %-4f v1 %-4f v2 %-4f v3 %-4f v4 %-4f v5 %-4f v6 %-4f v7 %-4f\r\n",tempa0,tempa1,tempa4,tempa5,tempa6,tempa7,tempb0,tempb1);

		if(tempa0<3.15||tempa1<3.15||tempa4<3.15||tempa5<3.15||tempa6<3.15||tempa7<3.15||tempb0<3.15||tempb1<3.15)
		LED0=!LED0;
		delay_ms(1000);	
	}
 }

到了這里,關(guān)于8路灰度傳感器與stm32f1的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • STM32——DS18B20溫度傳感器

    STM32——DS18B20溫度傳感器

    一、DS18B20介紹 (一)DS18B20技術(shù)性能特征 1、獨特的單總線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊,大大提高了系統(tǒng)的抗干擾性。 2、測溫范圍? -55°C~+125°C 3、支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,最多只

    2024年01月19日
    瀏覽(14)
  • 基于STM32F103——XGZP6847D壓力傳感器+串口打印

    基于STM32F103——XGZP6847D壓力傳感器+串口打印

    XGZP6847D 型壓力傳感器尺寸小、易安裝,廣泛用于醫(yī)療電子、汽車電子、消費電子、運動健身器材、 物聯(lián)網(wǎng)等領(lǐng)域 Reg0x30(測量命令寄存器) Measurement_control2:0( 工作模式 ) 010b ,組合采集模式(一次溫度采集后立即進(jìn)行一次傳感器壓力信號采集)。 011b ,休眠工作模式(定期的執(zhí)

    2023年04月24日
    瀏覽(36)
  • STM32f103入門(4)對射式紅外傳感器計次(外部中斷)

    STM32f103入門(4)對射式紅外傳感器計次(外部中斷)

    中斷:在主程序運行過程中,出現(xiàn)了特定的中斷觸發(fā)條件 (中斷源),使得CPU暫停當(dāng)前正在運行的程序,轉(zhuǎn)而去處理中斷程序處理完成后又返回原來被暫停的位置繼續(xù)運行 中斷優(yōu)先級:當(dāng)有多個中斷源同時申請中斷時,CPU會根據(jù)中斷源的輕重緩急進(jìn)行裁決,優(yōu)先響應(yīng)更加緊急的中

    2024年02月11日
    瀏覽(25)
  • (STM32F103單片機(jī))DHT11溫濕度傳感器

    (STM32F103單片機(jī))DHT11溫濕度傳感器

    目錄 ? 一,產(chǎn)品介紹 二,產(chǎn)品亮點 三,產(chǎn)品參數(shù) 四,引腳連接及通信說明 ?五,原理講解 六,源碼 1,DHR11.C 2.DHR11.H 3,main.c DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高

    2023年04月08日
    瀏覽(28)
  • 基于STM32_DS18B20單總線傳感器驅(qū)動

    基于STM32_DS18B20單總線傳感器驅(qū)動

    本文以一款典型的單總線傳感器及其驅(qū)動——DS18B20為例,簡單對1-Wire總線接口的傳感器做個示例講解,該項目基于硬件平臺STM32F407,使用標(biāo)準(zhǔn)庫本完成。 DS18B20數(shù)字溫度計提供9至12位(可配置)溫度讀數(shù),指示設(shè)備的溫度。信息通過1-Wire總線接口發(fā)送到/從DS18B20,因此只需要從中

    2024年02月07日
    瀏覽(16)
  • 基于STM32F030驅(qū)動MQ7一氧化碳傳感器

    基于STM32F030驅(qū)動MQ7一氧化碳傳感器

    了解一氧化碳傳感器 MQ7 的驅(qū)動原理,通過配置 STM32F030 的GPIO及外設(shè)ADC和DMA,采集一氧化碳濃度數(shù)據(jù)。 MQ-7氣體傳感器所使用的氣敏材料是在清潔空氣中電導(dǎo)率較低的二氧化錫(SnO2)。采用高低溫循環(huán)檢測方式低溫(1.5v加熱)檢測一氧化碳,高溫(5.0v加熱)清洗低溫時吸附的

    2023年04月26日
    瀏覽(26)
  • HX711壓力傳感器(基于STM32F103C8T6)

    HX711模塊是我們目前比較常見的壓力傳感器模塊,主要的作用是用來做壓力檢測,重量監(jiān)測等等。博主的這篇博文主要實現(xiàn)功能為,在對重量或者壓力進(jìn)行監(jiān)測的同時,可以累加或者清零數(shù)值,在此基礎(chǔ)上就可以對比如飲水量進(jìn)行統(tǒng)計等等。 HX711模塊是市面上比較常見的模塊

    2024年02月11日
    瀏覽(19)
  • STM32CubeMX 讀取DS18B20溫度傳感器數(shù)據(jù)串口打印顯示

    STM32CubeMX 讀取DS18B20溫度傳感器數(shù)據(jù)串口打印顯示

    本文要做的所有工作標(biāo)題基本都包括了,讀取溫度傳感器的溫度數(shù)值,再通過串口打印到串口助手; 好多博主大神的教程我按步驟做了之后總是出現(xiàn)程序不報錯并且檢測不到傳感器的情況,后來找到原因并且修改后調(diào)試正常。 我用的是普中科技的實驗板,主控芯片為STM3210

    2024年02月05日
    瀏覽(20)
  • STM32F103實現(xiàn)激光測距傳感器測距WT-VL53L0 L1

    STM32F103實現(xiàn)激光測距傳感器測距WT-VL53L0 L1

    目錄 本博客將采用標(biāo)準(zhǔn)庫和HAL庫實現(xiàn) 所用設(shè)備選擇 引腳說明 與單片機(jī)的接線表 標(biāo)準(zhǔn)庫實現(xiàn) ?HAL庫實現(xiàn) 本博客將采用 標(biāo)準(zhǔn)庫 和 HAL庫 實現(xiàn) 所用設(shè)備選擇 單片機(jī)型號:STM32F103C8T6 ?激光測距傳感器型號:WT-VL53L0 L1 ? 采用串口TTL電平輸出,可以接USB-TTL串口到電腦,或者直接接

    2024年02月14日
    瀏覽(24)
  • 【正點原子STM32連載】 第三十二章 光敏傳感器實驗 摘自【正點原子】STM32F103 戰(zhàn)艦開發(fā)指南V1.2

    【正點原子STM32連載】 第三十二章 光敏傳感器實驗 摘自【正點原子】STM32F103 戰(zhàn)艦開發(fā)指南V1.2

    本章,我們將學(xué)習(xí)使用STM32開發(fā)板板載的一個光敏傳感器。我們還是要使用到ADC采集,通過ADC采集電壓,獲取光敏傳感器的電阻變化,從而得出環(huán)境光線的變化,并在TFTLCD上面顯示出來。 本章分為如下幾個小節(jié): 32.1 光敏傳感器簡介 32.2 硬件設(shè)計 32.3 程序設(shè)計 32.4 下載驗證

    2024年02月03日
    瀏覽(70)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包