单片机实验7讲课教案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实验7
实验七直流数字电压表设计
姓名:田坤学号:200912512 专业:电子信息科学与技术
1.实验目的:
掌握LED动态显示和A/D 转换接口设计方法。
2.实验原理:
实验电路原理图如图A..94所示。图中显示器采用4位共阴极数码管,并按动态显示方式接线。A/D转换结束标志采用查询法检查,启动信号由软件模拟产生,时钟信号由Proteus的DClock信号发生器产生,频率为5kHz。电位器的输出电压送到A/D转换器中转换,转换结果以十进制形式显示在数码管上。调节电位器可使数码管的显示值发生相应变化。
图A.94 实验7的电路原理图
3.实验内容:
(1)、学习使用Proteus软件,掌握原理图绘图方法;
(2)、学习使用Keil C软件,掌握C51程序编写与调试方法;
(3)、理解动态显示与A/D转换工作原理,完成单片机电压采集与显示程序的编写与调试。
4.实验步骤:
(1)、在Proteus中绘制电路原理图,按照表A.9将元件添加到编辑环境中;
(2)、在Keil中编写C51程序,并使之编译通过;(3)、在Proteus中加载程序,观察仿真结果。
5.实验要求:
提交的实验报告中应包括电路原理图、含注释内容的源程序及实验结果分析。
表A.9 实验7的元器件清单
1)源程序如下:
#include
#include
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--)
for(j=0;j<125;j++) ;
}
void show () // 数码管动态显示函数
{
unsigned 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%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); // 显示个位
P2_3=1;
}
void main() // 主函数
{
while(1){
START=0;
START=1; // 启动A/D转换
START=0;
while(ad_busy==1); //等待A/D转换结束OE=1; // 转换结果输出
tmp=P1; // 转换结果赋给中间变量
OE=0;
show(); // 输出转换数据
}
}
2)仿真结果:
3)实验结果分析:
本实验是使用A/D转换器将模拟信号(电位器输出电压)转换为数字信号, A/D转换器与80C51接在一起,转换结果通过80C51以十进制形式动态显示在四个共阴极数码管上,通过改变模拟信号大小可以显示0~255之间任意数据。其中A/D转换器启动信号由软件模拟产生,时钟信号由Proteus 的DClock信号发生器产生。
6.实验小结:
这次实验掌握了数码管动态显示程序的编写,熟练了Proteus软件的使用