日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【STC15库函数上手笔记】6、ADC

發(fā)布時間:2023/12/9 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【STC15库函数上手笔记】6、ADC 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • 硬知識
    • ADC初始化函數(shù)
    • ADC電源控制函數(shù)
    • ADC查詢轉(zhuǎn)換函數(shù)
  • 測試
    • main.c
    • 實驗現(xiàn)象

STC實驗箱4
IAP15W4K58S4
Keil uVision V5.29.0.0
PK51 Prof.Developers Kit Version:9.60.0.0


硬知識

摘自《STC庫函數(shù)使用參考》

ADC初始化函數(shù)

ADC_Inilize

ADC_InitTypeDef的定義見于文件"ADC.H"。

typedef struct {u8 ADC_Px; //設(shè)置要做ADC的IO, ADC_P10~ADC_P17, ADC_P1_Allu8 ADC_Speed; //ADC速度ADC_90T, ADC_180T, ADC_360T, ADC_540T u8 ADC_Power; //ADC功率允許/關(guān)閉 ENABLE, DISABLE u8 ADCAdjResult; //ADC結(jié)果調(diào)整, ADC_RES_H2L8, ADC_RES_H8L2u8 ADC_Polity; //優(yōu)先級設(shè)置 PolityHigh, PolityLow u8 ADC_Interrupt; //中斷允許 ENABLE, DISABLE }ADC_InitTypeDef;

ADC_Px:設(shè)置要做ADC的IO:

以上參數(shù)可以使用或運算,比如:

ADC_InitStructure.ADC_Px = ADC_P10 | ADC_P11 | ADC_P12;

ADC_Speed:設(shè)置ADC的速度:

ADC_Power:ADC電源控制:

ADC_AdjResult:ADC結(jié)果調(diào)整:
ADC_Polity:中斷的優(yōu)先級:

ADC_Interrupt:中斷允許或禁止:

ADC電源控制函數(shù)

ADC_PowerControl

ADC查詢轉(zhuǎn)換函數(shù)

GetADC_10bitResult

測試


main.c

#include "./Drivers/config.h" #include "./Drivers/delay.h"#include "./Drivers/adc.h" #include "./Drivers/soft_uart.h" #include <stdio.h>char putchar(char Char) {TxSend(Char);return Char; }/*------------------------------------------------------------------*/ /* --- STC MCU International Limited -------------------------------*/ /* --- STC 1T Series MCU RC Demo -----------------------------------*/ /* --- Mobile: (86)13922805190 -------------------------------------*/ /* --- Fax: 86-0513-55012956,55012947,55012969 ---------------------*/ /* --- Tel: 86-0513-55012928,55012929,55012966 ---------------------*/ /* --- Web: www.GXWMCU.com -----------------------------------------*/ /* --- QQ: 800003751 ----------------------------------------------*/ /* If you want to use the program or the program referenced in the */ /* article, please specify in which data and procedures from STC */ /*------------------------------------------------------------------*//************* 功能說明 **************本程序演示多路ADC查詢采樣,通過模擬串口發(fā)送給上位機(jī),波特率9600,8,n,1。 用戶可以修改為1~8路的ADC轉(zhuǎn)換。******************************************//************* 外部函數(shù)和變量聲明 *****************/void ADC_config(void) {ADC_InitTypeDef ADC_InitStructure; //結(jié)構(gòu)定義ADC_InitStructure.ADC_Px = ADC_P12 | ADC_P13 | ADC_P14; //設(shè)置要做ADC的IO, ADC_P10 ~ ADC_P17(或操作),ADC_P1_AllADC_InitStructure.ADC_Speed = ADC_540T; //ADC速度 ADC_90T,ADC_180T,ADC_360T,ADC_540TADC_InitStructure.ADC_Power = ENABLE; //ADC功率允許/關(guān)閉 ENABLE,DISABLEADC_InitStructure.ADC_AdjResult = ADC_RES_H8L2; //ADC結(jié)果調(diào)整, ADC_RES_H2L8,ADC_RES_H8L2ADC_InitStructure.ADC_Polity = PolityLow; //優(yōu)先級設(shè)置 PolityHigh,PolityLowADC_InitStructure.ADC_Interrupt = DISABLE; //中斷允許 ENABLE,DISABLEADC_Inilize(&ADC_InitStructure); //初始化ADC_PowerControl(ENABLE); //單獨的ADC電源操作函數(shù), ENABLE或DISABLE }/******************** 主函數(shù)**************************/ void main(void) {u8 i;u16 tempValue;ADC_config();printf("OK\r\n");while (1){for(i = 2; i < 5; i++){tempValue = Get_ADC10bitResult(i);printf("%f, ", (float)tempValue * 5 / 1024); //參數(shù)0~7,查詢方式做一次ADC, 返回值就是結(jié)果, == 1024 為錯誤}printf("%d\r\n", (u16)(tempValue / 64. + 0.5)); //發(fā)送鍵值} }

實驗現(xiàn)象


按下按鍵后,鍵值隨之改變

我們發(fā)現(xiàn)ADC2的波形非常混亂,實測如下


可以看到本應(yīng)為2.5V的基準(zhǔn)電壓上竟有幅值達(dá)280mV的紋波

查看431的手冊,其原因是431的帶容性負(fù)載能力不是很好,當(dāng)負(fù)載電容CL=0.01uFC_L=0.01uFCL?=0.01uF~5uF5uF5uF范圍之內(nèi)時就可能引發(fā)自激振蕩

可能是畫板子的老哥由于習(xí)慣順手畫上去的,結(jié)果事與愿違,產(chǎn)生了自激振蕩。


嘗試將其摘除

可見得到的2.5V基準(zhǔn)電壓已非常平穩(wěn)


總結(jié)

以上是生活随笔為你收集整理的【STC15库函数上手笔记】6、ADC的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。