实验报告5.docx

上传人:b****4 文档编号:4307119 上传时间:2022-11-29 格式:DOCX 页数:9 大小:492.15KB
下载 相关 举报
实验报告5.docx_第1页
第1页 / 共9页
实验报告5.docx_第2页
第2页 / 共9页
实验报告5.docx_第3页
第3页 / 共9页
实验报告5.docx_第4页
第4页 / 共9页
实验报告5.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

实验报告5.docx

《实验报告5.docx》由会员分享,可在线阅读,更多相关《实验报告5.docx(9页珍藏版)》请在冰豆网上搜索。

实验报告5.docx

实验报告5

微机原理实验报告

 

实验名称:

A/D转换器采样P0.7端口电平

院系:

物理与机电工程学院

专业班级:

08电子信息工程

学号:

2008041538

学生姓名:

薛霞

指导教师:

涂二生

完成时间:

2011年5月15日

报告成绩:

评阅意见:

评阅教师日期

 

A/D转换器采样P0.7端口电平

一、实验目的

本次实验通过修改MAT1.0触发AD转换实验,实现了用MAT1.1触

AD转换,把原来的通道3改成了通道1进行AD转换。

通过P0.7端口接VI

端口,实现了对P0.7端口的采样,并且发送到上位机终端EasyARM的全DO

仿真窗口中显示。

实验时的基准电压可以用实验板内部的(JP5的跳线接在Vre

端),还可以用外接的3.3V电压,这时应该用杜邦线在J6处将UVref端口接3.3

端,并且把JP5的跳线改接UVref端。

通过本次实验,让我对A/D转换的原理更加了解,并学会对简单的低电

进行A/D转换,并且显示出来。

二、实验仪器

装有ADS1.2及EasyJTAG仿真器的电脑一台、ARM7开发板一块、

杜邦线

三、实验原理

特性:

寄存器:

基本操作:

四、实验内容

#include"config.h"

#defineBEEP(1<<7)

*******************************************************************************

**函数名称:

DelayNS()

**函数功能:

长软件延时

**入口参数:

dly延时参数,值越大,延时越久

**出口参数:

*******************************************************************************

voidDelayNS(uint32dly)

{

uint32i;

for(;dly>0;dly--)

for(i=0;i<5000;i++);

}

#defineUART_BPS115200//通讯波特率115200

/*

*******************************************************************************

**函数名称:

UART0_Init()

**函数功能:

初始化串口0:

波特率115200,8位数据位,1位停止位,无奇偶校验。

**入口参数:

**出口参数:

*******************************************************************************

voidUART0_Init(void)

{

uint16Fdiv;

U0LCR=0x83;//DLAB=1

Fdiv=(Fpclk/16)/UART_BPS;

U0DLM=Fdiv/256;

U0DLL=Fdiv%256;

U0LCR=0x03;

}

*******************************************************************************

**函数名称:

UART0_SendByte()

**函数功能:

向串口发送字节数据,并等待数据发送完毕。

**入口参数:

data要发送的数据

**出口参数:

*******************************************************************************

voidUART0_SendByte(uint8data)

{

U0THR=data;

while((U0LSR&0x40)==0);//等待数据发送完毕

}

*******************************************************************************

**函数名称:

PC_DispChar()

**函数功能:

向PC机发送显示字符。

**入口参数:

x显示字符的横坐标

**y显示字符的纵坐标

**chr显示的字符,不能为ff

**color显示的状态,包括前景色、背景色、闪烁位。

**与DOS字符显示一样:

0~3,前景色,4~6,背景色,7,闪烁位。

**出口参数:

*******************************************************************************

voidPC_DispChar(uint8x,uint8y,uint8chr,uint8color)

{

UART0_SendByte(0xff);//起始字符

UART0_SendByte(x);

UART0_SendByte(y);

UART0_SendByte(chr);

UART0_SendByte(color);

}

*******************************************************************************

**函数名称:

ISendStr()

**函数功能:

向上位机发送字符串。

**入口参数:

x显示字符的横坐标

**y显示字符的纵坐标

**color显示的状态,包括前景色、背景色、闪烁位。

**与DOS字符显示一样:

0~3,前景色,4~6,背景色,7,闪烁位。

**str要发送的字符串,以'\0'结束

**出口参数:

*******************************************************************************

voidISendStr(uint8x,uint8y,uint8color,char*str)

{

while

(1)

{

if(*str=='\0')break;//结束字符

PC_DispChar(x++,y,*str++,color);

if(x>=80)

{

x=0;

y++;

}

}

}

*******************************************************************************

**函数名称:

main()

**函数功能:

MAT1.0信号启动AD转换。

**调试说明:

需要包含stdio.h

*******************************************************************************

intmain(void)

{

uint32ADC_Data;

charstr[20];

PINSEL0=0x00000005;//管脚连接串口

PINSEL1=1<<24;//P0.28连接到AD0.1

IO0DIR=BEEP;//P0.7为输出端口

UART0_Init();//UART0初始化

/*设置MAT1.0匹配翻转*/

T1MCR=0x02;//设置T1MR0匹配后将T1TC复位

T1EMR=3<<6;//T1MR0匹配后MAT1.1输出翻转

T1MR0=Fpclk/100;//输出频率周期控制

T1TCR=0x03;//启动并复位T1TC

T1TCR=0x01;

/*进行ADC模块设置*/

AD0CR=(1<<1)|//SEL=1,选择通道

((Fpclk/1000000-1)<<8)|//CLKDIV=Fpclk/1000000-1,转换时钟为1MHz

(0<<16)|//BURST=0,软件控制转换操作

(0<<17)|//CLKS=0,使用11clock转换

(1<<21)|//PDN=1,正常工作模式

(0<<22)|//TEST1:

0=00,正常工作模式

(7<<24)|//START=7,当EDGE选择的边沿出现在MAT1.1时启动AD转换

(0<<27);//下降沿

DelayNS(10);

ADC_Data=AD0DR;//读取ADC结果,并清除DONE标志位

while

(1)

{

IO0CLR=BEEP;//P0.7低电平

while((AD0DR&0x80000000)==0);//等待转换结束

ADC_Data=AD0DR;//读取ADC结果

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

ADC_Data=ADC_Data*2480;//参考电压经过3/4分压

ADC_Data=ADC_Data/1024;

sprintf(str,"%4dmVVIN1",ADC_Data);

ISendStr(0,0,0x30,str);

DelayNS(500);

IO0SET=BEEP;//P0.7高电平

while((AD0DR&0x80000000)==0);//等待转换结束

ADC_Data=AD0DR;//读取ADC结果

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

ADC_Data=ADC_Data*2480;//参考电压经过3/4分压

ADC_Data=ADC_Data/1024;

sprintf(str,"%4dmVVIN1",ADC_Data);

ISendStr(0,0,0x30,str);

DelayNS(500);

}

return0;

}

在本次实验中,由于程序中设置P0.7端口为高低电平替换,要对P0.7端口进行AD转换采样,需要用杜邦线将P0.7端口与VIN端口相连。

实验通过对AD0CR的设置来对AD转换的通道和对启动AD转换的模式进行修改,由原来的通道3改成通道1,MAT1.0改成MAT1.1边沿触发。

改成MAT1.1边沿触发的时候还要设置定时器的T1EMR,改成T1MR0匹配后MAT1.0输出翻转。

五、实验结果

本次的实验的结果是在上位机终端EasyARM软件中显示P0.7端口的连续高低电平替换,因为P0.7端口的高电平为3.3V,经过AD转换后约为2744MV,低电平的为30MV左右,所以在显示窗口显示的是2744mv与30mv交替显示,时间间隔为0.5秒左右。

六、心得体会

通过本次实验,我对AD转换的原理、基准电压的定义以及AD转换通

道及其启动AD转换的模式有所了解和掌握掌握。

并通过对P0.7端口高低电平进行采样AD转换,学会了利用ARM7板对些简单的外部电压进行AD转换。

通过这次实验使我的能力又有了进一步的提高,让我的知识得到了更好的巩固和加强。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1