微机原理课设报告文档格式.docx
- 文档编号:16483104
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:21
- 大小:2.17MB
微机原理课设报告文档格式.docx
《微机原理课设报告文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理课设报告文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
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
将转换好的数据读入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
通过模数转换得到的数字量在数码管上进行显示之后,取出数字量,并与事先设定好的门限电压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
JMPCONTINUE
TT1:
PUSHAX
MOVAL,01H
TT2:
MOVAL,04H
CONTINUE:
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
设置键盘显示方式,00000000代表8字符显示,左端输入,编码扫描,键盘输入。
MOVAL,2AH
设置8279动态扫描频率,00101010代表10分频系数
MOVAL,0d0h
8279CLEAR
MOVAL,90h
写显示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
MOVBH,0H
POPBX
[BX],AL;
高四位显示到第七个数码管
RET;
扫描最后两个数码管
LEDDISP:
MOVAL,90H
MOVDX,CONTPORT
八个数码管全亮
MOVBYTEPTRDS:
[0600H],00
LED1:
CMPBYTEPTRDS:
[0600H],07H
JALED2
MOVBL,DS:
[0600H]
[BX+DATA1]
MOVDX,DATAPORT
ADDBYTEPTRDS:
[0600H],01H
JNZLED1
LED2:
从左到右依次扫描数码管传送
这是我第一次接触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
电机停止转动时的数字量如下图:
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
ADDBX,01H
MOVAL,3FH
MOVAL,06H
MOVAL,66H
MOVAL,40H
OUTDX,AL;
KEYBORDDISPLYMODE
8279CLOCK
8279CLEAR
READFIFORAMCOMMAND
TEST1:
INAL,DX
ANDAL,80H
JNZTEST1
MOVAX,00
MOVDX,ADPORT
MOVCX,0500H
DELAY:
LOOPDELAY
PUSHDX
MOVDX,DAPORT
POPDX
MOVDX,IOCONPT
JATT1
CALLCONVERS
CALLLEDDISP
JMPADCON
MOVBH,0H
ANDAL,0FH
MOVBX,DATA1+7
DECBX
RET
CODEENDS
ENDSTART
八、参考文献
1、梁建武,《微机原理与接口技术》,中国水利水电出版社
2、钱晓捷,陈涛,《16/32位微机原理、汇编语言及接口技术(第二版)》.
机械工业出版社
3、《微机原理与接口技术实验指导书》。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)