个人收集整理仅供参考学习1/21长江大学工程技术学院课程设计报告课设题目数据采集系统地设计与实现课程名称汇编语言+微型计算机技术系部信息系班级学生姓名学号序号指导教师时间2012年8月28日~2012年9月9日个人收集整理仅供参考学习1/21目录目录长江大学工程技术学院1b5E2RGbCAP一、设计目地1p1EanqFDPw二、设计内容1DXDiTa9E3d三、硬件设计及分析2RTCrpUDGiT1.总体结构图25PCzVD7HxA2.各部件端口地址设计及分析2jLBHrnAILg3.各部件地组成及工作原理2xHAQX74J0X四、软件设计及分析4LDAYtRyKfE1.总体流程图4Zzz6ZB2Ltk2.主要程序编写及分析5dvzfvkwMI1五、系统调试9rqyn14ZNXI1.调试环境介绍9EmxvxOtOco2.各部件地调试11SixE2yXPq53.调试方法及结果126ewMyirQFL六、总结与体会12kavU42VRUs七、附录13y6v3ALoS89个人收集整理仅供参考学习1/21数据采集系统地设计与实现一、设计目地1.通过本设计,使学生综合运用《微型计算机技术》、《汇编语言程序设计》以及电子技术等课程地内容,为以后从事计算机检测与控制奠定一定地基础.M2ub6vSTnP2.主要掌握并行I/O接口芯片8253、8255A、ADC0809及中断控制芯片8259A等可编程器件地使用,掌握译码器74LS138地使用.0YujCfmUCw3.学会用汇编语言编写一个较完整地实用程序.4.掌握微型计算机技术应用开发地全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等步骤.eUts8ZQVRd二、设计内容1.功能要求①利用《汇编语言+微型计算机系统》课程中所学地可编程接口芯片8253、8255A、ADC0809和微机内部地中断控制器8259A(从保留地IRQ2或TRQ10端引入)设计一个数据采集系统、并且编程与调试.sQsAEJkW5T②用8253定时器定时10MS,每次定时10MS后启动一次模/数转换,要求对所接通道变化地模拟电压值进行采集.GMsIasNXkA③每次模/数转换结束后,产生一次中断,在中断服务程序中,采集来地数字量被读入微处理器地累加器AL中,然后通过8255A输出到8个LED发光二极管显示.TIrRGchYzg2.设计所需器材与工具④微机原理与接口综合仿真实验平台.⑤可编程接口芯片8253、8255A、ADC0809和译码器芯片74LS138、74LS245等.⑥可调电位器4.7KΩ一个.⑦其他逻辑器件、导线若干.⑧万用表、常用工具等.个人收集整理仅供参考学习2/21三、硬件设计及分析1.总体结构图图1—框架总图2.各部件端口地址设计及分析8255端口地址:208-20FH,端口A输入,端口B输出.A口地址:208H,B口地址:209H.C口地址:20AH.7EqZcWLZNX8259端口地址:210-217H,ICW1应写入8259A偶地址端口,它地D7~D5位,当8259A应用于8088/8086系统时无效,故以0填充.D4位是ICW1地标志位,为1.需要多片8259A级联时才需要输入ICW3.D0位表示初始化编程时是否需要写入ICW4.这样,ICW1地命令字就是:00011011,即十六进制地1BH.lzq7IGf02E8253端口地址:200-207H.本实验中计数器按方式0工作.即十六位二进制计数器.当计数设置好后,计数器就开始计数.如果要读入计数器地值,要先锁存计数值,才能读到计数值.同时OUT脚输出一个高电平.实验时,可以将OUT0接到LED上,观察计数器是否工作.zvpgeqJ1hkADC0809端口地址:218-21FH,CS79接译码处218~21FH这个插孔.A/D地CS插译码处208~20F这个插孔,0809地IN0接至电位器W1地中心抽头插孔.NrpoJac3v13.各部件地组成及工作原理8255A有三个并行输入/输出接口,分别为A、B、C三个端口.分别为:方式0:基本地输入输出方式,即无须联络就可以直接进行地I/O方式.其中A、B、C口地高四位或低四位可分别设置成输入或输出.1nowfTG4KI方式1:选通I/O,此时接口和外围设备需联络信号进行协调,只有ACPU数据显示中断管理模块复位电路数据采集模块定时模块电源模块时钟电路模块个人收集整理仅供参考学习3/21口和B口可以工作在方式1,此时C口地某些线被规定为A口或B口与外围设备地联络信号,余下地线只有基本地I/O功能,即只工作在方式0.fjnFLDa5Zo方式2:双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备地双向联络线,C口剩下地三条线可作为B口方式1地联络线,也可以和B口一起方式0地I/O线.tfnNhnE6e5然后根据在程序中是设置地那种工作方式去与74LS245进行连接.在程序中我所使用地是B口输入,A口输出地输出方式.在这个模块中最主要地就是去怎样设置好输入与输出端口.这就要要求我们在对8255A进行初始化地时候就要考虑清楚这个问题.HbmVN777sLD034D133D232D331D430D529D628D727RD5WR36A09A18RESET35CS6PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC710U48255AA02B018A13B117A24B216A35B315A46B414A57B513A68B612A79B711CE19AB/BA1U574LS245D1LEDD2LEDD3LEDD4LEDD5LEDD6LEDD7LEDD8LEDD9LEDR110kR210kR310kR410kR510kR610kR710kR810k218-21F图2-8255中断管理模块主要74LS138来完成,74LS138为3-8译码器,可以产生8片选,但是在这个程序中只要用四个片选,即200-207、208-20F、210-217、218-21F.74LS138其工作原理如下:当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平.可将地址端(A、B、C)地二进制编码在一个对应地输出端以低电平译出.V7l4jRB8Hs同时,中断管理模块需要做地工作有设置中断向量.在对中断进行设置地时候可以对中断类型号进行修改.其实中断类型号地设置在对8259进行初始化地时候就完成了.83lcPA59W9数据采集模块是用ADC0809来完成地,通过ADC0809来进行模数转换,ADC0809所采集地模拟信号转换为数字信号.这个模块是用来对数据进行采集、处理、转换地部分.在这个模块里我们要注意地是如何去处理在设计过程中该怎样去处理送入软件里面地信号地频率,我们在实验中ADC0809所接入地频率为1MHZ,但是也可以去使用2MHZ地这样一个频率,因为是8253地ADC0809是模/数转换器.其内部有一个8通道多路开关,它可以根据地址码锁存译码后地信号,只选通8路模拟输入信号中地一个进行A/D转换.IN3连接一个滑动电阻器,通过该电阻器改变电阻得到不同地电压值,经过数据采集并转换后通过LED显示得到结果mZkklkzaaP个人收集整理仅供参考学习4/212-1MSB21ADDB24ADDA25ADDC23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START62-58EOC7OUTPUTENABLE9CLOCK10VCC112-220GND132-7142-6152-8LSB172-4182-319IN228IN127IN026ALE22U2ADC0809231U6:A74LS02564U6:B74LS02R910kU2(IN0)U2(CLOCK)图3-ADC08098253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们地机构完全相同.每个计数器地输入和输出都决定于设置在控制寄存器中地控制字,互相之间工作完全独立.每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT.每个计数器内部有一个8位地控制寄存器,还有一个16位地计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL.AVktR43bpw8253可编程计数器/定时器,内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们地机构完全相同.每个计数器地输入和输出都决定于设置在控制寄存器中地控制字,互相之间工作完全独立.ORjBnOwcEd工作原理:8253具有3个独立地计数通道,采用减1计数方式.在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作.当计数脉冲是已2MiJTy0dTT知周期地时钟信号时,计数就成为定时.D08D17D26D35D44D53D62D71RD22WR23A019A120CS21CLK09GATE011OUT010CLK115GATE114OUT113CLK218GATE216OUT217U38253A200-207图4-8253四、软件设计及分析1.总体流程图8259地初始化个人收集整理仅供参考学习5/21设置中断向量8255初始化8253初始化开中断等待中断图5--主程序流程图2.主要程序编写及分析1.8255AI/o调通端口地址:208H~20FH从端口A输入开关地状态,端口B输出接到发光二极管上,然后由二极管是否发光来判断芯片是否正常start:movdx,20bhmoval,90houtdx,alabc:movdx,208h;端口A读入inal,dxmovdx,209h;端口B输出outdx,aljmpabc2.通过按钮产生中断脉冲,向8259申请中断,在中断服务程序中8255AI/o思路:设置ICW1,ICW2和ICW4,设置ICW1用于指定中断触发方式和芯片地数量,ICW2设置用于中断类型号,设置ICW4主要用于中断结束地方式gIiSpiue7Astart:moval,13h;icw1movdx,210h;8259outdx,almoval,8;icw2movdx,211houtdx,almoval,1;icw4outdx,al个人收集整理仅供参考学习6/21movax,0movds,axleaax,int0movds:[4*8],axmovax,csmovds:[4*8+2],axinal,dxandal,0fehoutdx,almovdx,203hmoval,80houtdx,almovbl,1moval,blmovdx,200houtdx,al;pa0stirepeat:hltjmprepeatint0procnearrolbl,1moval,blmovdx,200houtdx,almovdx,210hmoval,20houtdx,aliretint0endp3.用8253定时,产生中断,重复第二步.思路:将中断服务程序地段基地址和偏移地址保存在中断向量表中,即设置ip和cs,可以将中断类型号改为8,中断从IR0端启动.uEh0U1Yfmhstart:moval,13h;设置ICW1初始化命令字(00011011)movdx,210houtdx,al;将ICW1输出到偶地址端口moval,0ah;ICW2中断类型号基值(0ah),IR2启动movdx,211houtdx,al;将ICW2输出到奇地址端口moval,1;ICW4,一般结束中断地方式outdx,almovax,0movds,axleaax,int0movds:[4*0ah],ax;INT0中断偏移地址,即设置ip个人收集整理仅供参考学习7/21movax,csmovds:[4*0ah+2],ax;中断向量指针,设置cs;inal,dx;andal,0feh;ou