AD转换实验,南京理工大学紫金学院单片机实验报告

时间:2024.4.21

单片机实验报告

 

南京理工大学紫金学院电光系

一、  实验目的

1、理解A/D转换工作原理。

2、学习掌握ADC0809的A/D转换原理和并行A/D转换接口的编程方法。

3、学习使用并行模数转换芯片ADC0809进行电压信号的采样和数据处理。

二、  实验原理

     单片机给ADC提供一个启动转换信号后,ADC转换开始,当A/D转换结束时,ADC输出一个转换转换结束标志信号,通知单片机读取转换结果。单片机检验判断A/D转换结果的方法一般有中断和查询俩种。整个A/D转换都是在一定的时钟作用下完成的,其频率是决定芯片转换速度的基础。

三、  实验内容

1.开始试验前应做好准备工作: 

(1)阅读ADC0809的数据手册,熟悉ADC0809功能及A/D转换工作原理; 

(2)认真阅读2.2节内容,熟悉利用DP-51PROC进行调试仿真的基本操作流程。 

2、了解本次实验涉及的各功能模块电路结构,其中,D2区有两个独立电位器,部分的电路原理图如图所示;A2区的PARK2区是ADC0809的工作区,如图所示

电位器电路原理图

 ADC0809芯片部分电路原理图

3、 系统板硬件连线 

(1)将ADC809PACK模块(选配件)插入PARK2区; 

(2)将D2区1KΩ电位器和10KΩ电位器的左端金属孔通过导线连接到的该区GND金属孔,而右端金属孔通过导线连接到该区的VCC金属孔; 

(3)将D2区的1KΩ电位器的中间金属孔连接到A7区的P2-IO2金属孔,而D2区10KΩ电位器的中间金属孔连接到A7区的P2-IO1金属孔; 

(4)将A7区的P2-IO3-P2-IO5分别连接到A2区的A2-A0; 

(5)将A7区的P2-CS连接到A2区的A15; 

(6)运行编写好的软件程序,每次跑到断点就会停止,此时观察转换得结果与数字万用表测量的结果相比较是否正确(所需观察的存储单元或者变量在程序中依照注释执行)

(7)改变1KΩ电位器和/或10KΩ电位器的旋转位置,用数字万用表测量中间金属孔的电压,再次运行程序至断点处,观察转换的结果是否正确。

4.程序设计

程序流程图

思考题

采用中断方法等待ADC0809转换结束

1.C语言程序

#include<reg51.h>

#include<absacc.h>           

#define adc0 XBYTE[0X7FF0]       

#define uint unsigned int

#define uchar unsigned char

uchar num,cnt,flag;

float dat;

uint voltmeter,m,n,p;

uchar dis_dat[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void inint()

{

 TMOD=0x10;

 TH1=(65536-46083)/256;

 TL1=(65536-46083)%256;

 TR1=1;

 EA=1;

 ET1=1;

 EX0=1;

 cnt=20;

 adc0=0;

    num=0;

}

void delay(uint n)

{

 uint i;

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

}

void display(uchar a,b,c)

{

 P2=0x01;

 P1=dis_dat[a];

 delay(100);

 P2=0x02;

 P1=dis_dat[b];

 delay(100);

 P2=0x04;

 P1=dis_dat[c];

 delay(100);

 P2=0x08;

 P1=0xc1;

 delay(100);

 P2=0x01;

 P1=0x7f;

 delay(100);

}

void main()

{

 inint();

 while(1)

 {

  if(flag==1)

  {

   flag=0;

        dat= num/255.0*5.0;

       

  }

    EX0=0;

  voltmeter=(uint)(dat*100);

    m=voltmeter/100;

  n=voltmeter/10%10;

    p=voltmeter%10;

    display(m,n,p);

    EX0=1;

 }

}

void time_1()interrupt 3

{

  TH1=(65536-46083)/256;

  TL1=(65536-46083)%256;

  cnt--;

  if(cnt==0)

  {

   cnt=20;

   flag=1;

  }

}

void T_0()interrupt 0

{

   

  num=adc0;

  adc0=0;    

}

2.电路图

四、  小结与体会

通过此次A/D转换实验,我学会了判断A/D转换启动、结束标志,对A/D转换有了更深入的理解与体会。


第二篇:时钟综合实验,南京理工大学紫金学院单片机实验报告


单片机实验报告

 

南京理工大学紫金学院电光系

一、  实验目的

1、 学习Proteus软件基本使用方法;

2、 掌握定时/计数器与外部中断工作原理;

3、 学习设计单片机控制的多位数码管扫描显示电路;

4、 理解数码管动态显示的原理。

二、  实验原理

AT89C51单片机为控制器,八位7段数码管分别显示小时的十位、小时的个位、连接符、分的十位、分的个位、连接符、秒的十位和秒的个位,其中数码管的位选口为P2口,段选口为P0口,小时、分和秒的能动态显示。定时器实现1秒准确定时,外部中断0引脚外接键盘BUTTON1,实现手动校分功能;外部中断1外接键盘BUTTON2,实现清零功能。

三、  实验内容

根据实验任务设计要求,在Keil软件中实现程序编辑、编译与执行等操作。对编译通过的过程可选择单步调试的方式来观察运行的结果,以及各个寄存器的值如何变化。参考程序流程:主程序流程:开始→变量赋初值→定时器T1赋计数初值→设置外部中断控制字→开中断→开计数器→送位选字→送段选码→延时→送位选字,定时器T1中断流程:定时器T1赋计数初值→到1秒了吗?→Y秒加1 or N结束→到1分钟了吗?→Y秒清零 or N结束→分钟加1→到60分钟了吗?→Y分钟清零 or N结束→结束,外部中断0流程:分钟加1→到60分钟了吗?→Y分钟清零 or N结束→结束,外部中断1:分钟清零→秒清零→结束。

1、程序代码:

#include<reg51.h>

#define uint unsigned int

#define uchar unsigned char

//共阳  0-9 

uchar dis_dat[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

uchar k,second,minute,secondl,secondh,minutel,minuteh;

void init()

{

  k=20;

  second=0;

  minute=0;

  secondl=0;

  minutel=0;

  secondh=0;

  minuteh=0;

}

void Timeinit()

{

 TMOD=0x10;

 TH1=(65536-46082)/256;

 TL1=(65536-46082)%256;

 TR1=1;

 EA=1;

 ET1=1;

 EX0=1;

 EX1=1;

 IT0=1;

 IT1=1;

}

void delay()

{

 uchar i,j;

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

  for(j=0;j<100;j++);

}

void display(uchar a,b,c,d)

{

   P2=0x1f;

   P0=dis_dat[a];

   delay();

   P2=0x2f;

   P0=dis_dat[b];

   delay();

   P2=0x4f;

   P0=dis_dat[c];

   delay();

   P2=0x8f;

   P0=dis_dat[d];

   delay();

}

void main()

{

 Timeinit();

 init();

 while(1)

 {

  minuteh=minute/10;

  minutel=minute%10;

  secondh=second/10;

  secondl=second%10;

  display(minuteh,minutel,secondh,secondl);

 }

}

void Time1()interrupt 3

{

  TH1=(65536-46082)/256;

  TL1=(65536-46082)%256;

  k--;

  if(k==0)

  {

    k=20;

    second++;

    if(second==60)

    { 

     second=0;

     minute++;

     if(minute==60)

     {

      minute=0;

      second=0;

     }

    }

  }

}

void int_0()interrupt 0

{

  minute++;

  if(minute==60)

  {

   minute=0;

  }

}

void int_1()interrupt 2

{

 minute=0;

 second=0;

}

2.实验原理图

四、  小结与体会

通过此次实验我学会了利用定时/计数器与外部中断的工作原理,设计了一个简单的时钟,具备小时,分,秒计时与显示功能。

更多相关推荐:
北京理工大学计算机实验二报告表

实验二实验报告表实验名称学号姓名班级实验时间实验报告表21数值型数据在计算机中的二进制实验记录表说明本实验对计算机内存数据的存放拟定为整数用两个字节存储并负数只考虑原码实数用4个字节存储其中阶码部分占一个字节实...

北京理工大学大学计算机基础实验七 实验报告表

实验七实验报告表实验名称学号姓名班级实验报告表71网络中实现通信互联的主要设备和其功能实验报告表72域名解析的IP路由通讯的过程实验报告表73数据在网络中的IP路由通讯过程实验报告表74路由器是如何确定进行转发...

北京理工大学计算机实验三报告表

实验三实验报告表实验名称字符编码与信息交换学号姓名班级实验时间实验报告表31西文字符显示过程编码记录表实验报告表32汉字显示过程编码记录表实验报告表33不同字体的字型码

北京理工大学计算机实验八报告表

实验八实验报告表实验名称云计算与虚拟服务学号姓名班级实验时间实验报告表81并行算法和串行算法实验数据表实验报告表82分布式实验数据表实验报告表83虚拟计算实验数据表1

北京理工大学大学计算机基础实验七__实验报告表

实验七实验报告表实验名称学号姓名班级实验时间20xx年月12月2日实验报告表71网络中实现通信互联的主要设备和其功能实验报告表72域名解析的IP路由通讯的过程实验报告表73数据在网络中的IP路由通讯过程实验报告...

北京理工大学计算机实验九报告表

五实验报告实验名称图像生成与图像处理学号姓名班级实验时间一填写下载图像的相关数据二查看左侧的图像请填写相应的图像编码三计算机中实际存储的图像可能有数几百万像素为了减少图像存储的空间有一种游程压缩方法可以减少存储...

北京理工大学计算机实验 十四

实验十四实验报告表实验名称学号姓名班级实验时间实验报告表141数据库管理系统实验数据表实验报告表142虚拟数据库设计实验报告表143虚拟数据库查询1

北京理工大学汇编语言实验报告3字符串操作实验(设计性实验)

实验三字符串操作实验设计性实验蔡航1120xx0312一实验要求和目的1了解汇编语言字符串处理基本流程2熟悉汇编语言字符串处理基本指令的使用方法3掌握利用汇编语言实现字符串处理的程序设计方法二软硬件环境1硬件环...

北京理工大学计算机实验四

实验四实验报告表实验名称一条指令的执行过程学号姓名班级实验时间年月日实验报告表41一条指令执行过程记录表

北京理工大学 实验四 实验报告表

实验四实验报告表实验名称学号20xx216886姓名唐玮班级计算机154班实验时间20xx年实验报告表41一条指令执行过程记录表

北京理工大学 实验二 实验报告表

实验二实验报告表实验名称计算机中的数据表示与计算学号20xx216886姓名实验报告表21数值型数据在计算机中的二进制实验记录表唐玮班级计算机154班实验时间20xx年说明本实验对计算机内存数据的存放拟定为整数...

北京理工大学汇编语言实验六磁盘文件存取实验报告

第六章磁盘文件存取实验设计性实验一实验要求和目的1理解文件目录的概念2了解FCB文件控制块方式文件管理方法3掌握文件代号式文件存取方式4学习使用文件指针读取文件二软硬件环境1硬件环境计算机系统windows2软...

北京理工大学大学计算机实验报告(37篇)