湖南工程学院课程设计课程名称单片机原理与应用课题名称简易波形发生器的设计专业自动化班级0681学号200613110129姓名田凯指导教师_________ 李世军__________2009年5 月25日湖南工程学院课程设计任务书课程名称单片机原理与应用课题简易波形发生器的设计专业班级自动化学生姓名学号指导老师审批任务书下达日期2009年5 月25 日任务完成日期2009年6月8 日目录第1章概述 (8)1.1 课题设计要求 (8)1.2 课题设计目的和意义 (8)第2章系统总体设计方案 (9)2.1 设计说明 (9)2.2 总体设计思路 (9)第3章系统结构图及工作原理 (10)3.1 系统结构框图 (10)3.2 工作原理 (11)第4章各单元硬件设计及其计算方法 (11)4.1 硬件设计 (11)4.2 单片机的选择 (13)第5章软件设计与说明 (14)5.1 软件设计 (14)5.2 流程图 (17)第6章使用说明 (17)6.1 调试步骤 (17)6.2 调试结果 (18)第7章总结 (18)参考文献 (20)附录 (21)A 系统原理图 (21)B 程序清单 (22)第1章概述1.1 课题的设计要求本课题以单片机为核心,实现能输出正弦波、三角波、锯齿波、方波和梯形波信号五种波形,要求有以下功能:1、系统在初始时轮流输出五种波形,并轮流显示。
2、用按键选择五种波形的输出,并相应的用数码管显示其波形标号。
1.2 课题的设计目的和意义单片机的实验简易波形发生器的设计可以给我们的生活带来乐趣,可以放松我们的心情,可以让我们得到释怀。
而且通过这次设计我们可以学到关于单片机在实际生活中的设计应用,同时也使我们加深了对单片机的认识,提高了我们的编程能力,为我们能够更好的学习单片机有很大的帮助。
第2章系统总体设计方案2.1 设计说明利用微机实验平台编程实现一个波形发生器,可以产生正弦波、方波、三角波等各种波形基本要求:(1)具有产生正弦波、方波、三角波三种周期性波形的功能。
(2)输出波形的频率范围为100Hz~1kHz,步进为100Hz。
(3)输出波形幅度范围1~5V(峰-峰值),可按步进1V(峰-峰值)调整。
(4)通过ADC0809采样DAC0832的输出,在屏幕上画出图形。
示波器查看波形发生器的输出和屏幕上的图形比较。
2.2 总体设计思路本次设计结合D/A和A/D转换,用键盘输入来选择DAC0832的输出波形,再通过ADC0809采集后在PC机上以图形方式显示。
实验主要利用实验箱上的DAC0832 、ADC0809和8255等硬件电路和PC机资源。
设计要求该波形发生器能产生正弦波、方波、三角波等形状的波形,频率和幅度可调。
不同的波形主要是由输入DAC0832的不同规律的数据,所以在软件设计是主要是构造各种波形的数据表格。
方波只需要控制输出高低电平的时间,三角波的表格可以由数字量的增减来控制,产生正弦波关于构造一个正弦函数数值表,通过查该函数表来实现波形的输出。
波形的频率控制是通过对输出数据的时间间隔控制。
幅度是通过改变输出数据的大小来控制的。
为了程序实现方便,可以把每种波形的数据表构造好,再统一查表来实现。
第3章系统结构图及工作原理3.1 系统结构框图3.2 工作原理在双极性电压波形发生器中,DAC0832转换器输入数据采用单缓冲方式,与89C51接口电路。
DAC0832转换器输出部分接口电路,由于考虑到软件产生电压波形有正负极性输出,因此这部分设计成双极性电压输出,其方法是单极性输出运算放大器后面加一级运算放大器,形成比例求和电路,通过电平移动,使单极性输出变为双极性输出。
第4章各单元硬件设计及计算方法4.1 硬件设计硬件由于采用了PC机的资源和微机实验平台,不用外加其他的电路,比较简单。
将微机系统里面的中断、8255、 DAC0832以及ADC0832的电路弄清楚,通过相应的跳线就可以完成电路的设计。
本次设计中,通过PC机键盘选择波形,启动DAC0832工作,在其输出端口VOUT1将会产生0~5V的直流电压,再由ADC 0809的IN0端口进行采样,显示到屏幕上。
DAC0832所对应的片选为CS4,ADC0809所对应的片选为CS0。
DAC0832 和ADC0809硬件连接图如图1所示。
在ADC0809芯片连接中,CLOCK用来接收外部时钟信号,在本实验中接收Q3端产生的时钟信号。
ADD_A,ADD_B和ADD_C这三个端口为三位地址线,用来选通8路模拟量输入中的一路。
在本实验中,只使用ADC 0809中的IN0端口,当ADD_A,ADD_B和ADD_C端口都为低电平时,才能选中IN0端口。
在本PC实验箱中ADC 0809IN0端口地址为280H,其地址总线中的A0,A1,A2均为低电平。
故将ADD_A,ADD_B和ADD_C与A0,A1,A2如图所示连接。
REF(+)接正参考电压(+5V),REF(-)接负参考电压(接地)。
图1 设计硬件连接图4.2.单片机的选择当今单片机厂商琳琅满目,产品性能各异。
常用的单片机有很多种:Intel8051系列、Motorola和M68HC系列、Atmel的AT89系列、台湾Winbond(华邦)W78系列、荷兰Pilips的PCF80C51系列、Microchip 公司的PIC系列、Zilog的Z86系列、Atmel的AT90S系列、韩国三星公司的KS57C系列4位单片机、台湾义隆的EM-78系列等。
根据初步设计方案的分析,设计这样一个简单的应用系统,可以选择带有EPROM的单片机,应用程序直接存储在片内,不用在外部扩展程序存储器,电路可以简化。
该系统的设计我们采用AT89C51芯片。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
主要特性:1)与MCS-51 兼容2)4K字节可编程闪烁存储器3)寿命:1000写/擦循环4)数据保留时间:10年5)128*8位内部RAM6)可编程串行通道7)低功耗的闲置和掉电模式第5章软件设计与说明5.1软件设计本设计的主要是掌握各种典型波形的产生方法,例如三角波、方波和正弦波。
构造各种波形的数据表和对ADC0832的编程输出。
对于波形的频率调节主要是由8253定时/计数器来控制。
1.波形数据表的构造每个周期的数据表由64个数据组成,不同的幅度对应的数据不一样,可以根据倍数关系求出。
但是为了简化计算,将每个幅值的数据表列出。
这边我们只讨论幅值为5V时的数据表,其他的数据表可以根据倍数关系求得。
1)方波数据表的构造只要输出高电平和低电平就可以了,所以输入到ADC0832的数据由32个00H和32个FFH组成。
2)三角波数据表的构造三角波是由数据量的增减来控制的。
在前半个周期数据由00H增加到FFH,在后半个周期数据由FFH减少到00H,每次变化为08H。
所以三角波的数据表为:BUFDB00H,08H,10H,18H,20H,28H,30H,38H,40H,48H,50H,58H,60H,68H,70H,78HDB 80H,88H,90H,98H,0A0H,0A8H,0B0H,0B8HDB 0C0H,0C8H,0D0H,0D8H,0E0H,0E8H,0F0H,0F8HDB 0FFH,0F8H,0F0H,0E8H,0E0H,0D8H,0D0H,0C8HDB 0C0H,0B8H,0B0H,0A8H,0A0H,98H,90H,88HDB 80H,78H,70H,68H,60H,58H,50H,48H,40H,38H,30H,28H,20H,18 H,10H,08H3)正弦波数据表的构造DAC 0832的输入数据与输出电压的关系为:Ua=(UREF)/256*N,其中UREF表示参考电压(+5V),N表示数据。
由于8位D/A转换器DAC 0832的数据N 的范围为:00H—FFH,故Ua的范围为:0V—4.98V。
则产生的正弦波的幅度也为0V—4.98V。
我们以正弦函数的0--π/2为例,0度时我们设定其对应的N为:80H,π/2时必然对应的N为:FFH,在0--π/2的范围内有16个点,故间隔为6度。
综上所诉正弦波函数为:Ua =2.48*sin6x+2.5(x=0,1,……15)。
联合上述两式,就可得出0--π/2范围内的16个N值。
构造出正弦波数据表如下:SINBUF: DB 080H,08CH,098H,0A5H,0B0H,0BCH,0C7H,0D1H DB 0DAH,0E2H,0EAH,0F0H,0F6H,0FAH,0FDH,0FFHDB 0FFH,0FDH,0FAH,0F6H,0F0H,0EAH,0E2H,0DAHDB 0D1H,0C7H,0BCH,0B0H,0A5H,098H,08CH,080HDB 7FH,73H,67H,5AH,4FH,43H,38H,2EHDB 25H,1DH,15H,0FH,09H,05H,02H,00HDB 00H,02H,05H,09H,0FH,15H,1DH,25HDB 2EH,38H,43H,4FH,5AH,67H,73H,7FH2.程序的主要模块程序主要由主程序和中断服务程序构成。
主要由菜单显示、键盘读取、DA输出、AD采样、屏幕画图等模块组成。
菜单显示包含有3个菜单:主菜单和2个子菜单。
主菜单有选择波形和退出选项,子菜单有选择频率菜单和选择幅度菜单。
键盘读取是配合菜单显示的条件下,接收键盘的输入,得到相应的数据来处理,决定输出波形的信息。
DA输出是将数据输出到ADC0832转换为模拟量输出。
ADC0809的转换控制如下:选择通道并启动转换→延时等待→读取转换结果。
5.2 流程图第6章调试结果与调试说明6.1调试步骤1. 输入源程序输入源程序时,应以西文方式输入字母和符号,且中文注释前要加分号。
2.对源程序进行汇编和纠错根据自动汇编提供的错误信息逐条纠正错误,直至汇编信息提示无误。
3.确定调试方案在调试程序前认真分析源程序,确定各功能程序运行的预期结果。