实验报告5.docx
《实验报告5.docx》由会员分享,可在线阅读,更多相关《实验报告5.docx(9页珍藏版)》请在冰豆网上搜索。
![实验报告5.docx](https://file1.bdocx.com/fileroot1/2022-11/29/9f348e0e-5c5f-46b6-b2cf-d1eaa396bdf5/9f348e0e-5c5f-46b6-b2cf-d1eaa396bdf51.gif)
实验报告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转换。
通过这次实验使我的能力又有了进一步的提高,让我的知识得到了更好的巩固和加强。