您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 北京理工大学_微机原理综合设计实验_数字电压表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、程序流程图四、实验源程序CODESEGMENTPUBLICASSUMECS:CODEORG100HSTART:MOVAX,0HMOVDS,AXMOVSI,2000H;定义从0:2000H开始的存储单元MOVDX,04B6HMOVAX,91HOUTDX,AX;初始化8255,使B口输出,A口输入,C口低四位输入,高四位输出MOVDX,04A6HMOVAX,36H;计数器0,方式3-方波,低八位,后高八位,二进制OUTDX,AXMOVDX,04A0HNYYN开始初始化调用A/D转换电压值转换并存储依次送入显示码依次选通数码管PA0=0?电压值阈值?LED灯亮LED灯灭MOVAX,720OUTDX,ALMOVAH,ALOUTDX,ALMOVDX,04A6HMOVAX,0B5H;计数器2,方式2-频率发生器,低八位,后高八位,二进制OUTDX,AXMOVDX,04A4HMOVAX,501OUTDX,ALMOVAH,ALOUTDX,AL;OUT2每0.5秒输出一个低电平到PA0L2:MOVSI,2000HMOVDX,4C0H;指向通道0CALLGETAD;调用A/D转换子程序,取得A/D值L1:MOVSI,2000HMOVBL,DS:[SI+2]MOVBH,0;取出电压值小数点后第二位LEASI,TABLEADDSI,BXMOVBL,CS:[SI];得到电压值小数点后第二位的数码管显示码MOVDX,04B4HMOVAL,0E0HOUTDX,AL;选通LED1数码管MOVDX,04B2HMOVAL,BLOUTDX,AL;通过B口送入显示码CALLDELAYMOVSI,2000HMOVBL,DS:[SI+1]MOVBH,0;取出电压值小数点后第一位LEASI,TABLEADDSI,BXMOVBL,CS:[SI];得到电压值小数点后第一位的数码管显示码MOVAL,0D0HMOVDX,04B4HOUTDX,AL;选通LED2数码管MOVDX,04B2HMOVAL,BLOUTDX,AL;通过B口送入显示码CALLDELAYMOVSI,2000HMOVBL,DS:[SI]MOVBH,0;取出电压值个位值LEASI,TABLE1ADDSI,BXMOVBL,CS:[SI];得到电压值个位值的数码管显示码MOVAL,0B0HMOVDX,04B4HOUTDX,AL;选通LED3数码管MOVDX,04B2HMOVAL,BLOUTDX,AL;通过B口送入显示码CALLDELAYMOVDX,04B0HINAL,DXANDAL,00000001CMPAL,0;PA0是否接收到一低电平JNZL1;PA0没有接收到低电平,跳到数码管显示程序JMPL2;PA0接收到低电平,跳到电压采集程序DELAY:MOVBP,100H;延时程序DELAY1:DECBPCMPBP,0JNEDELAY1RETGETAD:PUSHDXMOVAX,34H;启动A/DOUTDX,AXCALLDELAYMOVDX,04B4H;指向8255C口地址WAIT1:INAX,DX;读进EOC状态TESTAX,1JZWAIT1POPDXINAX,DX;读A/D值MOVAH,0MOVCX,AXMOVAL,51MOVBL,4;电压阈值在此修改MULBLCMPAX,CXJCL3MOVAL,01HMOVDX,4D0H;指向74LS273OUTDX,AL;若小于阈值则灯灭L3:MOVAL,0MOVDX,4D0HOUTDX,AL;若大于阈值则灯亮MOVAX,CXMOVBL,0C4HMULBLMOVBX,0001HMULBXMOVBL,64HMOVBH,0DIVBXDIVBLMOVDS:[SI],AL;得到个位值存入0:2000HMOVAL,AHMOVAH,00HMOVBL,0AHDIVBLMOVDS:[SI+1],AL;得到小数点后第一位值存入0:2001HMOVDS:[SI+2],AH;得到小数点后第一位值存入0:2002HRETTABLE: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点亮八段数码管显示码CODEENDSENDSTART五、实验结果实验结果如下图:扩展要求结果如下图:从图中可以看出实现了电压值的保留两位小数显示,最大值为4.99,最小值为0。并且当其值超过阈值4伏时,点亮了LED灯,实现扩展要求。六、实验中遇到的问题及解决方法1、在没使用8253实现定时更新时,数码管的显示不是很清楚,不该亮的地方会微亮,在每个数码管显示后调用延时函数得到了解决。2、在利用8253实现定时更新时,一开始的想法是利用方式3产生周期为一秒的方波,接到ADC0809的START管脚,后来一接触实验箱发现其已内接了。在利用8253方式2频率发生器每隔0.5秒产生一个负脉冲,接到8255的A口检验,若为0,则进行电压采集再显示,否则一直显示上一次的电压值。七、心得体会与建议通过这次微机原理综合设计实验,加强理论到实际应用,加深8255,8253等芯片的编程及使用,以及多芯片综合使用实现一定功能,有一定难度,但锻炼了我们各方面能力。这一实验十分具有意义,应该让每届学生都进行。
本文标题:北京理工大学_微机原理综合设计实验_数字电压表A
链接地址:https://www.777doc.com/doc-3161724 .html