微机原理与接口技术课程设计报告.doc_第1页
微机原理与接口技术课程设计报告.doc_第2页
微机原理与接口技术课程设计报告.doc_第3页
微机原理与接口技术课程设计报告.doc_第4页
微机原理与接口技术课程设计报告.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

微机原理与接口技术课程设计数据采集班 级 网络10 学 号 31006100 姓 名 YHD 指导老师 马学文 二零一三年一月八号一、任务要求对一路温度、一路压力信号进行巡回数据采集,并把A/D转换后的结果在实验机的数码管上显示出来。采集到的数据超过规定的限值时,使发光二极管发光报警。二、硬件连线本程序实现两路数据采集:一路采集温度信号,一路采集压力信号。对每一路信号要连续采集8次,然后把8次A/D转化后的平均值显示在数码管上。左边三位显示压力值,右边三位显示温度值。(1)拨码开关:将拨码开关SW2拨上。表示将GAL20V8的地址输入A-5接至系统地址线A5;A-6接至地址线A6;A-7接至地址线A7。(2)压力实验模块的“压力输出”端接至ADC0809的输入端IN0,温度实验模块的“温度输出”端接至ADC0809的输入端IN1。(3)0809的EOC的输出端与8259的IRQ0端相连,0809的CS连CS8(3E0H)。(4)8259的片选CS-1连地址输出CS6(3A0H),8259的INT1连总线输入INTR,8259模块的INT-A连总线的INTA,8259的SP/1连+5V。(5)8253的片选CS连地址输出端CS1(300H),8253的A0、A1分别连地址总线的A2、A3,8253的GATE0连+5V,8253的CLK0连74LS393分频输出的47K输出端,8253的OUT0连到任一发光二极管上;8253的GATE1连+5V,8253的CLK1连74LS393分频输出的47K输出端,8253的OUT1连到温度实验模块的“占空比输入”端。(6)8255并行模块下方的4个片选信号CS-1、CS-2、CS-3和CS-4分别与地址译码输出模块的对应引脚(实验箱中部的CS-1、CS-2、CS-3和CS-4)连接。(7)74系列模块中开放的3根输出信号和4根输入信号对键盘进行控制。键盘的行信号Q_0、Q_1、Q_2、Q_3分别与开放的输入信号Q0、Q1、Q2、Q3相连,键盘的列信号P_0和开放的输出信号P0相连,片选信号CS2接CS4(360H)。如按上述连线,则8255的A口、B口、C口和控制口地址分别是200H、204H、208H、20CH;8259的奇地址是3A8H,偶地址是3A0H。三、流程图主程序模块:初始化设置中断向量开中断启动0809通道IN0测试报警标志Alarmflag=0?Y求平均值转化为BCD码显示采集的压力值AA启动0809通道IN1测试报警标志Alarmflag=0?Y求平均值转化为BCD码显示采集的温度值有键按下?Y返回DOSN报警(LED亮)NN报警(LED亮)中断服务程序模块:中断服务程序保护现场读采样值存入buffer缓冲区比较采样值是否超限?Y报警标志alarmflag置1发中断结束命令恢复现场中断返回N采样次数小于8?NY启动下一次转换四、代码实现1、8255模块:显示温度值、压力值;2、8253模块:(1)输出负脉冲控制LED灯亮,即报警;(2)8253的OUT1作为“占空比输入”。3、8259模块: 实现中断服务程序,即进行压力和温度的数据采集。4、74系列模块: 实现数据采集的停止;5、A/D转换模块:实现温度、压力模拟信号向数字信号的转换。源代码如下:.486pdata segment use16 at 0 org 1000h alarmflag db ? max db? pbai db? pshidb? pgedb? tbaidb? tshidb? tgedb? pbufferdb8 dup(?) tbufferdb8 dup(?) timesdb? chudb? countdb? stackp equ 1100h data endscode segment use16assume cs:code,ds:data,ss:data org 1500hbeg:jmp startsevencod db 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8Hdb 80H,90H,88H,83H,0C6H,0A1H,86H,8EH start:moveax,60000000hmovcr0,eaxmovax,datamovds,axmovtimes,8movchu,10movmax,200climovalarmflag,0movcount,0moveax,80808080hmovdx,20choutdx,eax;初始化8255moveax,0ffffffffhmovdx,200houtdx,eax;a口全灭movdx,204houtdx,eax;b口全灭 ;初始化8259movdx,3a0hmoval,13houtdx,al;icw1movdx,3a8hmoval,08houtdx,al;icw2moval,03houtdx,al;icw4movdx,30chmoval,56houtdx,almoval,128movdx,304houtdx,al;占空比mov ax,offset pic mov bx,20h mov bx,ax mov ax,seg pic mov bx+2,ax;中断向量表movdx,3a8hmovdx,0fehoutdx,al;ocw1,开放irq0stileabx,pbufferre:movdx,3e0houtdx,al call delayintcmpcount,7jberecli;采集压力值 leabx,pbuffermovcx,8xorax,axcount0:addal,bx adcah,0incbxloopcount0divtimesmovah,0divchumovpge,ahmovah,0divchumovpshi,ahmovah,0divchumovpbai,ahmoval,pbaileabx,sevencodxlatmovpbai,almoval,pshixlatmovpshi,almoval,pgexlatmovpge,almovdx,200hmoval,pbaioutdx,almovdx,204hmoval,pshioutdx,almovdx,201hmoval,pgeoutdx,al;转换calldelayintstimovcount,0leabx,tbufferre1:movdx,3e4houtdx,al call delayintcmpcount,7jbere1cli;采集温度值leabx,tbuffermovcx,8xorax,axcount1:addal,bxadcah,0incbxloopcount1divtimesmovah,0divchumovtge,ahmovah,0divchumovtshi,ahmovah,0divchumovtbai,ahmoval,tbaileabx,sevencodxlatmovtbai,almoval,tshixlatmovtshi,almoval,tgexlatmovtge,almovdx,205hmoval,tbaioutdx,almovdx,202hmoval,tshioutdx,almovdx,206hmoval,tgeoutdx,al;转换exit: cli movdx,3a8hmoval,00houtdx,al;恢复屏蔽寄存器call delayintjmp starthltdelayint proc push dx push ax push cx mov cx,1024 loop $ pop cx pop ax pop dx retdelayint endppicproc farclipushdxpushaxpushcxinal,dxcmpal,maxjaexit2movbx,alincbxinccountjmpexit1exit2: movdx,30ch moval,10h outdx,al movax,128 movdx,300h outdx,al;报警 exit1:movdx,3a0hmoval,20houtdx,al;关中断mov al,0fehmov dx,360hout dx,alnopnopin al,dxand al,0fhcmp al,0fhje nexthltnext:popcxpopaxpopdxstiiretpicendpcodeendsendbeg五、调试运行 在调试运行过程中,我遇到了以下几个问题:1、当压力、温度超过限值时,LED灯不能报警;2、单步调试时,停止键有用,全速运行时就不起作用;3、刚全速运行时,温度值、压力值的显示亮度不一样,压力值较亮,温度值较暗。 经过多次单步调试及I/O检测,终于发现了症结所在,原因及解决办法如下:1、针对第一个问题,我的想法是可以采用8253的定时计数功能,使得OUT0口定时输出负脉冲,将OUT0与LED灯连接,即可以报警。由于我采用了方式2,输出的负脉冲只持续很短的时间,所以肉眼几乎看不到LED灯在闪烁。于是,我改用了方式3。2、针对第二个问题,每一轮采样中,我都初始化一遍8253,使得按键无效。所以,我将初始化8253的计数器1改放在了整个程序的初始化部分。3、针对第三个问题,我询问了老师和同学,但是还是没有解决亮度的问题,这是这次课设的一个未解症状之一。六、总结 这次课程设计让我充分认识到了我思考问题不周到全面。比如,在报警方面,我没有考虑到8253工作在方式2时输出的负脉冲只持续很短暂的时间,我也没有认识到进入中断服务程序时保护现场的重要性。这些都是在以后的

温馨提示

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

评论

0/150

提交评论