论文部分内容阅读
摘要:在了解DAC0832芯片的基础上,实现数字到模拟量的转换,通过对8255A的内部构造、控制字、方式字的设置以及如何将开关置入的数字信号传输到DAC0832进行数模转换,最终达到能输出正弦波、三角波、锯齿波、脉冲波,根据开关输入情况进行波形切换,实现用户操作的随意性。
关键词:函数发生器;单片机;DAC0832;8255A
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)09-11738-04
A Design and Implementation of Function Generator Based on PC
WANG Peng
(Department of Computer Science and Technology,Hefei University, Hefei 230601, China)
Abstract: DAC0832 understanding on the basis of chips, Implementation of the digital-to-analog converter. Through the internal structure, Control characters and the word means settingsof the 8255 A, Placement will be switching to the transmission of digital signals to analog converter DAC0832. Sine wave output can reach the final, triangle wave, sawtooth, pulse wave. According to switch input waveform switching, User operating arbitrariness.
Key words: Function Generator; single-chip compute; DAC0832; 8255A
1 引言
在电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域,经常需要用到各种各样的函数发生器。随着集成电路的迅速发展,用集成电路可很方便地构成各种函数发生器。用集成电路实现的信号波形发生器与其它信号波形发生器相比,其波形质量、幅度和频率稳定性等性能指标,都有了很大的提高。
2 解决问题方法及思路
题义需求分析:以 PC 微机基础设计开发能输出多种波形的函数发生器:(1)能输出正弦波、三角波、锯齿波、脉冲波。(2)能根据开关的变化进行波形切换。
2.1 硬件部分
(1)根据题义要求及分析,本设计中硬件部分数/模转换器选用National Semiconductor的DAC0832。
(2)选择8255A作为CPU与DAC0832之间的并行接口芯片,其中A口作为开关量的输入端。
(3)另外还需要有:intel 8086 CPU(中央处理器)芯片1颗;EL-8086型单板机开发环境一套;PC机(Personal Computer,个人计算机)一台。
2.2 软件部分
(1)程序采用循环依次显示四组波段的方式。
(2)首先对8255A进行初始化,方式0,A口输入。
(3)在显示过程中判断开关量是否有变化。
(4)若没有变化,则继续显示;若有改变,就重新判断要输出的波形。
(5)相应地,在程序中编制显示正弦波段、三角波段、锯齿波段和脉冲波段,由上述的判断结果,根据条件进行跳转。
3 硬件设计
3.1 选择芯片:8086CPU
3.1.1 8086CPU在本设计中的作用
由于这个程序是基于PC机的,故在单板机上必须要用到8086CPU,它作为计算机的核心芯片,在实验中起着关键的作用。
3.1.2 8086的功能分析
它被设计为两个独立的功能部件:总线接口部件(BIU)和执行部件(EU)。
BIU主要负责从内存储器的指定区域中取出指令,送到指令队列中排队;执行指令所需的操作数也由它从内存或I/O端口取出送至EU。
EU负责从BIU的指令队列中获得指令,然后执行该指令,完成指令所规定的操作,它负责全部指令的执行,向BIU提供数据和所需访问的内存或I/O端口地址,并对通用寄存器,标志寄存器和指令操作数进行管理。
3.2 选择芯片:8255A
3.2.1 8255A在设计中的作用
它是把打入的数据锁存,8255A有3个8位端口PA,PB,PC。本设计只用到PA口中的一个8位数据输入锁存器,把通过开关装置打入的数据锁存,再由8255A通过数据总线传送到8086,由8086送到DAC0832的DI7~DI0对其进行数模转换,最后在示波器上显示波形。
3.2.2 8255A的功能分析
它是一种通用的可编程并行I/O接口芯片,又称“可编程外设接口芯片”。8255A由4部分组成:数据总线缓冲器;三个8位端口PA、PB、PC;A组和B组的控制电路;读写控制逻辑。
(1)数据总线缓冲器 :一个三态8位的双向缓冲器,用作8255A同系统数据总线相连是的缓冲部件。CPU通过执行输入/输出指令来实现对缓冲器发送或接受数据。8255A的控制字或状态字也是通过该缓冲器传送的。
(2)端口A中有一个8位数据输入锁存器和一个8位输出锁存/缓冲器。
(3)A、B组控制电路:A组控制部件用来控制PA口和PC口的高4位。B组控制部件用来控制PB口和PC口的低四位。
(4)读写控制逻辑:用来管理数据信息,控制字和状态字的传送。
8255A的工作方式有3种:方式0、方式1、方式2。本设计只用到方式0,即基本输入/输出。在方式0下,每个口都作为基本的输入/输出口。C口的高四位和低四位以及A口、B口都可以独立地设计输入口或输出口。在方式0下,CPU可以采用无条件读写方式与8255A交换数据。本设计只用到了PA口作为数据输入。
3.2.3 8255A的技术参数
与TTL完全兼容,采用40条引脚的双直插式封装,减少了系统器件数,提高了直流驱动能力。
3.3.2 DAC0832的功能分析
DAC0832是8位D/A转换器,转换周期为1μs。它由8位输入锁存器、8位DAC寄存器、8位D/A转换电路组成。当ILE为高电平,CS为低电平,WR1为负脉冲时,在LE1产生正脉冲;LE1为高电平时,输入寄存器的状态随数据输入线状态变化,LE1的负跳变将输入数据线上的信息存入输入寄存器。当Xfer为低电平,WR2输入负脉冲时,则在LE2产生正脉冲;LE2为高电平时,DAC寄存器的输入与输出寄存器的状态一致,LE2的负跳变,输入寄存器内容存入DAC寄存器。
DAC0832的输出是电流型的。在微机系统中,通常需要电压信号,电流信号和电压信号之间的转换可由运算放大器实现。
4 硬件总逻辑图及其说明
6 上机调试过程
6.1 硬件调试
一开始把8255A的片选CS接口CS1,但因为设计时8255A的口地址为04a0,而CS1的地址范围为:04B0~04BF偶地址有效,故编译不能通过,经检查发现8255A片选应接为CS0.又发现连线时粗心漏连了DAC0832的片选,应连CS1。另外,打开实验箱上的电源开关,发现数字显示区的数字闪烁不停,后检查是因为CPU插在面包板上的时候接触不良造成。
6.2 软件调试
程序开始调试时总是显示链接不成功,原因应该是程序结构的问题,但通过查资料,知道了可以通过调用一个事先编写好的延迟子程序来实现。在延迟子程序中通过设置循环次数CX,再利用loop循环,当CX减为0时停止循环,这样就可以“画”出高低电平。另外,再编写正弦波的时候,定义正弦波表也需要注意把点设计成对称分布的。否则示波器显示出来的波形是有问题的。最重要的是为了满足用户使用的随意性,在每一个波的程序中都必须写有这样的步骤:每从开关读取一个开关量后,都必须检查用户有没有拨动开关,即:用户是不是需要切换到另一种波形输出。
6.3 调试结果及问题的提出
8255A的PA口作为开关量的输入端,其与开关相连的时候,PA0、PA1分别与K0、K1相连,那么K0是低位,K1是高位.那么每个波形对应的开关量应使用开关正确输入,不能把高低位弄反了。
正弦波在示波器上的显示,成断续的点状,本想使之能显示连续的波形,但一直无法通过多加入一些点,使波形变密。显示出来的总是不对称的、扭曲的、有的地方点很密、有的地方点很疏。
脉冲波的显示也不能做到很精确,因为高电平和低电平总是不平,怎么都有一点倾斜的趋势,一直不清楚问题出在什么地方,怎么才能够解决。
锯齿波和三角波显示情况都较准确,没有什么问题。
在波形切换方面,能够实现用户任意时刻,变换输出四种波形中的任意波形。
7 结束语
本设计的结果基本达到了要求:能输出正弦波、三角波、锯齿波、脉冲波;能根据开关输入情况进行波形切换,实现用户操作的随意性。在本设计中的四个波形中,锯齿波、三角波输出较准确.但脉冲波、正弦波的输出还有一点欠缺,都不能很正确的反映波形曲线。即:脉冲波不能很好的反映电平的平稳,会有一定的斜度,可能是延迟子程序写得不太好,延迟时间没控制好。而正弦波不能很好的表现波的连续性,表现成断续的点状,原因是正弦波表没有编写好,没有把握好点的分布情况,对称性的要求,设置的点不够多。
参考文献:
[1] 潭博学,苗江静.集成电路原理及应用[M]. 北京:电子工业出版社,2003.
[2] 周国祥.微机原理与接口技术复习考试指南[M]. 安徽:合肥工业大学出版社,2006
[3] 戴梅萼.微型计算机技术及应用(第3版)[M]. 北京:清华大学出版,2003.
[4] 刘彦文,张向东,谭峰. 微机原理与接口技术[M]. 北京:北京大学出版,2006.
[5] 童诗白,华成英.模拟电子技术基础[M]. 北京:高等教育出版社,2001.
关键词:函数发生器;单片机;DAC0832;8255A
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)09-11738-04
A Design and Implementation of Function Generator Based on PC
WANG Peng
(Department of Computer Science and Technology,Hefei University, Hefei 230601, China)
Abstract: DAC0832 understanding on the basis of chips, Implementation of the digital-to-analog converter. Through the internal structure, Control characters and the word means settingsof the 8255 A, Placement will be switching to the transmission of digital signals to analog converter DAC0832. Sine wave output can reach the final, triangle wave, sawtooth, pulse wave. According to switch input waveform switching, User operating arbitrariness.
Key words: Function Generator; single-chip compute; DAC0832; 8255A
1 引言
在电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域,经常需要用到各种各样的函数发生器。随着集成电路的迅速发展,用集成电路可很方便地构成各种函数发生器。用集成电路实现的信号波形发生器与其它信号波形发生器相比,其波形质量、幅度和频率稳定性等性能指标,都有了很大的提高。
2 解决问题方法及思路
题义需求分析:以 PC 微机基础设计开发能输出多种波形的函数发生器:(1)能输出正弦波、三角波、锯齿波、脉冲波。(2)能根据开关的变化进行波形切换。
2.1 硬件部分
(1)根据题义要求及分析,本设计中硬件部分数/模转换器选用National Semiconductor的DAC0832。
(2)选择8255A作为CPU与DAC0832之间的并行接口芯片,其中A口作为开关量的输入端。
(3)另外还需要有:intel 8086 CPU(中央处理器)芯片1颗;EL-8086型单板机开发环境一套;PC机(Personal Computer,个人计算机)一台。
2.2 软件部分
(1)程序采用循环依次显示四组波段的方式。
(2)首先对8255A进行初始化,方式0,A口输入。
(3)在显示过程中判断开关量是否有变化。
(4)若没有变化,则继续显示;若有改变,就重新判断要输出的波形。
(5)相应地,在程序中编制显示正弦波段、三角波段、锯齿波段和脉冲波段,由上述的判断结果,根据条件进行跳转。
3 硬件设计
3.1 选择芯片:8086CPU
3.1.1 8086CPU在本设计中的作用
由于这个程序是基于PC机的,故在单板机上必须要用到8086CPU,它作为计算机的核心芯片,在实验中起着关键的作用。
3.1.2 8086的功能分析
它被设计为两个独立的功能部件:总线接口部件(BIU)和执行部件(EU)。
BIU主要负责从内存储器的指定区域中取出指令,送到指令队列中排队;执行指令所需的操作数也由它从内存或I/O端口取出送至EU。
EU负责从BIU的指令队列中获得指令,然后执行该指令,完成指令所规定的操作,它负责全部指令的执行,向BIU提供数据和所需访问的内存或I/O端口地址,并对通用寄存器,标志寄存器和指令操作数进行管理。
3.2 选择芯片:8255A
3.2.1 8255A在设计中的作用
它是把打入的数据锁存,8255A有3个8位端口PA,PB,PC。本设计只用到PA口中的一个8位数据输入锁存器,把通过开关装置打入的数据锁存,再由8255A通过数据总线传送到8086,由8086送到DAC0832的DI7~DI0对其进行数模转换,最后在示波器上显示波形。
3.2.2 8255A的功能分析
它是一种通用的可编程并行I/O接口芯片,又称“可编程外设接口芯片”。8255A由4部分组成:数据总线缓冲器;三个8位端口PA、PB、PC;A组和B组的控制电路;读写控制逻辑。
(1)数据总线缓冲器 :一个三态8位的双向缓冲器,用作8255A同系统数据总线相连是的缓冲部件。CPU通过执行输入/输出指令来实现对缓冲器发送或接受数据。8255A的控制字或状态字也是通过该缓冲器传送的。
(2)端口A中有一个8位数据输入锁存器和一个8位输出锁存/缓冲器。
(3)A、B组控制电路:A组控制部件用来控制PA口和PC口的高4位。B组控制部件用来控制PB口和PC口的低四位。
(4)读写控制逻辑:用来管理数据信息,控制字和状态字的传送。
8255A的工作方式有3种:方式0、方式1、方式2。本设计只用到方式0,即基本输入/输出。在方式0下,每个口都作为基本的输入/输出口。C口的高四位和低四位以及A口、B口都可以独立地设计输入口或输出口。在方式0下,CPU可以采用无条件读写方式与8255A交换数据。本设计只用到了PA口作为数据输入。
3.2.3 8255A的技术参数
与TTL完全兼容,采用40条引脚的双直插式封装,减少了系统器件数,提高了直流驱动能力。
3.3.2 DAC0832的功能分析
DAC0832是8位D/A转换器,转换周期为1μs。它由8位输入锁存器、8位DAC寄存器、8位D/A转换电路组成。当ILE为高电平,CS为低电平,WR1为负脉冲时,在LE1产生正脉冲;LE1为高电平时,输入寄存器的状态随数据输入线状态变化,LE1的负跳变将输入数据线上的信息存入输入寄存器。当Xfer为低电平,WR2输入负脉冲时,则在LE2产生正脉冲;LE2为高电平时,DAC寄存器的输入与输出寄存器的状态一致,LE2的负跳变,输入寄存器内容存入DAC寄存器。
DAC0832的输出是电流型的。在微机系统中,通常需要电压信号,电流信号和电压信号之间的转换可由运算放大器实现。
4 硬件总逻辑图及其说明
6 上机调试过程
6.1 硬件调试
一开始把8255A的片选CS接口CS1,但因为设计时8255A的口地址为04a0,而CS1的地址范围为:04B0~04BF偶地址有效,故编译不能通过,经检查发现8255A片选应接为CS0.又发现连线时粗心漏连了DAC0832的片选,应连CS1。另外,打开实验箱上的电源开关,发现数字显示区的数字闪烁不停,后检查是因为CPU插在面包板上的时候接触不良造成。
6.2 软件调试
程序开始调试时总是显示链接不成功,原因应该是程序结构的问题,但通过查资料,知道了可以通过调用一个事先编写好的延迟子程序来实现。在延迟子程序中通过设置循环次数CX,再利用loop循环,当CX减为0时停止循环,这样就可以“画”出高低电平。另外,再编写正弦波的时候,定义正弦波表也需要注意把点设计成对称分布的。否则示波器显示出来的波形是有问题的。最重要的是为了满足用户使用的随意性,在每一个波的程序中都必须写有这样的步骤:每从开关读取一个开关量后,都必须检查用户有没有拨动开关,即:用户是不是需要切换到另一种波形输出。
6.3 调试结果及问题的提出
8255A的PA口作为开关量的输入端,其与开关相连的时候,PA0、PA1分别与K0、K1相连,那么K0是低位,K1是高位.那么每个波形对应的开关量应使用开关正确输入,不能把高低位弄反了。
正弦波在示波器上的显示,成断续的点状,本想使之能显示连续的波形,但一直无法通过多加入一些点,使波形变密。显示出来的总是不对称的、扭曲的、有的地方点很密、有的地方点很疏。
脉冲波的显示也不能做到很精确,因为高电平和低电平总是不平,怎么都有一点倾斜的趋势,一直不清楚问题出在什么地方,怎么才能够解决。
锯齿波和三角波显示情况都较准确,没有什么问题。
在波形切换方面,能够实现用户任意时刻,变换输出四种波形中的任意波形。
7 结束语
本设计的结果基本达到了要求:能输出正弦波、三角波、锯齿波、脉冲波;能根据开关输入情况进行波形切换,实现用户操作的随意性。在本设计中的四个波形中,锯齿波、三角波输出较准确.但脉冲波、正弦波的输出还有一点欠缺,都不能很正确的反映波形曲线。即:脉冲波不能很好的反映电平的平稳,会有一定的斜度,可能是延迟子程序写得不太好,延迟时间没控制好。而正弦波不能很好的表现波的连续性,表现成断续的点状,原因是正弦波表没有编写好,没有把握好点的分布情况,对称性的要求,设置的点不够多。
参考文献:
[1] 潭博学,苗江静.集成电路原理及应用[M]. 北京:电子工业出版社,2003.
[2] 周国祥.微机原理与接口技术复习考试指南[M]. 安徽:合肥工业大学出版社,2006
[3] 戴梅萼.微型计算机技术及应用(第3版)[M]. 北京:清华大学出版,2003.
[4] 刘彦文,张向东,谭峰. 微机原理与接口技术[M]. 北京:北京大学出版,2006.
[5] 童诗白,华成英.模拟电子技术基础[M]. 北京:高等教育出版社,2001.