实验7直流数字电压表设计

北京理工大学珠海学院实验报告

ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY

班级:计科(1)班 学号:120201011038 姓名:林健良

 指导教师 :吴方          成绩

实验题目:实验7 直流数字电压表设计            实验时间2014.12.1

一、   实验目的和要求

掌握LED动态显示和A/D转换接口设计方法

二、   实验内容

  实验电路原理图如下图所示。图中显示器采用4位共阴极数码管,并按动态显示方式接线。A/D转换结束标志采用查询法检查,启动信号由软件模拟产生,时钟信号由Proteus的DClock信号发生器产生,频率为5KHz。电位器的输出电压送到A/D转换器中转换,转换结果以十进制数形式显示在数码管上。调节电位器可使数码管的显示值发生相应变化。

三、   实验结果与分析

#include<reg51.h>

#include<absacc.h>

Unsigned int tmp;

sbit START=p2^5;

sbit ad_busy=P2^6;

sbit OE=P2^7;

sbit P2_0=P2^0;

sbit P2_1=P2^1;

sbit P2_2=P2^2;

sbit P2_3=P2^3;

Char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delay(unsigned int time){

unsigned int j=0;

For(;time>0;time++);

}

void show(){

unsigned int i,j;

P2_0=0;

j=tmp/1000;i=j%1000;P0=led_mod[i];delay(10);

P2_0=1;

P2_1=0;

j=tmp/100;i=j%1000;P0=led_mod[i];delay(10);

P2_1=1;

P2_2=0;

j=tmp/10;i=j%1000;P0=led_mod[i];delay(10);

P2_2=1;

P2_3=0;

i=tmp%10;P0=led_mod[i];delay(10);

P2_3=1;

void main(){

while(1){

START=0;

START=1;

START=0;

while(ad_busy==1);

OE=1;

tmp=P1;

OE=0;

show();

}

}

四、   实验体会

最后一次实验课,很快本课程就要结课了时光匆匆即逝,而要努力争取的东西太多了,只希望自己能够每天进步一点点。

 

第二篇:实验七 直流数字电压表设计

学生姓名学号:  班级  时间

课程名称单片机原理及应用 总学时 48   教师     成绩       

实验名称:实验七——直流数字电压表设计

实验目的:掌握LED动态显示和A/D转换接口设计方法。

实验内容

根据如下电路原理图,编程实现查询法A/D转换和转换结果的十进制动态显示功能。

 

编程原理

LED显示器和ADC0808均采用通用IO口方式与单片机接口。

LED动态显示编程原理:将待显示数据拆解为3位十进制数,并分时地将其在相应LED位上进行显示。1次完整的输出过程为:最低位位码清零→最低位数据送P0口→最低位位码置1→软件延时→中间位位码清零→中间位数据送P0口→中间位位码置1→软件延时→最高位位码清零→最高位数据送P0口→最高位位码置1→软件延时。如此无限循环可实现动态显示。

ADC0808编程原理:被测模拟量由0#通道输入(ADDA,ADDB,ADDC均接地可选通0通道);转换启动信号(START和ALE)可由软件方式产生P2.5正脉冲;转换结束信号(EOC)可通过查询P2.6的电平变化获得;输出使能信号(OE)可由软件方式产生P2.7正脉冲。

实验要求

1、虚拟时钟信号发生器用法可参阅P262阅读材料,C51程序编写可参考以下程序模板;

————————————————

#include <reg51.h>

______________                           //定义ADC启动位变量,_st

______________                                     //定义ADC结束位变量,_eoc

______________                                     //定义ADC锁存位变量,_oe

______________                             //定义数码管最低位位变量,led0

______________                             //定义数码管第二位位变量,led1

______________                             //定义数码管第三位位变量,led2

______________                           //定义AD转换结果存放变量,ad_result

______________                           //定义显示字模数组并赋初值,table

                                //0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f

void delay(unsigned int time){                  //延时函数

        unsigned int j = 0;

        for(;time>0;time--)

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

}

void disp(void){                               //动态显示函数

    ___________________         // led0清0

        P0= _______________            //输出最低位数据的字模

        ___________________         //延时10ms

        ___________________         // led0置1

   

        ___________________         // led1清0

        P0= _______________            //输出中间位数据的字模

        ___________________         //延时10ms

        ___________________         // led1置1

        ___________________         // led2清0

        P0= _______________          //输出最高位数据的字模

        ___________________         //延时10ms

        ___________________         // led2置1

}

void main(void){ 

     while(1){

           ___________                         //模仿_st正脉冲(低_高_低)

           ___________

           ___________

         ___________                         //查询_eoc,若_eoc =0,原地循环

         ___________                         //若_eoc =1,_oe置1

         ___________                         //读取AD转换结果

         ___________                          //_oe清0

         ___________                         //动态显示函数调用

    }

}

2、提交实验报告:包括电路原理图,虚拟时钟信号发生器设置、C51源程序,运行效果图、讨论软件延时长短对动态显示效果的影响、实验小结。

相关推荐