微型计算机技术课程设计 - 副本.doc_第1页
微型计算机技术课程设计 - 副本.doc_第2页
微型计算机技术课程设计 - 副本.doc_第3页
微型计算机技术课程设计 - 副本.doc_第4页
微型计算机技术课程设计 - 副本.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微型计算机技术课程设计13一设计任务利用微型计算机技术课程中所学的主要可编程接口芯片8253、8255A、ADC0809和微机内部的中断控制器8259A(从保留的IRQ2或IRQ10端引入)设计一个模拟电压采集电路及相应的程序。二设计目的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键也可中断采集过程。 首先要求我们定义出选择菜单,给出显示界面。8255的自检测这部分要求我们初始化8255,为了能够正确的看出8255已经初始化,当8255初始化后向B口送数据0FH到发光二管上显示,如果能够正确显示就说明8255已经被初始化。8253的自检测这部分要求我们初始化8253,8253初始化后可以通过示波器观察输出的波形是否满足要求。进行A/D转换。这部分是本次课设的关键部分,在做此之前,必须保证8255和8253都被正确的初始化,通过8255的C口控制ADC0809对模拟数据的采集,然后从A口读取转换后的数据,一路送发光二极管显示,一路送显示器上显示,这里模拟量由电位器得到。退出系统想结束程序的时候,从菜单上选择Esc键就可以退出程序。五设计原理1.要用Protues设计出正确电路原理图:a4.7K电位器一端接+5V,一端接地,调节电位器得到变化的模拟电压,该电压接至ADC0809的某一通道输入端(如IN0),ADC0809的时钟为500KHz,由8253对面包板上时钟1MHz分频后得到,8253的端口地址:300H303H。 b. 编程启动ADC0809转换(ADC0809完成一次转换的时间大约为120s),在中断服务程序中读入模数转换结果,一路送至发光二极管指示,一路送至计算机显示到屏幕上。 c. 8255A用做CPU和ADC0809间的接口芯片,ADC0809的控制信号(如OE、ALE、START等)可由8255A提供,8255A端口地址:300H303H。模数转换后的数字量也可经8255A的PA口读入。d. 译码电路由74LS138提供,在总线和其它接口芯片之间还必须加入74LS245,起到隔离总线的作用。(1).MFPT PCI总线驱动板逻辑结构如图所示74LS245的功能表:74LS245数据总路线缓冲器(2).ADC0809简介 提供一个8通道的多路开关和寻址逻辑l IN0IN7:8个模拟电压输入端l ADDA、ADDB、ADDC:3个地址输入线l ALE:地址锁存允许信号 ALE的上升沿用于锁存3个地址输入的状态,然后由译码器从8个模拟输入中选择一个模拟输入端进行A/D ADC0809的转换时序: ADC0809内部锁存转换后的数字量 具有三态数字量输出端D0D7 配合输出允许信号OE 当输出允许信号OE为高电平有效时,将三态锁存缓冲器的数字量从D0D7输出其它的芯片查阅微型计算机技术的书。(3).8255A与ADC0809的连接(4).8253定时/计数器对8253进行编程, 8253的时钟(CLK0)取自MFID实验平台(1MHz或2MHz )。对该信号进行分频后的500KHz作为ADC0809的转换时钟信号CLOCK,转换结束后,由EOC产生中断信号,送入到系统预留给用户的IRQ2(或IRQ10)引脚产生中断,在中断服务子程序中,启动一次模数转换。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.5MHZ,需要写入的计数初值为2,选用计数器0,工作方式3,代码如下:mov dx,307h mov al,00110110B out dx,al mov ax,2 mov dx,304h out dx,al mov al,ah out dx,al3.编写中断服务子程序首先要设置好中断向量,这里是调用72H号中断,在里面写入A/D转换的中断服务子程序地址,所以要保存原来72H中断向量表里面的内容,最后在程序完成时要恢复72H里的内容,在执行这些操作的时候是不容许中断的,所以要关中断,操作完成后要开中断,可以用一下指令来完成: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 dssti;开中断,进行判断选择按什么键cli;恢复1c号中断向量 mov dx,intoff mov ax,intseg mov ds,ax mov ax,2572h int 21h sti中断服务子程序:要想启动0809进行转换,首先必须有一个start信号,该信号为:在转换的时候通过EOC信号来判断转换是否结束,当EOC信号由0变为1时就代表转换结束,此时让OE引脚为1,这时转换出来的数据就输出了。六程序流程图 1、ADC主程序编写2、ADC中断服务程序的编写七调试分析 1、按菜单选项“1”进入主菜单后选择1进行8255的初始化,这时候会发现在实验板上的一半灯亮,一半灭。界面和实验箱效果如下图所示:2、按菜单选项“2”选择2后进入8253的初始化,可以用示波器观察输出的波形,随后进入A/D转换,将转换来的数据一路送二极管显示,一路送显示器。调节可调电位器到最小值的结果和实验箱效果如下图所示:3、调节可调电位器将可调点位器从最小值逐步调节到最大值,结果显示和实验箱效果如下图所示:八原理图设计九收获和体会 这次课程设计做了两个星期,是我们做的第一个硬件课程设计。主要考察我们对IO接口芯片8253,8255,AD0809及中断控制芯片8259等可编程逻辑器件的使用,还有译码器76138的使用。这次微机原理课程设计历时两个星期,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。在课设开始的时候,画原理图还好说,毕竟网上有资料可以查,虽然有些引脚连错了,但在老师和同学们的帮助下,错误都纠正过来了。但在接下来的连线阶段,却遇到了很多问题。首先在第一次连线的时候,由于事先没有规划好,所以线连的很乱,后来现象没出来,又查不出来哪里出了错误。于是我们决定重新再连。在接下来的连线中,由于是第二次连线,所以连起来很快,但是最后还是不能出现象。最后在同学的帮助下,我最后学会了用万用表来检查线是不是连好的,看它们是不是连通的,后来又通过以前做过的实验对8253,8255进行自检,一步一步的解决问题,感受到学习的快乐,并完成了这次课程设计。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。而且,在课程设计的过程中,我感受到个人的力量是不及群众的力量的。我们是两个人分工合作,做事的效率高了很多,虽然有时候会为了一些细节争论不休,但得出来的结论都是最好的。这次课设也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。总之这次课程设计对于我们有很大的帮助通过课程设计我更加深入地理解了微机原理课程上讲到的各种芯片的功能以及引脚的作用同时加深了对于主要芯片的应用的认识同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程最后还提高了自己的动手能力。感谢老师的悉心指导。十程序.model small.386.stack .data intoff dw 0;存放原来中断向量里的偏移地址intseg dw 0;存放原来中断向量里的段地址countdb 0string 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,Esc .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,27;退出系统 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,2 mov dx,304h out dx,al mov al,ah out dx,al in al,0a1h;设置中断屏蔽寄存器,系统自动产生72号中断 and al,0fbh out 0a1h,al call convert_proc jmp wait_press choice3:cmp al,31h;8255自检,将结果输出到显示器和发光二极管 jne choicex mov dl,13;向屏幕送回车符 mov ah,2 int 21h mov dl,10;向屏幕送换行符 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 L1: MOV AH,0BH;检查是否有Esc键按下 INT 21H INC AL JNZ NEXT0; 若无键按下,则程序往下执行 MOV AH,08H;如有Esc键按下,则程序退出 INT 21H CMP AL,27 JZ quit_system NEXT0: 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,500; 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论