当前位置:文档之家› 微机原理课程设计_简单数字电压表的设计

微机原理课程设计_简单数字电压表的设计

《微机原理与接口技术》课程设计姓名:**学号:**********班级:09电信2班专业:电子信息工程学院:电气与信息工程学院江苏科技大学张家港校区2012年6月目录一理论部分 (2)1课题要求与内容 (2)2 系统方案设计 (2)3 系统硬件的设计 (3)二实践部分 (4)1 系统硬件原理简介 (4)2 系统硬件调试中出现的问题及解决措施 (8)3 系统软件 (8)3.1 软件设计 (8)3.2软件调试中出现的问题及解决措施 (10)三附录 (11)数字电压表的设计一理论部分1 课题要求与内容基本要求:(1)使用AD0809获取电压数据。

(2)数据在数码管上面实时显示。

(3)通过按键设置采样时间,比如60秒采集一次。

(4)采样时间计时结束后产生中断,采集电压数据。

附加要求:(1)通过串口在PC上的串口调试助手显示实时电压信号。

2 系统方案设计本电路采用模块化设计,主要由A/D转换模块、控制模块和LED显示模块组成.图 1 数字电压表原理框图框图功能说明基准电源:提供A/D转换参考电压,基准电压的精度和稳定性是影响转换精度的主要因素。

A/D电路:A/D转换器是数字电压表的核心部件,由它完成模拟量转换为数字量的任务。

译码驱动电路:将二--十进制(BCD)码转换成七段供LED发光显示信号。

显示电路:将译码器输出的七段信号进行数字显示,即A/D转换结果。

积分RC元件:通过对RC元件的选取,控制测量量程。

字位驱动电路:根据A/D器上DS4~DS1端的位选信号,控制显示部分个、十、百、千位哪一位上进行显示。

3 系统硬件设计本电路采用模块化设计,主要由A/D转换模块、控制模块和LED显示模块组成(如图1.0)。

外部电压图2 系统总体硬件框图设计的基本思想和顺序利用0809采集电压数据,将模拟电压信号数字电压信号。

8255通过I/O控制两位数码管显示采集电压值。

8254设置采样频率。

8359设置中断。

基本思路:当到定时时间时产生中断信号,进入中断采集电压数据。

采集的数据转化后保存到内存空间里,返回主程序后在数码管上显示。

8259A是专门为了对8085A和8086/8088进行中断控制而设计的芯片,它是可以用程序控制的中断控制器。

单个的8259A能管理8级向量优先级中断。

在不增加其他电路的情况下,最多可以级联成64级的向量优先级中断系统。

8259A有多种工作方式,能用于各种系统。

各种工作方式的设定是在初始化时通过软件进行的。

在总线控制器的控制下,8259A芯片可以处于编程状态和操作状态.编程状态是CPU使用IN或OUT指令对8259A芯片进行初始化编程的状态2.2 8259A引脚图图4 8259A引脚图2.3 主要功能在有多个中断源的系统中,接受外部的中断请求,并进行判断,选中当前优先级最高的中断请求,再将此请求送到CPU的INTR端;当CPU响应中断并进入中断子程序的处理过程后,中断控制器仍负责对外部中断请求的管理。

3 并行接口8255A3.1概述Intel 8086/8088 系列的可编程外设接口电路(Programmable Peripheral Interface)简称PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。

它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。

8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。

3.2 8255A工作方式●方式0:基本输入输出方式适用于无条件传送和查询方式的接口电路●方式1:选通输入输出方式适用于查询和中断方式的接口电路●方式2:双向选通传送方式适用于与双向传送数据的外设适用于查询和中断方式的接口电路3.3 8255A引脚图图5 8255A引脚图4数码管4.1 数码管结构图(a)七段式LED(b) 共阳极LED (c) 共阴极LED图6七段式LED显示部件数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。

共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。

共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。

当某一字段的阴极为高电平时,相应字段就不亮。

共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。

共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。

当某一字段的阳极为低电平时,相应字段就不亮。

5 计数器Intel82545.1 概述8254 芯片是一款使用十分广泛的可编程定时,计数芯片,其主要功能是定时和计数的功能。

是8253的改进型,比8253具有更优良的性能。

与大多数微处理器兼容;技术频率从支流到10MHz;有6种可编程计数器方式;3个独立的16位计数器,二进制或十进制(BCD)计数;任一引脚对地电压-0.5~7V.5.2 Intel8254的引脚图与逻辑引脚图图7 8254的引脚图对8254的编程通常只需注意两点:先写控制字,再写计数初值;计数初值必须遵循控制字中设定的格式(只有低字节或只有高字节或者先低后高,由RW1,RW0规定)。

只有当CPU向8254 控制字寄存器写入控制字后,即对其初始化之后, 8254 才能正常地工作。

写入控制字后,所有控制逻辑电路将立即复位,输出端OUT立即进入初始状态。

接着向计数器的计数初值寄存器中写计数初值,在写入初值后, 需要经过一个时钟脉冲后, 计数器才开始在脉冲下降沿进行减1计数。

通常在时钟脉冲的上升沿时,门控信号GATE被采样。

当A1,A0=11时,控制字寄存器被选择,控制字寄存器中的SC1,SC0则决定着(0 ~ 2)计数器中哪个会被选中以写计数初值。

2 系统硬件调试中出现的问题及解决措施实验中,在连接总电路之前我们运用实验系统提供的实验程序将实验箱各个模块芯片检查了一遍.确定各个芯片和电位器能够正常工作之后开始连接总的电路.(1)连接好电路图后运行程序数码管显示不太稳定.重新检查电路,发现有些导线接触不良甚至损坏,更换损坏导线重新运行程序直至数码管显示稳定.(2)连接好电路后发现调节电位器数码管显示不改变。

首先检查整个电路,发现电路正常;转而检查程序是否有问题,发现有个子程序参数设置错误,设置了错误的终端屏蔽端口。

纠正之后重新连接中断部分电路之后运行程序,发现当调节电位器之后,在一个计数周期之后,数码管的显示值会变化电路正常。

3 系统软件3.1 软件设计1、整个程序源代码包括定义数据段,定义代码段、子程序及主程序内容。

子程序中包括延时子程序、中断服务子程序及8259A初始化主程序。

2、A / D转换器从启动转换到转换结束需要一定时间。

为了得到正确的转换结果,必须在转换结束之后才能去读取数字量,这就是时间配合。

常用三种方法实现时间配合,有:延时等待法、查询法和中断法。

中断法是当ADC转换结束,用转换结束信号作为中断请求信号向CPU提出中断请求,CPU相应中断,在中断服务子程序中读取转换结果。

3、此次设计中我使用的是中断法。

将ADC0809的转换结束指示引脚EOC 输出信号作为中断请求信号,送中断控制器8259A,占用一个终端类型号n,在中断服务程序里读取转换结果。

4、A / D转换中IN0单极性输入电压与转换后数字的关系为N=(输入电压/参考电压)*2565、经过A / D转换后的数字量是八位二进制数,通过以下程序转换为原始电压值MOV BL,0C4H ;乘以5/256*10000=196MUL BL ;AX=AL*BL,得16位结果PUSH AX ;压栈,存入结果MOV BX,0001HPOP AXMUL BX ;将AX扩展为32位,结果在DX:AX中MOV BX,64H ;100DIV BX ;DX:AX/BX,得32位,商在AX中,余数在DX中DIV BL ;AX/BL,得16位,商在AL中,余数在AH中MOV [SI],AL ;整数部分,结果放进NUMMOV SI,OFFSET NUM ;段码地址,指向七段码表MOV AL,AHMOV AH,00HMOV BL,0AHDIV BL;再除10MOV [SI+1],AL ;AL中为小数点后第一位MOV [SI+2],AH ;AH中为小数点后第二位6、通过8255A输出在三位LED数码管上,程序如下:(后两位同理)MOV AL,[SI]MOV DI,OFFSET LEDDMAP ;段码地址,查表,显示第一位包括小数点MOV AH,0ADD DI,AXMOV AL,[DI]MOV DX,PORTAOUT DX,ALMOV DX,PORTC ;位选MOV AL,00000100BOUT DX,AL ;选通第一位数码管,整数位CALL DELAY总程序见附录一3.2 软件调试中出现的问题及解决措施(1)编写程序时候有细微语法错误,结合运行时软件纠错提示,发现并改正;(2)部分子程序未达到设定要求,无法产生想要的结果;整理思路,重新构思程序的设计,与他人交流,修改程序。

(3)编写好的程序没有实现要求的全部功能,无法实现通过按键设置采样时间,只能在程序里面事先设置好采样时间,不可以用小键盘设置并显示。

最后,由于时间和精力问题,此功能未能得以实现。

总结:通过本次课程设计,使我们加深了对微机接口技术这一门课程的理解,在思路的构思,方案的设定、动手操作方面都有较大的提升。

还增强了我们的团队协作能力。

还有,能够熟练的运用TD-PIT++这个软件来调试运行已编号的程序和调节实验箱。

更重要的是通过这次课程设计,使我们能够熟练理解书本上所学的代码并运用到电路的设计中去。

这就是理论与实践的转变。

三附录附录1 参考程序清单;T0809.asm;A/D转换实验IOY0 EQU 3000H ;片选IOY0对应的端口始地址IOY1 EQU 3040H ;片选IOY0对应的端口始地址AD0809 EQU IOY1 ;AD0809的端口地址MY8255_A EQU IOY0+00H*4 ;8255的A口地址MY8255_B EQU IOY0+01H*4 ;8255的B口地址MY8255_C EQU IOY0+02H*4 ;8255的C口地址MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址IOY2 EQU 3080H ;片选IOY0对应的端口始地址MY8254_COUNT0 EQU IOY2+00H*4 ;8254计数器0端口地址MY8254_COUNT1 EQU IOY2+01H*4 ;8254计数器1端口地址MY8254_COUNT2 EQU IOY2+02H*4 ;8254计数器2端口地址MY8254_MODE EQU IOY2+03H*4 ;8254控制寄存器端口地址IOY3 EQU 30C0H ;片选IOY0对应的端口始地址MY8259_ICW1 EQU IOY3+00H ;实验系统中8259的ICW1端口地址MY8259_ICW2 EQU IOY3+04H ;实验系统中8259的ICW2端口地址MY8259_ICW3 EQU IOY3+04H ;实验系统中8259的ICW3端口地址MY8259_ICW4 EQU IOY3+04H ;实验系统中8259的ICW4端口地址MY8259_OCW1 EQU IOY3+04H ;实验系统中8259的OCW1端口地址MY8259_OCW2 EQU IOY3+00H ;实验系统中8259的OCW2端口地址MY8259_OCW3 EQU IOY3+00H ;实验系统中8259的OCW3端口地址INTR_IV ADD EQU 01C8H ;INTR对应的中断矢量地址INTR_OCW1 EQU 0A1H ;INTR对应PC机内部8259的OCW1地址INTR_OCW2 EQU 0A0H ;INTR对应PC机内部8259的OCW2地址INTR_IM EQU 0FBH ;INTR对应的中断屏蔽字STACK1 SEGMENT STACK DB 256 DUP(?)STACK1 ENDSDATA SEGMENT DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HCUN DB 256 DUP(?)MES DB 'Press number to set interrupt time!',0AH,0DH,0AH,0DH,'$'CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量IM_BAK DB ? ;保存INTR原中断屏蔽字的变量DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV SI,OFFSET CUNCALL MY_8259 ;初始化8259,完成设置CALL MY_8254CALL MY_0809 ;第一次采集电压QUERY: CALL DISPLAY1 ;显示电压MOV AH,1 ;判断是否有按键按下INT 16HJNZ QUIT ;有按键则退出MOV DX,MY8259_OCW3 ;向8259的OCW3发送查询命令MOV AL,0CHOUT DX,ALIN AL,DX ;读出查询字TEST AL,80H ;判断中断是否已响应JZ QUERY ;没有响应则继续查询CALL MY_0809CALL DISPLAY1CALL MY_8259JMP QUERYQUIT: MOV AX,4C00H ;结束程序退出INT 21HMY_8254 PROC NEARMOV DX,MY8254_MODE ;初始化8254工作方式MOV AL,0B6H ;计数器2,方式3OUT DX,ALMOV DX,MY8254_COUNT2 ;装入计数初值MOV AL,64H ;100分频OUT DX,ALMOV AL,00HOUT DX,ALMOV DX,MY8254_MODE ;初始化8254工作方式MOV AL,36H ;计数器0,方式3OUT DX,ALMOV DX,MY8254_COUNT0 ;装入计数初值MOV AL,00H ;18432分频OUT DX,ALMOV AL,48HOUT DX,ALMOV DX,MY8254_MODE ;初始化8254工作方式MOV AL,74H ;计数器1,方式0OUT DX,ALMOV DX,MY8254_COUNT1 ;装入计数初值; MOV AH,01H;INT 21H;SUB AL,30HMOV AL,08H ;计数8秒OUT DX,ALMOV AL,00HOUT DX,ALRETMY_8254 ENDPMY_8259 PROC NEARMOV DX,MY8259_ICW1 ;初始化实验系统中8259的ICW1MOV AL,13H ;边沿触发、单片8259、需要ICW4OUT DX,ALMOV DX,MY8259_ICW2 ;初始化实验系统中8259的ICW2MOV AL,08HOUT DX,ALMOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4MOV AL,01H ;非自动结束EOIOUT DX,ALMOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1MOV AL,0FEH ;打开IR0屏蔽位OUT DX,ALRETMY_8259 ENDPMY_0809 PROC NEAR ;采样PUSH DXPUSH CXPUSH AXMOV DX,AD0809 ;启动A/D转换OUT DX,ALCALL DALLYMOV DX,AD0809 ;读A/D转换结果IN AL,DXMOV CH,AL ;分析结果进行显示AND AL,0F0HMOV CL,04HSHR AL,CL ;取出数据的十位MOV BX,OFFSET DATAXLATMOV [SI],ALMOV AL,CHAND AL,0FH ;取出数据的各位MOV BX,OFFSET DATAXLATINC SIMOV [SI],ALPOP AXPOP CXPOP DXRETMY_0809 ENDPDISPLAY1 PROC NEARPUSH AXPUSH DXMOV DX,MY8255_MODE ;初始化8255工作方式MOV AL,81H ;方式0,A口、B口输出,C口低4位输入OUT DX,ALMOV AL,[SI]MOV DX,MY8255_BOUT DX,ALMOV AL,02HMOV DX,MY8255_AOUT DX,ALCALL DALLYDEC SIMOV AL,[SI]MOV DX,MY8255_BOUT DX,ALMOV AL,01HMOV DX,MY8255_AOUT DX,ALCALL DALLYINC SIPOP DXPOP AXDISPLAY1 ENDPDALLY PROC NEAR ;软件延时子程序PUSH CXPUSH AXMOV CX,4000H D1: MOV AX,0300H D2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALLY ENDPCODE ENDSEND START附录2:电路连接实物图图8 电路接线实物图图9 电路接线实物图附录3:仿真电路图图10 软件仿真图。

相关主题