ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:551.26KB ,
资源ID:6059007      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6059007.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ADC0832的数字电压表设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ADC0832的数字电压表设计.docx

1、ADC0832的数字电压表设计浙江海洋学院单片机课程设计报告设计题目 ADC0832的数字电压表设计 年级专业 1.引言12.方案设计 12.1设计要求12.2设计方案13.硬件设计23.1单片机最小系统23.2显示驱动部分23.3转换电路33.4单片机驱动部分34.软件设计44.1软件流程 44.2子程序模板 55实验结果与讨论55,1实验仿真 55.2结果讨论 56心得体会67附录;程序源78参考文献13 ADC0832的数字电压表设计1.引言 随着片机技术的飞速发展,现代的电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发肢和社会信息化程度的提商,人们为了寻求最好的科技,为了

2、方便人类在使用科技产品的快速性,准确性。例如数字电压表能够准确的,快速的量出电压。 利用ADC0832和AT89C52的结合再通过LCD来显示出来。ADC0832是一个8位D/A转换器。单电源供电,从+5V+15V均可正常工作。基准电压的范围为10V;电流建立时间为1S;CMOS工艺,低功耗20mW。ADC0832转换器芯片为20引脚,双列直插式封装。该转换器由输入寄存器和DAC寄存器构成两级数据输入锁存。使用时数据输入可以采用两级锁存(双锁存)形式,或单级锁存(一级锁存,一级直通)形式,或直接输入(两级直通)形式。2.方案设计2.1设计要求按系统要实现功能,设计必须达到以下的几个步骤的要求(

3、1)主电路系统是由ADC0832,单片机AT89C52和LCD显示屏组成。(2)ADC0832是模拟数字转换芯片,是将外侧电压信号转换成数字信号再通过AT89C52处理,再通过LCD显示出来(3)能测量0-5V的数字电压(4)测量误差不大于0.1V2.2设计方案 2.1.1单片机的选择 本设计选用单片机AT89C52它是一种带8K字节闪烁可编程可擦除只读存储器的低电压,足够本设计之用,高性能CMOS8位微处理器该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令系统及8052产品引脚兼容,功能强大、使用方便的AT80C52单片机适用于许多较为复杂的应用场合。 2.1

4、.2总体设计及系统原理 数字电压表的整体设计比较简单,包括单片机,ADC0832的芯片和LCD的显示电路组成。先通过ADC0832芯片将外侧电压信号转换成数字信号,再通过由AT89C52组成的电路处理转换成相应的实际电压,再通过LCD显示电路显示出来。3.1.单片机最小系统 单片机最小系统选用AT89C52,自动复位和手动复位电路可对单片机进行复位操作。3.2.显示驱动部分 本设计是选用LCD1602显示器进行显示,用来显示电压的数值。LCD1602显示器成本低,配置灵活与单片机接口简单,在单片机应用系统中广泛应用 本设计采用LCD1602,它是一种专门用来显示字母,数字和符号等的点阵型的液晶

5、模块。它由若干个57或者511等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔。LCD1602显示器与AT89C52相连。1602液晶模块内部的控制器控制指令3.3转换电路 本设计是采用ADC0832芯片,ADC0832为8位分辨率A/D转换芯片,,其最高分辨率可达256级,可以适应一般的模拟量的转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在05V之间,芯片转换时间仅为32s具有双数据输出可作为数据检控,以减少数据误差。转换速度快且稳定性强。独立的芯片使能输入,使多器件挂接和处理器控制变得更加方便。通过DI数据输入端,可以轻易的

6、实现通道功能的选择。 3.4单片机驱动部分 在本实验中选用ADC0832芯片,ADC0832芯片是美国国家半导体公司生产的一种8位分辨率,双通道A/D转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎。ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在05V之间。芯片转换时间仅为32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。 表:AD

7、C0832配置位4,软件设计4.1软件流程 在本设计实验里面单片机是对ADC0832的控制,在正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS,CLK,DO.DI。但由于DO端与DI端在通信时并未同事有效并与单片机的接口是双向的,所以电路设计将DO和DI端并联在一根数据线上使用。当ADC0832未工作时器CS输入端为高电平,此时芯片禁用CLK和DI/DO的电平可任意。当进行A/D转换时,必须将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1个时钟脉冲

8、的下沉之前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端输出下一位数据。

9、直到第11个脉冲时发出最低位数据DATAO。一个字节的数据输出完成。也正是从此位开始输出一个相反字节的数据,即从第11个字节的下沉输出DATAO。随后输出8位数据,到第19个脉冲时输出完成。也标志着一次A/D转换的结束。最后将CS置高平禁用芯片,直接将转换后的数据进行处理就可以了4.2子程序模块开 始初 始 化产生时钟信号输入通道控制读取1字节数据将值送入指定的寄存器 结 束主要控制子程序说明如下:(1)delay:延时子程序;void DelayMS(uint X)(2) void Initialize_LCD1602(),是LCD1602的功能设定。例如; LCD_Write_Comman

10、d(0x38);DelayMS(1);/功能设置,数据长度为8位,双行显示,57点阵字体 (3)void LCD_Display(uchar *str) 是lcd的显示程序。5实验结果与讨论5.1实验仿真 依据各功能模块的功能要求和工作过程画出程序的流程图,然后根据流程图和系统的硬件连接写出详细的程序,接着对各个子程序进行编译,调试,运行,看看是否能达到其功能,然后再将整个程序糅合在一起进行整体软件调试。在整体调试中,需注意寄存器组不能重复,在进入中断时,哪些寄存器内容和参数需入栈保护,以及调用子程序时各参数必须统一,在编译通过时,最好能把整个程序再单步执行一遍。单步执行时看看每步执行完后数据

11、各个特殊功能寄存器中数据的变化,这样才能确保整个程序按照系统的工作过程和功能要求执行。仿真结果。5.2讨论结果本设计以AT89C52单片机为系统的控制核心,采用proteus仿真软件进行测试。Proteus是一款比较常用的单片机仿真软件,用proteus和keil配合进行仿真提高系统运行效率与稳定性。6.心得体会通过这次设计,使我深入了解了AT89S52单片机和ADC0832(AD转换器)的结构和特点及数字电压表的工作原理,加深了对课本理论知识的理解,锻炼了实践动手能力,理论知识与实践设计相结合,培养了创新开发的思维。在此次课程设计中,收获知识的同时,我还收获了阅历。此次单片机课程设计需要运用

12、到许多之前所学过的知识,令我认识到自己以前学习的一些不足之处,例如对以前所学知识的理解不够深刻,掌握得不够牢固,运用不够灵活。这让我懂得了认真学习的重要性,以及要孜孜不倦地钻研所学过的知识,做得融会贯通,不能一览而过,不求甚解。在边学习边动手的过程中,我对电子时钟的构造以及原理有了进一步的了解,同时也加深和巩固了我对单片机语言的认识。除此之外,由于是第一次做单片机,因此在此次课程设计的过程中,无论是电路绘制还是汇编语言编写都难免遇到了不少困难和障碍,例如C语言编写出错、电路元件无从入手等。在面对困难和障碍时,我庆幸自己没有退缩和逃避,而是通过各种方法,迎难而上,以坚持、耐心和努力勇敢无畏地面对

13、困难,克服困难,解决困难。让我发现问题、分析问题、解决问题以及动手实践的能力都有了很大的提高,并了解到理论知识与实践相结合的重要意义。7.附 录A;源程序#include #include #include #define uint unsigned int#define uchar unsigned char sbit CS = P10; sbit CLK = P11; sbit DI = P12; sbit DO = P12;sbit RS = P20; sbit RW = P21;sbit E = P22; uchar Result_ADC0832=0; /转换结果变量 uchar Di

14、splay_Buffer 216 = Current Voltage:, (CH)= 0.00V ; /函数声明 uchar Get_Value_ADC0832();/ 获取指定通道的A/D转换结果 void Refesh_Disp_Buffer();/ 刷新显示缓冲 void LCD_Busy_Check(); /忙检查 void LCD_Write_Command(uchar cmd);/向LCD写入命令 void Write_LCD_Data(uchar dat); /向LCD写入数据void Initialize_LCD1602(); /液晶初始化函数 void LCD_Display

15、(uchar str);/在LCD上显示字符串 void DelayMS(uint X);/ 延时程序 uchar Read_State();/ 读取LCD的状态 /- / 主程序 /- void main() uchar j; Initialize_LCD1602();/液晶初始化函数 while(1) for(j=0;jLSB) for(i=0;i8;i+) CLK=1; _nop_(); _nop_(); CLK=0; _nop_(); _nop_(); dat1=dat1MSB) for(i=0;i8;i+) dat2=dat2|(uchar)(DO)i); CLK=1; _nop_(

16、); _nop_(); CLK=0; _nop_(); _nop_(); CS=1; DI=1; /CLK=1; return Result_ADC0832=(dat1=dat2)?dat1:0; /- / 刷新显示缓冲 /- void Refesh_Disp_Buffer() uint t=Result_ADC0832*500.0/255; / Display_Buffer17 = t/100+0; /整数位 Display_Buffer19 = t/10%10+0; /两个小数位 Display_Buffer110 = t%10+0; /- / 延时程序 /- void DelayMS(u

17、int X) uchar i; while(X-) for(i=0;i120;i+); /- / 读取LCD的状态 /- uchar Read_State() uchar state; RS = 0; RW = 1; E = 1; DelayMS(1); state=P0; E = 0; DelayMS(1); return state; /- /忙等待 /- void LCD_Busy_Check() while(Read_State()& 0x80!=0x80); DelayMS(1); /- /向LCD写入命令 /- void LCD_Write_Command(uchar cmd) L

18、CD_Busy_Check(); RS = 0; RW = 0; E = 0; P0 = cmd; E = 1; DelayMS(1); E = 0; /- /向LCD写入数据 /- void Write_LCD_Data(uchar dat) LCD_Busy_Check(); RS = 1; RW = 0; E = 0; P0 = dat; E = 1; DelayMS(1); E = 0; /- /LCD初始化 /- void Initialize_LCD1602() LCD_Write_Command(0x38);DelayMS(1);/功能设置,数据长度为8位,双行显示,57点阵字体

19、 LCD_Write_Command(0x0C);DelayMS(1);/ 显示开,关光标 LCD_Write_Command(0x06);DelayMS(1);/字符进入模式:屏幕不动,字符后移 LCD_Write_Command(0x01);DelayMS(1); /清屏 /-在LCD上显示字符串-*/ void LCD_Display(uchar *str) uchar k; for(k=0;kstrlen(str);k+) Write_LCD_Data(strk); DelayMS(2); 8.1参考文献1 吴炳胜,80C51单片机原理及应用技术.北京.冶金工业出版社个2008.2 林立,张俊亮单片机原理及应用.北京.电子工业出版社 2013 3 蓝和慧,宁武,闫晓金,单片机应用技能.北京.电子工业出版社 2009 4 王宜怀.单片机原理及其嵌入式应用教程M.北京希望电子出版社,2002. 5 蔡朝洋.单片机控制实习与专题制作.北京.北京航空航天大学出版社 20066 高禹.C语言程序设计.北京.清华大学出版社 2011

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1