图2-20 获取转换结果函数程序流程图
3.主函数(main.c)程序流程图如图2-21所示。
开发版初始化ARMTargetInit()初始化AD转换器采样前4路显示结果延时
图2-21 主函数程序流程图
D/A接口实验main.c程序:
#include \#include\#include \#include\
#pragma import(__use_no_semihosting_swi)
#define ADCCON_FLAG 0x40 #define ADCCON_SLEEP 0x20
#define ADCCON_ADIN0 (0x0<<2) #define ADCCON_ADIN1 (0x1<<2) #define ADCCON_ADIN2 (0x2<<2) #define ADCCON_ADIN3 (0x3<<2) #define ADCCON_ADIN4 (0x4<<2) #define ADCCON_ADIN5 (0x5<<2) #define ADCCON_ADIN6 (0x6<<2) #define ADCCON_ADIN7 (0x7<<2)
#define ADCCON_READ_START 0x2 #define ADCCON_ENABLE_START 0x1
void init_ADdevice() {//初始化
rADCPSR=20;
rADCCON=ADCCON_SLEEP; }
int GetADresult(int channel) {
rADCCON=(channel<<2)|ADCCON_ENABLE_START; Delay(10);
while(!(rADCCON&ADCCON_FLAG));//转换结束 return rADCDAT;//返回采样值 }
Main.c:
int main(void) {
int i; float d;
ARMTargetInit(); //开发版初始化 init_ADdevice(); Uart_Printf(\
while(1) {
//for(i=0; i<=3; i++) //{//采样0~3路A/D值
d=GetADresult(4)*2.5/1023; // 数据 采集,处理 Uart_Printf(\ Delay(3000); //}
Uart_Printf(\ }
return 0; }
七、实验心得:
实验中,我了解了A/D和D/A借口的原理,掌握了ARM的
相关寄存器的功能以及ARM系统硬件的相关借口。这个实验关键点
在于这个开发板中的直流电机的运用。实践检验真理,让理论更加容易的让人理解。