4回路数据监测系统设计报告—课程设计论文.docx_第1页
4回路数据监测系统设计报告—课程设计论文.docx_第2页
4回路数据监测系统设计报告—课程设计论文.docx_第3页
4回路数据监测系统设计报告—课程设计论文.docx_第4页
4回路数据监测系统设计报告—课程设计论文.docx_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

计算机控制技术基础课程设计4回路数据监测系统设计 指导老师 引言 随着人类社会的发展,人们对于各种数据的监测也同时提高的监测标准,数据监测的精度和准确性也越来越高,由抽样监测到实时监测。同时监测的手段也越来越多样、智能化。在日常生活中,我们能发现大量的监测系统,例如:大气环境的监测,输油管道的流量监测,室内温度和湿度的监测以及交通运输方面的车流量的监测等等。本次设计的主要监测对象为温度、压力、位移和加速度,要求实现4回路的数据检测。本次设计将采用ad574a来是实现具体的设计要求。ad574a是美国模拟数字公司(analog)推出的单片高速12位逐次比较型a/d转换器,内置双极性电路构成的混合集成转换显片,具有外接元件少,功耗低,精度高等特点,并且具有自动校零和自动极性转换功能,只需外接少量的阻容件即可构成一个完整的a/d转换器。其主要功能特性如下: 性能:分辨率:12;位非线性误差:小于1/2lbs或1lbs;转换速率:25us ;模拟电压输入范围:010v和020v,05v和010v两档四种;电源电压:15v和5v;数据输出格式:12位/8位;芯片工作模式:全速工作模式和单一工作模式 设计主要内容设计一个4回路数据监测系统,完成对温度、压力、位移和加速度的实时监测。具体参数和设计要求如下: 设计4路能够产生幅值范围为vdc可调的直流电压信号源,分别模拟:0300温度、0100mpa压力、0200mm位移、0800. 设计一个4路数据监测系统,并能通过led交替显示4个测量值。 设计人机交互接口,包括键盘、显示器和发光二极管。能够通过键盘设置4个测量值的上、下限报警值,并能通过发光二极管或蜂鸣器进行声、光超限报警。 采用pd-32e试验箱进行硬件实现。 设计的主要要求 硬件设计:要求完成控制系统框图;绘制完整的控制系统电路原理图;说明各功能模块的具体功能和参数;结合实验室现有的pd-32e实验装置进行系统组成,对整个系统的工作原理进行全面分析,讨论其结构特点、工作原理、有、缺点和使用场合。分析和论述系统采用的主要单元的工作原理和特性。 软件工作:要求合理分配系统资源,完成实现4回路数据监测系统的程序设计(如:系统初始化;主程序;a/d转换;标度变换;显示与键盘管理;输出等)。 对设计控制系统进行系统联调。 编写课程设计报告:按统一论文格式、统一报告纸和报告的各要素【封面、任务书、目录、摘要、序言、主要内容(包括设计总体思路、设计步骤、原理分析和相关知识的引用等)、总结、各组员心得体会、参考书籍记附录】进行编写,字数要求不少于4000字,要求设计报告论理正确,逻辑性强,文理通顺,层次分明,表达确切。 设计方案本次设计由小组成员的资料收集以及讨论,最终确定采用模块化的程序设计方式。模块化设计的主要优点如下:第一,把所有代码都统统写在一个主函数中是一个糟糕的方案,这样的想法在很多时候都会萌生,因为学习者刚开始编写的大多数程序都是“一次性”的快餐程序!学习者一旦完成了程序,就根本不需要回头修改,或者是以后再阅读。没有模块化设计的程序是极其难以阅读和改进的,即便是程序的作者本人,在一段时间后,也很难重新对程序进行修改。第二,模块化程序设计个人认为是编程的核心所在,即便现在有了“面向对象”的编程,可以面向对象的编程在某种程度上也是对模块化的一种延伸,使得程序的组织结构更加富有层次感,立体感和降低程序的耦合度!第三,几乎所有商用程序都必须使用模块化程序设计理念!这里很想使用“全部”代替“几乎”,因为真的很难想像没有模块化的商用软件!模块化的程序设计很大程度上,有利编程者的浏览和纠错,大大节省工作时间,提高工作效率。硬件实现采用的是pd-32e实验箱的硬件搭建,利用12位a/d 转换器ad574a、4*4非编码键盘、三色led显示器及等硬件部分。其具体硬件电路如下图所示:1、ad574a是一种高性能的12位逐次逼近式a/d转换器,转换时间约为25,线性误差为,内部有时钟脉冲源和基准电压源。端口连线a.a0接地(低电平)。b.12/8接+5v。c.cs接任意地址译码输出端。d.sts不接,采用延时等待a/d转换完毕。e.其余端口实验箱上已接好。不再需要连线。f.10vin输入端接实验箱上+-5v可调电压输出端。2、三色led显示器,用来交替显示四回路的实时数值。3、4*4非编码键盘,用来设定四回路上、下限值,还包括三个特殊功能键:a键确认,d键消除,f键跳出。 基本功能的实现4.1初始化和设置显示 主要由8255初始化、数据输入的初始化和led显示的初始化。数据的输入包括:四回路上、下限值的设定;三色led交替显示四回路的实时值。4.2四回路的分配用字母a表示温度、字母b表示压力、字母c表示位移、字母d表示加速度。四个监测对象的上、下限值视具体使用情况而设定。具体字母对应的上、下限值如下表所示:a1温度下限a2温度上限b1压力下限b2压力上限c1位移下限c2位移上限d1加速度下限d2加速度上限4.3键盘扫描键盘扫描主要用于初试四回路上、下限值设定。数字用于数值的设定,特殊功能键:a键有确认的功能,d键有消除错误输入的功能,f键有跳出蜂鸣程序。4.4超限报警初始完成四回路的上、下限值设定后,在程序运行过程中,当监测到有数值超出上、下限值的时候,发光二极管会常亮,蜂鸣器会鸣叫,提示有数值不在监测范围之内。五、软硬件设计5.1、软件设计 根据所需的功能,软件主要分为主程序、键盘扫描子程序、设置上、下限值子程序、a/d转换、均值滤波子程序、标度变换子程序、超出限值报警子程序、显示过程中拆分子程序、测量值与限值比较子程序、显示设置值子程序、16进制到10进制转换子程序等。5.2、硬件接口设置硬件部分要完成数据的输入及输出等操作,采用硬件实验箱完成硬件电路的搭建,具体的端口连线如下:ad574a端口连线a.a0接地(低电平)。b.12/8接+5v。c.cs接3c0地址译码输出端。d.sts不接,采用延时等待a/d转换完毕。e.其余端口实验箱上已接好。不再需要连线。f.10vin输入端接实验箱上+-5v可调电压输出端。第5片8255端口连线a口的a0a3键盘的行控制信号p0p3;b口的b0接发光二极管,b1接蜂鸣器 c口的c0c3键盘的列控制信号q0q3第5片8255的cs与300连接;ad574a端口连线表格ad574a接线端口a0gnd12/8+5vcs3c010vin+-5v可调电压输出第5片8255端口连线表格8255连线端口a0p0a1p1a2p2a3p3b0发光二极管b1蜂鸣器c0q0c1q1c2q2c3q3cs300六、程序流程图6.1、主程序流程图6、2键盘扫描子程序流程图6、3 a/d转换,模拟测量子程序流程图6、4设定上、下限值子程序流程图七、设计总结 通过谈论和分析、软件设计、硬件设计和最终调试等步骤,整个系统最终实现了:4回路数据监测的合理分配,分别模拟了0300 温度、0100mpa压力、0200mm位移、0800.能够通过键盘分别为其设定各自的上、下限报警值,并能通过led交替显示4个测量值,超限时能够通过发光二极管和蜂鸣器进行声、光超限报警。八、设计心得体会本次的计算机控制技术基础课程设计,老师让我们以分组的形式完成,所以,在程序编写方面我们小组也进行了明确的分工,我的主要编写任务是上下限值的输入和显示。计算机控制技术使我们上一个学期学的课程,这一个课程瞳计算机硬件基础使用的是同一种语言,即汇编语言,由于先前我们已经做过了计算机硬件基础的课程设计,所以虽然我们离学习汇编语言已经过去了一个学期,但是对于基本语法的使用已经基本熟悉了一遍,在编程序是也更省力气了。上下限值的显示使用的是四片8255控制的8个8段三色led数码管,上下限值的输入是依靠4x4键盘,通过键盘将三位数值输入,然后放入给定的缓冲区内。第五片8255的c口控制列信号,a口控制行信号,当从键盘中读到有按键按下时,将按键的数值而不是键值依据次序放入给定的缓冲区内,即xianzhi内。通过这次的课程设计,让我进一步熟悉了汇编语言,在编程时,思路变得更清晰,虽然在编程的过程中也遇到了一些问题,比如一些语法上的错误,但这些错误只会让我以后更加小心,更会提高我的水平。在本次的计算机控制技术基础课程设计中,我所担当的任务是主程序、键盘扫描子程序以及整个程序的调试工作。我们在大三上学期学习了计算机硬件技术课程,那时候可能是老师讲的仔细或者是学习的内容比较基础,所以并不觉得计算机硬件很难。但是当课程设计题目发下来时,才发现没有了头绪,也感到非常的吃力。于是我们组的成员决定先复习课本和实验教材的知识再来讨论方案。经过复习发现其实有很多子程序在实验教材上都是有的,然后大家一起讨论了方案,设计了流程图并分配好了工作。在编写程序的过程中问题遇到的还是相当的多,例如在读、接键盘子程序以及显示子程序中,虽然教材上有现成的子程序,但是为了达到课程设计的要求,还需要在led上显示数字,需要加一些自己的程序在里面,但是开始的时候不能显示出数字或者显示出的是乱码,但是单步运行时是可以显示出来的,最后通过全组人的讨论以及班上的其他硬件比较好的同学的帮助终于解决了显示的问题。通过本次的课程设计,将硬件的知识做了很好的梳理和回顾,并且提高了应用的能力以及加强了硬件使用能力,在和同组的同学协同配合下也加强了团队工作能力,这当中不仅有专业知识的运用还有一些新奇以及小聪明的想法出现,无论是知识还是能力方面,真的是收获良多,相信一定会对我今后的学习和工作有所帮助。通过本次计算机控制技术基础课程设计,我们在整个设计过程中,学到了很多的东西。首先是我们的基本技能得到的有效的提高,对于团队的协作也有了更深的理解;其次在整个过程中组员之间的沟通是很重要的一个环节,它直接影响到整体的工作效率;再次有效的调动各组员的积极性也很重要。在程序编写方面,我们组员承担不同的任务。我主要负责的是,报告的撰写、测量值与限值比较的子程序和蜂鸣器、二极管声光报警子程序等。尽管计算机硬件基础是大三上学期的时候学得,但当真正编写程序时,还是遇到了不少问题,尤其是在个程序衔接的时候,经常出现问题。 随着科技的发展,人们对于各种数据的监测也同时提高的监测标准,数据监测的精度和准确性也越来越高,由抽样监测到实时监测。同时监测的手段也越来越多样、智能化。在日常生活中,我们能发现大量的监测系统。数据监测的重要性也变得尤为突出。因此人们对于这方面的发展,也越来越重视。本次的计算机控制技术基础课程设计,老师让我们以分组的形式完成。在程序编写方面我们小组进行了明确的分工,我的主要任务是数模转换、标度变换以及四通道的循环显示。本次设计过程中,我们使用了ad574进行数模转换。ad574是一种高性能的12位逐次逼近时a/d转换器,转换时间约为25us,线性误差为正负0.5lsb,内部有时钟脉冲源和基准电压源。而且,ad574转换器的模拟输入可以是单极性的,也可以是双极性的。我们选择了量程为10v的双极性输入方式。在微型计算机控制系统中,由于被控对象所处的环境比较恶劣,常存在各种干扰源,它们的频谱较广、影响复杂,会使测量信号偏离真实值,降低微型计算机的数据采集精度,不能如实地反映被测对象的真实情况。为了进行准确的测量和控制,我采用了算术平均值滤波的方法,来提高数值的准确性。通过这次的课程设计,让我进一步熟悉了汇编语言。在编程过程中,我更好的掌握了乘、除的使用方法,并对循环显示的控制有了更深的了解。此外,我还更好地理解了数字滤波的使用方法和作用。九、参考文献计算机硬件技术基础实验教程 黄勤等编著 重庆大学出版社半片微型计算机机与接口技术 李群芳等编著 电子工业出版社计算机控制技术 王建华等编著 高等教育出版社附录程序清单.486data segment at 0200h use16sdatasegment at 0300h use16 stackdb 500 dup(?)sdata endscode segment use16assume cs:code,ds:data,ss:sdataorg 4000h beg: jmp mainfee1db00h ;设置值个位fee1sdb00h ;设置值个位缓存fee2db00h ;设置值十位和百位fee2sdb01h ;设置值十位和百位的缓存mess1db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,98h,88h,83h,0c6h,0a1h,0bfh,8eh ;三色字型码不带小数点keydb0ffh ;按键缓存anjiantzdb0eeh,0edh,0ebh,0e7h,0deh,0ddh,0dbh,0d7h,0beh,0bdh,0bbh,0b7h,7eh,7dh,7bh,77h;键盘特征值xianzhi dw ?,?,?,?,?,?,?,? ;输入上下限值缓存sxadw? ;温度下限值xxadw? ;温度上限值sxbdw? ;压力下限值xxbdw? ;压力上限值sxcdw? ;位移下限值xxcdw? ;位移上限值sxddw? ;加速度下限值xxddw? ;加速度上限值shijian dw ?danjiadb0a0h;显示输入哪个设定值addatadw? ; 一次ad转换的值sum_addata dw ? ; 16次累加和ad_result dw ? ;均值滤波后的ad值bdbh_resulta dw ? ;标度变换后温度的值 bdbh_resultb dw ? ;标度变换后压力的值bdbh_resultc dw ? ;标度变换后位移的值bdbh_resultd dw ? ;标度变换后加速度的值 disp_code_bufa db ?,?,?,88h;显示缓冲区adisp_code_bufb db ?,?,?,83h;显示缓冲区bdisp_code_bufc db ?,?,?,0c6h;显示缓冲区cdisp_code_bufd db ?,?,?,0a1h;显示缓冲区dmain: movdx,30ch ;第5片8255初始化moval,90h ;a口输入,b口、c口输出outdx,almov dx,304hmov al,0ffhout dx,almovdx,20ch ;4片8255初始化moveax,80808080h outdx,eax mov dx,208h mov eax,0f0f0f0fh out dx,eax ;判断开始键 ss1: call setsaomiaocall keyupmoval,keycmpal,0ah ;a键位开始键jnzss1mov dx,200h ;3色led显示横杠 mov eax,0bfbfbfbfhout dx,eaxmov dx,204hmov eax,0bfbfbfbfhout dx,eaxmov dx,208h ;设置值显示黄光, mov eax,0a0f0000h out dx,eaxss3: mov dx,208h ;第3片8255显示横杆mov eax,0a050000h out dx,eax moval,0bfhmovdx,202houtdx,almovdx,206houtdx,almoval,0eeh movfee1,almovfee2,alleasi,xianzhimovcl,04hxiage0: movbl,02hxiage: cmpbl,00hjzgo1decblmoval,danjiaaddal,01hmovdanjia,alcallxianfeecallinputincsiincsimoval,0eeh movfee1,al movfee2,al callxianfee jmpxiage go1: moval,danjiaandal,0f0haddal,10hmovdanjia,alloopxiage0moval,0a0hmovdanjia,alleasi,xianzhimovax,si ;存放温度设置的限值movsxa,axincsiincsimovax,simovxxa,axincsiincsimovax,si ;存放压力设置的限值movsxb,axincsiincsimovax,simovxxb,axincsiincsimovax,si;存放位移设置的限值movsxc,axincsiincsimovax,simovxxc,axincsiincsimovax,si;存放加速度设置的限值movsxd,axincsiincsimovax,simovxxd,ax jmpstartstart: mov dx,304h mov al,0ffh out dx,al jmp xianshi;显示预处理 xianshi: mov shijian,0ffh delayga: call kaishi call baojing mov dx, bdbh_resulta lea si,disp_code_bufa call chaifen lea si,disp_code_bufa call disp mov cx,shijian dec cx mov shijian,cx jnz delaygapre_dispb: mov shijian,0ffh delaygb: call kaishi call baojing mov dx, bdbh_resultb lea si,disp_code_bufb call chaifen lea si,disp_code_bufb call disp mov cx,shijian dec cx mov shijian,cx jnz delaygbpre_dispc: mov shijian,0ffh delaygc: call kaishi call baojing mov dx, bdbh_resultc lea si,disp_code_bufc call chaifen lea si,disp_code_bufc call disp mov cx,shijian dec cx mov shijian,cx jnz delaygcpre_dispd: mov shijian,0ffh delaygd: call kaishi call baojing mov dx, bdbh_resultd lea si,disp_code_bufd call chaifen lea si,disp_code_bufd call disp mov cx,shijian dec cx mov shijian,cx jnz delaygd jmp xianshibaojing proc near ;显示值与上下限值比较程序 pusha mov dx, bdbh_resulta ;温度比较 call kunshan cmp dx,sxa ;与下限值比较 jbe alarma cmp dx,xxa ;与上限值比较 jae alarma mov dx, bdbh_resultb ;比较压力 call kunshan cmp dx,sxb jbe alarmb cmp dx,xxb jae alarmb mov dx, bdbh_resultc ;比较位移 call kunshan cmp dx,sxc jbe alarmc cmp dx,xxc jae alarmc mov dx, bdbh_resultd ;比较加速度 call kunshan cmp dx,sxd jbe alarmd cmp dx,xxd jae alarmd popa ret baojing endp kaishi proc near ;开始子程序 movax,data movds,ax lea si,disp_code_bufa mov ah,88h mov si+3,ah lea si,disp_code_bufb mov ah,83h mov si+3,ah lea si,disp_code_bufc mov ah,0c6h mov si+3,ah lea si,disp_code_bufd mov ah,0a1h mov si+3,ah call junzhi call bdbh retkaishi endp;均值滤波子程序junzhi proc near pusha mov addata,0 mov sum_addata,0 mov cx,16 ;取16次转换结果来累加ad: call ad_zhuanhuan mov ax,sum_addata add ax,addata mov sum_addata,ax ;累加 loop ad shr sum_addata,4 ;除以16 mov ax,sum_addata mov ad_result,ax popa retjunzhi endp ;a/d转换子程序ad_zhuanhuan proc nearpusha mov dx,3c0h ; a/d地址 mov al,0 ; 虚写,启动12位a/d转换 out dx,al mov cx,20h loop $ ; 延时等待a/d转换完成 in ax,dx ; 一次性读取12位转换结果 and ax,0fffh ; 屏蔽掉高4位 mov addata,ax ; 保存结果 popa retad_zhuanhuan endp bdbh proc near ;标度变换 pusha mov ax,ad_result mov cx,2442 ;标度变换,变换成-5000mv+5000mv mul cx mov cx,1000 div cx cmp dx,501 jb bjw ;余数4舍5入 inc axbjw: mov cx,100 mov dx,0 div cx ;0-10000变成0-100 cmp dx,51 jb bjw1 inc axbjw1: mov bx,ax mov cx,3 mul cx mov bdbh_resulta,ax ;标度变换后温度 mov ax,bx mov bdbh_resultb,ax;标度变换后压力 mov ax,bx mov cx,2 mul cx mov bdbh_resultc,ax;标度变换后位移 mov ax,bx mov cx,8 mul cx mov bdbh_resultd,ax;标度变换后加速度 popa retbdbh endp;超过限值显示并报警程序alarma: mov dx, bdbh_resulta lea si,disp_code_bufa call chaifen lea si,disp_code_bufa call disp call fengning jmp alarmaalarmb: mov dx, bdbh_resultb lea si,disp_code_bufb call chaifen lea si,disp_code_bufb call disp call fengning jmp alarmbalarmc: mov dx, bdbh_resultc lea si,disp_code_bufc call chaifen lea si,disp_code_bufc call disp call fengning jmp alarmcalarmd: mov dx, bdbh_resultd lea si,disp_code_bufd call chaifen lea si,disp_code_bufd call disp call fengning jmp alarmd fengning proc near ;蜂鸣器、二极管声光报警 pusha mov dx,30ch mov al,90h out dx,al mov dx,304h mov al,0fch out dx,al call setsaomiao mov al,key cmp al,0fh call keyup jz start popa retfengning endp chaifen proc near ;显示过程中的拆分程序 pusha lea bx,mess1 ;字型码表 mov ax,dx ;拆分待显数据 mov dx,0 mov cl,100 div cl xlat mess1 ;得到个位字型码 mov si,al ;保存个位字型码 inc si ;指向下一位存储单元 mov al,ah mov ah,0 mov cl,10 div cl xlat mess1 mov si,al ;存第二位小数 inc si mov al,ah xlat mess1 mov si,al ;存第三位小数 popa ret chaifen endp disp proc near ;显示实际测量值程序 pusha mov dx,20ch mov eax,80808080h out dx,eax ;4片8255均置为输出方式 mov dx,200h mov cx,2 dis: mov al,si out dx,al ;a口显示 inc si mov al,si add dx,4 out dx,al ;b口显示 sub dx,4 inc dx inc si loop dis mov dx,208h mov eax,0f0f0000h out dx,eax ;位选,显示颜色 popa retdisp endp;用于16进制到10的转换kunshan proc nearmovbx,0movax,0movcx,dxzlp:moval,bladdal,01hdaamovbl,aljncgozlpmoval,bhaddal,01hdaamovbh,algozlp:loopzlpmovdx,bxretkunshan endp;-用于输入设置上下限值的子程序inputprocnearpushaxpushbxpushcx;设置值百位inp:callsetsaomiao;等待按键moval,key ;将key赋值到fee2的高四位movch,alandch,0fhleabx,mess1xlatmovdx,200houtdx,alcallkeyupmoval,keyshlal,4andal,0f0hmovfee2,al;设置值十位callsetsaomiaomovcl,keyandcl,0fhshlcl,4moval,key ;将key赋值到fee2的低四位andal,0fhoral,fee2movfee2,almovfee2s,almoval,keyleabx,mess1xlatmovdx,204houtdx,alcallkeyup;设置值的个位callsetsaomiaomoval,key ;将key赋值到fee1的高四位andal,0fhor cl,alshlal,4andal,0f0hmovfee1,almoval,keyleabx,mess1xlatmovdx,201houtdx,alcall keyupmoval,0fhor al,fee1movfee1,al;等到确认键lp1:callsetsaomiaomoval,keycmpal,0ahjz gooncmpal,0dh ; d键消除键jnzlp1mova

温馨提示

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

评论

0/150

提交评论