北京理工大学微机原理综合设计实验数字电压表A.docx
- 文档编号:18449957
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:10
- 大小:503.76KB
北京理工大学微机原理综合设计实验数字电压表A.docx
《北京理工大学微机原理综合设计实验数字电压表A.docx》由会员分享,可在线阅读,更多相关《北京理工大学微机原理综合设计实验数字电压表A.docx(10页珍藏版)》请在冰点文库上搜索。
北京理工大学微机原理综合设计实验数字电压表A
北京理工大学-微机原理综合设计实验-数字电压表A
微机原理与接口技术
实验报告
实验内容:
微机原理综合设计实验
数字电压表A
组别:
31
姓名:
12届黄大师
班级:
xxxxxxxxx
学号:
xxxxxxxxxx
一、实验目的
1、掌握8255的使用及编程原理。
2、掌握8253定时/计数器的编程原理。
3、掌握ADC0809的使用方法。
4、掌握共阴极七段数码管的工作原理。
5、加强多芯片的综合运用。
6、加强汇编语言程序设计。
二、实验内容
利用ADC0809采集电位器的电压值,将采集的电压值通过8255显示在七段数码管上,显示数据保留小数点后2位,利用8253定时数据更新,每隔0.5秒数据更新一次。
扩展要求:
具有设置报警阈值功能,当超过阈值时,点亮一个LED灯。
三、实验方法
1、设计思路
先利用ADC0809采集电位器的电压值,此时的电压值在AL中,但其真正的值应该为5/255*AL伏。
根据要求保留小数点后2位,利用程序先将AL乘以500/255,约为196,即将电压值扩大100倍,先除以100,得到最高位,再依次除以10,得到小数点后第一,二位,分别存在连续的三个存储单元中。
定义0-9共阴极七段数码管的显示码数据段,再通过8255依次选通3个数码管,通过8255依次送入刚才所得的三个值的显示码。
利用8253工作在方式二,每隔0.5秒产生一低脉冲送到8255,利用程序检验,每隔0.5秒才调用电压采集程序。
对于扩展要求可利用74LS273实现。
实验简单主要原理图如下:
将可变电位器AN0与ADC0809的ADIN0相连,将CS2与ADC0809的片选CS0809端相连,将ADC0809的EOC与8255的PC0相连,CS0与8253的片选CS8253相连,CLK3(750KHz)与8253CLK0相连,8253的OUT0与8253CLK2相连,OUT2与8255的PA0相连,CS1与8255的片选CS8255相连,PC4-PC6与LED1-LED3依次相连,PB0-PB7依次与LED-A—LED-DP相连。
2、程序流程图
N
Y
四、实验源程序
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVAX,0H
MOVDS,AX
MOVSI,2000H;定义从0:
2000H开始的存储单元
MOVDX,04B6H
MOVAX,91H
OUTDX,AX;初始化8255,使B口输出,A口输入,C口低四位输入,高四位输出
MOVDX,04A6H
MOVAX,36H;计数器0,方式3-方波,低八位,后高八位,二进制
OUTDX,AX
MOVDX,04A0H
MOVAX,720
OUTDX,AL
MOVAH,AL
OUTDX,AL
二位的数码管显示码
MOVDX,04B4H
MOVAL,0E0H
OUTDX,AL;选通LED1数码管
MOVDX,04B2H
MOVAL,BL
OUTDX,AL ;通过B口送入显示码
CALLDELAY
MOVSI,2000H
MOVBL,DS:
[SI+1]
MOVBH,0 ;取出电压值小数点后第一位
LEASI,TABLE
ADDSI,BX
MOVBL,CS:
[SI] ;得到电压值小数点后第一位的数码管显示码
MOVAL,0D0H
MOVDX,04B4H
OUTDX,AL ;选通LED2数码管
MOVDX,04B2H
MOVAL,BL
OUTDX,AL ;通过B口送入显示码
CALLDELAY
MOVSI,2000H
MOVBL,DS:
[SI]
MOVBH,0 ;取出电压值个位值
LEASI,TABLE1
ADDSI,BX
MOVBL,CS:
[SI] ;得到电压值个位值的数码管显示码
MOVAL,0B0H
MOVDX,04B4H
OUTDX,AL ;选通LED3数码管
MOVDX,04B2H
MOVAL,BL
OUTDX,AL ;通过B口送入显示码
CALLDELAY
MOVDX,04B0H
INAL,DX
ANDAL,00000001
CMPAL,0 ;PA0是否接收到一低电平
JNZL1 ;PA0没有接收到低电平,跳到数码管显示程序
JMPL2 ;PA0接收到低电平,跳到电压采集程序
DELAY:
MOVBP,100H ;延时程序
DELAY1:
DECBP
CMPBP,0
JNEDELAY1
RET
GETAD:
PUSHDX
MOVAX,34H ;启动A/D
OUTDX,AX
CALLDELAY
MOVDX,04B4H;指向8255C口地址
WAIT1:
INAX,DX;读进EOC状态
TESTAX,1
JZWAIT1
POPDX
INAX,DX;读A/D值
MOVAH,0
MOVCX,AX
MOVAL,51
MOVBL,4;电压阈值在此修改
MULBL
CMPAX,CX
JCL3
MOVAL,01H
MOVDX,4D0H;指向74LS273
OUTDX,AL;若小于阈值则灯灭
L3:
MOVAL,0
MOVDX,4D0H
OUTDX,AL;若大于阈值则灯亮
MOVAX,CX
MOVBL,0C4H
MULBL
MOVBX,0001H
MULBX
MOVBL,64H
MOVBH,0
DIVBX
DIVBL
MOVDS:
[SI],AL;得到个位值存入0:
2000H
MOVAL,AH
MOVAH,00H
MOVBL,0AH
DIVBL
MOVDS:
[SI+1],AL;得到小数点后第一位值存入0:
2001H
MOVDS:
[SI+2],AH;得到小数点后第一位值存入0:
2002H
RET
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;0-9的八段数码管显示码
TABLE1:
DB0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH;0-9的DP点亮八段数码管显示码
CODEENDS
ENDSTART
五、实验结果
实验结果如下图:
扩展要求结果如下图:
从图中可以看出实现了电压值的保留两位小数显示,最大值为4.99,最小值为0。
并且当其值超过阈值4伏时,点亮了LED灯,实现扩展要求。
六、实验中遇到的问题及解决方法
1、在没使用8253实现定时更新时,数码管的显示不是很清楚,不该亮的地方会微亮,在每个数码管显示后调用延时函数得到了解决。
2、在利用8253实现定时更新时,一开始的想法是利用方式3产生周期为一秒的方波,接到ADC0809的START管脚,后来一接触实验箱发现其已内接了。
在利用8253方式2频率发生器每隔0.5秒产生一个负脉冲,接到8255的A口检验,若为0,则进行电压采集再显示,否则一直显示上一次的电压值。
七、心得体会与建议
通过这次微机原理综合设计实验,加强理论到实际应用,加深8255,8253等芯片的编程及使用,以及多芯片综合使用实现一定功能,有一定难度,但锻炼了我们各方面能力。
这一实验十分具有意义,应该让每届学生都进行。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京理工大学 微机 原理 综合 设计 实验 数字 电压表