ADC0832的数字电压表设计说明.docx
- 文档编号:27624269
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:19
- 大小:122.10KB
ADC0832的数字电压表设计说明.docx
《ADC0832的数字电压表设计说明.docx》由会员分享,可在线阅读,更多相关《ADC0832的数字电压表设计说明.docx(19页珍藏版)》请在冰豆网上搜索。
ADC0832的数字电压表设计说明
1.引言1
2.方案设计1
2.1设计要求1
2.2设计方案1
3.硬件设计2
3.1单片机最小系统2
3.2显示驱动部分2
3.3转换电路3
3.4单片机驱动部分3
4.软件设计4
4.1软件流程4
4.2子程序模板5
5实验结果与讨论5
5.1实验仿真5
5.2结果讨论5
6心得体会6
7参考文献13
8附录
8.1程序7
8.2原理图7
1.引言
随着片机技术的飞速发展,,现代的电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发肢和社会信息化程度的提商,人们为了寻求最好的
科技,为了方便人类在使用科技产品的快速性,准确性。
例如数字电压表能够准确的,快速的量出电压。
利用ADC0832和AT89C52的结合再通过LCD来显示出来。
ADC0832是一个8位D/A转换器。
单电源供电,从+5V〜+15V均可正常工作。
基准电压的围为土10V;电流建立时间为1卩S;CMOS:
艺,低功耗20mWADC0832转换器芯片为20引脚,双列直插式封装。
该转换器由输入寄存器和DAC寄存器
构成两级数据输入锁存。
使用时数据输入可以采用两级锁存(双锁存)形式,或单级锁存(一级锁存,一级直通)形式,或直接输入(两级直通)形式。
2.方案设计
2.1设计要求
按系统要实现功能,设计必须达到以下的几个步骤的要求
(1)主电路系统是由ADC0832单片机AT89C52和LCD显示屏组成。
(2)ADC083是模拟数字转换芯片,是将外侧电压信号转换成数字信号
再通过AT89C52处理,再通过LCD显示出来
(3)能测量0-5V的数字电压
(4)测量误差不大于0.1V
2.2设计方案
2.1.1单片机的选择
本设计选用单片机AT89C52它是一种带8K字节闪烁可编程可擦除只读存储器的低电压,足够本设计之用,高性能CMOS位微处理器该器件采用ATME高密度非易失存储器制造技术制造,与工业标准的MCS-51指令系统及8052产品引脚兼容,功能强大、使用方便的AT80C52单片机适用于许多较为复杂的应用场合。
2.1.2总体设计及系统原理
数字电压表的整体设计比较简单,包括单片机,ADC0832的芯片和LCD的显示电路组成。
先通过ADC0832芯片将外侧电压信号转换成数字信号,再通过由AT89C52组成的电路处理转换成相应的实际电压,再通过LCD显示电路显示出来。
3.1.单片机最小系统
单片机最小系统选用AT89C52自动复位和手动复位电路可对单片机进行复位操作。
3.2.显示驱动部分
本设计是选用LCD1602显示器进行显示,用来显示电压的数值。
LCD1602显示
器成本低,配置灵活与单片机接口简单,在单片机应用系统中广泛应用
本设计采用LCD1602它是一种专门用来显示字母,数字和符号等的点阵型的液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔。
LCD1602
显示器与AT89C52相连。
於會岀2acommr-
>>>吃比山QDQOQQQQ
dT
■>J卜‘■
T)Ol\—L
LT—p—
・’■
1602液晶模块部的控制器控制指令
字号忖令
R/W
D7
D6
氐
D4
D3
D2
D1
DO
1渚显示
0
3
0
0
0
C
0
0
0
1
2忆标确
0
0
0
0
0
0
0
1
*
3置输入嘆式
0
0
0
0
0
C
0
1
ID
S
4憧示开,关控制
0
0
0
0
0
C
1
D
C
B
[5也标或字符移位n
0
0
0
0
0
1
s^c
R1
井
「6晉功能
0
0_
Io
0
1
DL一
F
PT置字符发主存贮器地还〕
0
0
0
1
宇符发生存贮器地址
8置数握存贮器地址
0
0
1
显示数振存芒器地址
9眉忙标志或地址
0
1
EF
L数器地址
10写竝到SHAM或JDRA忙
11
0
要写的数据內容
〕11从CGRAM或DDRM读数
1
1
读出的数据内容n
3.3转换电路
本设计是采用ADC08325片,ADC0832为8位分辨率A/D转换芯片,,其最高分辨率可达256级,可以适应一般的模拟量的转换要求。
其部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间,芯片转换时间仅为32卩s具有双数据输出可作为数据检控,以减少数据误差。
转换速度快且稳定性强。
独立的芯片使能输入,使多器件挂接和处理器控制变得更加方便。
通过DI数据输入
端,可以轻易的实现通道功能的选择。
C3
3.4单片机驱动部分
在本实验中选用ADC0832芯片,ADC0832芯片是美国国家半导体公司生产的
一种8位分辨率,双通道A/D转换芯片。
由于它体积小,兼容性,性价比高而深
受单片机爱好者及企业欢迎。
ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。
其部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。
芯片转换时间仅为32卩S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。
独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。
通过DI数据输入端,可
以轻易的实现通道功能的选择。
ADCOQTiming
iIt?
iiiiiiifunittjiihn
tWCC:
n
I
hr»T呻
)I»*1tI1I14$t7
Mnsmiu—
DI*
表:
ADC0832配置位
输入形式
配置位
选择通道
CH0
CH1
CH0
C1I1
差分输入:
0
0
'"Mr
0
1
-
+
单端输入
1
0
+
1
1
———
+
4,软件设计
4.1软件流程
START
选碗C083溯转换逋道
设畳定时甜,捏供时钟信号
启动矗/D转换
辆出转换结卑
敕值转換
显示
在本设计实验里面单片机是对ADC0832勺控制,在正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS,CLK,DO.D。
但由于DO端与DI端在通信时并未同事有效并与单片机的接口是双向的,,所以电路设计将DO和DI端并联在一根数据线上使用。
当ADC0832未工作时器CS输入端为高电平,此时芯片禁用CLK和DI/DO的电平可任意。
当进行A/D转换时,必须将CS使能端置于低电平并且保持低电平直到转换完全结束。
此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟冲,DO/DI端则使用DI端输入通道功能选择的数据信号。
在第1个时钟脉冲的下沉之前DI端必须是高压平,表示启始信号。
在第2、3个脉冲下沉之前DI端输入2用于选择通道功能。
当此2位数据位“1”
“0”时,只对CHO进行单通道转换。
当2位数据为“1”、“”时,只对CH1进行单通道转换。
当2位数据位“0”、“0”时,将CHO乍为正输入端IN+,CH1作为负输入端IN—进行输入。
当2位数据位“0”、“1”时,将CHO乍为负输入端IN-,CH1作为正输入端IN+进行输入。
到第3个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。
从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7随后每一个脉冲下沉DO端输出下一位数据。
直到第11个脉冲时发出最低位数据DATAO一个字节的数据输出完成。
也正是从此位开始输出一个相反字节的数据,即从第11个字节的下沉输出DATAO随后输出8位数据,到第19个脉冲时输出完成。
也标志着一次A/D转换的结束。
最后将CS置高平禁用芯片,直接将转换后的数据进行处理就可以了
4.2子程序模块
主要控制子程序说明如下:
(1)delay:
延时子程序;voiddelay(uintz)
(2)voidLCD」nit(),是LCD1602的功能设定。
例如;LCD_write_cmd(0x38);delay
(1);〃功能设置,数据长度为8位,双行
显示,5X7点阵字体。
(3)voidLCD_display(ucharadd,uchars[])是lcd的显示程序。
5实验结果与讨论
5.1实验仿真
依据各功能模块的功能要求和工作过程画出程序的流程图,然后根据流程图和
系统的硬件连接写出详细的程序,接着对各个子程序进行编译,调试,运行,看看是否能达到其功能,然后再将整个程序糅合在一起进行整体软件调试。
在整体调试中,需注意寄存器组不能重复,在进入中断时,哪些寄存器容和参数需入栈保护,以及调用子程序时各参数必须统一,在编译通过时,最好能把整个程序再单步执行一遍。
单步执行时看看每步执行完后数据各个特殊功能寄存器中数据的变化,这样才能确保整个程序按照系统的工作过程和功能要求执行。
仿真结果。
5.2讨论结果
本设计以AT89C52单片机为系统的控制核心,采用proteus仿真软件进行测试。
Proteus是一款比较常用的单片机仿真软件,用proteus和keil配合进行仿真提高系统运行效率与稳定性。
6.心得体会
通过这次设计,使我深入了解了AT89S52单片机和ADC0832(A\D转换器)的结构和特点及数字电压表的工作原理,加深了对课本理论知识的理解,锻炼了
实践动手能力,理论知识与实践设计相结合,培养了创新开发的思维。
在此次课程设计中,收获知识的同时,我还收获了阅历。
此次单片机课程设计需要运用到许多之前所学过的知识,令我认识到自己以前学习的一些不足之处,例如对以前
所学知识的理解不够深刻,掌握得不够牢固,运用不够灵活。
这让我懂得了认真学习的重要性,以及要孜孜不倦地钻研所学过的知识,做得融会贯通,不能一览
而过,不求甚解。
在边学习边动手的过程中,我对电子时钟的构造以及原理有了进一步的了解,同时也加深和巩固了我对单片机语言的认识。
除此之外,由于是
第一次做单片机,因此在此次课程设计的过程中,无论是电路绘制还是汇编语言编写都难免遇到了不少困难和障碍,例如C语言编写出错、电路元件无从入手等。
在面对困难和障碍时,我庆幸自己没有退缩和逃避,而是通过各种方法,迎难而上,以坚持、耐心和努力勇敢无畏地面对困难,克服困难,解决困难。
让我发现问题、分析问题、解决问题以及动手实践的能力都有了很大的提高,并了解到理
论知识与实践相结合的重要意义。
7.1参考文献
[1]吴炳胜,80C51单片机原理及应用技术.北京.冶金工业个2008.
[2]林立,俊亮单片机原理及应用.北京.电子工业2013
[3]蓝和慧,宁武,闫晓金,单片机应用技能.北京.电子工业2009
[4]王宜怀.单片机原理及其嵌入式应用教程[M].北京希望电子,2002.
⑸蔡朝洋.单片机控制实习与专题制作.北京.北京航空航天大学2006
⑹高禹.C语言程序设计.北京.清华大学2011
8•附录1:
程序
1.)文件ADC0832.h
#ifndef_ADC0832_H_
#define_ADC0832_H_
ucharADC_read_data(ucharch)
{
uchari,dat0=0,dat1=0;
cs=0;
clk=0;
dio=1;
delay_us();
clk=1;
delay_us();//第一次下降沿之前DIO置高,起始信号
clk=0;
dio=1;
delay_us();
clk=1;//第二次下降沿输入dio=1
delay_us();
clk=0;
dio=ch;//第三个下降沿,设DIO=0;
clk=1;
delay_us();
MSB->LSB
(LSB->MSB
clk=0;
dio=1;//第四个下降沿之前,设DI0=1
delay_us();
for(i=0;i<8;i++)〃第4~11共8个下降沿读数据(
{
clk=1;
delay_us();
clk=0;
delay_us();
dat0=dat0<<1|dio;
}
for(i=0;i<8;i++)//第11~18共8个下降沿读数据
{
dat1=dat1|((uchar)(dio)<
clk=1;
delay_us();
clk=0;
cs=1;//判断dato与datl是否相等
return(datO==dat1)?
datO:
O;
}
voidADC_change(ucharch)
{
dat=ADC_read_data(ch)*500.0/255;//dat变量要全局变量,重要
LCD_buffer[ch][8]=dat/100+'0';
LCD_buffer[ch][10]=dat/10%10+'0';
LCD_buffer[ch][11]=dat%10+'0';
}
#endif
2.)文件LCD1602.h
#ifndef_LCD1602_H_
#define_LCD1602_H_
ucharLCD_check_busy()
{
ucharstate;
rs=0;
rw=1;
en=1;
state=PO;
delay
(2);
en=O;
delay
(2);
returnstate;
}
voidLCD_write_cmd(ucharcmd)
{
while((LCD_check_busy()&0x80)==0x80);
rs=0;
rw=0;
delay
(2);
en=1;
P0=cmd;
delay
(2);
en=0;
delay
(2);
}
voidLCD_write_data(uchardat)
while((LCD_check_busy()&0x80)==0x80);
rs=1;
rw=0;
delay
(2);
en=1;
P0=dat;
delay
(2);
en=0;
delay
(2);
}
voidLCD_display(ucharadd,uchars[])
{
uchari;
LCD_write_cmd(0x80+add);
for(i=0;i<16;i++)
LCD_write_data(s[i]);
}
voidLCD」nit()
{
LCD_write_cmd(0x38);
LCD_write_cmd(OxOc);
delay
(1);
LCD_write_cmd(0x06);
delay
(1);
LCD_write_cmd(OxO1);
delay
(1);
}
#endif
3.)文件define.h
#ifndef_DEFINE_H_
#define_DEFINE_H_
#defineucharunsignedchar
#defineuintunsignedint
sbitcs=P3A0;
控制端口定义
sbitclk=P3A1;//
sbitdio=P3A2;
sbitrs=P2A。
;
sbitrw=P2A1;
sbiten=卩2八2;
uintj,add,dat;
ucharLCD_buffer[][16]=
{"CH1=.V"},{"CH2=.V"}};
#endif
4.)文件delay.h
#ifndef_DELAY_H_
#define_DELAY_H_voiddelay(uintz)
{
uintx,y;for(y=z;y>0;y--)for(x=10;x>0;x--);
}
voiddelay_us()
匕nop_();_nop_();}
#include
#include
#include"define.h"
#include"delay.h"
#include"LCD1602.h"
#include"ADC0832.h"
5.)主函数
voidmain()
{
LCD_init();
while
(1)
{
for(j=0;j<2;j++)
{if(j==0)
add=0x00;
else
add=0x40;
ADC_change(j);
LCD_buffer[j][8]=dat/100+'0';
LCD_buffer[j][10]=dat/10%10+'0';
LCD_buffer[j][11]=dat%10+'0';
LCD_display(add,LCD_buffer[j]);delay
(1);
}
}
}
A
2B
10
尺2
T
PSEN
ALtEA
29
_J14
i5
-JI
XTAL2
RSI
FC,O/Aro
PO-1/AP1
IPOJ2/AC2
PC.3/ALG
PC.4/AM
POSMP6PC0/AKPC7MD7
FS.C/X)
F2.VWFZ.ZWOP2.3/3l11Pk.4/Al2P2.5/A13
P2JB/A14
P2J/R15
U2
RF'1
U=TE
Z
4~
P1DJT2
P1.1JT2E>l
P2
P13
Fl-耳
F1£
FlJ
P1.7
FGQ/FXOP3.1/WP33i!
l»^F33mii
F3.ff/TllFa.bmTP371FD
vc亡
CLK
cuo
DI
CM1
DO
ONO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ADC0832 数字 电压表 设计 说明