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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于PCF8591数字电压表设计.docx

1、基于PCF8591数字电压表设计 课程设计报告题 目: 学生姓名: 学生学号: 系 别: 专 业: 指导教师: 电气信息工程学院制2013年6月第1章 课程设计的总体方案1.1 课程设计的目的1.了解A/D芯片PCF8591转换性能及其编程方法。2.掌握A/D转换器与单片机的接口方法3.学会使用A/D转换器进行电压信号采集1.2课程设计的要求1.利用A/D芯片PCF8591及1602液晶显示屏组成。2采用4路模拟量输入。3.尽量使用较少的元器件。 1.3课程设计的思路1.根据设计要求,选择AT89C51单片机为核心控制器件。2.A/D转换采用PCF8591实现,利用PCF8591将模拟电压转换

2、为数字量。3.经单片机将数字量转换成对应电压值,电压显示采用4位一体的LED数码管。1.4 课程设计的方案硬件电路设计由6个部分组成; A/D转换电路,AT89C51单片机系统,LCD显示系统、时钟电路、复位电路以及测量电压输入电路。硬件电路设计框图如图1所示。 图1 数字电压表系统硬件设计框图第2章 系统方案硬件设计2.1 系统方案的提出 根据4路模拟量输入设计的需要,为单片机和A/D转换器提供以下设计方案。2.1.1 单片机方案 AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k字节Flash可擦写存储器(PEROM)。AT89C51器件采用ATMEL公司的高密度、非易失性

3、存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,AT89C51的片内Flash允许程序存储器通过传统编程器反复编程。由于芯片内集成了通用8位中央处理器和Flash存储单元,功能强大的微处理器ATMEL AT89C51可为许多嵌入式控制应用系统提供高度灵活、高性价比的解决方案。AT89C51具有如下特点:4k Bytes Flash存储器、128 bytes的RAM以及32个I/O口、2个16位定时/计数器,5个中断优先级2层中断嵌套中断、1个全双工串行通信口、片内时钟振荡器。 AT89C51芯片,如图所示,各引脚功能如下:VCC:供电电压。 GND:接地。 P0口:为一个8位漏

4、级开路双向I/O口,每脚可吸收8TTL门电流。P1口:是个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。 图3-1 AT89C51设计 P2口:为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高。 P3口:管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。P3口也可作为AT89C51的一些特殊功能口,如所示: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输

5、入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

6、XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。2.1.2 A/D转换器方案 PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。PCF8591的最大转化速率由IC总线的最大速率决定。1、主要技术指标和特性单独供电; PCF8591的操作电压范围2.5V-6V ;低待机电流 通过I2C总线串行输入/输出;PCF8591通过3个硬件地址引脚寻址 PCF8591的采样率由I2C总线速率决定; 4个模拟输入可编程为单端型或差分输入频道选择自动增量;PCF8591的模拟电压范围从Vss到VDD; PCF8591内置跟

7、踪保持电路;8-bit逐次逼近A/D转换器;通过1路模拟输出实现DAC增益 PCF8591引脚图2.1.3 时钟电路 AT89S51的时钟电路如图所示,在单片机的XTAL1和XTAL2两个管脚接一个晶振及两个电容构成了时钟电路电路中电容C1和C2对振荡频率有微调作用,在设计时取30uF。晶振为11.0592MHz,故选择12MHz即可。 图2-2 时钟电路 图2-3 复位电路2.1.4复位电路 AT89S51的复位电路如图所示。当单片机一上电,立即复位;另外,如果在运行中,外界干扰等因素使单片机的程序陷入死循环状态,就可以通过按键手动使其复位。复位也是使单片机退出低功耗工作方式而进入正常状态的

8、一种操作。电容C3和电阻R10实现上电自动复位。增加按键开关S1和电阻R9又可实现按键手动复位功能。R9的作用是在S1按下的时候,防止电容C3放电电流过大烧坏开关S1的触点。2.1.5 显示电路LED硬件设计 LED数码管由8个发光二极管组成,其中7个按“8”型排列,另一个发光二极管为圆点形状,位于右下角,常用于显示小数点。 共阳极LED电路连接如图2-4所示,8支发光二极管的阳极共同接到电源上,所以叫共阳极LED,在每个发光二极管的阳极接的电阻将起到保护作用。在输入管脚接低电平时,对应的发光二极管将会发光。和共阴极LED一样,适当编码后,8支发光二极管组合起来就可以显示数据了。 2-4共阳极

9、接法原理图 动态显示来完成该显示电路的硬件设计。 图2-5显示电路设计2.1.6总体设计电路图:见Protel图第3章 系统软件设计3.1.1程序设计总方案 根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图12所示。图3-1 数字式直流电压表主程序框图3.1.2系统子程序设计 初始化程序所谓初始化,是对将要用到的MCS_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等3.1.3 A/D转换子程序A/D转换子程序用来控制对输入的模块电压信号的采

10、集测量,并将对应的数值存入相应的内存单元,其转换流程图如图3-2所示。图3-2 A/D转换流程图3.1.4 显示子程序显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70HZ左右时,能够产生比较好的显示效果,一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms10。在本设计中,为了简化硬件设计,主要采用软件定时的方式,即用定时器0溢出中断功能实现11s定时,通过软件延时程序来实现5ms的延时。第四章电路原理图和PCB板的设计第5章 实习总结 经过两周的单片机课程

11、设计,我有了很多的体会和感想。通过本次对简易电压表的设计,我们对单片机这门课程有了更进一步的了解。无论是在其硬件连接方面还是在软件编程方面,都取得了新的收获。本次课程设计采用了AT89C51单片机芯片,与以往我们我们所熟悉的C51芯片有许多不同之处,通过本次实验及查阅相关资料,我们对其之间的区别有了一定的认识,在本课题设计报告的硬件介绍部分也对其作了详细的论述。S51在C51的基础上增加了许多新的功能,使其功能更为完善,应用领域也更为广泛。另外,在对单片机编程方面,我们又掌握了一些新的编程思想,使得程序更为简练、易懂,而且更为严谨,程序执行的稳定性得到了提高。 设计中我们还用到了模/数转换芯片

12、PCF8591,以前在学单片机这门课程时只是对其理论知识有了初步的了解。通过本次实验,我们对它的工作原理彻底理解了,对其启动设置、转换结束判断以及输出控制等都基本掌握。电路连接方面,我们对其与单片机的连接也有了更为直观的认识,通过实验的摸索以及必要的理论知识,我们准确的实现了它于单片机的互连。设计过程中,我遇到过许多次失败的考验,比如,自己对单片机编程时遇到了很多阻碍,想要放弃,然而,就在要放弃的那一刻,我明白了,原来结果并不那么重要,我们更应该注重的是这一整个过程。于是,我坚持了下来。我非常感激实习老师对我的的指导和帮助,没有老师的指导,我只能晕头转向的瞎忙。 通过这次设计,这也对我们今后的

13、工作敲响了警钟:要认真的看待每个需要处理的问题,不要认为事情过于简单,不能急于求成,但不要放弃。要保持头脑清醒。单片机是很重要的一门课程,老师和一些工作的朋友都曾说过,如果学好一门单片机,就凭这个技术这门手艺找一个好工作也不成问题。尽管我们在课堂学到的内容很有限,但在以后的学习中单片机还需要好好的深入研究和学习。最后感谢老师对我的精心指导和帮助,感谢同学们对我的帮助。参考文献1. 魏立峰 王宝兴.单片机原理及应用技术.北京:北京大学出版社, 2006 .2. 张毅刚. MCS-51单片机应用与设计.哈尔滨:哈尔滨工业大学出版社,2003 .3. 马忠梅 单片机的C语言应用程序设计.北京:北京航

14、空航天大学出版社2003 4.PCF8591使用说明书 程序: ORG 0000H LJMP START ORG 0003H RETI ORG 000BH RETI ORG 0013H RETI ORG 001BH RETI ORG 0023H RETI ORG 002BH RETI* 初始化程序中的各变量 *CLEARMEMIO: CLR A MOV P2,A MOV R0,#70H MOV R2,#0DHLOOPMEM: MOV R0,A INC R0 DJNZ R2,LOOPMEM MOV 20H,#00H MOV A,#0FFH MOV P0,A MOV P1,A MOV P3,A R

15、ET* 主 程 序 *START: LCALL CLEARMEMIO ;初始化MAIN: LCALL TEST ;测量一次 LCALL DISPLAY ;显示数据一次 AJMP MAIN NOP ;PC值出错处理 NOP NOP LJMP START* 显 示 控 制 程 序 *DISPLAY: JB 00H,DISP11 ; MOV R3,#08H ;8路信号循环显示控制 MOV R0,#70H ;显示数据初址70H77H MOV 7BH,#00H ;显示通道路数初值DISLOOP1: LCALL TUNBCD ;显示数据转为三位BCD码存入7AH、79H、78H MOV R2,#0FFH

16、;每路显示时间控制 4MS*255DISLOOP2: LCALL DISP ;调四位显示程序 LCALL KEYWORK1 ; DJNZ R2,DISLOOP2 ; INC R0 ;显示下一路 INC 7BH ;通道显示数加一 DJNZ R3,DISLOOP1 RETDISP11: MOV A,7BH ;单路显示控制子程序 SUBB A,#01H ; MOV 7BH,A ; ADD A,#70H ; MOV R0,A ;DISLOOP11: LCALL TUNBCD ;显示数据转为三位BCD码存入7AH、79H、78H(最大5.00v) MOV R2,#0FFH ;每路显示时间控制 4MS*2

17、5DISLOOP22: LCALL DISP ;调四位显示程序 LCALL KEYWORK2 ;按键检测 DJNZ R2,DISLOOP22 INC 7BH ;通道显示数加一 RET* 显示数据转为三位BCD码程序 *显示数据转为三位BCD码存入7AH、79H、78H(最大值5.00v);TUNBCD: MOV A,R0 ;255/51=5.00V运算 MOV B,#51 ; DIV AB ; MOV 7AH,A ;个位数放入7AH MOV A,B ;余数大于19H,F0为1,乘法溢出,结果加5 CLR F0 SUBB A,#1AH MOV F0,C MOV A,#10 ; MUL AB ;

18、MOV B,#51 ; DIV AB JB F0,LOOP2 ; ADD A,#5LOOP2: MOV 79H,A ;小数后第一位放入79H MOV A,B CLR F0 SUBB A,#1AH MOV F0,C MOV A,#10 ; MUL AB ; MOV B,#51 ; DIV AB JB F0,LOOP3 ; ADD A,#5LOOP3: MOV 78H,A ;小数后第二位放入78H RET* 显 示 子 程 序 *共阳显示子程序,显示内容在78H-7BH;DISP: MOV R1,#78H ;共阳显示子程序,显示内容在78H-7BH MOV R5,#0FEH ;数据在P1输出,列扫

19、描在P3.0-P3.3PLAY: MOV P1,#0FFH MOV A,R5 ANL P3,A MOV A,R1 MOV DPTR,#TAB MOVC A,A+DPTR MOV P1,A JB P3.2,PLAY1 ;小数点处理 CLR P1.7 ;小数点显示(显示格式为XX.XX)PLAY1: LCALL DL1MS INC R1 MOV A,P3 JNB ACC.3,ENDOUT RL A MOV R5,A MOV P3,#0FFH AJMP PLAYENDOUT: MOV P3,#0FFH MOV P1,#0FFH RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,9

20、2H,82H,0F8H,80H,90H,0FFH ;断码表* 延时程序 *DL10MS: MOV R6,#0D0H ;10MS延时子程序DL1: MOV R7,#19HDL2: DJNZ R7,DL2 DJNZ R6,DL1 RETDL1MS: MOV R4,#0FFH ;(513+513)ms=1MSLOOP11: DJNZ R4,LOOP11 MOV R4,#0FFHLOOP22: DJNZ R4,LOOP22 RET* 电压测量(A/D)子程序 *一次测量数据8个,依次放入70H-77H单元中;TEST: CLR A ;模数转换子程序 MOV P2,A MOV R0,#70H ;转换值存

21、放首址 MOV R7,#08H ;转换8次控制 LCALL TESTART ;启动测试WAIT: JB P3.7,MOVD ;等A/D转换结束信号 AJMP WAITTESTART: SETB P2.3 ;测试启动 NOP NOP CLR P2.3 SETB P2.4 NOP NOP CLR P2.4 NOP NOP NOP NOP RETMOVD: SETB P2.5 ;取A/D转换数据 MOV A,P0 MOV R0,A CLR P2.5 INC R0 MOV A,P2 ;通道地址加1 INC A MOV P2,A CJNE A,#08H,TESTEND ;等8路A/D转换结束TESTEN

22、D: JC TESTCON CLR A ;结束恢复端口 MOV P2,A MOV A,#0FFH MOV P0,A MOV P1,A MOV P3,A RETTESTCON: LCALL TESTART LJMP WAIT* 按键检测子程序 *KEYWORK1: JNB P3.5,KEY1KEYOUT: RETKEY1: LCALL DISP ;延时消抖 JB P3.5,KEYOUTWAIT11: JNB P3.5,WAIT12 CPL 00H MOV R2,#01H MOV R3,#01H RETWAIT12: LCALL DISP ;键释放等待时显示用 AJMP WAIT11KEYWORK2: JNB P3.5,KEY1 JNB P3.6,KEY2 RETKEY2: LCALL DISP ;延时消抖用 JB P3.6,KEYOUTWAIT22: JNB P3.6,WAIT21 INC 7BH MOV A,7BH CJNE A,#08H,KEYOUT11KEYOUT11: JC KEYOUT1 MOV 7BH,#00HKEYOUT1: RETWAIT21: LCALL DISP ;键释放等待时显示用 AJMP WAIT22END

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

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