微机原理课程设计波形发生器基本要求:(1)通过按键选择波形,波形选择(方波、三角波)。
8255 A 和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、通过按键选择波形,波形选择(方波、三角波、正弦波)。
8255 A 和08322、通过按键设定波形的频率,同时波形频率在数码管上显示。
8255A3、频率设定后,通过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 数码显示管显示。
+5V0V 图1 信号发生波形图(2)总体设计方案框图总体设计就是先由8255驱动LED显示输入的频率,再通过8253定时中断,中断的子程序来执行输出,输出的信号经过信号发生器形成波形。
图2硬件简图硬件设计电路图图3 硬件设计电路图XD7 XD6 XD5 XD4 XD3 XD2 XD1 XD0XIOW XIOR IOY0 XA2 INTR XD7 XD6XD5 XD4 XD3 XD2 XD1 XD0 XD7 XD6 XD5 XD4 XD3 XD2 XD1 XD0 XD7 XD6 XD5 XD4 XD3 XD2 XD1 XD0XIOR IOY3 XA3 XA2 XIOW IOY2软件设计流图图4软件设计流图二实践部分2.1系统硬件原理简介(一)可编程并行I/O接口芯片8255A8255A可编程并行I/O接口芯片,为40个引脚的双列直插芯片8255A具有3个相互独立的输入/输出通道端口,三种工作方式。
方式0——基本输入输出方式;方式1——选通输入/出方式;方式2——双向选通输入/输出方式;图5 8255A引脚图引脚功能:RESET:复位信号,高电平有效,所有内部寄存器(包括控制寄存器)均被清除,所有I/O 口均被置成输入方式。
RD:读命令信号输入,低电平有效,用来控制数据由8255A读WR:写命令信号输入,地点平有效,用来控制写到8255ACS:片选信号输入,通过译码器与地址总线相连D0~D7:三态双向数据总线,8255与CPU数据传送的通道,实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
(二)可编程定时/计数器Intel8253Intel8253是一种能够完成定时和计数的芯片,8253内部有3个16位计数器通道,通过对他们编程,每个计数器可以按照6种工作方式工作,并且都可以按2或10进制格式进行计数,最高频率为2HZ。
8253还可以用于许多其他场合,比如可作编程方波发生器,分频器等。
图6 8253引脚图引脚功能: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引脚上的门控制信号,决定他是否允许计数。
(三)可编程中断控制器8259A8259A是8086/8088系列的可编程中断控制器,8259A为28个引脚的双列直插芯片。
图7 8259A引脚图主要功能:(1)据8级优先级控制,通过联级可以扩展到64级优先控制。
(2)每一级中断可由程序单独屏蔽或允许。
(3)可提供中断类型号传送给CPU。
(4)可以通过编程选择多种不同工作方式。
引脚功能:D7-D0:双向数据线,三态,与数据总线相连。
IR7-IR0:外设的中断请求信号输入端,输入,中断请求:可以是电平触发,或者边缘触发。
RD:读命令信号,输入,低电平有效,用来控制数据由8259A读WR:写命令信号,输入,地点平有效,用来控制写到8259CS:片选信号,输入,通过译码器与地址总线相连INT:向CPU发出中断请求信号,输出,与CPU的INTR相连INTA:CPU给8259A的中断响应信号,输入。
(四)D/A转换器DAC0832NSC公司生产的DAC0832,是一种内部带有数据输入寄存器的8位D/A转化器,采用CMOS工艺制成,芯片内部R-2R梯形电阻网络,用于对参考电压产生的电压进行分流,完成模数转换,转换结果以一组差动电流I OUT1、I OUT2输出。
引脚的功能:V REF :参考电压输入端。
根据需要一定大小的电压,由于它是转换的基准,要求数值正确,稳定性好。
V CC:工作电压输入端。
A GAN为模拟地,D GAN为数字地。
在模拟电路中,所有的模拟地要连在一起然后将模拟地,数字地连接到一个公共接地点。
DI7-DI0:数据输入。
可直接连接到数据总线。
I OUT1I OUT2:互补的电流输出端。
为了输出模拟电压,需加转换电路。
图8 DAC0832引脚图2.2程序调试由于此次课程设计涉及内容较多程序较长,所以不适合采用整体调试的方式。
因此,采用先逐次调试独立功能模块,再调试组合模块,最后调试整体程序的方法。
具体过程如下所示:1、调试0832产生三种波形程序2、调试输入频率计算计数初值程序3、调试8253输出方波程序4、调试8259产生中断响应程序5、调试8255通过LED显示数据程序6、调试输入频率计算计数初值并通过LED显示数据程序7、调试8253使8259产生中断的程序8、调试整体程序2.3 软件系统的使用说明通过键盘输入要输出的波形的频率,然后选择输出的波形,LED数码显示管上可以显示输入的频率,模拟示波器显示DAC0832 AUTO端口输出的波形。
三课程设计结果分析3.1 实验结果图9 程序运行截图图10 矩形波图11 三角波图12 正弦波3.2 结果分析运行程序时,分别产生100HZ、500HZ、1000HZ、1500HZ、1600HZ的波形,结果发现100HZ--1500HZ的波形频率与所设定的频率一致或有极小的偏差,但从1600HZ开始误差逐渐变大,远远偏离所设定的频率,且小于所设定频率。
究其原因是:执行中断程序的时间与中断周期的比值越来越大,或者说随着频率增大执行中断响应的时间对输出波形频率的影响越大。
所以,频率越高误差越大。
改进方式:精简中断服务程序,减小程序执行时间;在0832输出端加上倍频器,减小0832的输出频率,以此降低误差。
四课程设计总结在这次实习中,我巩固了微机课中所学的知识,了解了各种芯片的的用法,各个接口的名称和功能。
进一步锻炼了在微型计算机应用方面的实际工作能力,强化了对微机原理学科内容的认识并扩展了知识面。
通过设计实验,使我掌握了模拟量输入/输出通道的设计,常用控制程序的设计方法,数据处理及非线性补偿技术,以及数字控制器的设计方法。
本设计从几个基础的部分着手总结综合运用各种资料最后完成一个数字信号发生器系统。
通过这次课程设计使我懂得了理论与实际相结合的重要性,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。