实验七 直流数字电压表设计
一、 实验目的:
掌握LED动态显示和A/D 转换接口设计方法。
二、 实验原理:
实验电路原理图如图A..94所示。图中显示器采用4位共阴极数码管,并按动态显示方式接线。A/D转换结束标志采用查询法检查,启动信号由软件模拟产生,时钟信号由Proteus的DClock信号发生器产生,频率为5kHz。电位器的输出电压送到A/D转换器中转换,转换结果以十进制形式显示在数码管上。调节电位器可使数码管的显示值发生相应变化。
图A.94 实验7的电路原理图
三、实验内容:
(1)、学习使用Proteus软件,掌握原理图绘图方法;
(2)、学习使用Keil C软件,掌握C51程序编写与调试方法;
(3)、理解动态显示与A/D转换工作原理,完成单片机电压采集与显示程序的编写与调试。
四、实验步骤:
(1)、在Proteus中绘制电路原理图,按照表A.9将元件添加到编辑环境中;
(2)、在Keil中编写C51程序,并使之编译通过;
(3)、在Proteus中加载程序,观察仿真结果。
五、实验要求:
提交的实验报告中应包括电路原理图、含注释内容的源程序及实验结果分析。
表A.9 实验7的元器件清单
(1)、源程序如下:
#include <reg51.h> // 头文件
#include <absacc.h>
unsigned int tmp; //定义一个整形中间变量
sbit START=P2^5; //定义ADC0808启动位
sbit ad_busy=P2^6; //定义ADC0808转换结束标志位
sbit OE=P2^7; //定义ADC0808输出使能标志位
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}; //LED字模
void delay( unsigned int time) //延时函数
{
unsigned int j=0;
for(;time>0;time--)
}
void show () // 数码管动态显示函数
{
unsigned i,j; for(j=0;j<125;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%100;P0=led_mod[i]; delay(10); // 显示百位 P2_1=1; P2_2=0; j=tmp/10;i=j%10;P0=led_mod[i]; delay(10); // 显示十位 P2_2=1;
P2_3=0;
i=tmp%10; P0=led_mod[i]; delay(10); // 显示个位
}
void main() // 主函数
{
while(1){
START=0; P2_3=1; START=1; // 启动A/D转换 START=0;
while(ad_busy==1); //等待A/D转换结束
OE=1; // 转换结果输出 tmp=P1; // 转换结果赋给中间变量
OE=0;
} show(); // 输出转换数据 }
(2)、仿真结果:
实验结果分析:本实验是使用A/D转换器将模拟信号(电位器输出电压)转换为数字信号, A/D转换器与80C51接在一起,转换结果通过80C51以十进制形式动态显示在四个共阴极数码管上,通过改变模拟信号大小可以显示0~255之间任意数据。其中A/D转换器启动信号由软件模拟产生,时钟信号由Proteus的DClock信号发生器产生。
六、实验小结:
通过本次实验我了解了A/D转换器的工作原理和工作过程,掌握了单片机采集与显示程序的编写与调试,更加熟练了Proteus软件的使用和程序的编写,以后还要多加练习。
学生姓名:学号: 班级: 时间:
课程名称:单片机原理及应用 总学时: 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源程序,运行效果图、讨论软件延时长短对动态显示效果的影响、实验小结。
直流稳压电源设计实验报告姓名张翔班级信息26学号2120xx2146同组者毛天羽信息26刘伟鹏信息26目录一摘要1二设计要求1三原…
安徽大学电子信息工程学院实验报告1实验名称直流稳压电源的设计2实验目的1了解整流滤波及稳压电源的功能加深对直流稳压电源原理的理解2…
北京理工大学珠海学院实验报告ZHUHAICAMPAUSOFBEIJINGINSTITUTEOFTECHNOLOGY班级计科1班学号…
直流稳压电源的设计实验报告一实验目的1学会选择变压器整流二极管滤波电容及集成稳压器来设计直流稳压电源2掌握直流稳压电源的调试及主要…
实验报告姓名实验名称直流稳压电源电路仿真设计一实验目的1认识理解直流稳压电源的构成2理解分析直流稳压电源各组成模块的功能3掌握单项…
直流稳压电源的设计实验报告一实验目的1学会选择变压器整流二极管滤波电容及集成稳压器来设计直流稳压电源2掌握直流稳压电源的调试及主要…
武汉理工大学集成直流稳压源的设计课程设计任务书工作单位信息工程学院题目集成直流稳压源的设计初始条件副边电压15V功率20W的变压器…
直流稳压电源设计实验报告姓名张翔班级信息26学号2120xx2146同组者毛天羽信息26刘伟鹏信息26目录一摘要1二设计要求1三原…
电子信息工程学院电子设计大赛实验报告选题名称模拟电压表和电流表的制作选题A学院电子信息工程学院专业班级电气信息类四班成员学号江维2…
实验报告姓名实验名称直流稳压电源电路仿真设计一实验目的1认识理解直流稳压电源的构成2理解分析直流稳压电源各组成模块的功能3掌握单项…