模拟电压采集电路设计

上传人:无*** 文档编号:41370664 上传时间:2021-11-20 格式:DOC 页数:15 大小:363.01KB
返回 下载 相关 举报
模拟电压采集电路设计_第1页
第1页 / 共15页
模拟电压采集电路设计_第2页
第2页 / 共15页
模拟电压采集电路设计_第3页
第3页 / 共15页
点击查看更多>>
资源描述
附:学生课程设计 题目:模拟电压采集电路设计 专 业: 计算机科学与技术 日 期: 2008年3月2日 目 录一设计目的二实验平台和所用器材三设计内容四设计原理五程序流程图六调试分析七原理图设计八收获、体会和建议九程序清单一设计目的1. 通过本设计,使学生综合运用微型计算机技术、汇编语言程序设计以及电子技术等课程的内容,为以后从事计算机检测与控制工作奠定一定的基础。2. 主要掌握并行I/O接口芯片8253、8255A、ADC0809及中断控制芯片8259A等可编程器件的使用,掌握译码器74LS138的使用。3. 学会用汇编语言编写一个较完整的实用程序。4. 掌握微型计算机技术应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等步骤。二实验平台和所用器材 本实验是在windows XP操作系统上下实现的,程序的开发环境是用实验室的课设平台,所用到的器材如下: 一台微机原理与接口实训平台。 可编程芯片8253、8255A 、ADC0809和译码器芯片74LS138、数据总路线缓冲器74LS245各一片。 可调电位器4.7K一个、发光二极管8个、74LS06芯片2个、排电阻1个。 其它逻辑器件、导线若干。 示波器、万用表、常用工具等。三设计内容 采用ADC0809设计一个单通道模拟电压采集电路,要求对所接通道变化的模拟电压值进行采集,采集来的数字量一路送至发光二极管指示,一路送至计算机显示到屏幕上,每行显示5个数据,采集完100个数据后停止采集过程,采集过程中按下ESC键也可中断采集过程。 首先要求我们定义出选择菜单,给出显示界面。1. 8255的自检测这部分要求我们初始化8255,为了能够正确的看出8255已经初始化,当8255初始化后向B口送数据0FH到发光二管上显示,如果能够正确显示就说明8255已经被初始化。2. 8253的自检测 这部分要求我们初始化8253,8253初始化后可以通过示波器观察输出的波形是否满足要求。进行A/D转换这部分是本次课设的关键部分,在做此之前,必须保证8255和8253都被正确的初始化,通过8255的C口控制ADC0809对模拟数据的采集,然后从A口读取转换后的数据,一路送发光二极管显示,一路送显示器上显示,这里模拟量由电位器得到。3. 退出系统想结束程序的时候,从菜单上选择此键就可以退出程序.四设计原理1.要用Protues设计出正确电路原理图:a 4.7K电位器一端接+5V,一端接地,调节电位器得到变化的模拟电压,该电压接至ADC0809的某一通道输入端(如IN0),ADC0809的时钟为500KHz,可由总线直接提供,用8253进行定时中断,中断后进行A/D转换,要求定时为100ms,8253的端口地址:304H307H b. 编程启动ADC0809转换(ADC0809完成一次转换的时间大约为120s),在中断服务程序中读入模数转换结果,一路送至发光二极管指示,一路送至计算机显示到屏幕上。 c. 8255A用做CPU和ADC0809间的接口芯片,ADC0809的控制信号(如OE、ALE、START等)可由8255A提供,8255A端口地址:300H303H。模数转换后的数字量也可经8255A的PA口读入。d. 译码电路由74LS138提供,在总线和其它接口芯片之间还必须加入74LS245,起到隔离总线的作用。MFPT PCI总线驱动板逻辑结构如图所示芯片简介(1)74LS245的功能表74LS245数据总路线缓冲器(2).ADC0809简介 提供一个8通道的多路开关和寻址逻辑l IN0IN7:8个模拟电压输入端l ADDA、ADDB、ADDC:3个地址输入线l ALE:地址锁存允许信号 ALE的上升沿用于锁存3个地址输入的状态,然后由译码器从8个模拟输入中选择一个模拟输入端进行A/DStartD0D7OEDATA100ms2ms+8T(最大)200ns(最小)ADDA/B/CFSDAAAA/C/EOC ADC0809的数字输出 ADC0809内部锁存转换后的数字量 具有三态数字量输出端D0D7 配合输出允许信号OE 当输出允许信号OE为高电平有效时,将三态锁存缓冲器的数字量从D0D7输出其它的芯片查阅微型计算机技术的书。(3).8255A与ADC0809的连接(4).8253定时/计数器 对8253进行编程,定时100ms后,产生中断,该定时信号(OUT0)送入到系统预留给用户的IRQ2(或IRQ10)引脚产生中断,在中断服务子程序中,启动一次ADC0809模数转换,ADC0809采用查询方式工作。IRQ10中断向量号为72H 8253的时钟(CLK0)取自MFID实验平台。2.编写程序初始化8255和8253(1)初始化8255:8255有四个寄存器,地址为300h-303h,分别为A口,B口,C口,和控制口,首先要向C口写入控制字,控制字格式如下:工作方式控制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,303h mov al,10011001Bout dx,al(2)初始化82538253控制字格式如下D7 D6 D5 D4 D3 D2 D1 D0计数器选择读写格式工作方式计数方式输入时钟信号为0.25MHZ,要得到100MS定时,需要写入的计数初值为25000,选用计数器0,工作方式3,代码如下:mov dx,307h mov al,00110110B out dx,al mov ax,25000 mov dx,304h out dx,al mov al,ah out dx,al3.编写中断服务子程序首先要设置好中断向量,这里是调用72H号中断,在里面写入A/D转换的中断服务子程序地址,所以要保存原来72H中断向量表里面的内容,最后在程序完成时要恢复72H里的内容,在执行这些操作的时候是不容许中断的,所以要关中断,操作完成后要开中断,可以用一下指令来完成:cli;获取原中断向量里的内容并保存 mov ax,3572h int 21h mov intoff,bx mov intseg,es push ds mov dx,offset convert;设置新的中断向量 mov ax,seg convert mov ds,ax mov ax,2572h int 21h pop ds sticli;恢复72号中断向量 mov dx,intoff mov ax,intseg mov ds,ax mov ax,2572h int 21h sti中断服务子程序:要想启动0809进行转换,首先必须有一个start信号,该信号为:在转换的时候通过EOC信号来判断转换是否结束,当EOC信号由0变为1时就代表转换结束,此时让OE引脚为1,这时转换出来的数据就输出了,部分代码如下:mov dx,303h mov al,10011001B out dx,al mov dx,303h;送启动信号 mov al,00h out dx,al nop mov al,01h out dx,al nop mov al,00h out dx,al mov dx,302h query: in al,dx test al,10h jz query mov dx,300h in al,dx inc dx out dx,al注意在每次转换完后都必须将C端口置位: mov dx,303h;将C口复位,以保证下次能正确转换数据 mov al,90h out dx,al mov dx,302h mov al,0ffh out dx,al在中断服务子程序结束之前,必须发中断结束命令: mov al,20h ;结束中断 out 20h,al out 0a0h,al 在进入A/D转换之前,必须开发72H号中断: in al,0a1h;设置中断屏蔽寄存器,系统开放72号中断 and al,0fbh out 0a1h,al五程序流程图 主程序 中断服务子程序 六调试分析 进入主菜单后选择1进行8255的初始化,这时候会发现在实验板上的一半灯亮,一半灭,同时提示8255 is ok ;选择2后进入8253的初始化,可以用示波器观察输出的波形,同时显示8253 is ok ,选择3后进入A/D转换,将转换来的数据一路送二极管显示,一路送显示器。 在调试的过程中,有很多技巧,刚开始的时候,我把所有的电路都连接好调试,结果那样带来了很多的麻烦,而且也不容易找出错误的所在,最后我把所以的线都拆掉,一个器件一个器件的调试,先从8255开始,直到8255能正确输出数据的时候才开始下一步的测试,然后再测试0809,在测试0809的时候遇到了一个小问题,就是每次转换来的数据都一样,除非让8255复位,经过认真的分析,才知道是8255的C端口的控制信号没有置位,接下来测试的是8253,一开始,分频率总是不对,计数初值没有问题,经过仔细检查才发现8253的芯片出了问题,电源引脚断了,换芯片后就没有问题了,在设计中断的时候,一开始不能让其自动产生中断,后来查阅资料才知道是在中断服务子程序中没有结束中断引起的,这些故障调试通过后 ,整个设计就完成了。七原理图设计八收获、体会和建议本次课程设计,我学到了很多的东西,对汇编语言程序设计加深了理解和掌握,我们这次设计的要求主要是熟悉微型计算机技术中所学到的几中芯片的使用,掌握它们的初始化编程,并学会他们的基本应用,这是一个比较全面的设计,和以前的实验相比较复杂很多,一方面要求我们设计硬件电路,另一方面需要对设计的硬件电路进行编程,这就需要软件和硬件相结合,具体的电路具体分析,在此次设计中还用到了中断,通常来说,中断是很复杂,很难的去调试。在此设计中遇到了很多困难,一开始的时候,硬件电路测试都没成功,最后把所有的电路都拆了,一个一个测试,进行数据转换的时候,开始转换出来的数据都一样的,无论电位是否发生变化,经过仔细分析才知道是8255没有复位,在中断的产生过程中,由于没有写中断结束也带来了一定的困难。这次课程设计后,我对学硬件有了一定的体会,它要求我们认真仔细的做好每个环节,对所有的问题要考虑周全,它和软件不同,对具体的电路要编写适合该电路的程序,电路一改,程序也要跟着改,从中我也学会了很多实际应用的知识。最后,还要感谢程世旭老师、赵立辉老师、雷鸣在百忙之中抽出时间来对我的帮助和辅导,他们给我们讲授了一些编程的经验,这对于我以后做事帮助很大,由于他们的热情帮助和支持我才能顺利的完成这次课程设计的任务。九程序清单 .model small.386.stack .data intoff dw 0;存放原来中断向量里的偏移地址intseg dw 0;存放原来中断向量里的段地址string db this is a A/D converter system,please db input your choice(1-3),0Dh,0ah,0ah,0ah,$showline db 23 dup(*),0dh,0ah,$check8255 db *,20h,1 .8255 check self,*,0Dh,0ah,$check8253convert db *,20h,2 .8253 check self and a/d convert,*,0Dh,0ah,$quit db *,20h,3 .quit the system,*,0Dh,0ah,$.code .startup;显示菜单及提示信息 mov dx,offset string mov ah,9 int 21h mov dx,offset showline mov ah,9 int 21h mov dx,offset check8255 mov ah,9 int 21h mov dx,offset check8253convert mov ah,9 int 21h mov dx,offset quit mov ah,9 int 21h mov dx,offset showline mov ah,9 int 21h cli;获取原中断向量里的内容并保存 in al,0a1h;设置中断屏蔽寄存器,系统自动产生72号中断 and al,0fbh out 0a1h,al mov ax,3572h int 21h mov intoff,bx mov intseg,es push ds mov dx,offset convert_proc;设置新的中断向量 mov ax,seg convert_proc mov ds,ax mov ax,2572h int 21h pop ds sti;开中断,进行判断选择按什么键 jmp choicexwait_press: nop nop nop jne wait_presschoicex: mov ah,1 int 21h cmp al,33h;退出系统 je quit_system choice2: cmp al,32h;当选择2的时候进行8253自检 jne choice3 mov dl,13 ;向屏幕送回车符 mov ah,2 int 21h mov dl,10 ;向屏幕送换行符 mov ah,2 int 21h mov dx,307h mov al,00110110B out dx,al mov ax,25000 mov dx,304h out dx,al mov al,ah out dx,al in al,0a1h;设置中断屏蔽寄存器,系统自动产生72号中断 and al,0fbh out 0a1h,al jmp wait_press choice3:cmp al,31h;8255自检,将结果输出到显示器和发光二极管 jne choicex mov dl,35h mov ah,2 int 21h mov dx,303h mov al,10011001B out dx,almov al,0fhmov dx,301hout dx,al jmp choicex quit_system: cli mov dx,intoff;恢复1c号中断向量 mov ax,intseg mov ds,ax mov ax,2572h int 21h sti .exit 0convert_proc proc mov dx,303h mov al,10011001B out dx,al mov dx,303h;送启动信号 mov al,00h out dx,al nop mov al,01h out dx,al nop mov al,00h out dx,al mov dx,302h query1: in al,dx test al,10h jz query1mov cx,5000; read: mov dx,300h in al,dx inc dx out dx,al loop read push ax mov dx,303h mov al,90h out dx,al mov dx,302h mov al,0ffh out dx,al pop ax mov bl,al push ax mov dx,303h mov al,10011001B out dx,al mov dx,301h mov al,bl out dx,al pop ax push ax show1: and al,0f0h ;显示高4位 shr al,4 cmp al,9 ja hex2 add al,30h jmp nextpro1hex2: add al,37hnextpro1: mov dl,al mov ah,2 int 21H pop ax and al,0fh ;显示低4位 cmp al,9 ja hex3 add al,30h jmp next4hex3: add al,37hnext4: mov dl,al mov ah,2 int 21h mov dl,20h ;向屏幕送空格符号 mov ah,2 int 21h mov al,20h out 20h,al out 0a0h,al iretconvert_proc endp end 15
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!