DA转换实验报告Word文档下载推荐.docx
- 文档编号:3648921
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:15
- 大小:309.81KB
DA转换实验报告Word文档下载推荐.docx
《DA转换实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DA转换实验报告Word文档下载推荐.docx(15页珍藏版)》请在冰点文库上搜索。
D/A转换器将输入的数字量转换为模拟量输出,数字量是由若干数位构成的,就是把每一位上的代码按照权值转换为对应的模拟量,再把各位所对应的模拟量相加,所得到各位模拟量的和便是数字量所对应的模拟量。
2.硬件设计
2.1单片机模块
89C51单片机本身的电源电压是5v,有两种低功耗方式:
待机方式和掉电方式。
在掉电状态下,其耗电电流为3mA,在掉电方式下提供约50mA的电流。
80C51单片机是8位单片机,速度较慢,且不能在线编程。
在单片机的外部加一个振荡电路,这个电路有晶振和两个电容组成,晶振两端分别接到两个电容的一端,两个电容的另一端都要接地。
这两个电容串联的容量就是就等于负载电容,这两个电容选用33PF的。
在P0端口接一个上拉电阻,增加高电平驱动能力。
P0口输出七段码,P2.0、P2.1、P2.2、P2.3口输出位选码。
图2单片机及外部电路
2.2D/A转换模块
本次设计的D/A转换电路倒T电阻网络,当数字量从单片机输出到转换器后,经过基准电压VREF激励内部的倒T形电阻网络,其输出是模拟电流,为了将电流转换成电压信号,外接运算放大器,反馈电阻为片内电阻。
图3功能框图
一级运放得到单极性输出电压,二级运放构成反相比例加法运算电路。
图4T形电阻网络D/A转换器
由上式可见,输出的模拟量与输入的数字量(
)成正比,这就实现了从数字量到模拟量的转换。
3.软件设计
开始
系统软件流程图如下图,其中主要包含这三部分,即键盘输入、数码管显示、D\A转换、。
系统初始化
键盘输入
单片机
数码管显示
D/A转换
输出
图5流程图
键盘输入:
通过行、列确定一个数。
数码管显示:
通过P0和P2端口分别进行位选和段选。
4.仿真验证及调试
4.1调试方法
步骤:
1)键盘键入数字量;
2)键入不同值,按12键转换以后读出电压表表上的数值。
图6初始值
图7中间显示值
4.2性能测试仪器
直流电源数字万用表
4.3实验数据
表1数据表
1
2
3
4
5
6
7
8
9
10
0.00
0.50
1.00
1.55
2.00
3.00
3.50
4.00
4.50
5.00
实测
0.49
0.99
1.54
1.98
3.02
3.52
4.02
4.51
电压表显示
1.99
2.98
3.49
3.98
4.43
4.4误差分析
在实际测量测量时有误差存在,误差允许的范围是-0.02V~+0.02V。
造成误差的原因有以下几点:
1)D/A转换器中元器件参数误差;
2)基准电压不稳定;
3)运算放大器的零点漂移。
5.设计总结及体会
在收到任务时,根据要求从总体到部分来分析,最后到具体的器材使用,而且对每个组员合理分配任务。
在设计时,对每个模块设计多方案,从中择优选用。
硬件部分要注意所加电压不能过大,否则会烧毁集成块。
实际电路焊接时,线路要尽量短、直,便于以后检查。
对于每一点要焊实,不能出现虚焊、短路。
软件设计要模块化,语言要尽量简洁程序应采用模块化结构,程序代码简洁,编写程序需要不断的修改、整理、优化,以使程序具有较少的代码量,较高工作效率。
这设计让我们学到了很多知识,了解和掌握许多芯片的作用和功能。
通过小组成员的共同努力实验终于出来了,非常有成就感。
也要感谢老师的悉心指导。
附录
(一):
实物图
图1
图2
附录
(二)软件程序
#include<
reg51.h>
intrins.h>
#defineuintunsignedint
#defineucharunsignedchar
sbitw_select1=P2^0;
sbitw_select2=P2^1;
sbitw_select3=P2^2;
sbitw_select4=P2^3;
sbitcs_1=P2^7;
//unsignedlonginta=0;
ucharcodetable[10]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//ucharcodetable[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/**************************************************************
*名称:
Delay_1ms()
*功能:
延时子程序,延时时间为1ms*x
*输入:
x(延时一毫秒的个数)
*输出:
无
***************************************************************/
voidDelay_1ms(uintx)
{
uinti;
ucharj;
for(i=0;
i<
x;
i++)for(j=0;
j<
=148;
j++);
}
*名称:
Keyscan()
*功能:
P1外接4×
4按键,按照扫描法读出键值
*输出:
按键值0~15/如无键按下,返回16
ucharKeyscan(void)
uchari,j,temp,Buffer[4]={0xef,0xdf,0xbf,0x7f};
for(j=0;
4;
j++){//循环四次
P1=Buffer[j];
//在P1高四位分别输出一个低电平
temp=0x01;
//计划先判断P1.0位
for(i=0;
i++){//循环四次
if(!
(P1&
temp))//从P1低四位,截取1位
return(i+j*4);
//返回取得的按键值
temp<
<
=1;
//判断的位,左移一位
}
}
return16;
}//呵呵,实质性的语句不过8行,就是这么简练!
voidDisplay1(longa)//显示输入键值对应的十进制数
{
w_select1=0;
w_select2=0;
w_select3=0;
w_select4=0;
cs_1=1;
P0=table[a/1000]&
0x7f;
w_select4=1;
Delay_1ms(10);
w_select4=0;
P0=table[(a/100)%10];
w_select3=1;
w_select3=0;
P0=table[(a/10)%10];
w_select2=1;
w_select2=0;
P0=table[a%10];
w_select1=1;
Display(uchark)
将参数分成十位、个位分别显示
*输入:
k(键盘数值)
P0口输出七段码,P2口输出位选码
voidDisplay2(ucharh)
P2=0;
//?
?
P0=table[h/10];
P2=0x02;
Delay_1ms(5);
5ms?
P0=table[h%10];
P2=0x01;
Main()
主函数
voidMain(void)
ucharKey_Value=16,Key_Temp1,Key_Temp2;
//两次读出的键值
longTemp6,Temp7,Temp8,Temp9,Temp4=0,Temp5;
intk,j=0,i=0,count;
ucharA[4];
P3=0x00;
Temp4=P3;
P0=0xff;
while
(1){
//---------以下读入按键、消抖、等待按键释放
P1=0xff;
Key_Temp1=Keyscan();
//先读入按键
if(Key_Temp1!
=16)
{//如果有键按下
//延时一下
//Display(Key_Value);
//可用显示代替延时
Key_Temp2=Keyscan();
//再读一次按键
if(Key_Temp1==Key_Temp2)
{//必须是两次相等
Key_Value=Key_Temp1;
//才保存下来,这就是消除抖动
while(Keyscan()<
16)
Display2(Key_Value);
if((Key_Value<
10)&
&
(i<
5))//对按键次数进行计数
{A[i]=Key_Value;
i++;
count=i;
if(i==4)i=0;
switch(count)//把连续按键值转换成对应的十进制数
{case1:
{Temp5=A[0];
Display1(Temp5);
}break;
case2:
{Temp5=A[0]*10+A[1];
Delay_1ms(5);
}break;
case3:
{Temp5=A[0]*100+A[1]*10+A[2];
case4:
{Temp5=A[0]*1000+A[1]*100+A[2]*10+A[3];
Display1(Temp5);
if(Temp5>
=5001)Temp5=0;
}break;
if(Key_Value==13)//键值步进加20
{if(j==1)
{Temp6=Temp7;
else
Temp6=Temp5;
Temp6=Temp6+20;
Temp7=Temp6;
Display1(Temp7);
k=j=1;
if(Key_Value==14)//键值步进减20
{switch(j)
{case0:
Temp8=Temp5;
break;
case1:
Temp8=Temp7;
Temp8=Temp9;
Temp8=Temp8-20;
Temp9=Temp8;
Display1(Temp9);
k=j=2;
}
if(Key_Value==12)//DA转换控制键
{
switch(k)
{case0:
Temp4=Temp5*0.0512;
Temp4=Temp7*0.0512;
Temp5=Temp7;
Temp4=Temp9*0.0512;
Temp5=Temp9;
k=0;
cs_1=0;
P3=Temp4;
}
}
if(Key_Value==13)Display1(Temp7);
elseif(Key_Value==14)Display1(Temp9);
elseDisplay1(Temp5);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DA 转换 实验 报告