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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

ADC0809单通道模拟电压采集电路.docx

1、ADC0809单通道模拟电压采集电路微型计算机技术课程设计指导教师: 程世旭 刘元超 学生班级: 计科10606班 学生姓名: 古 莹 学 号: 6 班内序号: 4 课设日期:2009年9月14日2009年9月27日一设计目的二实验平台和所用器材三设计内容四设计原理五程序流程图六调试分析七原理图设计八程序清单九收获、体会和建议一 设计目的1.通过本设计,使学生综合运用微型计算机技术、汇编语言程序设计以及电子技术等课程的内容,为以后从事计算机检测与控制工作奠定一定的基础。2.主要掌握并行I/O接口芯片8253、8255A、ADC0809及中断控制芯片8259A等可编程器件的使用,掌握译码器74L

2、S138的使用。3.学会用汇编语言编写一个较完整的实用程序。4.掌握微型计算机技术应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等步骤。二 实验平台和所用器材 本实验是在windows XP操作系统上实现的,程序的开发环境是用实验室的课设平台,所用到的器材如下:1一块实验面包版(内含时钟电路)。2可编程芯片8253、8255A 、ADC0809和译码器芯片74LS138、74LS245各一片。3可调电位器4.7K一个、发光二极管8个、74LS06芯片2个。4导线若干。5示波器、万用表、常用工具等。三 设计内容 采用ADC0809设计一个单通道模拟电压采集电路,要

3、求对所接通道的变化的模拟电压值进行采集,采集来的数字量一路送至发光二极管指示,一路送至计算机显示到屏幕上,每行显示5个数据,采集完100个数据后停止采集过程,采集过程中按下ESC键也可中断采集过程。 首先要求我们定义出选择菜单,给出显示界面。1. 8255的自检测这部分要求我们初始化8255,为了能够正确的看出8255已经初始化,当8255初始化后向B口送数据0FH到发光二管上显示,如果能够正确显示就说明8255已经被初始化。并且可以说明74LS245,8255,74LS06能够正常工作,并且他们的连线都正确。1.8253的自检测这部分要求我们初始化8253,8253初始化后可以通过示波器观察

4、输出的波形是否满足要求。3. 进行A/D转换这部分是本次课设的关键部分,在做此之前,必须保证8255和8253都被正确的初始化,通过8255的C口控制ADC0809对模拟数据的采集,然后从A口读取转换后的数据,一路送发光二极管显示,一路送显示器上显示,模拟量由电位器得到。2.退出系统如果用户需要结束程序,从菜单上选择此菜单即可退出程序.四 设计原理1、使用Protues或Protel设计出正确电路原理图,设计原理如下:,一端接地,调节电位器得到变化的模拟电压,该电压接至ADC0809的某一通道输入端(如IN0),ADC0809的时钟为500KHz,由8253对面包板上时钟1MHz或2MHz分频

5、后得到,8253的端口地址:300H303H。b.编程启动ADC0809转换(ADC0809完成一次转换的时间大约为120s),将ADC0809的EOC引脚信号作为中断信号,若转换结束则进入中断服务程序。在中断服务程序中读入模数转换结果,一路送至发光二极管显示,一路送至计算机显示到屏幕上。c.8255A用做CPU和ADC0809间的接口芯片,ADC0809的控制信号(如OE、ALE、START等)可由8255A的PC口提供,模数转换后的数字量可经8255A的PA口读入,经8255A的PB口输出到发光二极管。8255A端口地址:304H307H。d.译码电路由74LS138提供。74LS245用

6、于总线和8255A之间的数据的双向传输和隔离。MFPT PCI总线驱动板逻辑结构如图所示芯片简介(1)74LS245的功能表74LS245数据总路线缓冲器74LS245的功能表 (2)ADC0809简介引脚信号提供一个8通道的多路开关和寻址逻辑IN0IN7:8个模拟电压输入端ADDA、ADDB、ADDC:3个地址输入线ALE:地址锁存允许信号ALE的上升沿用于锁存3个地址输入的状态,然后由译码器从8个模拟输入中选择一个模拟输入端进行A/D转换。ADC0809的外部特性ADC0809的数字输出ADC0809内部锁存转换后的数字量具有三态数字量输出端D0D7配合输出允许信号OE当输出允许信号OE为

7、高电平有效时,将三态锁存缓冲器的数字量从D0D7输出注:其它的芯片查阅微型计算机技术的书。(3)8255A与ADC0809的连接(4)8253定时/计数器对8253进行编程,定时100ms后,产生中断,该定时信号(OUT0)送入到系统预留给用户的IRQ2(或IRQ10)引脚产生中断,在中断服务子程序中,启动一次ADC0809模数转换,ADC0809采用查询方式工作。IRQ10中断向量号为72H8253的时钟(CLK0)取自MFID实验平台。2、编写程序初始化8255和8253(1)初始化8255:8255有四个寄存器,地址为300h-303h,分别为A口,B口,C口,和控制口,首先要向C口写入

8、控制字,控制字格式如下:工作方式控制D7 D6 D5 D4 D3 D2 D1 D0特征位1A组方式选择端口A输入/输出C口高四位输入/输出B组方式选择端口B输入/输出端口C低四位输入/输出C端口置位/复位控制D7 D6 D5 D4 D3 D2 D1 D0特征位0任意位选择置位/复位 0为复位,1为置位可用如下代码初始化8255:MOV DX,307H ;给8055控制口,初始化8255 MOV AL,98H ;AL=1001 0000 ,写8255控制字,A口输入,B口输出,C口高/低四位输出 OUT DX,AL(2)初始化82538253控制字格式如下:D7 D6 D5 D4 D3 D2 D

9、1 D0计数器选择读写格式工作方式计数方式MOV DX,303H ;给8053控制字口 MOV AL,00010100B ;计数器0工作在方式2,只低八位,用二进制 OUT DX,AL MOV DX,300H ;给计数器0初值2 MOV AL,2 OUT DX,AL3、编写中断服务子程序首先要设置好中断向量,这里是调用72H号中断,在里面写入A/D转换的中断服务子程序地址,所以要保存原来72H中断向量表里面的内容,最后在程序完成时要恢复72H里的内容,在执行这些操作的时候是不容许中断的,所以要关中断,操作完成后要开中断,可以用以下指令来完成:MOV AX,3572H ;获取原中断向量 INT

10、21H MOV INT0A_OFF,BX ;保存x中断向量 MOV BX,ES MOV INT0A_SEG,BX CLI ;关中断 MOV AX,2572H MOV DX,SEG LEDLIGHT ;设置新的中断向量 PUSH DS MOV DS,DX MOV DX,OFFSET LEDLIGHT INT 21H POP DS STI ;开中断要想启动0809进行转换,首先必须有一个start信号,该信号为:数据采集之后,恢复中断向量,部分程序如下: MOV AX,2572H ;恢复中断向量 MOV DX,INT0A_SEG PUSH DS MOV DS,DX MOV DX,INT0A_OFF

11、 INT 21H POP DS IN AL,0A1H ;屏蔽IRQ10 OR AL,04H OUT 0A1H,AL MOV AX,4C00H ;程序退出 INT 21H LEDLIGHT PROC FAR ;中断服务程序 PUSH SI PUSH AX PUSH DX CLI ;关中断MOV DX,307H MOV AL,5H ;AL=0000 0101 使PC2口为高,读取转换结果到PA口 OUT DX,AL MOV DX,304 ;从A口读取数据 IN AL,DX PUSH AX ;先保存数据 SHOW: AND AL,0F0H ;显示高四位 MOV CL,04 SHR AL,CL CMP

12、 AL,9 JA HEX ADD AL,30H JMP NEXTHEX:ADD AL,37HNEXT:MOV DL,AL MOV AH,2 ;输出显示高四位 INT 21H POP AX AND AL,0FH ;显示低四位 CMP AL,9 JA HEX1 ADD AL,30H JMP NEXT1HEX1:ADD AL,37HNEXT1: MOV DL,AL ;输出数据 MOV AH,02H INT 21H MOV DL,13 ;输入回车换行符 MOV AH,2 INT 21H MOV DL,10 MOV AH,2 INT 21H MOV AH,09H MOV DX,OFFSET ERROR

13、INT 21H NEXT2: MOV AL,62H ;发中断结束命令 MOV DX,0A0H OUT DX,AL ;向从片8259发EOI命令 OUT 020H,AL ;向主片8259发EOI命令 STI ;开中断 POP DX POP AX POP SI IRET五程序流程图 六调试分析 进入主菜单后选择1进行8255的初始化,这时候会发现在实验板上的一半灯亮,一半灭; 选择2后进入8253的初始化,可以用示波器观察输出的波形,选择3后进入A/D转换,将转换来的数据一路送二极管显示,一路送显示器。 七原理图设计八程序清单 ;在本程序中,8253的地址是H-303H,8355A的地址是H-30

14、7H,和KS4电路图对应DATA SEGMENTINT0A_OFF DW(?)INT0A_SEG DW(?)COUNT DB(5)SUM DB(0) DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATADELAY PROC PUSH CX PUSH BX MOV BX,0FFFHLOOP2:MOV CX,0FFFFHLOOP1:LOOP LOOP1 DEC BX JNZ LOOP2 POP BX POP CX RET DELAY ENDPDISP PROC push ax show: and al,0f0h ;显示高位 shr al,4 cmp al,9 ja

15、 hex add al,30h jmp nexthex: add al,37hnext: mov dl,al mov ah,2 int 21H pop ax and al,0fh ;显示低位 cmp al,9 ja hex1 add al,30h jmp next1hex1: add al,37hnext1: mov dl,al ;输出信号 mov ah,2 int 21h mov ah,2 ;输出空格 mov dl,0 int 21h ;INC SUM ;MOV AL,SUM ;CMP AL,100 ;JZ PROEND DEC COUNT MOV AL,COUNT CMP AL,0 JNZ

16、 DISPEND MOV COUNT,5 mov dl,13 ;向屏幕送回车符 mov ah,2 int 21h mov dl,10 ;向屏幕送换行符 mov ah,2 int 21h DISPEND: RET;PROEND: ;MOV AX,4C00H ;INT 21HDISP ENDPSTART: MOV AX,DATA MOV DS,AX MOV DX,307H ;初始化 MOV AL,80H OUT DX,AL MOV DX,305H ;LED灯熄灭 MOV AL,0FFH OUT DX,AL MOV AX,3572H ;获取原中断向量 INT 21H MOV INT0A_OFF,BX

17、 ;保存原中断向量 MOV BX,ES MOV INT0A_SEG,BX CLI ;关中断 MOV AX,2572H MOV DX,SEG LEDLIGHT ;设置新的中断向量 PUSH DS MOV DS,DX MOV DX,OFFSET LEDLIGHT INT 21H POP DS STI ;开中断 IN AL,0A1H ;打开IRQ10 AND AL,0FBH OUT 0A1H,AL IN AL,21H ;打开IRQ2 AND AL,0FBH OUT 21H,AL MOV DX,303H ;对实验板上的MHZ信号进行分频,为ADC0809提供转换时钟信号CLOCK MOV AL,000

18、10100B OUT DX,AL MOV DX,300H MOV AL,2 OUT DX,AL ;这条指令可去掉,因为在电路中ADDA/ADDB/ADDC都已接地,固定使用通道begin: ;mov dx,307h ;初始化状态字,A口输出, ;mov al,80h ;out dx,al ;mov dx,304h ;送通道号至A口 ;mov al,0 ;out dx,al mov dx,307h mov al,3h ;00000011,使PC1为 out dx,al ;PC1置进行地址锁存 mov dx,307h mov al,90h out dx,al ;重写方式字,A口输入,B口输出,C口

19、低四位输出L1: MOV AH,0BH ;检查是否有Esc键按下 INT 21H INC AL JNZ NEXT0 ; 若无键按下,则程序往下执行 MOV AH,08H ;如有Esc键按下,则程序退出 INT 21H CMP AL,27 JZ EXIT NEXT0: CALL DELAYlop: mov dx,307h ;使PC0置高发启动信号 mov al,1h ;00000001,先使PC0为 out dx,al mov cx,0f00h ;delaylop1:loop lop1 mov dx,307h mov al,0h ;00000000,延时后使PC0为发启动信号 out dx,al

20、 JMP L1 EXIT: MOV AX,2572H ;恢复中断向量 MOV DX,INT0A_SEG PUSH DS MOV DS,DX MOV DX,INT0A_OFF INT 21H POP DS IN AL,0A1H ;屏蔽IRQ10 OR AL,04H OUT 0A1H,AL IN AL,21H ;屏蔽IRQ2 OR AL,04H OUT 21H,AL MOV AX,4C00H ;程序退出 INT 21H LEDLIGHT PROC FAR ;中断服务程序 PUSH AX PUSH DX CLI ;关中断 mov dx,307h mov al,5h ;00000101,使PC2为高,

21、发出OE out dx,al mov dx,304h ;从A口读数据 in al,dx MOV DX,305H ;从B口向LED输出数据 OUT DX,AL CALL DISP ;向屏幕输出数据 MOV AL,62H ;发中断结束命令 MOV DX,0A0H OUT DX,AL ;向从片发EOI命令 OUT 020H,AL ;向主片发EOI命令 STI ;开中断 POP DX POP AX IRETLEDLIGHT ENDPCODE ENDS END START九收获、体会和建议过这次课程设计,我学到了很多东西,在电路设计和具体连线方面有了很大进步,对汇编语言程序设计加深了理解和掌握,对芯片也

22、有了更清楚的认识。在试验是我们连个人分工合作,一人主要做软件、另一个主要负责硬件。当我们连好线的时候用程序测试失败了。一直检查线路也没有错误,然后那老师对8255的测试程序来测试,居然也不行,起初以为是8255的芯片的问题换了一个还是不行,检查线路没有问题,怎么查也查不到问题,后来找老师问原因,老师说不只是8255,也可能是74138或245的问题,通过老师的指导我们又开始查那些线路和芯片,果然是新片的问题,换上芯片就好了,程序终于可以执行了,当时我真的很高兴。我懂得了调试程序找出问题比设计电路连线更麻烦。 在调试问题中我学到了很多解决问题的方法1、发光二极管在开电源的时候不亮 解决办法:电源

23、连线时接错位置,改接+5V即可2、屏幕上没有数据显示解决办法:a.用以下代码检测8255连线是否正确Code segmentAssume cs:codeStart:MOV DX,307hMov al,1001000bOut dx,alMov dx,305hMov al,00001111bOut dx,alCODE ENDSEND START结果:LED四个亮四个灭,说明8255连线正确b.将0809的CLOCK信号线接总线的0.5MHZ,检测8253连线是否正确结果:采集数据正常,LED也随数据的不同而变化,说明8253时钟信号有问题C用万用表检测8253的引脚是否连通结果:8253的OUT2导线接触不良,更正后问题解决通过这次试验我收获了很多,它使我把以前忘记的知识又复习了一遍,也是我了解了很多知识的重要性,更知道自己懂得的太少,还要努力获取更多的知识,更谢谢老师给我们这次机会使我更加了解自己的不足。我对这方面很感兴趣,我会继续努力的。

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

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