一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

采用STM32F103硬件ADC功能進(jìn)行光照強(qiáng)度采集

嵌入式技術(shù) ? 來(lái)源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-05-31 11:32 ? 次閱讀

硬件配置

單片機(jī)型號(hào)STM32F103C8
屏幕:0.96寸OLED
傳感器光照傳感器(ADC采集)

功能實(shí)現(xiàn)
光照強(qiáng)度采集ADC方式采集,STM32F103本身自帶有硬件ADC功能。將采集到的數(shù)據(jù)實(shí)時(shí)刷新到屏幕上即可完成波形顯示。
0.96寸OLED分辨率為128*64(128列,64行)。我們可以定義一個(gè)數(shù)組buff[128],數(shù)組下標(biāo)作為橫坐標(biāo),數(shù)組中的值作為縱坐標(biāo)。這樣即可把采集到的值實(shí)時(shí)刷新即可。由于需要先采集的數(shù)據(jù)先顯示,這樣就可以采用環(huán)形隊(duì)列特性實(shí)現(xiàn)波形顯示。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_centerpoYBAGKVjAqASijEAAsNlF_HczA081.png

功能實(shí)現(xiàn):

int main()
{
    u8 cnt=40;
    u8 buff[20];
	Beep_Init();//蜂鳴器初始化
	Usartx_Init(USART1,115200,72);
	TIMx_Init(TIM2,72,20000);//通過(guò)定時(shí)器2輔助串口接收數(shù)據(jù),20ms
	OLED_Init();//OLED初始化
    OLED_Display_Font(8,0,16,5);//光
    OLED_Display_Font(8+16,0,16,6);//照
    OLED_Display_Font(8+16*2,0,16,7);//強(qiáng)
    OLED_Display_Font(8+16*3,0,16,8);//度
    OLED_Refresh_PageGram();
    ADC1_InjectionChannel_Init();
    printf("串口初始化完成\r\n");
	while(1)
	{
		ADC1->CR2|=1<<21;//開(kāi)啟注入通道轉(zhuǎn)換
		Delay_Ms(1);
		while(adc.adc_len)
		{
			OLED_RowGram_Clear(adc.r);
			OLED_DrawPoint(adc.r,adc.buff[adc.r],1);
			adc.r=(adc.r+1)%ADC_LEN;
			adc.adc_len--;//緩沖區(qū)長(zhǎng)度-1
		}
		OLED_RefreshGram();//更新數(shù)據(jù)到屏幕
		cnt++;
		if(cnt>=40)
		{
			cnt=0;
			snprintf((char *)buff,20,"%d",ADC_Data);
			OLED_Display_str(16+16*4,0,16,buff);//顯示光照值
			OLED_Display_Font(8,0,16,5);
			OLED_Display_Font(8+16,0,16,6);
			OLED_Display_Font(8+16*2,0,16,7);
			OLED_Display_Font(8+16*3,0,16,8);
			OLED_Refresh_PageGram();//更新數(shù)據(jù)到屏幕
		}
	}
}

硬件ADC配置:

#include "adc.h"
/********************注入通道配置********************/
void ADC1_InjectionChannel_Init(void)
{
	//1.開(kāi)時(shí)鐘
	RCC->APB2ENR|=1<<9;//ADC1時(shí)鐘
	RCC->APB2ENR|=1<<3;//PB0時(shí)鐘
	RCC->APB2RSTR|=1<<9;//ADC復(fù)位時(shí)鐘
	RCC->APB2RSTR&=~(1<<9);//關(guān)復(fù)位
	/*2.GPIO配置*/
	GPIOB->CRL&=0xFFFFFFF0;//模式輸入方式
	/*3.ADC時(shí)鐘頻率配置*/
	RCC->CFGR&=~(0x3<<14);//清除原來(lái)配置
	RCC->CFGR|=0x2<<14;//ADC工作頻率72MHZ/6=12MZH
	/*4.配置ADC核心寄存器*/
//	ADC1->CR1&=~(0xF<<16);//獨(dú)立模式
	ADC1->CR1|=1<<8;//掃描模式
	ADC1->CR2|=1<<23;//啟動(dòng)溫度傳感器(測(cè)量CPU溫度)
	ADC1->CR2|=1<<15;//注入通道外部觸發(fā)轉(zhuǎn)換模式
	ADC1->CR2|=0x7<<12;//注入通道事件方式啟動(dòng)轉(zhuǎn)換
//	ADC1->CR2&=~(1<<11);//右對(duì)齊(地位對(duì)齊,高位補(bǔ)0)
	ADC1->SMPR1|=0x7<<18;//溫度傳感器采樣時(shí)間通道16
	ADC1->SMPR2|=0x2<<24;//通道8采用時(shí)間
//	ADC1->CR2&=~(1<<1);//單次轉(zhuǎn)換模式
	ADC1->JSQR|=0x1<<20;//注入通道轉(zhuǎn)換序列的通道數(shù)為2
	/*設(shè)置要轉(zhuǎn)換通道*/
	ADC1->JSQR&=~(0x1F<<15);//清除原來(lái)寄存器中值
	ADC1->JSQR|=(8<<15);
	ADC1->JSQR&=~(0x1F<<10);//清除第三個(gè)注入序列中的值
	ADC1->JSQR|=(16<<10);
	/*開(kāi)中斷*/
	ADC1->CR1|=1<<7;//開(kāi)啟注入通道中斷
	STM32_NVIC_SetPriority(ADC1_2_IRQn,1,1);//設(shè)置優(yōu)先級(jí)
	ADC1->CR2|=1<<0;//開(kāi)啟ADC
	ADC1->CR2|=1<<3;//初始化校準(zhǔn)
	while(ADC1->CR2&1<<3);//等待初始化校準(zhǔn)完成
	ADC1->CR2|=1<<2;//開(kāi)始校準(zhǔn)
	while(ADC1->CR2&1<<2){}//等待校準(zhǔn)完成
}
/************ADC中斷服務(wù)函數(shù)*******************/
u16 ADC_Data=0;
ADC_DATA adc;//獲取的光照強(qiáng)度結(jié)構(gòu)體數(shù)據(jù)
void ADC1_2_IRQHandler(void)
{
	u16 data;
	if(ADC1->SR&1<<2)//注如通道轉(zhuǎn)完成標(biāo)志
	{
        ADC_Data=ADC1->JDR2;
        data=10+ADC_Data*(64.0/4095.0);
        if(data>63)data=63;//保證ADC采集的值為10~63,保證和屏幕高度一致
        adc.buff[adc.w]=data;//寫(xiě)入數(shù)據(jù)到緩沖區(qū)
        adc.w=(adc.w+1)%ADC_LEN;
        adc.adc_len++; 
	}
	ADC1->SR=0;
}

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6058

    文章

    44822

    瀏覽量

    644726
  • adc
    adc
    +關(guān)注

    關(guān)注

    99

    文章

    6611

    瀏覽量

    547738
  • STM32F103C8
    +關(guān)注

    關(guān)注

    1

    文章

    23

    瀏覽量

    8235
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32F103控制ad7606采集程序分享

    本文首先分析了了stm32f103系列的性能如何,其次介紹了ad7606特性,最后介紹了STM32F103控制ad7606采集程序。
    的頭像 發(fā)表于 05-21 11:31 ?3.1w次閱讀

    STM32采集光照強(qiáng)度顯示波形硬件配置

    STM32采集光照強(qiáng)度顯示波形硬件配置??單片機(jī)型號(hào):STM32F103C8??屏幕:0.96寸OLED屏??傳感器:
    發(fā)表于 08-18 06:58

    如何去實(shí)現(xiàn)STM32采集光照強(qiáng)度顯示波形?

    如何去實(shí)現(xiàn)STM32采集光照強(qiáng)度顯示波形?
    發(fā)表于 11-23 07:15

    BH1750光強(qiáng)度傳感器Stm32f103驅(qū)動(dòng)的相關(guān)資料推薦

    1. 實(shí)驗(yàn):Stm32f103 驅(qū)動(dòng) bh1750采集光照強(qiáng)度,串口打印采集到的數(shù)據(jù)。2. 實(shí)驗(yàn)準(zhǔn)備器材 開(kāi)發(fā)版:stm32f103c8t6
    發(fā)表于 01-18 07:02

    基于stm32f103的數(shù)據(jù)采集

    基于stm32f103的數(shù)據(jù)采集,將0-3.3v的電壓轉(zhuǎn)換成數(shù)字量
    發(fā)表于 05-06 16:43 ?53次下載

    STM32F103封裝方式與功能配置

    本文介紹STM32F103封裝方式和STM32F103管腳功能的配置。
    發(fā)表于 08-03 17:44 ?2.2w次閱讀
    <b class='flag-5'>STM32F103</b>封裝方式與<b class='flag-5'>功能</b>配置

    基于單片機(jī)的GY-30光照強(qiáng)度采集

    利用單片機(jī)寫(xiě)的關(guān)于光照強(qiáng)度采集
    發(fā)表于 11-05 11:42 ?105次下載

    stm32f103采集四路ADC并且顯示到OLED上程序

    stm32f103采集四路ADC并且顯示到OLED上程序
    發(fā)表于 01-16 18:07 ?185次下載

    如何基于STM32F103對(duì)4路ADCDMA進(jìn)行改進(jìn)的詳細(xì)資料概述

    本文的主要內(nèi)容詳細(xì)介紹了基于STM32F103的4路ADC采集用的DMA進(jìn)行改進(jìn)的詳細(xì)資料概述
    發(fā)表于 06-04 10:00 ?12次下載

    使用STM32F103單片機(jī)采集16路ADC的工程文件和程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用STM32F103單片機(jī)采集16路ADC的工程文件和程序免費(fèi)下載。
    發(fā)表于 09-26 08:00 ?33次下載
    使用<b class='flag-5'>STM32F103</b>單片機(jī)<b class='flag-5'>采集</b>16路<b class='flag-5'>ADC</b>的工程文件和程序免費(fèi)下載

    stm32f030和stm32f103功能差異

    stm32f030和stm32f103功能差異主要表現(xiàn)在哪?
    的頭像 發(fā)表于 07-22 09:35 ?2.3w次閱讀

    GD32F103STM32F103的區(qū)別 2021.6.2

    GD32F103STM32F103區(qū)別介紹關(guān)鍵詞Key words:GD32F103、STM32F103摘要Abstract:本文主要是GD32F
    發(fā)表于 12-08 11:06 ?83次下載
    GD32<b class='flag-5'>F103</b>與<b class='flag-5'>STM32F103</b>的區(qū)別 2021.6.2

    STM32采集光照強(qiáng)度顯示波形

    STM32采集光照強(qiáng)度顯示波形硬件配置??單片機(jī)型號(hào):STM32F103C8??屏幕:0.96寸OLED屏??傳感器:
    發(fā)表于 12-24 19:33 ?61次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>采集</b><b class='flag-5'>光照強(qiáng)度</b>顯示波形

    用于stm32f103 A/D信號(hào)采集的處理

    用于stm32f103 A/D信號(hào)采集的處理
    發(fā)表于 08-01 18:13 ?6次下載

    學(xué)習(xí)STM32F103ADC功能

    三勺最近在學(xué)習(xí)STM32F103ADC功能,居然連最簡(jiǎn)單的獨(dú)立模式的單通道的電壓采集都不能實(shí)現(xiàn),這就不能忍了,這是對(duì)智商的侮辱。
    的頭像 發(fā)表于 10-24 16:06 ?2627次閱讀
    學(xué)習(xí)<b class='flag-5'>STM32F103</b>的<b class='flag-5'>ADC</b><b class='flag-5'>功能</b>