微机原理课设报告.docx

上传人:b****5 文档编号:3577771 上传时间:2022-11-24 格式:DOCX 页数:21 大小:2.17MB
下载 相关 举报
微机原理课设报告.docx_第1页
第1页 / 共21页
微机原理课设报告.docx_第2页
第2页 / 共21页
微机原理课设报告.docx_第3页
第3页 / 共21页
微机原理课设报告.docx_第4页
第4页 / 共21页
微机原理课设报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

微机原理课设报告.docx

《微机原理课设报告.docx》由会员分享,可在线阅读,更多相关《微机原理课设报告.docx(21页珍藏版)》请在冰豆网上搜索。

微机原理课设报告.docx

微机原理课设报告

中南大学

微机原理课程设计报告

模拟电压采集与直流电机控制

陈甜

梁建武

信息科学与工程学院

通信1303班

0905130323

题目

学生姓名

指导老师

学院

专业班级

学号

 

一、课程设计目的

通过本次课程设计要掌握8088,8255,0809,0832,8279等多种芯片使用的方法,灵活运用课本知识,加深所学的知识,对所学的相关芯片的原理、内部结构、使用方法等有更加深刻的了解,学会利用课本知识联系实际应用及编程。

同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。

 

二、课程设计任务

本次课设选题为“模拟电压采集,直流电机控制”。

根据我自己对这个课题的理解,我认为这个课题应该实现以下的要求:

基本要求:

1、对模拟电压进行采集转换为数字信号,并实时显示。

2、用转换的到的数字信号再经数模转换,对直流电机进行控制。

拓展要求:

1、通过发光二极管作为信号指示灯,实时的指示直流电机的工作状态是否正常。

2、建立报警电路,对电机非正常工作情况以及反转工作情况下进行报警。

 

三、设计思想与原理

1、设计思想

本次课设选题为“模拟电压采集,直流电机控制”,基本分为两大部分:

模拟量采集的模数转换部分,以及电机控制中的数模转换部分。

而为了让模拟量的采集结果更加明显可察,将加入数码管显示模块,实时显示模拟量采集的大小情况。

与此同时,在选题基础上添加了直流电机工作状态指示灯电路和报警电路。

 

2、设计原理

根据试验箱相关配置,取电位器0~5V可调电压为模拟量输出模块,可线性调节输出。

取芯片ADC0809对采集到的模拟信号进行模数转换,将0~5V的电压信号转为00~FF的数字信号,并通过8279键盘扫描输出模块进行相应的显示输出。

得到转换后的数字量之后,使用DAC0832数模转换芯片进行数模转换,并将所得模拟量输出到直流电机控制端,进行电机驱动。

对于添加的模块,主要通过8255芯片来实现,取8255的PA0口作为输出端口,连接试验箱上的开关量输入显示区的发光二极管。

对A口分别赋值01H(直流电机正向非正常工作)、02H(直流电机正常工作)、04H(直流电机反向非正常工作)并输入给开关量输入显示区的发光二极管,驱动前三个二极管在电机的三种工作状态下分别发光,从而实现指示灯电路。

对于报警电路,只要从开关量输入显示区取得相应电平变化量输送给电子音响驱动控制区的信号输入端,即完成报警电路的设计。

 

四、具体模块设计

1、概述

本系统设计以8088微处理器作为CPU,用ADC0809进行模数转换,DAC0832进行数模转换,8255进行电机选择及步进电机控制,8279进行显示输出,即主要包括四大模块:

A/D模块,8255控制模块,D/A模块以及显示模块,通过中央8088全局调制,如下图Fig.1。

每一个模块分别对应着试验箱上的相应的模块化芯片。

A/D转换模块对应芯片ADC0809

控制模块对应芯片8255

CPU模块对应8088

D/A模块对应芯片DAC0832

显示模块对应芯片8279

2、A/D转换

A/D模块主要由ADC0809芯片以及模拟电位器组成。

ADC0809是一种8路模拟输入,8路数字输出的逐次逼近法A/D器件,转换时间约为100us,转换精度为+1/512,适用于多路数据采集系统。

ADC0809芯片片选信号接入8088译码输出Y6,CLK信号接入500KHz时钟,IN0接入0~5V可调模拟电位器作为模拟信号输入。

具体工作过程中,只需将端口对应赋值,并将转换值输出即可,代码如下:

TEST1:

INAL,DX;初始转换开始的检测

ANDAL,80H;测试0809芯片的EOC位是否为0,为0则表示上次AD转换完成则可以开始这次的AD转换

JNZTEST1

ADCON:

MOVAX,00

MOVDX,ADPORT;ADPORT为ADC0809端口地址0060H,使0809的片选端口为低电平,则0809可以工作

OUTDX,AL

MOVDX,ADPORT;将转换好的数据读入8088

INAL,DX

MOVCL,AL

3、8255控制模块

8255控制模块主要包含以下功能:

首先对8255进行方式控制字的初始化过程,对8255的端口地址进行复制,如下:

IOCONPTEQU0003H;8255的控制端口地址

IOAPTEQU0000H;8255通道A的地址

写方式控制字,通过8086拓展Y0口对8255写方式控制字89H,即10001001,

PA0口工作在方式1,用作数据输出,C口用作数据输入,初始化过程如下:

DELAY0:

MOVAL,89H

MOVDX,IOCONPT

OUTDX,AL;对8255控制端口写控制字

NOP;什么也不做,暂停一下

NOP

NOP

通过模数转换得到的数字量在数码管上进行显示之后,取出数字量,并与事先设定好的门限电压30H和0D0H做比较,其中30H和0D0H将00H-FFH分成了三段,这三段电压驱动下的直流电机的转动状态分别对应发光二极管指示灯的三个灯的亮与暗,当数字量大于0D0H时,对PA0口写入01H并输出给开关量输入显示区,驱动第一个发光二极管发光;当数字量小于30H时,对PA0口写入04H并输出给开关量输入显示区,驱动第三个二极管发光;当数字量介于30H和0D0H之间的时候,对PA0口写入02H并输出给开关量输入显示区,驱动第二个二极管发光,实现对电机工作状态的只是,代码如下:

 

POPAX

COUNT:

CMPAL,0D0H

JATT1;转换后的数字量大于0D0H则转向

CMPAL,30H

JBTT2

PUSHAX

MOVDX,IOAPT

MOVAL,02H

OUTDX,AL

POPAX

JMPCONTINUE

TT1:

PUSHAX

MOVDX,IOAPT

MOVAL,01H

OUTDX,AL

POPAX

JMPCONTINUE

TT2:

PUSHAX

MOVDX,IOAPT

MOVAL,04H

OUTDX,AL

POPAX

CONTINUE:

MOVCL,AL

4、D/A转换模块

D/A转换模块主要由数模转换芯片DAC0832组成,0832片选端接入8088译码输出Y7,同时将输出端输入直流电机输入端,这样将之前转换所得到的数字量进行二次转换,在转换为模拟量。

由于之前的A/D模块将0~5V的电压转换成了00H到FFH的数字量,而0832会将这些数字量当成有符号数进行转换,这也就是直流电机控制过程中会出现反转的原因。

代码如下:

PUSHAX;AL为之前转换得到的数字量

MOVDX,DAPOT;端口赋值

OUTDX,AL;端口输出

POPAX

5、输出显示模块

输出显示模块主要由8279以及8个数码管组成。

对于8279,试验箱上已经将片选,时钟等引脚固化了,因此不许链接太多,只需将8279对应位与数码管链接即可。

8179控制的数码管初始设定为“0809--00”,在后面接入A/D信号之后最后两位随着电位器输入大小的变化而相应的从00变化到FF。

代码中主要涉及ADCONTORL,CONVERS,LEDDISP等部分。

对8279写控制字:

MOVDX,CONTPORT;8279的控制端口

MOVAL,00H

OUTDX,AL;设置键盘显示方式,00000000代表8字符显示,左端输入,编码扫描,键盘输入。

MOVAL,2AH

OUTDX,AL;设置8279动态扫描频率,00101010代表10分频系数

MOVAL,0d0h

OUTDX,AL;8279CLEAR

MOVAL,90h

OUTDX,AL;写显示RAM前设置的写地址命令,10010000代表RAM开始地址为0000,自动增一。

涉及的代码部分:

CONVERS:

MOVBH,0H

ANDAL,0FH;AL是模拟量转换后的值,取AL的低四位

MOVBL,AL

MOVAL,CS:

[BX+DATA2]

MOVBX,DATA1+7;将AL的低四位显示到第八个数码管

MOVDS:

[BX],AL

DECBX;BX为第七个数码管

PUSHBX

MOVAL,CL

MOVCL,04H

SHRAL,CL

MOVBL,AL

MOVBH,0H

MOVAL,CS:

[BX+DATA2]

POPBX

MOVDS:

[BX],AL;高四位显示到第七个数码管

RET;扫描最后两个数码管

LEDDISP:

MOVAL,90H

MOVDX,CONTPORT

OUTDX,AL;八个数码管全亮

MOVBYTEPTRDS:

[0600H],00

LED1:

CMPBYTEPTRDS:

[0600H],07H

JALED2

MOVBL,DS:

[0600H]

MOVBH,0H

MOVAL,CS:

[BX+DATA1]

MOVDX,DATAPORT

OUTDX,AL

ADDBYTEPTRDS:

[0600H],01H

JNZLED1

LED2:

RET;从左到右依次扫描数码管传送

这是我第一次接触8279芯片,通过学习运用,比较熟练的掌握了8279的结构和使用。

关于8279芯片:

8279A是一种通用的可编程键盘/显示器接口器件,可对64个开关矩阵组成的键盘进行自动扫描,接收键盘上的输入信息,存入内部的FIFO寄存器,并在有键输入时,CPU请求中断。

8279A内部还有一个16×8的显示缓冲器,能对8位或16位LED自动扫描,使显示缓冲器的内容在LED上显示出来。

1、引脚功能

DB0~DB7:

双向数据总线,以便和CPU之间传递命令、数据和状态。

CLK:

时钟输入线,以产生内部时钟。

RESET:

复位线,高电平有效。

复位后,8279A置为16位显示左边输入,编码扫描键盘,时钟系数为31。

/CS:

片选,低电平有效。

A0:

地址输入线,用以区分数据线传送的是数据还是命令。

A0=0传送的是数据;A0=1传送的是命令。

/RD:

读信号线,低有效,内部缓冲器信息送DB0~DB7。

/WR:

写信号线,低有效。

收数据总线上的信息写入内部缓冲区。

IRQ:

中断请求输出线,高有效。

当FIFORAM中有键输入数据时,IRQ升为高电平,向CPU请求中断。

CPU读出FIFORAM时,IRQ变为低电平,若RAM中数据还有,IRQ又返回高电平,直至RAM中为空,IRQ才保持低电平。

SL0~SL3:

输出扫描线,用以对键盘/传感器矩阵和显示器进行扫描。

RL0~RL7:

键盘/传感器矩阵的行(列)数据输入线。

其内部有拉高电阻,使之保持高电平。

SHIFT:

换档输入线,内部有拉高电阻,使之保持高电平。

CNTL/STB:

控制/选通输入线,内部有拉高电阻,使之保持高电平。

OUTA0~OUTA3:

四位输出口。

OUTB0~OUTB3:

四位输出口。

这两个口是16×4显示器更新寄存器的输出端,输出的数据和SL0~SL3上信号同步,用于多位显示器显示。

/BD:

显示消隐输出线,低电平有效。

Vcc:

地。

2、8279A内部结构

(1)8279A内部具有时序控制逻辑,通过控制和时序寄存器存放键盘和显示器的工作方式和其他状态信息。

内部还包含有N分频器,分频系数为N,由2~31之间任一数可编程确定,对CLK上时钟进行N分频以产生基本的100KHZ的内部计数信号(扫描时间为5.1ms,去抖动时间为10.3ms)。

(2)8279A内部的扫描计数器有两种工作方式:

一是编码方式,计数器以二进制方式计数,4位计数器的状态直接从SL0~SL3上输出,由外部译码对SL0~SL3译码产生键盘和显示的扫描信号,高电平有效;二是译码方式,对计数器的低二位译码后从SL0~SL3上输出,作为4×8键盘和4位显示器的扫描信号,低电平有效。

(3)8279A在键盘工作时,由输入缓冲区锁存RL0~RL7上的信息,以确定键入情况,其内部有去抖动电路(10ms)。

(4)FIFO/传感器RAM:

它是一个双功能8×8RAM,在键盘和选通输入方式中,它是一个先进先出的数据缓冲器。

当/CS=0,A0=1,/RD=0时,读出FIFO的内容,FIFO中有数据时,由控制电路发IRQ信号,在传感方式中,8×8RAM用作传感器RAM,当检测到某个传感器发生变化时,IRQ上升为高电平。

(5)显示地址寄存器和显示RAM:

用于存放CPU当前正在读写的显示RAM单元地址,以及正在显示的两个4位半字节地址。

在选定了工作方式和地址后,CPU可直接读出显示RAM中的内容。

3、8279A的控制命令

(1)键盘显示器方式设置命令

*RESET后,设定为该种方式。

(2)扫描频率控制命令

*RESET后,P4~P0=31

(3)读FIFO前设置的读地址命令

(4)读显示RAM前设置的读地址命令

(5)写显示RAM前设置的写地址命令

(6)显示RAM写入禁止/消隐命令(BCD码显示用)

显示RAM的位与输出引脚的对应关系:

(7)清除FIFO状态字、显示RAM清除命令

说明:

清除显示RAM约需160us,此时FIFO状态字最高位Du=1,表示显示无效,CPU不能向显示RAM写入数据。

(8)中断结束/出错方式设置命令

4、FIFO状态字

FIFO状态字由控制字口读入

五、调试结果与分析

5.1调试结果

程序正常运行之后,实验板如下图所示:

 

电机部分如下图:

 

报警部分如下图:

数码管显示当前电压输入量的数字量XX,完整显示为“0809--XX”,其中XX为当前电压模数转换之后的数字量。

显示结果如下图:

 

当电机正常工作时(如下图1),指示灯区正常显示,如下图2:

图2

 

当驱动电压低于门限电压30H时(如下图1),直流电机反向非正常工作,此时指示灯显示如下图2:

图1

图2

 

电机停止转动时的数字量如下图:

5.2结果分析

1、本方案设置显示的数字量只是模拟电压模数转换后的数字量,无法通过这数字量直观的反映直流电机的转速。

2、由于此方案的最后定稿是最后两次实验上机时,因此,时间唐突,没有将定时计数器合理的加入到电路中,因此无法完成对直流电机转速的测定。

3、该电路门限电压设置不十分完美,只有反向、非正常工作的最大电压,当驱动电压在零附近的时候并不能驱动直流电机正常工作,这种情况不能很好的从指示灯上反映出来,还有待完善。

 

六、心得体会

在本次课程设计中,总的来说,收获颇丰,不仅加深了对接口方面知识的理解更加强了自己的实际操作能力。

经过本次设计,现在能较为熟练的使用8255,0809,0832,8279等芯片进行相应功能的开发。

微机原理与接口技术是一门很实用的课程,无论学习多么复杂的计算机系统都会应用到在这门课上学习到的思想方法。

这次课题并不困难,主要的困难来自如何准确、充分应用我们所掌握的芯片知识,并配合硬件原理图编写相应汇编程序。

硬件设计主要采用了8255A接口电路。

由于对各个芯片不熟悉,通过课本复习它们的引脚及功能、工作方式、内部结构和控制字。

然后就是对程序的设计,想要设计出一个实用的控制系统需要了解程序流程,先画出了流程图,然后对代码进行编写,主要采用汇编语言最后对程序,硬件电路进行仿真调试。

但这个过程中还是收获到了很多。

当然在整个过程中也遇到了很多问题,比如:

1、调试过程中找不到OBJ文件,经常在修改代码编译之后,OBJ文件就莫名的消失了,后来经过多次实验,发现可能是代码存在一些逻辑或者其他的小问题,这些问题虽然不影响编译,但会影响OBJ文件的生成。

最后通过代码的逐行添加编译,最后解决了这个问题。

2、8255A口,没有输出。

在二极管指示灯控制部分,对PA0口写入了控制字之后,A口完全没有频率输出,没法驱动指示灯正常发光。

之后再修改代码的过程中发现,代码在栈操作上存在一些问题,与此同时似乎所用的试验箱上8255A口似乎存在一些小问题,不能很好地反映输入量。

由于时间有限,没能再进行更多功能的添加,但经过之后的修改,应该可以实现整体功能的实现了。

3、试验箱与电脑总是连接不上,相信着也是大家一致的问题。

经过一段时间的使用与研究,我认为导致连接不稳定的主要原因是,8088主芯片版温度过高影响稳定性,为解决这个问题,可以尝试将主芯片版拔下放在通风阴凉处静置一会,或者放在空调附近吹一会。

建议不用的时候关掉试验箱电源,避免芯片长时间上电发热。

七、完整源代码

CODESEGMENT

ASSUMECS:

CODE

IOCONPTEQU0003H

IOAPTEQU0000H

ADPORTEQU0060H

DAPORTEQU0070H

CONTPORTEQU00DFH

DATAPORTEQU00DEH

DATA1EQU0500H

ORG1000H

START:

DATA2DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB7FH,6FH,77H,7CH,39h,5EH,79h,71h

 

ADCONTORL:

CLI

MOVAX,0H

MOVDS,AX

MOVAL,5BH

MOVBX,DATA1

MOVDS:

[BX],AL

ADDBX,01H

MOVAL,3FH

MOVDS:

[BX],AL

ADDBX,01H

MOVAL,06H

MOVDS:

[BX],AL

ADDBX,01H

MOVAL,66H

MOVDS:

[BX],AL

ADDBX,01H

MOVAL,40H

MOVDS:

[BX],AL

ADDBX,01H

MOVAL,40H

MOVDS:

[BX],AL

ADDBX,01H

MOVAL,00H

MOVDS:

[BX],AL

ADDBX,01H

MOVAL,00H

MOVDS:

[BX],AL

ADDBX,01H

MOVDX,CONTPORT

MOVAL,00H

OUTDX,AL;KEYBORDDISPLYMODE

MOVAL,2AH

OUTDX,AL;8279CLOCK

MOVAL,0d0h

OUTDX,AL;8279CLEAR

MOVAL,90h

OUTDX,AL;READFIFORAMCOMMAND

TEST1:

INAL,DX

ANDAL,80H

JNZTEST1

 

MOVAX,0H

MOVDS,AX

ADCON:

MOVAX,00

MOVDX,ADPORT

OUTDX,AL

MOVCX,0500H

DELAY:

LOOPDELAY

MOVDX,ADPORT

INAL,DX

PUSHDX

MOVDX,DAPORT

OUTDX,AL

POPDX

PUSHAX

DELAY0:

MOVAL,89H

MOVDX,IOCONPT

OUTDX,AL

NOP

POPAX

COUNT:

CMPAL,0D0H

JATT1

CMPAL,30H

JBTT2

PUSHAX

MOVDX,IOAPT

MOVAL,02H

OUTDX,AL

POPAX

JMPCONTINUE

TT1:

PUSHAX

MOVDX,IOAPT

MOVAL,01H

OUTDX,AL

POPAX

JMPCONTINUE

TT2:

PUSHAX

MOVDX,IOAPT

MOVAL,04H

OUTDX,AL

POPAX

CONTINUE:

MOVCL,AL

CALLCONVERS

CALLLEDDISP

JMPADCON

CONVERS:

MOVBH,0H

ANDAL,0FH

MOVBL,AL

MOVAL,CS:

[BX+DATA2]

MOVBX,DATA1+7

MOVDS:

[BX],AL

DECBX

PUSHBX

MOVAL,CL

MOVCL,04H

SHRAL,CL

MOVBL,AL

MOVBH,0H

MOVAL,CS:

[BX+DATA2]

POPBX

MOVDS:

[BX],AL

RET

LEDDISP:

MOVAL,90H

MOVDX,CONTPORT

OUTDX,AL

MOVBYTEPTRDS:

[0600H],00

LED1:

CMPBYTEPTRDS:

[0600H],07H

JALED2

MOVBL,DS:

[0600H]

MOVBH,0H

MOVAL,CS:

[BX+DATA1]

MOVDX,DATAPORT

OUTDX,AL

ADDBYTEPTRDS:

[0600H],01H

JNZLED1

LED2:

RET

 

CODEENDS

ENDSTART

 

八、参考文献

1、梁建武,《微机原理与接口技术》,中国水利水电出版社

2、钱晓捷,陈涛,《16/32位微机原理、汇编语言及接口技术(第二版)》.

机械工业出版社

3、《微机原理与接口技术实验指导书》。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1