微机原理及其应用微型计算机温度控制系统设计课程设计报告;_第1页
微机原理及其应用微型计算机温度控制系统设计课程设计报告;_第2页
微机原理及其应用微型计算机温度控制系统设计课程设计报告;_第3页
微机原理及其应用微型计算机温度控制系统设计课程设计报告;_第4页
微机原理及其应用微型计算机温度控制系统设计课程设计报告;_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、微机原理及其应用课程设计报告 2011年3月2日1、 课程设计题目及系统功能介绍微型计算机温度控制系统设计,假设工业现场温度范围为075,温度值经传感器检测后,经变送器变成05v范围内的电压信号。电压信号送a/d转换器adc0809转换成对应的数字量。数字量经数字滤波后送入cpu作为本次采样值。在led数码显示器上显示温度值(采用十进制显示),并对温度进行测试和控制,当检测温度到达温度上限60时红灯亮,蜂鸣器报警,低于下限30时黄灯亮,蜂鸣器报警,以达到监控温度的目的。本设计采用程序控制方式。系统功能:每隔0.1秒钟对现场温度连续采集三次取平均值作为本次采样的有效值;判断温度是否高于上限值60

2、或低于下限值30,如超出该范围则分别用红、黄发光二极管和报警;把采集来的电压值转化成温度值在led显示器上显示;若键盘输入“r”则返回dos,结束程序。2、 硬件设计系统的硬件工作原理: cpu通过8255查询8253的定时时间是否已到,若到则对8253接口2重新初始化且用adc0809模/数转换器采样,不到则继续七段数码管显示与led灯和蜂鸣器的过程,循环以上。系统框图如下:地址分配: 8255 288h 8253 280h adc0809 298h-29fh dac0832 290h 重要芯片功能介绍:1、 可编程并行接口8255 采取工作方式0,输入控制字 88h,即a口输出,c口高四位

3、输入,c口低四位输出pa0pa6对应接七段数码管a b c d e f g接口,pc0 pc1对应七段数码管的位码接口pc2 pc3对应黄红led灯,pc4接8253计数器2的out2端口 2、 可编程定时器计数器(8253) 分别对8253的计数器1和计数器2初始化采用方式3和方式0,使计数器2产生每隔0 .1秒的高电平3、adc0809模/数转换器如图虚线接线即可3、dac0832数/模转换器dac0832是用于蜂鸣器报警的三、软件设计 先对硬件8255 8253进行初始化且用adc0809第一次采样,通过8255的pc4端口查询8253的定时时间是否已到,若到则对8253接口2重新初始化

4、且用adc0809模/数转换器采样,不到则继续七段数码管显示与led灯和蜂鸣器的过程,最后若有键按下则返回dos,否则返回继续查询pc4端口、循环。主程序流程图: 七段数码管流程图 红黄灯及蜂鸣器程序如下: mov cl,shuju cmp cl,60 ;采样得来的数据与30和60进行比较,不在它们之间的红黄灯、蜂鸣器报警 jnc li cmp cl,30 jc xiong jmp exit li: or al,08h call beep jmp exitxiong: or al,04h call beepexit: mov dx,io8255a ;通过8255c端口输出到led灯 out d

5、x,al 采样子程序 mov bx,0 mov cx,3 xun: mov dx,io0809 out dx,alpush cxmov cx,0ffh ;延时delay1: loop delay1pop cx in al,dx mov ah,0 mov dl,5 ;将采样数据转化为0-75之间的温度值 mul dl mov dl,17 div dlmov ah,0 add bx,ax ;循环三次取样loop xun mov ax,bx mov cl,3div cl;取三次数据后平均值 mov shuju,al mov ah,0 mov cl,10div cl mov di,offset buf

6、fer1 ;将采样三次得出的均值的个位与十位分别存在buffer与buffer+1中mov di,ahmov di+1,al四、讨论和感想 首先感受最深的的是汇编的基础一定要扎实,否则很容易出现低级错误,比如说一些死循环之类的东西。 我们这组最开始的时候连硬件检测都没做就直接执行程序,当然做不出什么来的。后来又入入续续发现了一些低级错误,不过都一步步改正了。还有就是主程序一定要简洁易读,最好事先画好流程图。硬件不要频繁初始化,最好是在程序开头就全部初始化完毕,像8255 8253一类。 为保证程序易读、便于添加和修改,必要的注释是很好的,子程序中最好开头和结尾对子程序中用到的寄存器都进行入出栈

7、操作,这能有效的防止一些低级错误。以上是我碰到的问题及其解决方法、心得体会。五、源程序的清单: data segmentioportequ 0c400h-0280hio8255aequ ioport+28ah ;8255c口地址io8255bequ ioport+28bh ;8255控制寄存器地址io8255c equ ioport+288h;8255a口地址io0832a equ ioport+290hio8253aequ ioport+283h;8253工作方式控制寄存器地址io8253bequ ioport+281h;计数器1io8253cequ ioport+282h;计数器2io08

8、09 equ ioport+298h ;蜂鸣器led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 0,0 ;存放要显示的十位和个位bz dw ? ;位码data1 db 80h,0,0,0,0,0,0,0 db 0ffh,0,0,0,0,0,0,0 db 80h,0,0,0,0,0,0,0 db 00h,0,0,0,0,0,0,0;红灯正弦波数据data2 db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h db

9、 80h,66h,4eh,38h,25h,15h,09h,04h db 00h,04h,09h,15h,25h,38h,4eh,66h;黄灯正弦波数据shuju db 0 ;存放采样三次后的均值data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255b ;将8255设为a口输出 c高4位输入低四位输出mov al,88h out dx,al moval,70h ;设8253通道1工作方式0movdx,io8253aoutdx,al movax,100 ;写入计数器初值2000movdx

10、,io8253boutdx,almov al,ahoutdx,al moval,0b6h ;设8253通道2工作方式3movdx,io8253aoutdx,al movax,1000 ;写入计数器初值500movdx,io8253coutdx,almoval,ahoutdx,alcall adcy panduan: mov dx,io8255a ;从8255的c口输入 in al,dx and al,10h jz xianshi ;pc4不为1跳到显示 call delaycall adcyxianshi: call qiduan push ax ;led灯与蜂鸣器程序段 push cx pu

11、sh dx mov cl,shuju cmp cl,60 jnc li cmp cl,30 jc xiong jmp exit li: or al,08h call beep jmp exitxiong: or al,04h call beepexit: mov dx,io8255a out dx,al pop dx pop cx pop ax mov dx,0ffh mov ah,06int 21hje panduan;有按键退出 否则循环 mov ah,4ch ;返回int 21hqiduan procnear ;七段数码管子程序 push dipush sipush bxpush cxp

12、ush dxmov di,offset buffer1 ;设di为显示缓冲区loop2:mov bh,02lll: mov byte ptr bz,bhpush didec diadd di, bzmov bl,di ;bl为要显示的数pop di mov al,0 mov dx,io8255a out dx,al mov bh,0mov si,offset led ;置led数码表偏移地址为siadd si,bx ;求出对应的led数码mov al,byte ptr simov dx,io8255c ;自8255a的口输出 out dx,al mov al,byte ptr bz ;使相应的

13、数码管亮mov dx,io8255a ;位选变化out dx,almov cx,3000delay2: loop delay2 ;延时 mov bh,byte ptr bz shr bh,1 jnz lll pop dx pop cx pop bx pop si pop di ret ;子程序返回qiduan endpadcy procnear ;ad采样子程序push axpush bxpush cxpush dxpush dimov bx,0 mov cx,3 xun: mov dx,io0809 out dx,alpush cxmov cx,0ffh ;延时delay1: loop de

14、lay1pop cx in al,dx mov ah,0 mov dl,5 mul dl mov dl,17 div dlmov ah,0 add bx,ax ;循环三次取样loop xun mov ax,bx mov cl,3div cl;取三次数据后平均值 mov shuju,al mov ah,0 mov cl,10div cl mov di,offset buffer1mov di,ahmov di+1,alpop dipop dxpop cxpop bxpop axretadcy endpdelay procnearpushax ;8253初始化pushdxmoval,70h ;设8253通道0工作方式0movdx,io8253aoutdx,al movax,500 ;写入计数器初值500movdx,io8253boutdx,almoval,ahoutdx,al popdxpopaxret ;子程序返回delay endpbeep proc near ;蜂鸣器子程序push cxpush axpush dxpush si mov cx,60 ;取60次32个正弦波数据dd:mov si,0

温馨提示

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

评论

0/150

提交评论