您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 微机原理课程设计__压力测量系统的设计
f序号:课程设计(微机原理及应用A)班级09网络1班姓名张峻飞学号指导教师二○一一年七月八日1课程设计任务书及成绩评定课题名称压力测控系统的设计I、题目的目的和要求:设计一个对压力传感器的信号进行检测并在LED数码显示器上显示压力值的系统,当压力低于30pa时,黄灯闪烁,闪烁周期为1秒。当压力高于150pa时,红灯闪烁。LED的显示内容为P=XXX。X为测试值。II、设计进度及完成情况日期内容7月4日查阅资料,拟定设计方案。7月5日选课程设计题目,编写程序。7月6日设计总体方案,上机调试。7月7日整理打印设计报告。7月8日上交设计报告并进行答辩。2III、主要参考文献及资料《微型计算机原理及应用》清华大学出版社郑学坚周斌《微型计算机技术及应用》清华大学出版社史嘉权《微机原理与接口技术基础与应用》海洋出版社邓振杰《微机原理与接口技术实验及课程设计》西南交通大学出版社杨斌《单片机原理及接口技术》清华大学出版社梅丽凤王艳秋学科部主任(签字)Ⅵ、成绩评定:设计成绩:(教师填写)指导老师:(签字)二○一一年七月八日3一、设计要求设计一个对压力传感器的信号进行检测并在LED数码显示器上显示压力值的系统,当压力低于30pa时,黄灯闪烁,闪烁周期为1秒。当压力高于150pa时,红灯闪烁。LED的显示内容为P=XXX。X为测试值。二.设计思想压力测试系统的设计,必然要牵涉到压力的感应与转化,所以必须要有压力传感与A/D转换器。将自然中的模拟量转化为电压信号,再转化位数字信号进行处理。一个小型的微机系统,必须要有8086cpu来进行整体的控制,将其通过8255与A/D传感器进行连接。这就是这个系统的主要框架。而具体的应用框架则是在主要的框架上添加。要当压力低于30pa时,黄灯闪烁。当压力高于150pa时,红灯闪烁。则应添加8255。模块。通过编程来控制黄灯与红灯的亮灭情况,考虑到要进行比较,所以我用了两个比较器进行数据的比较。同时,由于灯要闪烁,闪烁周期要一秒,所以我们考虑到还要加一个8253芯片去控制。但根据个人情况,这个模块我省略了。而至于LED显示,且显示内容为三位。我只在程序之中体现,而在硬件图中没有去体现。4三.系统设计框图四.程序流程图模数转换单元ADC0809CPU中央处理器8086并行接口芯片8255大于150Pa红灯闪烁小于30Pa黄灯闪烁显示数字三位数码显示管压力传感器5五.源程序;宏定义addr_8253equ208ha_8253equaddr_8253b_8253equaddr_8253+1hctrl_8253equaddr_8253+3haddr_adc0809equ210haddr_8255equ200ha_8255equaddr_8255b_8255equaddr_8255+1hc_8255equaddr_8255+2hctrl_8255equaddr_8255+3h开始8255初始化采集模拟数据启动AD转化XXXPaXXX150PaXXX30PaXXXPa15030红灯闪烁黄灯闪烁都不亮显示6;******************************************codesegmentassumecs:code,ds:codestart:movax,csmovds,ax;******************************************;8253产生方形波,周期为1s,通道0movdx,ctrl_8253;设置8253控制口moval,3eh;控制字0011111000表示计时器0;11表示先读写低八位,后写读高八位;X11表示工作在模式3;0表示二进制计数outdx,al;写控制字movdx,a_8253;设置计数初值(计数器0)movax,1000doutdx,al;先写低八位,后写高八位moval,ahoutdx,al;8253产生方形波,周期为1s,通道1movdx,ctrl_8253;设置8253控制口moval,7eh;控制字0111111001表示计时器1;11表示先读写低八位,后写读高八位;X11表示工作在模式3;0表示二进制计数outdx,al;写控制字movdx,b_8253;设置计数初值(计数器1)movax,500doutdx,al;先写低八位,后写高八位moval,ahoutdx,al;******************************************;启动A/Dmovdx,addr_adc0809;ADC0809outdx,al;******************************************disp:;8255初始化7;A口做为段码输出,B口做为位码输出,C口低2位做为有色灯的输出movdx,ctrl_8255;8255初始化moval,80h;控制字100000001表示方式控制字;00端口A方式0;0输出;0PC7-PC4输出;0定义端口B为0输出;0PC0-PC3输出outdx,al;写控制字repeat:;初始化地址指针和位码leabx,TABLE;段码表首址送bxLoadeffectaddress——取有效地址,也就是取偏移地址leadi,BUFDA;指向缓冲区首地址Loadeffectaddress——取有效地址,也就是取偏移地址movcl,0dfh;11011111b位码,共阴极,便于从第六位开始向低位依次显示next:;显示子程序;输出位码movdx,b_8255;8255B口,输出位码moval,cloutdx,almoval,[di];从缓冲区取段码xlatmovdx,a_8255;输出段码到8255A口outdx,al;延迟pushcxmovcx,30hdelay:loopdelaypopcx;关LED显示movdx,a_8255moval,0outdx,al8cmpcl,11111110b;已经显示最低位jzconvey;显示完成incdi;指向下一个段码rorcl,1;显示向低一位转移jmpnextconvey:;延时,方便LED显示结果及有色灯的闪烁cmpcount,0;count在后面定义jzadcall;延时时间到,开始下一次的数据采样deccount;延时时间未到jmprepeat;******************jmpconvey;******************************************;ADC0809接收模拟信号并转化为数字信号adcall:calladmovcount,0ffh;设置下一次数据采集的时间间隔jmprepeatTABLE:;段码表db3fh;0db06h;1db5bh;2db4fh;3db66h;4db6dh;5db7dh;6db07h;7db7fh;8db6fh;9db73h;Pdb48h;=db00h;NULLBUFDA:;显示缓冲区db10,11,12,12,12,0;初始显示P=0countdw0ffh;******************************************9adproc;读取AD转换结果并启动ADpushaxpushbxpushcxpushdxpushdimovdx,addr_adc0809;通道0;读结果inal,dx;数字量存放在al中;启动A/Doutdx,al;启动下一次的ad转换pushax;******************************************;根据数字量的值判断有色灯是否要亮cmpal,30djbyellow;小于30小于则转移到目标指令执行cmpal,150djared;大于150大于则转移到目标指令执行movdx,ctrl_8255;8255控制口pushaxmoval,00h;介于30和150之间,PC0输出低电平outdx,alpopaxjmpred_yellow;******************************************red:movdx,c_8255;控制口moval,02h;8255PC1输出高电平outdx,aljmpred_yellowyellow:movdx,c_8255;控制口moval,01h;8255PC0输出高电平outdx,alred_yellow:popax10movah,0;******************************************;将数字量转换成十进制,方便显示callbinidecpopdipopdxpopcxpopbxpopaxretadendp;******************************************binidecproc;将存放于AL中的数转换为十进制数存放到BUFDA中pushaxmovah,0;ax=almovbl,10movcx,4;leadi,BUFDA+5;指向显示缓冲区末尾binidec_next:divbl;al:商,ah:余数mov[di],ahdecdideccxmovah,0cmpal,0jnzbinidec_nextbinidec_null:movbyteptr[di],12decdiloopbinidec_nullpopaxretbinidecendp;******************************************11codeendsendstart六、设计心得经过一周的微机课程设计,让我对微机这一门课程有了系统的疏导。在学习这门课程是我们只是独立的讲解一些芯片的结构及用法,而通过微机课程设计,在我们在构建一个小型的微机系统时,而真正的去关注这些芯片的连接。这不但要求我们对各个芯片要有一定的了解与认知。而且要懂得怎么融会贯通。这是我在这次微机实习中体会最深的。其二,通过微机课程设计,培养了我们想问题的思维方式。以前我们想问题时总是将一些问题孤立出来去思考,而这次实习,他引导我们以多维的方式去解析整个问题。在课程设计中,我们不但要理解好系统的结构,进而画出硬件连接图、而且要写出程序流程图及源程序就,这些虽然是不同的表现形式,但他们必须用统一的思想去认识。其三,通过对压力测试系统的设计,让我们更加了解了CPU8086、ADC0809、8255等芯片的用法,同时,也对汇编语言的编程有了更加深入的认识。为以后单片机的学习奠定了一定的基础。最后,我通过课程设计认知了团队合作的重要性。通过与搭档的交流,让我对有些以前不是很熟悉的内容有了提高。同时在与之合作中,让我对工程这个概念有了新的认识,因为在以后工作中我们都必须面对与团体的合作。只有在平常,我们多去与人交流。才能提升我们的这个能力。总之,一周的微机的课程设计尽管很短,但让我们受益颇多。
本文标题:微机原理课程设计__压力测量系统的设计
链接地址:https://www.777doc.com/doc-2470110 .html