微机原理课程设计波形发生器.docx
- 文档编号:5603823
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:18
- 大小:246.56KB
微机原理课程设计波形发生器.docx
《微机原理课程设计波形发生器.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计波形发生器.docx(18页珍藏版)》请在冰豆网上搜索。
微机原理课程设计波形发生器
微机原理课程设计
波形发生器
基本要求:
(1)通过按键选择波形,波形选择(方波、三角波)。
8255A和0832
(2)通过按键设定波形的频率,同时波形频率在数码管上显示。
8255A
(3)频率设定后,通过8253精确计时来设置波形宽度大小,比如方波的占空比。
(4)8259A产生中断,用示波器显示输出波形。
附加要求:
(1)通过按键可以增大或者降低频率;
(2)显示正弦波。
一理论部分
1.1课程设计的目的………………………………………………………………………2
1.2课程设计要求与内容…………………………………………………………………2
1.3总体设计方案…………………………………………………………………………2
(1)设计思想及方案论证………………………………………………………………2
(2)总体设计方案框图…………………………………………………………………3
1.4系统硬件设计…………………………………………………………………………4
1.5系统软件设计…………………………………………………………………………5
二实践部分
2.1系统硬件原理简介……………………………………………………………………6
2.2程序调试………………………………………………………………………………9
2.3软件系统的使用说明…………………………………………………………………9
三课程设计结果分析
3.1实验结果………………………………………………………………………………10
3.2结果分析………………………………………………………………………………11
四课程设计总结………………………………………………………………………11
五附录
5.1源程序及说明…………………………………………………………………………12
波形发生器
一理论部分
1.1课程设计的目的
(1)综合模拟电子线路、数字电子技术和微机原理等多门专业基础课程的知识,使学生对以计算机为核心的通信、测量或控制系统有个全面了解和实践的过程。
(2)掌握常规芯片的使用方法、掌握简单微型计算机应用系统软硬的设计方法,进一步锻炼同学们在微型计算机应用方面的实际工作能力,强化本学科内容并扩展知识面。
(3)体验分析问题、提出解决方案、通过编程等手段实现解决方案、不断调试最终达到设计要求的全过程。
(4)培养学生的创造力和对专业的适应性。
1.2课程设计的内容和要求
1、通过按键选择波形,波形选择(方波、三角波、正弦波)。
8255A和0832
2、通过按键设定波形的频率,同时波形频率在数码管上显示。
8255A
3、频率设定后,通过8253精确计时来设置波形宽度大小,比如方波的占空比。
4、8259A产生中断,用示波器显示输出波形。
5、通过按键可以增大或者降低频率;
6、画出电路原理图,说明工作原理,编写程序及程序流程图。
1.3总体设计方案
(1)设计思想及方案论证
由于要求达到模拟信号波形发生,因此要由D/A转换芯片0832来来完成此项任务,由8253形成波形的主要做法是:
先输出一个下限电平,将其保持t然后输出一个稍高的电平,在保持t,然后重复此过程,因此需要延长0832输入数据的时间间隔来改变频率。
如图1信号发生波形图所示。
0832输入的数据的延时可以通过软件完成,也可以通过硬件完成。
由于实验要求输出的波的频率可以改变,且精确,所以选用硬件延时
硬件延时主要由计时器8253和中断控制器8259来实现。
由8253输出的方波的高低电平,来触发8259的IR0端,8259给CPU中断信号,CPU中断来执行相应的中断子程序,中断子程序为向0832输出数据的程序,通过选择此程序可以产生锯齿波,方波,正弦波。
由于0832产生的方波的频率可以控制,所以每次中断执行波形发生程序的时间间隔可以精确控制。
以此来控制输出的波形频率。
最后通过8255驱动LED数码显示管,实现对输入的频率的显示,由键盘直接输入波形频率,通过LED数码显示管显示。
(2)总体设计方案框图
总体设计就是先由8255驱动LED显示输入的频率,再通过8253定时中断,中断的子程序来执行输出,输出的信号经过信号发生器形成波形。
1.4系统硬件设计
硬件设计电路图
1.5系统软件设计
软件设计流图
二实践部分
2.1系统硬件原理简介
(一)可编程并行I/O接口芯片8255A
8255A可编程并行I/O接口芯片,为40个引脚的双列直插芯片
8255A具有3个相互独立的输入/输出通道端口,三种工作方式。
方式0——基本输入输出方式;
方式1——选通输入/出方式;
方式2——双向选通输入/输出方式;
引脚功能:
RESET:
复位信号,高电平有效,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
RD:
读命令信号输入,低电平有效,用来控制数据由8255A读
WR:
写命令信号输入,地点平有效,用来控制写到8255A
CS:
片选信号输入,通过译码器与地址总线相连
D0~D7:
三态双向数据总线,8255与CPU数据传送的通道,实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
(二)可编程定时/计数器Intel8253
Intel8253是一种能够完成定时和计数的芯片,8253内部有3个16位计数器通道,通过对他们编程,每个计数器可以按照6种工作方式工作,并且都可以按2或10进制格式进行计数,最高频率为2HZ。
8253还可以用于许多其他场合,比如可作编程方波发生器,分频器等。
图68253引脚图
引脚功能:
1、数据缓冲总线
数据总线缓冲器是8253与系统总线相连时使用的接口电路,它由8位双相三态缓冲器构成,CPU用输入输出指令对8253进行读写操作的信息都由8位数据总线传输:
(1)CPU在对8253进行初始化编程时,向他写入控制字。
(2)CPU向某一计时器写入计数初值。
(3)从计数器读出计数值。
2、读写控制逻辑
读写控制逻辑接受系统控制总线送来的输入信号,经由组合后形成控制信号,对各部分操作进行控制。
可接受的信号有:
(1)CS片选,低电平有效,由数据总线经由IO端口译码电路产生。
只有CS低电平时,CPU才能对8253进行读写操作。
(2)RD读信号,低电平有效,当RD位地电平时,表示CPU正在读取所选定的计数器的通道的内容。
(3)WR写信号,低电平有效。
当WR为低电平时,表示CPU正在将计数器初值写入所选中的通道口中,或者将控制字写入内部寄存器中。
(4)A1A2端口选择信号,改变它的值,来选择8253内三个计数器通道。
如果8253和与8位数据总线的微机相连,只要将A1A0分别与地址总线相联。
如果系统采用的是8086CPU,则数据总线为16位,传输数据时,总是将低8位数据送往偶地址,将高8位送往奇地址。
3、计数器
8253内部包含三个完全相同俄计数器定时器通道,对3个通道的操作是完全独立的。
每个通道都包含1个8位的控制字寄存器,1个16位的减寄存器,和一个锁存器,执行部件是一个16位的减法计数器。
每个通道工作时,对输入到CLK引脚上的脉冲按2进制或10进制格式进行计数。
每当输入一个时钟脉冲,计数器减1,当计数器的值减为0时从,从OUT引脚输出一个脉冲信号。
GATE引脚上的门控制信号,决定他是否允许计数。
(三)可编程中断控制器8259A
8259A是8086/8088系列的可编程中断控制器,8259A为28个引脚的双列直插芯片。
图78259A引脚图
主要功能:
(1)据8级优先级控制,通过联级可以扩展到64级优先控制。
(2)每一级中断可由程序单独屏蔽或允许。
(3)可提供中断类型号传送给CPU。
(4)可以通过编程选择多种不同工作方式。
引脚功能:
D7-D0:
双向数据线,三态,与数据总线相连。
IR7-IR0:
外设的中断请求信号输入端,输入,中断请求:
可以是电平触发,或者边缘触发。
RD:
读命令信号,输入,低电平有效,用来控制数据由8259A读
WR:
写命令信号,输入,地点平有效,用来控制写到8259
CS:
片选信号,输入,通过译码器与地址总线相连
INT:
向CPU发出中断请求信号,输出,与CPU的INTR相连
INTA:
CPU给8259A的中断响应信号,输入。
(四)D/A转换器DAC0832
NSC公司生产的DAC0832,是一种内部带有数据输入寄存器的8位D/A转化器,采用CMOS工艺制成,芯片内部R-2R梯形电阻网络,用于对参考电压产生的电压进行分流,完成模数转换,转换结果以一组差动电流IOUT1、IOUT2输出。
引脚的功能:
VREF:
参考电压输入端。
根据需要一定大小的电压,由于它是转换的基准,要求数值正确,稳定性好。
VCC:
工作电压输入端。
AGAN为模拟地,DGAN为数字地。
在模拟电路中,所有的模拟地要连在一起然后将模拟地,数字地连接到一个公共接地点。
DI7-DI0:
数据输入。
可直接连接到数据总线。
IOUT1IOUT2:
互补的电流输出端。
为了输出模拟电压,需加转换电路。
图8DAC0832引脚图
2.2程序调试
由于此次课程设计涉及内容较多程序较长,所以不适合采用整体调试的方式。
因此,采用先逐次调试独立功能模块,再调试组合模块,最后调试整体程序的方法。
具体过程如下所示:
1、调试0832产生三种波形程序
2、调试输入频率计算计数初值程序
3、调试8253输出方波程序
4、调试8259产生中断响应程序
5、调试8255通过LED显示数据程序
6、调试输入频率计算计数初值并通过LED显示数据程序
7、调试8253使8259产生中断的程序
8、调试整体程序
2.3软件系统的使用说明
通过键盘输入要输出的波形的频率,然后选择输出的波形,LED数码显示管上可以显示输入的频率,模拟示波器显示DAC0832AUTO端口输出的波形。
三课程设计结果分析
3.1实验结果
图9程序运行截图
图10矩形波
图11三角波
图12正弦波
3.2结果分析
运行程序时,分别产生100HZ、500HZ、1000HZ、1500HZ、1600HZ的波形,结果发现100HZ--1500HZ的波形频率与所设定的频率一致或有极小的偏差,但从1600HZ开始误差逐渐变大,远远偏离所设定的频率,且小于所设定频率。
究其原因是:
执行中断程序的时间与中断周期的比值越来越大,或者说随着频率增大执行中断响应的时间对输出波形频率的影响越大。
所以,频率越高误差越大。
改进方式:
精简中断服务程序,减小程序执行时间;在0832输出端加上倍频器,减小0832的输出频率,以此降低误差。
四课程设计总结
在这次实习中,我巩固了微机课中所学的知识,了解了各种芯片的的用法,各个接口的名称和功能。
进一步锻炼了在微型计算机应用方面的实际工作能力,强化了对微机原理学科内容的认识并扩展了知识面。
通过设计实验,使我掌握了模拟量输入/输出通道的设计,常用控制程序的设计方法,数据处理及非线性补偿技术,以及数字控制器的设计方法。
本设计从几个基础的部分着手总结综合运用各种资料最后完成一个数字信号发生器系统。
通过这次课程设计使我懂得了理论与实际相结合的重要性,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。
而且在做课程设计的过程中,不仅是考验自己所学的《微机原理与接口技术》知识,更是要锻炼自己的分析问题的能力和解决实际问题的能力,而在在此次课程设计过程中得到了充分的体现。
在此次设计中体也会到了交流知识的重要性,在千篇一律的设计中,显示自己的特色,在实用性和执行效率间取得平衡,是设计的关键所在。
通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。
使我更加深刻的了解微机原理与接口技术,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。
五附录
5.1源程序及说明
;****************根据查看端口资源修改下列符号值*******************
IOY0EQU3000H;片选IOY0对应的端口始地址
MY8259_ICW1EQUIOY0+00H;实验系统中8259的ICW1端口地址
MY8259_ICW2EQUIOY0+04H;实验系统中8259的ICW2端口地址
MY8259_ICW3EQUIOY0+04H;实验系统中8259的ICW3端口地址
MY8259_ICW4EQUIOY0+04H;实验系统中8259的ICW4端口地址
MY8259_OCW1EQUIOY0+04H;实验系统中8259的OCW1端口地址
MY8259_OCW2EQUIOY0+00H;实验系统中8259的OCW2端口地址
MY8259_OCW3EQUIOY0+00H;实验系统中8259的OCW3端口地址
;***************************************************************
IOY1EQU3040H;片选IOY1对应的端口始地址
MY8254_COUNT0EQUIOY1+00H*4;8254计数器0端口地址
MY8254_COUNT1EQUIOY1+01H*4;8254计数器1端口地址
MY8254_COUNT2EQUIOY1+02H*4;8254计数器2端口地址
MY8254_MODEEQUIOY1+03H*4;8254控制寄存器端口地址
;***************************************************************
IOY2EQU3080H;片选IOY2对应的端口始地址
MY8255_AEQUIOY2+00H*4;8255的A口地址
MY8255_BEQUIOY2+01H*4;8255的B口地址
MY8255_CEQUIOY2+02H*4;8255的C口地址
MY8255_MODEEQUIOY2+03H*4;8255的控制寄存器地址
;***************************************************************
IOY3EQU30C0H;片选IOY3对应的端口始地址
DA0832EQUIOY3+00H*4;DA0832的端口地址
;***************************************************************
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATA1SEGMENT
SINBUFDB80H,8CH,98H,0A5H,0B0H,0BCH,0C7H,0D1H;SINBUF正弦波64点采样值
DB0DAH,0E2H,0EAH,0F0H,0F6H,0FAH,0FDH,0FFH
DB0FFH,0FDH,0FAH,0F6H,0F0H,0EAH,0E2H,0DAH
DB0D1H,0C7H,0BCH,0B0H,0A5H,98H,8CH,80H
DB7FH,73H,67H,5AH,4FH,43H,38H,2EH
DB25H,1DH,15H,0FH,09H,05H,02H,00H
DB00H,02H,05H,09H,0FH,15H,1DH,25H
DB2EH,38H,43H,4FH,5AH,67H,73H,7FH
SANBUFDB00H,08H,10H,18H,20H,28H,30H,38H;SANBUF三角波64点采样值
DB40H,48H,50H,58H,60H,68H,70H,78H
DB80H,88H,90H,98H,0A0H,0A8H,0B0H,0B8H
DB0C0H,0C8H,0D0H,0D8H,0E0H,0E8H,0F0H,0F8H
DB0F8H,0F0H,0E8H,0E0H,0D8H,0D0H,0C8H,0C0H
DB0B8H,0B0H,0A8H,0A0H,98H,90H,88H,80H
DB78H,70H,68H,60H,58H,50H,48H,40H
DB38H,30H,28H,20H,18H,10H,08H,00H
FANBUFDB32DUP(0),32DUP(0FFH);FANBUF方波64点采样值
LEDTABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;共阴极数码管0-F对应输入码值
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
MESDB'Pressanykeytoexit!
',0AH,0DH,0AH,0DH,'$';提示语任意按键退出DOS系统
MESS1DB0DH,0AH,'SQUARE-------------1',0DH,0AH;功能键提示语
DB'TRIANGLE-----------2',0DH,0AH
DB'SINE---------------3',0DH,0AH
DB'CHANGETHEFREQZ--4',0DH,0AH
DB'EXIT---------------5',0DH,0AH,'$'
MESS2DB0DH,0AH,'INPUTTHEFREQZ:
',0Ah,0DH,'$';提示输入六位频率
FLAG4DB0H;判断是否初次执行显示频率
FLAG5DB0H;判断是否初次执行输入频率
CHOOSEDB0H;保存输入的功能键
JISHUDW0H;保存波形已经输出的频率
FREQZDW?
;保存输入的频率
COUNTDW?
;保存根据输入频率所计算得的计数初值
COUNT1DB?
;计数初值低八位
COUNT2DB?
;计数初值高八位
SHUJUDB10DUP(0);保存输入频率每位的真实值
DATA1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA1
START:
MOVAX,DATA1;将DATA1放入数据段
MOVDS,AX
P1:
CALLINPUT
MOVDX,MY8254_MODE;初始化8254工作方式
MOVAL,34H;计数器0,方式2
OUTDX,AL
MOVDX,MY8254_COUNT0;装入计数初值
MOVAL,COUNT1;装入计数初值低字节
OUTDX,AL
MOVAL,COUNT2;装入计数初值高字节
OUTDX,AL
CMPFLAG5,1;判断是否初次执行输入频率
JZAA;不是则跳转到等待输入功能键
CALLDISPLY;调用数码管显示输入频率程序
KL:
CMPFLAG4,1;判断是否初次执行显示频率
JZAA;不是则跳转到等待输入功能键
LEADX,MESS1;显示输入频率的提示语
MOVAH,09H
INT21H
QUERY1:
MOVDX,MY8259_ICW1;初始化实验系统中8259的ICW1
MOVAL,13H;边沿触发、单片8259、需要ICW4
OUTDX,AL
MOVDX,MY8259_ICW2;初始化实验系统中8259的ICW2
MOVAL,08H
OUTDX,AL
MOVDX,MY8259_ICW4;初始化实验系统中8259的ICW4
MOVAL,01H;非自动结束EOI
OUTDX,AL
MOVDX,MY8259_OCW1;初始化实验系统中8259的OCW1
MOVAL,0FCH;打开IR0和IR1的屏蔽位
QUERY:
MOVAH,1;判断是否有按键按下
INT16H
JNZAA;有按键则退出
MOVDX,MY8259_OCW3;向8259的OCW3发送查询命令
MOVAL,0CH
OUTDX,AL
INAL,DX;读出查询字
TESTAL,80H;判断中断是否已响应
JZQUERY;没有响应则继续查询
ANDAL,03H
CMPAL,00H
JEIR0ISR;若为IR0请求,跳到IR0处理程序
JMPQUERY;若不是则跳回继续等待
QUIT:
MOVAX,4C00H;结束程序退出
INT21H
AA:
MOVFLAG4,0H;将标志位清零以便下次判断
MOVFLAG5,0H;将标志位清零以便下次判断
MOVAH,01H;输入功能键
INT21H
MOVCHOOSE,AL;将功能键保存
JMPQUERY1;跳转到等待程序
DISPLYPROCNEAR;数码管显示程序
MOVDX,MY8255_MODE;给8255写入控制字
MOVAX,10000000B;方式0,A口B口输出
OUTDX,AL
AA0:
MOVAH,1;判断是否有按键按下
INT16H
JNZKL;有按键则返回
MOVSI,OFFSETSHUJU;将保存频率的内存地址给SI
MOVAH,0FEH;位选初值
MOVCX,0006H;位选次数
AA1:
MOVAL,AH;AL保存位选
MOVDX,MY8255_A;端口地址位操作
OUTDX,AL
ROLAL,01H;下一个位地址
MOVAH,AL;AH保存位选
MOVAL,[SI];[地址]取待显示内容
MOVBX,OFFSETLEDTAB;将数字换成显示的七段码
XLAT
MOVDX,MY8255_B;数码管输入的端口地址
OUTDX,AL
CALLDELAY;执行延时
INCSI;指向下一个内存单元
LOOPAA1;循环点亮下一个LED
JMPAA0
DISPLYENDP
IR0ISR:
;中断服务程序
MOVAL,CHOOSE;将输入的功能键取出至AL
CMPAL,'1';若为1输出方波
JZSQUARE
CMPAL,'2';若为2输出三角波
JZTRIANGLE
CMPAL,'3';若为3输出正弦波
JZSINE
CMPAL,'4';若为4则跳到X5
JZX5
CMPAL,5';若为5则退出
JZQUIT
X5:
MOVFLAG5,1;标志位置1
JMPP1
SQUARE:
;方波产生程序
MOVSI,JISHU;将计数值放入SI
MOVAL,[FANBUF+SI];将输出的数值放入AL
MOVDX,DA0832;将输出值写入0832
OUTDX,AL
INCSI;指向下个输出值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课程设计 波形 发生器