1、.长江大学工程技术学院汇编+微机课程设计报告数据采集系统的设计与调试学生:袁春云学号:200960720 序号:25专业班级:计本60901指导老师:华贵 许建国报告日期: 2011 年 9月 10日一 课程设计题目:数据采集系统的设计与测试利用汇编语言+微型计算机课程中所学的可编程接口芯片8253、8255A、ADC0809和微机部的中断控制器8259A设计一个数据采集系统,并且编程与调试。二设计目的1.通过本设计,使学生综合运用微型计算机技术、汇编语言程序设计以及电子技术等课程的容,为以后从事计算机检测与控制奠定一定的基础。2.主要掌握并行I/O接口芯片8253、8255A、ADC0809
2、及中断控制芯片8259A等可编程器件的使用,掌握译码器74LS138的使用。3.学会用汇编语言编写一个较完整的实用程序。4.掌握微型计算机技术应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等步骤。三.课程设计要求1.功能要求 利用汇编语言+微型计算机系统课程中所学的可编程接口芯片8253、8255A、ADC0809和微机部的中断控制器8259A(从保留的IRQ2或TRQ10端引入)设计一个数据采集系统、并且编程与调试。 用8253定时器定时10MS,每次定时10MS后启动一次模/数转换,要求对所接通道变化的模拟电压值进行采集。 每次模/数转换结束后,产生一次中断
3、,在中断服务程序中,采集来的数字量被读入微处理器的累加器AL中,然后通过8255A输出到8个LED发光二极管显示。2.设计所需器材与工具 微机原理与接口综合仿真实验平台。 可编程接口芯片8253、8255A、ADC0809和译码器芯片74LS138、74LS245等。 可调电位器4.7K一个。 其他逻辑器件、导线若干。 万用表、常用工具等。四设计思路1. 4.7电位器一端接+5V,一端接地,调节电位器得到变化的模拟电压,该电压接至ADC0809的某一通道输入端(如IN0),ADC0809的时钟为(500MHz),由8253对面包板上的时钟1MHz或2MHz分频后得到,8253的端口地址200H
4、207H。2. 用8253定时输出信后启动ADC0809转换,ADC0809完成一次转换时间大约为120us,将ADC0809的EOC引脚信号作为中断信号,若转换结束则进入中断服务程序。在中断服务程序中读入模数转换结果,并发送至二极管显示。3. 8255A端口地址:208H20FH。4. 译码电路由74LS138提供。四硬件组成及工作原理 CPU数据显示中断管理模块复位电路数据采集模块定时模块电源模块时钟电路模块图1框架总图1. 数据显示模块:数据显示模块是由8255A与74LS245所组成的。8255A有三个并行输入/输出接口,分别为A、B、C三个端口。分别为:方式0 :基本的输入输出方式,
5、即无须联络就可以直接进行的 I/O方式。其中A、B、C口的高四位或低四位可分别设置成输入或输出。 方式1 :选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0。方式2: 双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。然后根据在程序中是设置的那种工作方式去与74LS245进行连接。在程序中我所使用的是B口输入,A
6、口输出的输出方式。在这个模块中最主要的就是去怎样设置好输入与输出端口。这就要要求我们在对8255A进行初始化的时候就要考虑清楚这个问题。图28255A连接图2. 中断管理模块中断管理模块主要74LS138来完成,74LS138为3-8译码器,可以产生8片选,但是在这个程序中只要用四个片选,即200-207、208-20F、210-217、218-21F。74LS138其工作原理如下:当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平。可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。同时,中断管理模块需要做的工作有设置中断向量。在对中断进行设置的
7、时候可以对中断类型号进行修改。其实中断类型号的设置在对8259进行初始化的时候就完成了。3. 数据采集模块数据采集模块是用ADC0809来完成的,通过ADC0809来进行模数转换,ADC0809所采集的模拟信号转换为数字信号。这个模块是用来对数据进行采集、处理、转换的部分。在这个模块里我们要注意的是如何去处理在设计过程中该怎样去处理送入软件里面的信号的频率,我们在实验中ADC0809所接入的频率为0.25MHZ,但是也可以去使用0.5MHZ的这样一个频率,因为是8253的ADC0809是模/数转换器。其部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行
8、A/D转换。IN3连接一个滑动电阻器,通过该电阻器改变电阻得到不同的电压值,经过数据采集并转换后通过LED显示得到结果图3ADC0809连接图4定时模块8253部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。8253可编程计数器/定时器,部有三个计数器,分别成为计数器0
9、、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。工作原理:8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。图48253A连接图五. 软件框图1.主程序流程图 将8259A、8255A、8253初始化后,通过开始中断、等待中断来进行数据传输8259的初始化设置中断向量8255初始化8253初始化开中断等待中断图5-主程序流程图2.中断服务程序 启动摸/数转换,对数据进行转换,然后通过8255A输出。返回开中断来进行
10、循环。启动A/D转换设定延时时间为200us读数据结果处理、从8255输出开中断、中断返回图6中断服务器程序结构六. 主要程序的编写与分析 18259初始化(210H217H)由于系统中使用单片8259,所以初始化时不需要ICW3,即只需要初始化ICW1 ,ICW2 和ICW4代码如下: mov al,13h ;设置ICW1初始化命令字(00011011) mov dx,210h out dx,al;将ICW1输出到偶地址端口 mov al,8 ;ICW2中断类型号基值(8) mov dx,211h out dx,al; 将ICW2输出到奇地址端口mov al,1;ICW4out dx,al2
11、设置中断向量因为每4个字节存放一个中断服务程序的入口地址,且4个单元的低地址称为向量地址,其值为对应的中断类型号乘以4。CLI;关中断 mov ax,0000hmov ds,axlea ax,INT0 ;intO中断首地址mov ds:4*8,axmov ax,cs;中断向量指针mov ds:4*8+2,ax;设中断地址38255初始化(218H-21FH)A口地址为218H,B口地址为219H,C口地址为21AH,控制口地址为21BH,将对应的控制码写入控制口即可完成初始化。 ;8255a初始化 mov dx,21bHmov al,8aH ;端口A和C低输出,端口B和C高输入 out dx,
12、al48253初始化(200H-207H)定时器0地址为200H,定时器1地址为201H,定时器2地址为202H,8253控制口地址为203H,将相应的控制字和初始值填入8253即可完成初始化。;8253初始化;f=1mhz,t=1usmov dx, 203Hmov al,00110110B;选择计数器0,先低后高out dx ,al ;送计数方式控制字mov dx,200H;选择计数器mov ax,60000out dx,al ;先送低八位mov al,ah out dx,al ;后送高八位5中断服务程序首先关闭中断,然后对ADC0809进行清零操作,然后调用延时程序为了等待A/D转换完成,
13、然后将转换结果传送到AL寄存器,然后将AL寄存器的值传递到8255的A端口通过74LS245将转换结果传送到LED灯上。INT0 Proc near mov dx,208H ;adc0809地址-dx mov al,0 out dx,al call delay ;调用延时子程 in al,dx ;输出8255mov dx,218H out dx,al;结束中断 mov dx,210H mov al,20Hout dx,alsti ;开中断iret ;中断返回INT0 endp6延时子程序的设定通过延时,以等待ADC0809完成A/D转换(100us)。DELAY Proc near PUSH
14、CX MOV CX,0F0FH LOOP $ ;CXDX MOV AL,0 ;初始化一个低电平 OUT DX,AL CALL DELAY ;调用延时子程序 IN AL,DX ;读转换结果-AL中 ;输出 MOV DX,218H OUT DX,AL ;自动结束中断 MOV DX,210H MOV AL,20H OUT DX,AL STI ;开中断 IRET ;中断返回 INT0 endp DELAY Proc near PUSH CX MOV CX,0F00H LOOP $ ;CX-CX-1 ;这条指令 POP CX ;出栈 RET ;从子程序返回 DELAY endp;子程序结束 CODE ENDS ;代码段结束 END START ;结束汇编指导教师评语:报告成绩:指导教师签名: 年月日20 / 20