基于单片机的波形发生器
基于单片机的波形发生器
湖 南 涉 外 经 济 学 院
毕 业 设 计( 论 文 )
题作学专学
目 基于单片机的波形发生器 者 部 业 号
指导教师
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作 者 签 名: 日 期: 指导教师签名: 日 期:
使用授权说明
本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
- 2 -
作者签名: 日 期:
- 3 -
湖南涉外经济学院 毕业设计(论文)任务书
系(教研室)主任批准
电气与信息工程 学部 电子信息工程 系(教研室) 签名: 日期:
学生姓名: 丁琛奇 学号: 200703302123 专业: 电子信息工程 1 设计(论文)题目及专题: 基于单片机的波形发生器 2 学生设计(论文)时间:自2010年3月1日开始至 2010年4 月 26 日止 3 设计(论文)所用资源和参考资料:
[1] 康华光.电子技术基础模拟部分[M].武汉:华中科技大学出版社,2005年.[2] 康华光.电子技术基础数字部分[M].武汉:华中科技大学出版社,2005年.[3] 蒋辉平,周国雄.单片机原理与应用设计[M].北京:北京航空航天大学出版社,2007年.[4] 宋文阁,李明颖,王学俊.单片机控制IC卡电子锁[J].大连轻工业学院学报,1999,18(2):111-115.[5] 唐向宏,岳恒立,郑雪峰.MATLAB及在电子信息类课程中的应用[M].
- 3 -
北京:电子工业出版社,2006年.[6] 周明德.微型计算机系统原理及应用[M].北京:清华大学出版社,2006年.[7] 周润景,张丽娜.基于PROTUES的单片机设计与仿真[M].北京:北京航空航天大学出版社,2007年.[8] 杨季文等,80X86汇编语言程序设计教程[M].北京:清华大学出版社,1998.[9] 李文石,电子锁的发展和设计综述[J].五金科技, 1993,3:3-6.[10] Bes.G,A Natural Language and Graphics Interlace[M].Berlin.Springer-Verlag,l992:176-188.[11] IA-32 Intel Architecture Sofeware Developer’Manual Volume 1.Basic Architecture [Z] Intel公司,2005年.[12]姚伯元.中国学术期刊[J]标准化数据库系统工程[EB/OL]. http://www.Cajcd.cn/pub/wml.txt/ 9808.html,1998-08-16/1998-10-04.
4 设计(论文)应完成的主要内容:设计制作基于单片机实现的波形发生器,实现正弦波,方波,锯齿波,三角波的产生与转换
5 提交设计(论文)形式(设计说明与图纸或论文等)及要求:1、毕业设计(论文)纸质版一式三份,附相关程序(代码)和硬件电路原理图。2、电子文档一份。
6 发题时间: 2010 年 12 月 20 日
- 3 -
指导教师: 学 生:
湖 南 涉 外 经 济 学 院 毕业设计(论文)指导人评语
- 3 -
(签名)
(签名)
- 3 -
指导人:
(签名)
年 月 日
指导人评定成绩:
湖南涉外经济学院 毕业设计(论文)评阅人评语
- 3 -
- 3 -
评阅人: (签名)
年 月 日
评阅人评定成绩:
湖南涉外经济学院 毕业设计(论文)答辩记录
日期:
学生: 丁琛奇 学号: 200703302123 班级: 0702 题目: 波形发生器的设计 提交毕业设计(论文)答辩委员会下列材料:
1 设计(论文)说明书 共 2 设计(论文)图 纸 共 3 指导人、评阅人评语 共
毕业设计(论文)答辩委员会评语:
页 页 页
- 3 -
答辩委员会主任:
委员:
(签名) (签名)
(签名) (签名) (签名)
答辩成绩:
总评成绩:
- 3 -
摘 要
本系统是基于AT89S51单片机设计的数字式波形发生器。采用AT89S51作为系统的控制核心,外围电路采用数字/模拟转换电路(DAC0832),运放电路(MC1458),按键,ISP接口等。通过按键控制切换产生正弦波,锯齿波,三角波,阶梯波,各类型信号的频率统一为100HZ,而幅值在-5V~+5V范围内可调。本设计电路原理简单,性能较好,具有一定的实用性
关键词:单片机 波形发生器 D/A电路
- 3 -
Abstract
The system is a digital waveform generator based on single chip computer. AT89S51 is used as a control core. The system is composed by
digital/analog
conversion
(DAC0832),imply
circuit
(MC1458),button ISP inferface and LED lights. It can generate square triangle and sine wave,with LED display . The frequency of various types of signal unity of 100HZ, but the amplitude in the-5V ~ +5 V range adjustable. The circuit design is simple, better performance, has some practical.
Keyword:the single chip computer the signal generator D/A
conversion
- 3 -
目录
1. 绪 论 ························ 11
1.1 波形发生器现状 ································11 1.2 单片机在波形发生器中的运用 ··············11
2. 系统设计 ······················· 12
2.1 系统要求 ········································ 12 2.2总体方案选择与论证 ····································· 12 2.3系统设计基本原理与思路 ································· 13
3. 硬件电路的设计 ··················· 13
3.1
AT89S51的介绍 ······························· 13 3.1.1 AT89S51的介绍 ························ 13 3.1.2 AT89S51的引脚图 ····················· 15 3.1.3主要管脚说明 ··························· 15 3.1.4存储器结构 ······························ 16
3.2资源分配
·············································· 17
··································· 17
·············································· 18
········································ 19
- 3 -
3.3最小单片机系统的设计3.4复位电路
3.5各模块电路的设计
3.5.1 DAC0832基本介绍 ····················· 19 3.5.2按键和波形指示灯电路 ··············· 23 3.5.3电流电压转换电路(MC1458) ······ 24 3.5.4 ISP接口································· 25
4. 软件设计 ······················· 26
4.1主程序的设计
············································ 26 ········································ 27 ················ 错误!未定义书签。 ········································ 29
4.2锯齿波程序的设计4.3三角波程序的设计4.4正弦波程序的设计4.5方波程序的设计
·········································· 30
5. 测试仿真 ······················· 31
5.1软件仿真
··············································· 31 ············································ 32 ········································ 32
5.2仿真结论分析
5.3硬件测试结果分析
6. 结束语 ························ 33 7. 参考文献 ······················· 34 8. 致谢 ························· 35 附录一 PROTEL原理图 ···················· 36 附录二 PROTEUS仿真图 ··················· 37 附录三 PCB图 ······················· 38
- 3 -
附录四 系统源程序 ····················· 39
1.绪论
1.1波形发生器现状
波形发生器作为一种常用的应用电子仪器设备,传统的波形发生器可以完全用硬件电路搭建,如应用555振荡电路可以产生正弦波,三角波,方波等波形,传统的波形发生器多采
- 3 -
用这种方式设计,这种方式不应用单片机,但是这种方式存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点,在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟震动等领域往往需要低频信号源,而由硬件搭建的波形发生器效果往往达不到好的效果,而且低频信号源所需要的RC很大,大电阻,大电容在制作上有困难,参数的精度也难以保证,而且体积大,漏电,体积大是该类波形发生器的显著缺点。
1.2单片机在波形发生器中的应用
随着电子技术的飞快发展,单片机的应用不
断的深入,基于单片机的智能仪器的设计技术不断成熟。单片机构成的仪器具有高可靠性,高性价比,单片机技术在智能仪表和自动化等诸多领域有了极为广泛的应用,并应用到各种家庭电器,单片机技术的广泛应用推动了社会的进步。
一块单片机芯片就是一台计算机,单片机的这种特殊的结构形式,使得其在某些应用领域,它承担了大中型计算机和通用微机 无法完成的一些工作。单片机有很多优点和特
- 3 -
点,归纳有以下几个方面: (1) 具有优异的性价比
单片机尽可能的把应用所需要的存储器,各种功能的I/O接口集成在一块芯片内,因而其性能优越,而价格性对低廉 (2) 集成度搞,体积小,可靠性高
单片机把各种功能部件集成在一块芯片上,因而集成度高,为大规模集成电路或超大规模集成电路,又内部采用总线结构,因而大大减少了芯片内部之间的连线,这大大提高了单片机的可靠性和抗干扰能力,同时,体积小,对于强磁场环境易于采用屏蔽措施,适合于在恶劣环境下工作
(3) 低电压和低功耗
单片机大量应用于便携式产品和家庭消费类产品,低电压和低功耗极为重要。目前,单片机的功耗也越来越低,一枚纽扣电池就能使产品运行很长时间 (4) 控制功能强
单片机体积虽小,但五脏俱全,它非常适合专门的控制用途。其指令系统中含有丰
- 3 -
富的转移指令,容易通过编程实现相关控制
结论:利用单片机采用程序设计方法来产生波形,线路相对简单,结构紧凑,价格低廉,频率稳定度高,抗干扰能力强等优点,而且还能对波形进行细微的调整,改良波形,易于通过程序控制,只要对电路稍加修改,调整程序,就能实现功能的升级。
2.系统设计
2.1系统设计要求
1 采用AT89S51及DAC0832设计函数信号发生器
2 输出信号为正弦波或三角波或阶梯波 3 输出信号频率为100Hz,幅度-5V—+5V
可调
4 必须具有信号输出及外接电源、公共
地线接口,程序在线下载接口
2.2总体方案选择与论证
方案一:采用模拟分立元件或单片压控函
数发生器(8038)可产生三角波,正弦波等。
- 3 -
通过调整外部元件的参数实现频率,幅值,占空比的调整,但是由于元件太过分散,即使使用单片压控函数发生器,参数与外部条件有关。因而产生的波形稳定性差,精度低,抗干扰能力差,价格高,且灵活性差
方案二:采用单片机(AT89S51)和数模转换芯片(DAC0832)实现波形的产生,波形的产生由程序控制,向D/A的输入端按一定的规律发送数据,经过D/A和MC1458产生100HZ频率波形,通过查询键盘或中断控制不同波形的产生。此方案通过编程简化了外部电路,原理简单,容易实现。
方案选择:经比较,方案二明显更容易实现课程设计题目的要求。通过编程实现不同波型的产生,并且可以通过按键实现波形的切换。该方案线路简单,结构紧凑,系统稳定,易控制,容易调试等优点,综上分析,选择方案二实现课题要求
- 3 -
2.3系统设计基本原理和思路
1.系统原理框图如图1
波形 A/D电流/输 基准
图1波形发生器系统框图
2.原理框图分析:该波形发生器主要由单片机(AT89S51),数模转换电路(DAC0832),电流/电压转换电路(MC1458),按键和波形指示灯电路,ISP接口等组成。其工作原理为当按下四个按键当中的任何一个按键,就会产生相对应的波形,并且四个LED灯作为不同波形的指示。
3.硬件电路的设计
3.1 AT89S51的介绍 3.1.1 AT89S51的介绍
- 3 -
AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4K的可编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。主要性能参数如下:
与MCS-51产品指令系统完全兼容 4K字节在系统编程(ISP)Flash 闪速存储器
1000次擦写周期 4.0-5.5V的工作电压范围 全静态工作模式:0HZ-33MHZ 三级程序加密锁 128*8字节内部RAM 32个可编程I/O口线 2个16位定时/计数器 6个中断源
- 3 -
全双工串行UART通道 低功耗空闲和掉电模式 中断可从空闲模式唤醒系统 看门狗(WDT)及双数据指针 掉电标示和快速编程特性
灵活的在系统编程(ISP-字节或页写模式)
3.1.2 AT89S51的引脚图
- 3 -
图2 AT89S51引脚图
3.1.3主要管脚说明
P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出 口时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
P1口:P1是一个带内部上拉电阻的8位双向I/O
- 3 -
口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。 P1口中P1.5,P1.6,P1.7引脚的第二功能
P2口:P2口是一个带有内部上拉电阻的8位双向I/O口。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVE @DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX @Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR))区中P2寄存器的内容),在整个访问期间不改变。
P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表所示:
- 3 -
EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H---FFFFH),EA端必须保持低电平(接地)。需要注意的是:如果加密位LB1被编程,复位时内部会所存EA端状态。
如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令
RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 XTAL1:振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:振荡器反相放大器的输出端。
3.1.4存储器结构
MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64K外部程序和数
- 3 -
据的寻址空间。
(1)程序存储器(ROM):
如果EA引脚接地(GND),全部程序均执行外部存储器。
在AT89S51,假如EA接至VCC(电源+),程序首先执行地址从0000H----FFFFH(4KB)内部程序存储器,再执行地址为1000H----FFFFH(60KB)的外部程序存储器。 (2) 数据存储器:
AT89S51具有128字节的内部RAM,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间
3.2资源分配
软硬件设计是设计中比不可少的,为了满足功能和指标要求,现分配资源如下:
1. 晶振采用12MHZ
2. 内存分配:P0口与DAC0832的DI0-DI7数据输入;P1口的P1.0~P1.3分别与四个按键相连,分别控制相应波形的输出,每输出一个波形,点亮对应的LED灯端相连;P2口与DAC0832的输入寄存器选择
- 3 -
信号CS,输入寄存器写选通信号WR1及DAC寄存器写选通WR2和数据传送信号XFER
3.3最小单片机系统
3.3.1AT89S51的晶振及其连接方法
CPU工作时必须要有个时钟脉冲,有两种方法可以向AT89S51提供时钟脉冲:
第一:外部时钟方式。使用外部电路始终给AT89S51提供时钟脉冲如右图
图3晶振电路
第二:内部时钟方式。使用晶振利用AT89S51内部电路产生时钟脉冲如左图。我们一般使用这种方式。AT89S51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器
- 3 -
与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器
外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性。如果使用石英晶体,我们推荐使用30pF+/-10pF,而如使用陶瓷谐振器建议选择40pF+/-10PF。
3.4复位电路
使CPU开始工作的方法就是给CPU一个复位信号,复位信号结束后,CPU从程序存储器“0000H”开始执行程序。AT89S51高电平复位,复位的方式一般有三种:
第一:上电复位。接通电源时,单片机复位 第二:手动复位。设置一个复位按钮,当操作者按下按钮时产生一个复位信号
第三:自动复位。设计一个复位电路,当系统满足某一条件时自动产生一个复位信号。 图4为最简单的上电复位和手动复位方法。
- 3 -
89S51
图4 AT89S51的晶振复位电路
3.5各模块电路的设计
3.5.1 D/A转换电路
(1)DAC0832基本介绍
DAC0832是双列直插式8位D/A转换器。能完成数字量输入到模拟量(电流)输出的转换。其主要参数如下:
分辨率为8位 转换时间为1μs 满量程误差为±1LSB 参考电压为(+10~-10)V 供电电源为(+5~+15)V
- 3 -
逻辑电平输入与TTL兼容
(2)DAC0832引脚图
图5 DAC0832引脚图
(1)DI7~DI0 :8位的数据输入端,DI7为最高位。
(2)IOUT1 :模拟电流输出端1,当DAC寄存器中数据全为1时,输出电流最大,当 DAC寄存器中数据全为0时,输出电流为0。
(3)IOUT2 :模拟电流输出端2, IOUT2与IOUT1的和为一个常数,即IOUT1+IOUT2=常数。 (4)RFB :反馈电阻引出端,DAC0832内部已经有反馈电阻,所以 RFB端可以直接接到外部运算放大器的输出端,这样相当于将一个反馈电阻接在运算放大器的输出端和输入端之间。
(5)VREF :参考电压输入端,此端可接一个
- 3 -
正电压,也可接一个负电压,它决定0至255的数字量转化出来的模拟量电压值的幅度,VREF范围为(+10~-10)V。VREF端与D/A内部T形电阻网络相连。 (6)Vcc :芯片供电电压,范围为(+5~ 15)V。 (7)AGND :模拟量地,即模拟电路接地端。 (8)DGND :数字量地。
(3)内部结构框图
DI7~DI0VREF输入锁存器DAC寄存器D/A转换器
IOUT2IOUT1ILECSLE1&&&LE2RfbAGNDWR1VCCWR2XFER- 3 -
图6 DAC0832内部结构图
内部结构框图分析:
在DAC0832中有两级锁存器,第
一级锁存器称为输入寄存器,它的允许锁存信号为ILE,第二级锁存器称为DAC寄存器,它的锁存信号也称为通道控制信号 XFER。当ILE为高电平,片选信号 /CS 和写信号 /WR1为低电平时,输入寄存器控制信号为1,这种情况下,输入寄存器的输出随输入而变化。此后,当 /WR1由低电平变高时,控制信号成为低电平,此时,数据被锁存到输入寄存器中,这样输入寄存器的输出端不再随外部数据DB的变化而变化。对第二级锁存来说,传送控制信号 /XFER 和写信号 /WR2同时为低电平时,二级锁存控制信号为高电平,8位的DAC寄存器的输出随输入而变化,此后,当 /WR2由低电平变高时,控制信号变为低电平,于是将输入寄存器的信息锁存到DAC寄存器中。
- 3 -
(4)DAC0832的工作方式
1.单缓冲工作方式
此方式是使两个寄存器中任一个处于直通状态,另一个工作于受控锁存器状态或两个寄存器同步受控。一般的做法是将WR1和XFER接数字地,使DAC 寄存器处于直通状态。另外把ILE接高电平,CS接端口地址译码信号,WR1接CPU系统总线的IOW信号,这样便可通过执行一条输出指令,选中该端口,使 CS和 WR1有效,从而启动D/A转换。
P2.7CSXFERDI0DI7DAC083280C51P0WRVSSVCCILERfbIOUT1IOUT2+5V1kΩ1MΩWR1WR2DGND-+VO
图7单缓冲工作单极性方式电路连接
- 3 -
双极性模拟输出电压 :
图8单缓冲工作双极性方式电路连接 (2)双缓冲工作方式
双缓冲方式的一大用途是数据接收和启动转换可以异步进行,即在对某数据转换的同时,能进行下一数据的接收,以提高转换速率。这时,可将ILE接高电平,WR1和WR2接CPU的IOW,CS和XFER分别接两个不同的I/O地址译码信号。
P2.7P0WR+5VDI02R2RVREFDAC0832偏移码DI7RfbIOUT1IOUT2AGND-A1+RVD-A2+VOUTDGND
XFERDI0DI7WR1WR2DAC0832(1)
P2.5CS+5VVCCILEILEVCC80C51XFERDI0- 3 - DI7WR1WR2DAC0832(2)P2.6CS
图9双缓冲工作方式电路连接
(3)直通工作方式
当DAC0832芯片的片选信号、写信号、及传送控制信号的引脚全部接地,允许输入锁存信号ILE引脚接+5V时,DAC0832芯片就处于直通工作方式,数字量一旦输入,就直接进入DAC寄存器,进行D/A转换。
(5)工作原理
DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。8 位输入寄存器用于存放主机送来的数字量,使输入数字量得到缓冲和锁存,由加以控制;8位DAC寄存器用于存放待转换的数字量,由加以控制;8位D/A转换器输出与数字量成正比的模拟电流;由与门、非与门组成的输入控制电路来控制2个寄存器的选通或锁存状态。 DAC0832与反相比例放大器相连,实现电流到电压的转换,因此输出模拟信号的极性与参考电压的极性相反,数字量与模拟量的转换关系为Vout1=-Vref×(数字码/256)
- 3 -
若D/A转换器输出为双极性
图10
D/A转换器双极性输出电路
图10中,运算放大器U3B的作用是把运算放大器U3A的单向输出电压转换成双向输出电压。D/A转换器的总输出电压为:
VOUT2= -[(R3/R2) VOUT1+(R3/R1)] Vref
设R=R=2R R=R,则
1
3
2
VOUT2= -(2VOUT1+VREF)
DAC0832主要是用于波形的数据的传送,是本题目电路中的主要芯片。
3.5.2 按键和波形指示灯电路
(1)原理图如下
- 3 -
图11 采用查询方式对各类波的切换
图12 采用中断的方式对波形的切换
(2)说明:对于查询方式对波形的切换,当按键按下时,输出相应波形,并点亮相应的LED灯,对于中断方式,利用两个外部中断实现对波形的切换。中断与查询相结合的方式可以进行扩展,查询方式不是实时的,而中断时实时的
- 3 -
3.5.3电流电压转换电路(MC1458)
(1)原理图如下:
图13 I/V转换电路
(2)说明:实现I/V转换最简单的方法就是直接在1out1和Iout2之间跨界一电阻,这样就很容易的实现了I/V转换,但是这种方法忽略了一个阻抗问题。对于DAC0832来说,R的取值应尽可能大,能够保证获得更多的电压,对于与输出电压相连的后续电路来说,R的取值应尽可能的小,以降低输出阻抗,这两方面是矛盾的,所以这种方式欠合理。而合理的方式是应用运算放
- 3 -
大器实现I/V转换,也解决了阻抗的问题。
3.5.4 ISP接口
(1)ISP接口定义及其连线图(图13 图14)
图14 程序下载接口定义
图15 ISP接口与AT89S51连线
- 3 -
(2)说明:
AT89S51相对于AT89C51增加的特色功
能之一就是前者具有ISP 下载功能,P1.5 P1.6, P1.7具有第二引脚功能,专门用于ISP功能。
4.软件设计
根据功能,系统软件设计分成几个模块编程:主程序模块,锯齿波程序模块,三角波程序模块,正弦波程序模块,方波程序模块,延时程序模块。
4.1主程序模块
(1)主程序流程图
开始 Y 输出
KEY1按 Y KEY2按Y 输出 - 3 - KEY3按 输出
图16 主程序流程图
(2)说明:主程序中主要实现利用按键来控制不同波形的输出,当按键KEY1(P1.0)按下时波形发生器就输出锯齿波,对应的LED(P1.4)点亮;当按键KEY2(P1.1)按下时,波形发生器就输出三角波,,对应的LED(P1.5)点亮;
- 3 -
当按键KEY3(P1.2)按下时,波形发生器就输出正弦波,对应的LED(P1.6)点亮;当按键KEY4(P1.3)按下时,波形发生器就输出方波,对应的LED(P1.7)点亮。通过按键可以以任意循环方式输出不同波形。
4.2锯齿波程序模块
(1)程序流程图
图17锯齿波程序流程图
(2)说明:
锯齿波产生首先将DAC0832口地址至为
2FFFH,然后将00H送入寄存器A中,DAC0832输出A中的内容,当A中的内容等于FFH返回开
- 3 -
始,当A中的内容不为FFH时,A中的内容累加,从而输出波形。
4.3三角波程序模块
(1)程序流程图
图18 三角波程序流程图
(2)说明:
三角波产生首先将DAC0832口地址至为
2FFFH,通过A中数值的加一递升,当A中的内容为0时,与0FFH相比,相等时A中的内容减一递减,从而循环产生三角波。
- 3 -
4.4正弦波程序模块 (1)程序流程图
- 3 -
图19正弦波程序流程图
(2)说明:
4.5方波程序模块
正弦波波形通过查表指令得出
(1)程序流程图
- 3 -
图20 方波程序流程图
(2)说明:
方波产生首先将DAC0832口地址至为
2FFFH,当A中的内容为0时,输出对应模拟量,然后延时,当A中的内容为0FFH时,同样输出对应模拟量,再延时相同时间,从而得到方波。
- 3 -
5.测试结论
5.1软件仿真
(1)锯齿波仿真图
(2)三角波仿真图
(3)正弦波仿真图
(4)方波仿真图
- 3 -
5.2仿真结论分析:
从软件仿真的结果上看,波形存
在一定的的失真,这主要跟程序的设计有关,没有做到那么精确,再者,我认为仿真软件本身也会给测试结果一定的误差。
5.3硬件测试结果分析:
硬件测试结果显示,示波器显示的波形比仿
真软件模拟甚至还标准,而且对按键的响应比仿真响应快。这在一定程度上,告诉我们,仿真软件只是一个我们研究的工具,我们不能完全依赖于于仿真软件。
- 3 -
6.结束语
经过持续两个多月的时间,终于完成了该毕业设计。本设计的题目是——波形发生器的设计。在这段时间中,我在网上、图书馆收集大量跟这个设计相关的资料,然后在根据毕业设计的任务和要求,利用收集的资料来完成我的设计任务。
单片机原理与应用课程设计是大学中一个非常有意义的实习。在设计的这段时间中,我学会了很多以前不会的东西。本设计利用汇编语言结合51系列单片机来完成,在设计中,能用软件实现的功能尽量采用软件实现,以避免硬件结构的庞大,保证电路工作性能稳定可靠。
首先,从毕业设计本身来说,我学到了很多东西,巩固了课堂上学到的单片机的应用知识。 毕业设计是培养我们综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环
- 3 -
节,是对我们实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,实践在学习生活中是必不可少的。因此作为二十一世纪的大学来说认识和学习实践是十分重要的。
但是在设计过程中,我也发现了一些问题,譬如功能不够完善。回顾起此次毕业设计,至今我仍感慨颇多。的确,从理论到实践,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次毕业设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来。我认为,在这次毕业设计的过程中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,我学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践 。
总之,经过这次毕业设计,让我受益匪浅。
- 3 -
我不仅仅是学到了新的知识,提高了硬件设计能力,锻炼的汇编语言的编程能力与技巧,而且对51系列单片机和汇编语言的知识有了进一步地理解,为将来学习ARM等处理器打下了一个基础。毕业设计让我增强了动手能力、增长了知识,更是让我深深感受到了老师们的细心关心和谆谆教导。在此设计过程中,非常感谢潘丽峰老师对我的耐心指导。当然还有我的同学,在系统的具体设计过程中,给予了莫大的帮助和宝贵的意见。
7.参考文献
[1] 宋文阁,李明颖,王学俊.单片机控制IC卡电子锁[J].大连轻工业学院学报,1999,18(2):111-115. [2] 王磊.PLC控制的多功能磁卡式电子密码锁设计[J].河海大学学报,1998,28(3):58-61. [3] 李文石.电子锁的发展和设计综述[J].五金科技,1993,11(3):3-6.
- 3 -
[4] 康华光.电子技术基础模拟部分[M].武汉:华中科技大学出版社,2005.
[5] 康华光.电子技术基础数字部分[M].武汉:华中科技大学出版社,2005.
[6] 祖龙起,刘仁杰.一种新型可编程密码锁[J].大连轻工业学院学报,2002,21(1):41-43.
[7] 夏继强,刑春香.单片机应用设计培训教程—实践篇[M].北京:北京航空航天大学出版社,2008. [8] 宁爱民.应用AT89C52单片机设计电子密码锁[J],淮海工学院学报,2003,12(2):28-31. [9] 杨季文等.80X86汇编语言程序设计教程[M].北京:清华大学出版社,1998.
[10] 周润景,张丽娜.基于PROTUES的单片机设计与仿真[M].北京:北京航空航天大学出版社,2007.
[11] 黄智伟.凌阳单片机课程设计指导[M].北京:北京航空航天大学出版社,2007.
[12] 蒋辉平,周国雄.单片机原理与应用设计[M].北京:北京航空航天大学出版社,2007.
[13] 付加才.单片机控制工程实践技术[M],北京:化学工业出版社,2004.
[14] 张超琦,钟明哲,卢世彬.单片机原理及事
- 3 -
例[M].上海:上海交通大学出版社,2007. [15] 秦晓梅,陈育斌.单片机原理综合实验教程[M].大连:大连理工出版社,2004.
[16] 姚伯元.中国学术期刊[J]标准化数据库系统工程[EB/OL]
[17] 周向红.51系列单片机应用与实践教程[M].北京:北京航空航天大学出版社,2008.
[18] 周明德.微型计算机系统原理及应用[M].北京:清华大学出版社,2006.
[19] 湖南涉外经济学院电气与信息工程学部.本
科生毕业设计(论文)要求与撰写规范(试行)[S].长沙:2009.
[20] IA-32 Intel Architecture Sofeware Developer’Manual Volume 1.Basic Architecture [Z] Intel公司,2005.
[21] Bes.G,A Natural Language and Graphics Interlace[M].Berlin.Springer-Verlag,l992:176-188.
[22] Callan J.P,Connell,M.,Query-based smpung of text databases[D].ACMTOIS,2001,19(2)
- 3 -
8.致 谢
从论文选题到搜集资料,从提纲的完成到正文的反复修改,我经历了喜悦、聒噪、痛苦和彷徨,在写作论文的过程中,心情是如此复杂。如今,伴随着这篇毕业论文的最终成稿,复杂的心情烟消云散,自己甚至还有一点成就感。
我要感谢我的导师潘丽峰老师在我大学的最后学习阶段——毕业设计阶段给自己的指导,我的论文完成与潘老师的悉心指导是分不开的。她为人随和热情,治学严谨细心。从选题、定题、撰写提纲,到论文的反复修改、润色直至定稿,潘丽峰老师始终认真负责地给予我深刻而细致地指导。为了指导我的毕业论文,她放弃了自己的休息时间,她的这种无私奉献的敬业精神令人钦佩,在此我向潘丽峰老师表示我诚挚的谢意。正是由于她给了我耐心的指导、无私的帮助和热忱鼓励,我的毕业论文才得以顺利完成。潘老师渊博的专业知识、严谨求实的科学态度和一丝不苟的工作作风给我留下了深刻的印象,这将是我今后事业上的楷模。
我还要感谢在大学四年中给我们授课的所有老师们,是他们让我学到了很多很多知识,让我看到了世界的精彩,让我学会了做人做事。同时感谢电气学部各位领导和老师给我的关心和帮助!正是由于老师们的教诲,我才能在各方面取得显著的进步,在此向他们表示我由衷的谢意,并祝所有的老师培养出越来越多的优秀人才,桃李满天下!
最后感谢四年里陪伴我的同学、朋友们,有了他们我的人生才丰富,有了他们我在奋斗的路上才不孤独,谢谢他们。
- 3 -
附录一:PROTEL原理图
- 3 -
附录二:PCB图
- 3 -
PCB1
PCB2
附录三:Proteus仿真图
- 3 -
附录四:
源程序
- 3 -
;********************************************************** ;课程设计题目:基于AT89S51的波形发生器设计
;实 现 功 能:能产生正弦波,三角波,锯齿波,方波
; 可通过按键能对各波形的切换,频率为:100HZ ; 按键查询方式 ;作者:唐松明
;**********************************************************
;******************************* ;对按键进行设定
;******************************* KEY1 EQU P1.0 KEY2 EQU P1.1 KEY3 EQU P1.2 KEY4 EQU P1.3 ORG 0000H LJMP MAIN ORG 0030H
MAIN:MOV SP,#60H ;设置堆栈区 ;****************************** ;按下KEY1生成锯齿波程序 ;****************************** B1:MOV A,#00H LP1:CLR P1.4 SETB P1.5
- 3 -
SETB P1.6 SETB P1.7
MOV DPTR,#2FFFH;对 MOVX @DPTR,A LCALL DELYB1 CJNE A,#0FFH,ADD1 JNB KEY2,B2 JNB KEY3,B3 JB KEY4,D0 LJMP B4 D0: SJMP B1 ADD1: INC A ; SJMP LP1
;******************************** ;按下KEY2生成三角波程序 ;******************************** B2: MOV A,#00H UP1:CLR P1.5 SETB P1.4 SETB P1.6 SETB P1.7
MOV DPTR,#2FFFH
- 3 -
MOVX @DPTR,A
LCALL DELYB2 INC A JNZ UP1 DOWN1: DEC A
MOVX @DPTR, A LCALL DELYB2 JNZ DOWN1 JNB KEY1,B1 JNB KEY3,B3 JB KEY4,C0 LJMP B4 C0: SJMP UP1
;****************************** ;KEY3按下生成正弦波
;****************************** B3: MOV R1,#00H LOOP1: CLR P1.6 SETB P1.5
- 3 -
SETB P1.4 SETB P1.7 MOV A,R1
MOV DPTR,#SETTAB MOVC A,@A+DPTR MOV DPTR,#2FFFH MOVX @DPTR,A LCALL DELYB3 INC R1 JNB KEY1,B1 JNB KEY2,B2 JB KEY4,E0 LJMP B4 E0:AJMP LOOP1 SETTAB: ;正弦表格
DB 80H,83H,86H,89H,8DH,90H,93H,96H DB
99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH DB
0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB
0C7H,0CAH,0CCH,0CFH,0D1H,
- 3 -
0D4H,0D6H,0D8H DB DB DB DB DB DB DB DB DB DB
0DAH,0DDH,0DFH,0E1H,0E3H, 0EAH,0ECH,0EEH,0EFH,0F1H, 0F6H,0F7H,0F8H,0F9H,0FAH, 0FDH,0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH,0FFH,0FFH, 0FDH,0FCH,0FBH,0FAH,0F9H, 0F5H,0F4H,0F2H,0F1H,0EFH, 0E9H,0E7H,0E5H,0E3H,0E1H, 0D8H,0D6H,0D4H,0D1H,0CFH, 0C5H,0C2H,0BFH,0BCH,0BAH,
0E5H,0E7H,0E9H 0F2H,0F4H,0F5H 0FBH,0FCH,0FDH 0FFH,0FFH,0FFH 0FFH,0FEH,0FDH 0F8H,0F7H,0F6H 0EEH,0ECH,0EAH 0DEH,0DDH,0DAH 0CCH,0CAH,0C7H 0B7H,0B4H,0B1H
DB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH,
- 3 -
9CH, 99H
DB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80H DB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69H
DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H
DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH
DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H
DB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH
DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02H DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H DB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H
DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25H
DB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38H
- 3 -
DB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EH
DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66H
DB 69H, 6CH, 6FH, 72H, 76H, 79H, 7CH, 80H RET
;******************************** ;按下KEY4生成方波
;******************************** B4: MOV A,#00H LP2:CLR P1.7 SETB P1.4 SETB P1.5 SETB P1.6
MOV DPTR,#2FFFH MOVX @DPTR,A LCALL DELYB4 MOV A,#0FFH MOVX @DPTR,A LCALL DELYB4 JB KEY1,J0
- 3 -
LJMP B1 J0: JB KEY2,J1 LJMP B2 J1: JB KEY3,J2 LJMP B3 J2: LJMP B4
;************************************ ;下面为延时程序的编写
;************************************ ;延时26us DELYB1:
MOV R3,#01H DL0:
MOV R2,#0AH DJNZ R2,$ DJNZ R3,DL0 RET ;延时10us DELYB2: MOV R5,#01H DL1:
MOV R4,#02H
- 3 -
DJNZ R4,$ DJNZ R5,DL0 RET ;延时17us DELYB3:
MOV R5,#07H DJNZ R5,$ RET ;延时5ms DELYB4:
MOV R6,#13H DL3:
MOV R5,#82H DJNZ R5,$ DJNZ R6,DL0 RET END
;******************************** ;采用中断方式实现波形的切换 ;*******************************
- 3 -
ORG 0000H AJMP MAIN
ORG 0003H; 外部中断0入口地址 AJMP JUCHIBO; 方波,对应P3.2口 ORG 0013H; 外部中断1入口地址 AJMP SANJIAO; 三角波对应P3.3口 ORG 0030H
MAIN: SETB EX0; 开外部中断0 SETB EX1; 开外部中断1
MOV IP,#04H;外部中断1优先,P3.3 CLR IT0; 外部中断0触发方式(电平触发)
CLR IT1; 外部中断1触发方式(电平触发)
SETB EA; 开总中断 LCALL ZHENGXUAN SJMP MAIN
SANJIAO:
MOV DPTR,#2FFFH ; 设置D/A口地址 MOV A,#00H; LOOP1:
- 3 -
MOVX @DPTR,A ; 输出对应于A内容的模拟量,2个机器周期
LCALL DELAY3; 2个机器周期,应该延时11us
INC A; 1个机器周期 JNZ LOOP1; 2个机器周期 LOOP2:
DEC A ;1个机器周期
MOVX @DPTR,A;2个机器周期
LCALL DELAY3;2个机器周期,延时11us JNZ LOOP2;2个机器周期 SJMP LOOP1 RETI
JUCHIBO:
LOOP3:MOV DPTR,#2FFFH;设置D/A口地址
MOV A,#00H LOOP4:
MOVX @DPTR,A LCALL DELAY1;26us
CJNE A,#0FFH,ADD1
- 3 -
SJMP LOOP3 ADD1: INC A SJMP LOOP4 RETI
ZHENGXUAN: MOV R3,#00H ;取表格初值 LOOP5: MOV A,R3;1个周期
MOV DPTR,#SETTAB;2个周期
MOVC A,@A+DPTR;查表指令,2个周期 MOVX @DPTR,A; 输出对应于A内容的模拟量,2个周期
LCALL DELAY1;2个周期,延时26us INC R3;1个周期 SJMP LOOP5;2个周期
;相邻两点之间指令占据时间为13us,这个时间应该要计算进去
SETTAB: ;正弦表格
DB 80H,83H,86H,89H,8DH,90H,93H,96H
- 3 -
DB
99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH DB
0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB DB DB DB DB DB DB DB DB
0C7H,0CAH,0CCH,0CFH,0D1H, 0DAH,0DDH,0DFH,0E1H,0E3H, 0EAH,0ECH,0EEH,0EFH,0F1H, 0F6H,0F7H,0F8H,0F9H,0FAH, 0FDH,0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH,0FFH,0FFH, 0FDH,0FCH,0FBH,0FAH,0F9H, 0F5H,0F4H,0F2H,0F1H,0EFH, 0E9H,0E7H,0E5H,0E3H,0E1H,
- 3 -
0D4H,0D6H,0D8H 0E5H,0E7H,0E9H 0F2H,0F4H,0F5H 0FBH,0FCH,0FDH 0FFH,0FFH,0FFH 0FFH,0FEH,0FDH 0F8H,0F7H,0F6H 0EEH,0ECH,0EAH
0DEH,0DDH,0DAH DB DB
0D8H,0D6H,0D4H,0D1H,0CFH, 0C5H,0C2H,0BFH,0BCH,0BAH,
0CCH,0CAH,0C7H 0B7H,0B4H,0B1H
DB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99H
DB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80H DB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69H
DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H
DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH
DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H
DB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH
DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02H DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H
- 3 -
DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H DB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H
DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25H
DB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38H DB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EH
DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66H
DB 69H, 6CH, 6FH, 72H, 76H, 79H, 7CH, 80H RET
;延时26us DELAY1: MOV R6,#01H DL0:
MOV R5,#0AH DJNZ R5,$
- 3 -
DJNZ R6,DL0 RET
;延时11us DELAY3: SETB RS0 SETB RS1 MOV R7,#01H DL3:
MOV R6,#01H DL2:
MOV R5,#01H DJNZ R5,$ DJNZ R6,DL2 DJNZ R7,DL3 RET END
- 3 -
因篇幅问题不能全部显示,请点此查看更多更全内容