0837嵌入式体系结构综合实验报告_arm体系结构实验报告

2020-02-27 其他范文 下载本文

0837嵌入式体系结构综合实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“arm体系结构实验报告”。

重庆理工大学

嵌入式体系结构综合实验报告

题目:基于LPC2114的定时数据采集与通讯程序设计

二级学院 计算机科学与工程学院 专 业 计算机科学与技术

班 级 0837-1 学生姓名 冉晨 学号 10803070119 教 师 刘政 时 间 2010/11/14 成 绩

目录

一、实验名称-------------3

二、实验目的-------------3

三、实验设备与环境----3

四、实验基本原理-------3

五、实验内容(包括主要算法分析与流程图)--4

六、实验源程序及分析-5

七、实验运行结果及分析-----------------------------7

八、实验心得体会-------8

一、实验名称

基于LPC2114的定时数据采集与通讯程序设计

二、实验目的 使用EasyARM2114板上AIN0和AIN1输入模拟量, 定时1mS中断采样,然后采样的电压每秒通过UART串口传送到PC机串口助手显示.三、实验设备与环境

EasyARM2114实验板,PC机,Windows XP操作系统, H-JTAG串口,实验相关数据线, ARM Developer Suite相关软件,串口调试助手.四、实验基本原理

本设计任务选用了Philips的LPC2114微处理器作为现场控制的核心。设计采用定时中断方式,要求每1ms采集一点,LPC2114将采集所转换的数据存储在ADDR(A/D数据存储器)中, A/D采样结果也采用中断读取.然后程序通过SPI实现UART通讯, 传送到PC机串口助手显示, 其中的电压值为实际采样值,每秒显示完后换行,同时要求串口发送采用中断.五、实验内容(包括主要算法分析与流程图)

设置P0,P1,P0.27,P0.28连接定时器初始化初始化串口模式A/D初始化数据采集并传送显示(每秒换行)中断 该实验最主要的算法实现在于中断的实现(包括实现UART的中断和数据采集后的A/D采样结果),结合代码分析: void __irq IRQ_ADC(){

count++;

if(count%2==1)

{

ADC_Data=ADDR;//存入寄存器数据

ADC_Data=(ADC_Data>>6)&0x3FF;

ADC_Data=ADC_Data*3300;

ADC_Data=ADC_Data/1024;//换算

sum1+=ADC_Data;//存入电压AIN0总值

}

else

{

ADC_Data=ADDR;

ADC_Data=(ADC_Data>>6)&0x3FF;

ADC_Data=ADC_Data*3300;

ADC_Data=ADC_Data/1024;//换算

sum2+=ADC_Data;// 存入电压AIN1总值

}

VICVectAddr=0x00;//通知VIC中断处理结束 } 关于ADC的初始化: void ADC_Init(){

ADCR=

(3)

//选择通道

((Fpclk/1000000-1)

(0

(0

(1

//PDN=1模式为正常工作

(0

(1

(1

//EDGE=1

VICVectCntl2=0x32;

VICVectAddr=(uint32)IRQ_ADC;

VICVIntEnable |=0x00040000;

}

六、实验源程序及分析

#include“config.h” #include“stdio.h” #define UART_BPS 115200 uint8 comERR;int count=0;uint32 ADC_Data;long sun1=0,sum2=0;int v1=0,v2=0;int pSd=0,pRd=0;char SdBuff[100],RdBuff[20];void Time0Init()//定时器初始化 {

T0PR=9;

T0MCR=0x03;

T0MR1=1106/2;

T0TCR=0x03;

T0TCR=0x01;

T0EMR=0xC0;

} void __irq IRQ_UART_Exception()//通讯发送中断 {

switch(U0IIR&0x0f)

{

case 0x06:

comERR=U0LSR;

break;

case 0x04:

while((U0LSR & 0x01)==1)

{

RdBuff[pRd++]=U0RBR;

if(pRd>=100)pRd=0;

}

break;

case 0x0c:

while((U0LSR&0x01)==1)

{

RdBuff[pRd++]=U0RBR;

if(pRd>=100)pRd=0;

}

break;

case 0x02:

if(SdBuff[pSd]!='')U0THR=SdBuff[pSd++];

break;

}

VICVectAddr=0x00;

} void UART0_SendStr()//输出到显示屏 {

sprintf(SdBuff,“Voltage0 is %dmV

Voltage0 is %dmVn”,v1,v2);

for(pSd=0;pSd

uint16 Fdiv;

U0LCR=0x03;

Fdiv=(Fpclk/16)/UART_BPS;

U0DLM=Fdiv/256;

U0DLL=Fdiv%256;

U0LCR=0x03;

U0LER=ox07;

U0FCR=0x87;

VICVectCntl1=0x26;

VICVectAddr1=(uint32)IRQ_UART_Exception;

VICIntEnable |=0x00000040;} void __irq IRQ_ADC()//内部中断 {

count++;

if(count%2==1)

{

ADC_Data=ADDR;

ADC_Data=(ADC_Data>>6)&0x3FF;

ADC_Data=ADC_Data*3300;

ADC_Data=ADC_Data/1024;

sum1+=ADC_Data;

}

else

{

ADC_Data=ADDR;

ADC_Data=(ADC_Data>>6)&0x3FF;

ADC_Data=ADC_Data*3300;

ADC_Data=ADC_Data/1024;

sum2+=ADC_Data;

}

VICVectAddr=0x00;} void ADC_Init()//A/D初始化 {

ADCR=

(3)

|

((Fpclk/1000000-1)

(0

|

(0

|

(1

|

(0

|

(1

|

(1

|

VICVectCntl2=0x32;

VICVectAddr=(uint32)IRQ_ADC;

VICVIntEnable |=0x00040000;

} int main(){ //设置引脚

PINSEL0=0x00000005;

PINSEL1=0x01400000;

VICIntEnable=0x00000000;

Time0Init();

UART0_Ini();

ADC_Init();

while(1)

{

if(count>=1000)

{

v1=sum1/500;

v2=sum2/500;

count=0;

sum1=0;

sum2=0;

UART0_SendStr();

}

}

return 0;}

七、实验运行结果及分析

由UART串口发送至屏幕显示,每秒输出后中断直接换行.八、实验心得体会

通过该次实验,我对LPC2114有了比较全面的研究.由于内置了宽范围的串行通信接口,它们也非常适合于通信网关、协议转换器、嵌入式软件调制解调器以及其它各种类型的应用。给我比较深刻的印象的功能就是UART通讯方面.这次实验让我对UART发送信息的过程有了一个全面的了解,对SPI接口的使用有了一个初步的认识.但是仍然还是有很多不理解的地方,比如中断的详细流程和实现,都比较模糊.我想应该能在以后的学习中逐步地完善,达到进步.总之,这次实验让我收获颇丰,对嵌入式也有了一个理性的认识.9

《0837嵌入式体系结构综合实验报告.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
0837嵌入式体系结构综合实验报告
点击下载文档
相关专题 arm体系结构实验报告 综合 实验报告 体系结构 arm体系结构实验报告 综合 实验报告 体系结构
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文