⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 最新的IAR511下的AT91SAM7S64的ADC使用例程
💻 C
字号:
// This program shows how to work with ADC convertor
// Press Button 1 -> Send UART0 -> current temperature
// Press Button 2 -> Send UART0 -> current voltage on potentialometer

#include "AT91SAM7S64.h"
#include "stdio.h"
#include "usart.h"
#include "adc.h"
#include "system.h"
#include "string.h"

AT91PS_PIO    m_pPio   = AT91C_BASE_PIOA;
AT91PS_ADC    m_pADC   = AT91C_BASE_ADC;
AT91PS_RSTC   m_pRSTC  = AT91C_BASE_RSTC;

void Delay (unsigned long a) { while (--a!=0); }  // 延时函数

unsigned char* CalcTemp(unsigned int temp);
unsigned char* CalcVolt(unsigned int volt);
unsigned char res[12];

int main() {
  InitFrec();      // 系统初始化
  InitADC();
  InitUSART0();    // 串行口UART初始化
  InitPeriphery(); // 外围初始化
  while(1) {       // 主循环

    if(!((m_pPio->PIO_PDSR) & BIT19)) { // 若按键1压下,从UART0输出AD5的转换结果(外接热敏电阻)
       ClearTerminal();
       CalcTemp(GetValue_chanel5());
       write_str_USART0(res);
       Delay(900000);
    }

    if(!((m_pPio->PIO_PDSR) & BIT20)) {// 若按键2压下,从UART0输出AD4的转换结果(外接电位器)
       ClearTerminal();
       CalcVolt(GetValue_chanel4());
       write_str_USART0(res);
       Delay(900000);
    }
  }
}

unsigned char* CalcTemp(unsigned int temp) {   // 热敏电阻温度转换
  float T;
  T = (float)temp/2.2 - 228;
  sprintf((char *)res,"Temp %0.1f C",T);
  return 0;
}

unsigned char* CalcVolt(unsigned int volt) {  // 3.3V电位器分压
  float V;
  V = (float)volt * 3.3/1024;
  sprintf((char *)res,"Volt %0.2f V",V);
  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -