资源描述
序号:
课 程 设 计
(微机原理及应用A)
二○一一 年 七 月 八 日
课程设计任务书及成绩评估
课题名称 压力测控系统设计
I、题目目和规定:
设计一种对压力传感器信号进行检测并在LED数码显示屏上显示压力值系统,当压力低于30pa时,黄灯闪烁,闪烁周期为1秒。当压力高于150pa时,红灯闪烁。LED显示内容为P=XXX。X为测试值。
II、设计进度及完毕状况
日 期
内 容
7月4日
查阅资料,拟定设计方案。
7月5日
选课程设计题目,编写程序。
7月6日
设计总体方案,上机调试。
7月7日
整顿打印设计报告。
7月8日
上交设计报告并进行答辩。
III、重要参照文献及资料
《微型计算机原理及应用》 清华大学出版社 郑学坚 周斌
《微型计算机技术及应用》清华大学出版社 史嘉权
《微机原理与接口技术基本与应用》海洋出版社 邓振杰
《微机原理与接口技术实验及课程设计》西南交通大学出版社 杨斌
《单片机原理及接口技术》 清华大学出版社 梅丽凤 王艳秋
学科部主任 (签字)
Ⅵ、成绩评估:
设计成绩: (教师填写)
指引教师: (签字)
二○一一 年 七 月 八 日
一、设计规定
设计一种对压力传感器信号进行检测并在LED数码显示屏上显示压力值系统,当压力低于30pa时,黄灯闪烁,闪烁周期为1秒。当压力高于150pa时,红灯闪烁。LED显示内容为P=XXX。X为测试值。
二.设计思想
压力测试系统设计,必然要牵涉到压力感应与转化,因此必要要有压力传感与A/D转换器。将自然中模仿量转化为电压信号,再转化位数字信号进行解决。一种小型微机系统,必要要有8086cpu来进行整体控制,将其通过8255与A/D传感器进行连接。这就是这个系统重要框架。
而详细应用框架则是在重要框架上添加。要当压力低于30pa时,黄灯闪烁。当压力高于150pa时,红灯闪烁。则应添加8255。模块。通过编程来控制黄灯与红灯亮灭状况,考虑到要进行比较,因此我用了两个比较器进行数据比较。同步,由于灯要闪烁,闪烁周期要一秒,因此咱们考虑到还要加一种8253芯片去控制。但依照个人状况,这个模块我省略了。而至于LED显示,且显示内容为三位。我只在程序之中体现,而在硬件图中没有去体现。
三.系统设计框图
模数转换单元ADC0809
CPU中央解决器
8086
并行接口芯片8255
不不大于150Pa
红灯闪烁
不大于30Pa
黄灯闪烁
显示数字
三位数码显示管
压力传感器
四.程序流程图
开始
8255初始化
采集模仿数据
启动AD转化
XXX
红灯闪烁
黄灯闪烁
都不亮
显示
五.源程序
;宏定义
addr_8253 equ 208h
a_8253 equ addr_8253
b_8253 equ addr_8253+1h
ctrl_8253 equ addr_8253+3h
addr_adc0809 equ 210h
addr_8255 equ 200h
a_8255 equ addr_8255
b_8255 equ addr_8255+1h
c_8255 equ addr_8255+2h
ctrl_8255 equ addr_8255+3h
;******************************************
code segment
assume cs:code,ds:code
start:
mov ax,cs
mov ds,ax
;******************************************
;8253产生方形波,周期为1s,通道0
mov dx,ctrl_8253 ;设立8253控制口
mov al,3eh ;控制字00111110 00表达计时器0;11表达先读写低八位,后写读高八位; X11表达工作在模式3; 0表达二进制计数
out dx,al ;写控制字
mov dx,a_8253 ;设立计数初值(计数器0)
mov ax,1000d
out dx,al ;先写低八位,后写高八位
mov al,ah
out dx,al
;8253产生方形波,周期为1s,通道1
mov dx,ctrl_8253 ;设立8253控制口
mov al,7eh ;控制字01111110 01表达计时器1;11表达先读写低八位,后写读高八位; X11表达工作在模式3; 0表达二进制计数
out dx,al ;写控制字
mov dx,b_8253 ;设立计数初值(计数器1)
mov ax,500d
out dx,al ;先写低八位,后写高八位
mov al,ah
out dx,al
;******************************************
;启动A/D
mov dx,addr_adc0809 ;ADC0809
out dx,al
;******************************************
disp:
;8255初始化
;A口做为段码输出,B口做为位码输出,C口低2位做为有色灯输出
mov dx,ctrl_8255 ;8255初始化
mov al,80h ;控制字 10000000 1表达方式控制字;00端口A方式0;0输出;0PC7-PC4 输出;0定义端口B为0 输出;0 PC0-PC3 输出
out dx,al ;写控制字
repeat:
;初始化地址指针和位码
lea bx,TABLE ;段码表首址送bx Load effect address——取有效地址,也就是取偏移地址
lea di,BUFDA ;指向缓冲区首地址 Load effect address——取有效地址,也就是取偏移地址
mov cl,0dfh ;11011111b 位码,共阴极,便于从第六位开始向低位依次显示
next: ;显示子程序
;输出位码
mov dx,b_8255 ;8255B口,输出位码
mov al,cl
out dx,al
mov al,[di] ;从缓冲区取段码
xlat
mov dx,a_8255 ;输出段码到8255A口
out dx,al
;延迟
push cx
mov cx,30h
delay:
loop delay
pop cx
;关LED显示
mov dx,a_8255
mov al,0
out dx,al
cmp cl,11111110b ;已经显示最低位
jz convey ;显示完毕
inc di ;指向下一种段码
ror cl,1 ;显示向低一位转移
jmp next
convey:
;延时,以便LED显示成果及有色灯闪烁
cmp count,0 ;count在背面定义
jz adcall ;延时时间到,开始下一次数据采样
dec count ;延时时间未到
jmp repeat ;******************jmp convey
;******************************************
;ADC0809接受模仿信号并转化为数字信号
adcall:
call ad
mov count,0ffh ;设立下一次数据采集时间间隔
jmp repeat
TABLE: ;段码表
db 3fh;0
db 06h;1
db 5bh;2
db 4fh;3
db 66h;4
db 6dh;5
db 7dh;6
db 07h;7
db 7fh;8
db 6fh;9
db 73h;P
db 48h;=
db 00h;NULL
BUFDA: ;显示缓冲区
db 10,11,12,12,12,0 ;初始显示P= 0
count dw 0ffh
;******************************************
ad proc
;读取AD转换成果并启动AD
push ax
push bx
push cx
push dx
push di
mov dx,addr_adc0809 ;通道0
;读成果
in al,dx ;数字量存储在al中
;启动A/D
out dx,al ;启动下一次ad转换
push ax
;******************************************
;依照数字量值判断有色灯与否要亮
cmp al,30d
jb yellow ;不大于30 不大于则转移到目的指令执行
cmp al,150d
ja red ;不不大于150 不不大于则转移到目的指令执行
mov dx,ctrl_8255 ;8255控制口
push ax
mov al,00h ;介于30和150之间,PC0输出低电平
out dx,al
pop ax
jmp red_yellow
;******************************************
red: mov dx,c_8255 ;控制口
mov al,02h ;8255 PC1输出高电平
out dx,al
jmp red_yellow
yellow: mov dx,c_8255 ;控制口
mov al,01h ;8255 PC0输出高电平
out dx,al
red_yellow:
pop ax
mov ah,0
;******************************************
;将数字量转换成十进制,以便显示
call binidec
pop di
pop dx
pop cx
pop bx
pop ax
ret
ad endp
;******************************************
binidec proc
;将存储于AL中数转换为十进制数存储到BUFDA中
push ax
mov ah,0 ;ax=al
mov bl,10
mov cx,4 ;
lea di,BUFDA+5 ;指向显示缓冲区末尾
binidec_next:
div bl ;al:商,ah:余数
mov [di],ah
dec di
dec cx
mov ah,0
cmp al,0
jnz binidec_next
binidec_null:
mov byte ptr [di],12
dec di
loop binidec_null
pop ax
ret
binidec endp
;******************************************
code ends
end start
六、设计心得
通过一周微机课程设计,让我对微机这一门课程有了系统疏导。在学习这门课程是咱们只是独立解说某些芯片构造及用法,而通过微机课程设计,在咱们在构建一种小型微机系统时,而真正去关注这些芯片连接。这不但规定咱们对各个芯片要有一定理解与认知。并且要懂得怎么融会贯通。这是我在这次微机实习中体会最深。其二,通过微机课程设计,培养了咱们想问题思维方式。此前咱们想问题时总是将某些问题孤立出来去思考,而这次实习,她引导咱们以多维方式去解析整个问题。在课程设计中,咱们不但要理解好系统构造,进而画出硬件连接图、并且要写出程序流程图及源程序就,这些虽然是不同体现形式,但她们必要用统一思想去结识。其三,通过对压力测试系统设计,让咱们更加理解了CPU8086、ADC0809、8255等芯片用法,同步,也对汇编语言编程有了更加进一步结识。为后来单片机学习奠定了一定基本。最后,我通过课程设计认知了团队合伙重要性。通过与搭档交流,让我对有些此前不是很熟悉内容有了提高。同步在与之合伙中,让我对工程这个概念有了新结识,由于在后来工作中咱们都必要面对与团队合伙。只有在寻常,咱们多去与人交流。才干提高咱们这个能力。总之,一周微机课程设计尽管很短,但让咱们受益颇多。
设计硬件电路图
展开阅读全文