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

时间:2024.3.23

《微机原理与接口技术》

课程设计

姓名:        黄涛        

学号:     0945531222    

班级:     09电信2班    

专业:     电子信息工程   

学院: 电气与信息工程学院 

江苏科技大学张家港校区

20##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设置中断。基本思路:当到定时时间时产生中断信号,进入中断采集电压数据。采集的数据转化后保存到内存空间里,返回主程序后在数码管上显示。

二  实践部分

(一)  系统硬件原理简介

1       模数(A/D)转换器ADC0809

1.1  概述

ADC0809是采样分辨率为8位的、以逐次逼近原理进行模—数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A / D转换。

1.2  主要特性

1)     8路输入通道,8位A/D转换器,即分辨率为8位。

2)     具有转换起停控制端。

3)     转换时间为100μs

4)     单个+5V电源供电

5)     模拟输入电压范围0~+5V,不需零点和满刻度校准。

6)     工作温度范围为-40~+85摄氏度

7)       


低功耗,约15mW。

图3 ADC0809引脚图

2       可编程中断控制器8259A

2.1 概述

    8259A是专门为了对8085A和8086/8088进行中断控制而设计的芯片,它是可以用程序控制的中断控制器。单个的8259A能管理8级向量优先级中断。在不增加其他电路的情况下,最多可以级联成64级的向量优先级中断系统。8259A有多种工作方式,能用于各种系统。各种工作方式的设定是在初始化时通过软件进行的。 在总线控制器的控制下,8259A芯片可以处于编程状态和操作状态.编程状态是CPU使用IN或OUT指令对8259A芯片进行初始化编程的状态

2.2  8259A引脚图

图4 8259A引脚图

2.3  主要功能

   在有多个中断源的系统中,接受外部的中断请求,并进行判断,选中当前优先级最高的中断请求,再将此请求送到CPU的INTR端;当CPU响应中断并进入中断子程序的处理过程后,中断控制器仍负责对外部中断请求的管理。

3 并行接口8255A

3.1   概述

Intel 8086/8088 系列的可编程外设接口电路(Programmable Peripheral Interface)简称 PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。

3.2  8255A工作方式

l  方式0:基本输入输出方式

适用于无条件传送和查询方式的接口电路

l  方式1:选通输入输出方式

适用于查询和中断方式的接口电路

l  方式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 计数器Intel8254

5.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=(输入电压/参考电压)*256

5、经过A / D转换后的数字量是八位二进制数,通过以下程序转换为原始电压值

MOV     BL,0C4H    ;乘以5/256*10000=196

        MUL     BL         ;AX=AL*BL,得16位结果

        PUSH    AX         ;压栈,存入结果

        MOV     BX,0001H

        POP     AX

        MUL     BX         ;将AX扩展为32位,结果在DX:AX中

        MOV     BX,64H    ;100

        DIV     BX        ;DX:AX/BX,得32位,商在AX中,余数在DX中

        DIV     BL        ;AX/BL,得16位,商在AL中,余数在AH中

        MOV     [SI],AL   ;整数部分,结果放进NUM

        MOV     SI,OFFSET NUM      ;段码地址,指向七段码表

        MOV     AL,AH

        MOV     AH,00H

        MOV     BL,0AH

        DIV     BL;再除10

        MOV     [SI+1],AL ;AL中为小数点后第一位

        MOV     [SI+2],AH ;AH中为小数点后第二位

6、通过8255A输出在三位LED数码管上,程序如下:(后两位同理)

        MOV     AL,[SI]

        MOV     DI,OFFSET  LEDDMAP  ;段码地址,查表,显示第一位包括小数点

        MOV     AH,0

        ADD     DI,AX

        MOV     AL,[DI]

        MOV     DX,PORTA

        OUT     DX,AL

        MOV     DX,PORTC  ;位选

        MOV     AL,00000100B

        OUT     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_IVADD      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 ENDS

DATA  SEGMENT  DB  3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,

7CH,39H,5EH,79H,71H

CUN              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 ENDS

CODE  SEGMENT

       ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

       MOV DS,AX

       MOV SI,OFFSET CUN

       CALL MY_8259                  ;初始化8259,完成设置

       CALL MY_8254      

       CALL MY_0809                   ;第一次采集电压

QUERY: CALL DISPLAY1                 ;显示电压

          MOV  AH,1                      ;判断是否有按键按下

       INT  16H

       JNZ  QUIT                      ;有按键则退出

          MOV  DX,MY8259_OCW3         ;向8259的OCW3发送查询命令

       MOV  AL,0CH

       OUT  DX,AL

       IN   AL,DX                   ;读出查询字

       TEST AL,80H                  ;判断中断是否已响应

       JZ   QUERY                  ;没有响应则继续查询

          CALL MY_0809

          CALL DISPLAY1

       CALL MY_8259                     

       JMP  QUERY

QUIT:  MOV AX,4C00H              ;结束程序退出

       INT 21H

MY_8254 PROC NEAR

       MOV DX,MY8254_MODE         ;初始化8254工作方式

       MOV AL,0B6H                ;计数器2,方式3

       OUT DX,AL               

       MOV DX,MY8254_COUNT2       ;装入计数初值

       MOV AL,64H                 ;100分频

       OUT DX,AL

       MOV AL,00H

       OUT DX,AL

       MOV DX,MY8254_MODE         ;初始化8254工作方式

       MOV AL,36H                 ;计数器0,方式3

       OUT DX,AL       

       MOV DX,MY8254_COUNT0       ;装入计数初值

       MOV AL,00H                 ;18432分频

       OUT DX,AL

       MOV AL,48H

       OUT DX,AL  

       MOV DX,MY8254_MODE            ;初始化8254工作方式

       MOV AL,74H                    ;计数器1,方式0

       OUT DX,AL            

       MOV DX,MY8254_COUNT1       ;装入计数初值

      ; MOV AH,01H

       ;INT 21H

       ;SUB AL,30H

       MOV AL,08H                 ;计数8秒

       OUT DX,AL

       MOV AL,00H

       OUT DX,AL    

       RET

MY_8254 ENDP   

MY_8259 PROC NEAR 

       MOV  DX,MY8259_ICW1         ;初始化实验系统中8259的ICW1

       MOV  AL,13H                 ;边沿触发、单片8259、需要ICW4

       OUT  DX,AL

       MOV  DX,MY8259_ICW2         ;初始化实验系统中8259的ICW2

       MOV  AL,08H

       OUT  DX,AL

       MOV  DX,MY8259_ICW4         ;初始化实验系统中8259的ICW4

       MOV  AL,01H                 ;非自动结束EOI

       OUT  DX,AL

       MOV  DX,MY8259_OCW1         ;初始化实验系统中8259的OCW1

       MOV  AL,0FEH                ;打开IR0屏蔽位

       OUT  DX,AL

       RET

MY_8259 ENDP   

MY_0809  PROC NEAR                 ;采样

     PUSH DX

     PUSH CX

        PUSH AX

     MOV DX,AD0809             ;启动A/D转换

        OUT DX,AL

        CALL DALLY

     MOV DX,AD0809             ;读A/D转换结果

     IN  AL,DX

    MOV CH,AL                 ;分析结果进行显示

    AND AL,0F0H

       MOV CL,04H

       SHR AL,CL                  ;取出数据的十位

       MOV BX,OFFSET DATA

    XLAT

    MOV [SI],AL

       MOV AL,CH              

       AND AL,0FH                ;取出数据的各位

    MOV BX,OFFSET DATA

    XLAT

       INC SI

       MOV [SI],AL    

    POP AX

    POP CX

       POP DX

        RET

MY_0809 ENDP   

DISPLAY1 PROC NEAR     

    PUSH AX

    PUSH DX

    MOV  DX,MY8255_MODE         ;初始化8255工作方式

    MOV  AL,81H               ;方式0,A口、B口输出,C口低4位输入 

       OUT  DX,AL

    MOV  AL,[SI]       

       MOV DX,MY8255_B

       OUT DX,AL

       MOV AL,02H

    MOV DX,MY8255_A

       OUT DX,AL

       CALL DALLY

       DEC SI

       MOV AL,[SI]

       MOV DX,MY8255_B

       OUT DX,AL

       MOV AL,01H

    MOV DX,MY8255_A

       OUT DX,AL

    CALL DALLY

    INC SI

       POP DX

       POP AX

DISPLAY1 ENDP

DALLY PROC NEAR                      ;软件延时子程序

       PUSH CX

          PUSH AX

          MOV CX,4000H

D1:    MOV AX,0300H

D2:    DEC AX

          JNZ D2

          LOOP D1

          POP AX

          POP CX

          RET

DALLY ENDP

CODE ENDS

     END START

附录2:电路连接实物图

图8 电路接线实物图

 

图9 电路接线实物图

附录3:仿真电路图

图10 软件仿真图

更多相关推荐:
数字电压表的课程设计报告

智能仪表综合课程设计摘要本文介绍了一种基于单片机的简易数字电压表的设计该设计主要由三个模块组成AD转换模块数据处理模块及显示模块AD转换主要由芯片ADC0832来完成它负责把采集到的模拟量转换为相应的数字量在传...

数字电压表课程设计报告

湖南科技大学信息与电气工程学院课程设计报告课程单片机原理及应用题目数字电压表专业班级姓名学号任务书1数字电压表的概述数字电压表DigitalVoltmeter简称DVM它是采用数字化测量技术把连续的模拟量直流输...

数字电压表课设报告

单片机原理及系统课程设计专业自动控制班级自控控1203姓名苏龙学号20xx09429指导教师闵永智兰州交通大学自动化与电气工程学院20xx年12月31日单片机原理及系统课程设计报告基于单片机的数字电压表设计1设...

单片机的数字电压表课程设计报告

课程设计报告一题目基于单片机的数字电压表二内容和要求内容利用带有ADC的STC12C5A60S2单片机1602LCD显示器设计一个数字电压表要求4位数码LCD显示测量范围05V带8位LED可自行添加器件实现其它...

单片机课程设计报告数字电压表

课题名称单片机课程设数字电压表课程原理1模数转换原理试验中我们选用ADC0809作为模数转换的芯片其为逐次逼近式AD转换式芯片其工作时需要一个稳定的时钟输入根据查找资料得到ADC0809的时钟频率在10KHZ1...

数字电压表的课程设计报告

桂林电子科技大学课程设计论题目数字电压表设计院系信息与通信学院专业通信工程姓名曾中羽指导老师陈明职称教授20xx年12120文月日桂林电子科技大学摘要本设计为直流数字电压表设计设计初共参考了二种方案由于设计的要...

电子电路课程设计报告--数字电压表

河北建筑工程学院课程设计报告课程名称电子技术综合课程设计题目名称312位数字电压表系电气系专业班级学号学生姓名指导教师职称高级实验师20xx年7月10日1目录一课程设计的目的二课程设计的具体要求和技术指标三数字...

数字电子技术课程设计报告格式、任务书

数字电子技术基础课程设计任务书专业电气工程及其自动化班级10电气本科班12专升本学号姓名指导教师二零一二年十一月二十六日目录居中宋体2号加粗空两行1页码2页码要求给出一级目录宋体加粗四号字15倍行距报告正文部分...

数字电压表 课程设计 实验报告

设计题目数字电压表电路的设计专业班级学号20xx23419xx姓名申前垒指导教师数字电压表电路设计报告一题目及设计要求1题目数字电压表2利用双积分式AD转换器ICL7107设计一数字电压表量程为19991999...

小学期数字电压表课程设计报告

东北石油大学课程设计东北石油大学课程设计任务书课程硬件课程设计题目数字电压表设计专业主要内容基本要求等一主要内容利用EL教学实验箱微机和Quartus软件系统使用VHDL语言输入方法设计数字钟可以利用层次设计方...

单片机数字电压表课程设计报告

内容摘要电压表是测量仪器中不可缺少的设备目前广泛应用的是采用专用集成电路实现的数字电压表本系统以增强型8051单片机为核心设计了一款简易的数字电压表能够测量05V的直流电压最小分辨率为002V该设计大体分为以下...

数字电压表单片机课程设计报告

编号单片机课程设计报告书课题数字电压表院系机电工程学院专业电气工程及其自动化学生姓名闫奥博学号120xx20xx4题目类型理论研究实验研究工程设计工程技术研究软件开发20xx年1月6日桂林电子科技大学课程设计报...

数字电压表课程设计报告(25篇)