单片机函数波形发生器课程设计_第1页
单片机函数波形发生器课程设计_第2页
单片机函数波形发生器课程设计_第3页
单片机函数波形发生器课程设计_第4页
单片机函数波形发生器课程设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

东 北 石 油 大 学 课 程 设 计 课 程 单片机课程设计 题 目 函数波形发生器设计 院 系 电气信息工程学院测控系 专业班级 测控技术与仪器 111 学生姓名 任建伟 学生学号 3 指导教师 路敬祎 张岩 2014 年 7 月 8 日 单片机课程设计 东北石油大学课程设计任务书 课程 单片机课程设计 题目 函数波形发生器设计 专业 测控技术与仪器 姓名 任建伟 学号 3 一、任务 设计一款基于 AT89C51 单片机的函数波形发生器。 二、设计要求 要求:利用 D/A 芯片产生峰峰值为 5V 的锯齿波、三角波、梯形波、正弦 波和方波。 控制功能:使用 5 个拨动开关进行功能切换。当 K0 接高电平时输出锯齿波; 当 K1 接高电平输出梯形波;当 K2 接高电平输出三角波;K3 接高电平输出正弦 波;K4 接高电平输出方波。 使用的主要元器件:8031、6MHz 的晶振、 74LS373、74LS138、2764、DAC0832、LM324、拨动开关 K0、K1、K2、K3、K4 等。 输出波形的验证方法:使用示波器测量输出波形。 三、参考资料 1陈志旺,李亮。51 单片机快速上手。机械工业出版社。 2薛定宇。控制系统计算及辅助设计MATLAB 语言与应用(第 2 版) 。清华 大学出版社。 3邹虹。单片机波形发生器的设计。重庆邮电学院学报。 4毅刚,彭喜元。单片机原理与应用设计。电子工业出版社。 5杨素行.模拟电子技术基础简明教程(第三版)M.北京:高等教育出版社, 2006. 6 Altium Designer 原理图与 PCB 设计 M.北京:电子工业出版社 2009. 完成期限 2014.6.30 至 2014.7.9 指导教师 路敬祎 张岩 专业负责人 曹广华 单片机课程设计 2014 年 6 月 30 日 目录 第一章 绪论.1 1.1 课题背景 .1 1.2 本系统研究的国内外现状 .2 1.3 本文主要研究内容和工作 .2 第二章 方案论证.3 2.1 方案一 纯硬件设计法.3 2.2 方案二纯软件设计法 .3 2.3 方案三 软硬件结合法.4 第三章 系统硬件设计.5 3.1 内部结构概述 .5 3.2 P0P3 口结构及功能.5 3.3 时钟电路和复位电路 .6 3.4 系统硬件总体设计 .8 3.5 DAC0832 的引脚及功能.8 3.6 74LS373 的引脚及功能.9 3.7 系统硬件原理 .9 第四章 系统的软件设计.11 4.1 主程序流程图 .11 4.2 波形的产生 .12 第五章 系统调试与仿真结果.14 5.1 系统调试 .14 5.2 仿真结果 .14 结论.15 参考文献.16 附录一 程序.17 附录二 仿真效果图.22 单片机课程设计 1 第一章 绪论 1.1 课题背景 波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度、 高稳定性、可重复性和易操作性的电子仪器。函数波形发生器具有连续的相位 变换、和频率稳定性等优点,不仅可以模拟各种复杂信号,还可对频率、幅值、 相移、波形进行动态、及时的控制,并能够与其它仪器进行通讯,组成自动测 试系统,因此被广泛用于自动控制系统、震动激励、通讯和仪器仪表领域。 在 70 年代前,信号发生器主要有两类:正弦波和脉冲波,而函数发生器介 于两类之间,能够提供正弦波、余弦波、方波、三角波、上弦波等几种常用标 准波形,产生其它波形时需要采用较复杂的电路和机电结合的方法。这个时期 的波形发生器多采用模拟电子技术,而且模拟器件构成的电路存在着尺寸大、 价格贵、功耗大等缺点,并且要产生较为复杂的信号波形,则电路结构非常复 杂。同时,主要表现为两个突出问题,一是通过电位器的调节来实现输出频率 的调节,因此很难将频率调到某一固定值;二是脉冲的占空比不可调节。 在 70 年代后,微处理器的出现,可以利用处理器、A/D 和 D/A,硬件和软 件使波形发生器的功能扩大,产生更加复杂的波形。这时期的波形发生器多以 软件为主,实质是采用微处理器对 DAC 的程序控制,就可以得到各种简单波 形。 90 年代末,出现几种真正高性能、高价格的函数发生器、但是 HP 公司推 出了型号为 HP770S 的信号模拟装置系统,它由 HP8770A 任意波形数字化和 HP1776A 波形发生软件组成。HP8770A 实际上也只能产生 8 中波形,而且价格 昂贵。不久以后, Analogic 公司推出了型号为 Data-2020 的多波形合成器, Lecroy 公司生产的型号为 9100 的任意波形发生器等。 到了二十一世纪,随着集成电路技术的高速发展,出现了多种工作频率可 过 GHz 的 DDS 芯片,同时也推动了函数波形发生器的发展, 2003 年, Agilent 的产品 33220A 能够产生 17 种波形,最高频率可达到 20M, 2005 年的 产品 N6030A 能够产生高达 500MHz 的频率,采样的频率可达 1.25GHz。由上 面的产品可以看出,函数波形发生器发展很快近几年来,国际上波形发生器技 术发展主要体现在以下几个方面: (1)过去由于频率很低应用的范围比较狭小,输出波形频率的提高,使得波形发 生器能应用于越来越广的领域。波形发生器软件的开发正使波形数据的输入变 得更加方便和容易。波形发生器通常允许用一系列的点、直线和固定的函数段 单片机课程设计 2 把波形数据存入存储器。同时可以利用一种强有力的数学方程输入方式,复杂 的波形可以由几个比较简单的公式复合成 v=f (t)形式的波形方程的数学表达式 产生。从而促进了函数波形发生器向任意波形发生器的发展,各种计算机语言 的飞速发展也对任意波形发生器软件技术起到了推动作用。目前可以利用可视 化编程语言 (如 Visual Basic ,Visual C 等等)编写任意波形发生器的软面板这 样允许从计算机显示屏上输入任意波形,来实现波形的输入。 (2)与 VXI 资源结合。目前,波形发生器由独立的台式仪器和适用于个人计算 机的插卡以及新近开发的 VXI 模块。由于 VXI 总线的逐渐成熟和对测量仪器的 高要求,在很多领域需要使用 VXI 系统测量产生复杂的波形,VXI 的系统资源 提供了明显的优越性,但由于开发 VXI 模块的周期长,而且需要专门的 VXI 机 箱的配套使用,使得波形发生器 VXI 模块仅限于航空、军事及国防等大型领域。 在民用方面,VXI 模块远远不如台式仪器更为方便。 (3)随着信息技术蓬勃发展,台式仪器在走了一段下坡路之后,又重新繁荣起来。 不过现在新的台式仪器的形态,和几年前的己有很大的不同。这些新一代台式 仪器具有多种特性,可以执行多种功能。而且外形尺寸与价格,都比过去的类 似产品减少了一半。 1.2 本系统研究的国内外现状 早在 1978 年,由美国 Wavetek 公司和日本东亚电波工业公司公布了最高取 样频率为 5MHz,可以形成 256 点(存储长度)波形数据,垂直分辨率为 8bit,主要用于振动、医疗、材料等领域的第一代高性能信号源,经过将近 30 年的发展,伴随着电子元器件、电路、及生产设备的高速化、高集成化,波形 发生器的性能有了飞速的提高,变得操作越来越简单而输出波形的能力越来越 强。波形操作方法的好坏,是由波形发生器控制软件质量保证的,编辑功能增 加得越多,波形形成的操作性越好。 1.3 本文主要研究内容和工作 近年来,波形发生器在各种领域中得到越来越广泛的应用。本系统主要通 过研究 51 单片机的功能,外加 D/A 转换器等其它器件,进行硬件设计和软件 编程,完成锯齿波、梯形波、三角波、方波和正弦波共五种波形的形成。波形 频率的变化由程序来控制,即通过改变定时器的初值来改变输出波形相邻两点 的时间间隔,从而实现波形频率的改变。 单片机课程设计 3 第二章 方案论证 2.1 方案一 纯硬件设计法 波形发生器设计的纯硬件法早期,波形发生器的设计主要是采用运算放大 器加分立元件来实现。实现的波形比较单一,主要为正弦波、方波和三角波。 工作原理嗍也相对简单:首先是产生正弦波,然后通过波形变换(正弦波通过比 较器产生方波,方波经过积分器变为三角波)实现方波和三角波。在各种波形后 加上一级放大电路,可以使输出波形的幅度达到要求,通过开关电路实现不同 输出波形的切换,改变电路的具体参数可以实现频率、幅度和占空比的改变。 通过对电路结构的优化及所用元器件的严格选取可以提高电路的频率稳定性和 准确度。纯硬件法中,正弦波的设计是基础,实现方法也比较多,电路形式一 般有 LC、RC 和石英晶体振荡器三类。LC 振荡器适宜于产生几 Hz 至几百 MHz 的 高频信号;石英晶体振荡器能产生几百 kHz 至几十 MHz 的高频信号且稳定度高; 对于频率低于几 MHz,特别是在几百 Hz 时,常采用 RC 振荡电路。RC 振荡电路又分为文氏 桥振荡电路、双 T 网络式和移相式振荡电路等类型。其中,以文氏桥振荡电路 最为常用。目前,实现波形发生器最简单的方法是采用单片集成的函数信号发 生器。它是将产生各种波形的功能电路集成优化到一个集成电路芯片里,外加 少量的电阻、电容元件来实现。采用这种方法的突出优势是电路简单,实现方 便,精度高,性能优越;缺点是功能较全的集成芯片价格较贵。实际中应用较 多的单片函数信号发生器有 MAX038(最高频率可达 40MHz)和 ICL8038(最高频率 为 300kHz)。 2.2 方案二 纯软件设计法 波形发生器的设计还可以采用纯软件的方法来实现。虚拟仪器鞠使传统仪 器发生了革命性的变化,是 21 世纪测试仪器领域技术发展的重要方向。它以计 算机为基础,软件为核心,没有传统仪器那样具体的物理结构在计算机上实 现仪器的虚拟面板,通过软件设计实现和改变仪器的功能。例如用图形化编程 工具 LabVIEW 来实现任意波形发生器的功能:在 LabVIEW 软件的前面板通过拖 放控件,设计仪器的功能面板(如波形显示窗口,波形选择按键,波形存储回放 等工作界面),在软件的后面板直接拖放相应的波形函数并进行参数设置或直接 单片机课程设计 4 调用编程函数来设计任意波形以实现波形产生功能;完成的软件打包后,可脱 离编程环境独立运行。实现任意波形发生器的功能。采用纯软件的虚拟仪器设 计思路可以使设计简单、高效,仅改变软件程序就可以轻松实现波形功能的改 变或升级。从长远角度来看,纯软件法成本较低。软件法的缺点是波形的响应 速度和精度逊色于硬件法。 2.3 方案三 软硬件结合法 软硬件结合的波形发生器设计方法同时兼具软硬件设计的优势:既具有纯 硬件设计的快速、高性能,同时又具有软件控制的灵活性、智能性。如以单片 机和单片集成函数发生器为核心。辅以键盘控制、液晶显示等电路,设计出智 能型函数波形发生器,采用软硬件结合的方法可以实现功能较全、性能更优的 波形发生器,同时还可以扩展波形发生器的功能,比如通过软件编程控制实现 波形的存储、运算、打印等功能,采用 USB 接口设计。使波形发生器具有远程 通信功能等。目前,实验、科研和工业生产中使用的信号源大多采用此方法来 实现。 纯硬件设计法功能较单一,波形改变困难、控制的灵活性不够,不具备智 能性,其中由运算放大器加分立元件组成的波形发生器,除在学生实验训练中 使用外。基本不被采用。纯软件设计法实现简单,程序改变及功能升级灵活, 但实现的波形精度及响应速度不如硬件法高。纯软件法主要适用于对波形精度、 响应速度要求不是很高的场合。相比之下,软硬件结合的方法可以设计出性能 最优、功能扩展灵活、控制智能化的新一代的波形发生器,可以满足教学、科 研、工业生产等各方面对波形发生器性能有较高要求的应用场合。综合以上几 种设计方案,本设计采用方案三的方法软硬件设计法。其方案能够产生很好 的波形,也易实现。 单片机课程设计 5 第三章 系统硬件设计 3.1 内部结构概述 典型的 MCS-51 单片机芯片集成了以下几个基本组成部分: 1)一个 8 位的 CPU; 2) 128B 或 256B 单元内数据存储器(RAM) ; 3) 4KB 或 8KB 片内程序存储器(ROM 或 EPROM) ; 4) 4 个 8 位并行 I/O 接口 P0P3; 5)两个定时/计数器; 6) 5 个中断源的中端管理控制系统; 7)一个全双工串行 I/O 口 UART(通用异步接收、发送器) ; 8)一个片内振荡器和时钟产生电路。 图 3-1 单片机引脚图 3.2 P0P3 口结构及功能 单片机课程设计 6 3.2.1 P0 口结构及功能 P0 口由一个输出锁存器、一个转换开关 MUX、两个三态输入缓冲器、输 出驱动电路和一个与门及一个反相器组成。 P0 口具有两种功能:第一, P0 口可以用作通用 I/O 接口;第二, P0 口 可以用作地址/数据总线。 3.2.2 P1 口结构及功能 P1 口是由一个输出锁存器、两个三态输入缓冲器和输出驱动电路组成,驱 动电路内部设有上拉电阻。 3.2.3 P2 口结构及功能 P2 口由一个输出锁存器、一个转换开关 MUX、两个三态输入缓冲器、输 出驱动电路和一个反相器组成。 P2 口共有两个功能:第一个功能与上述两组引脚的第一功能相同,即可用 作通用 I/O 口;它的第二功能与 P0 口引脚的第二功能相配合,作为地址总线用 于输出片外存储器的高 8 位。 3.2.4 P3 口结构及功能 P3 口由一个输出锁存器、三个三态输入缓冲器、输出驱动电路和一个与非 门组成。 P3 口有两个功能:第一个功能与其余三个端口的第一功能相同;第二功能 做控制用,每个引脚的功能不同: P3.0RXD:串行口接收数据输入端 P3.1TXD:串行口发送数据输出端 P3.2INT0:外部中断申请输入端 0 P3.3INT1:外部中断申请输入端 1 P3.4T0:外部计数脉冲输入端 0 P3.5T1:外部计数脉冲输入端 1 P3.6WR:写外设控制信号输出端 P3.7RD:读外设控制信号输出端 单片机课程设计 7 3.3 时钟电路和复位电路 单片机的时钟信号用来提供单片机内各种微操作的时间基准;复位操作则 使单片机的片内电路初始化,使单片机从一种确定的状态开始运行。 3.3.1 时钟电路 单片机的时钟信号通常有两种产生方式。一种是内部时钟方式;另一种是 外部时钟方式。 图 3-2 时钟方式图 内部时钟方式只要在单片机的 XTAL1 和 XTAL2 引脚外接晶振就构成了自 激振荡器,并在单片机内部产生时钟脉冲信号。外部时钟方式是把外部已有的 时钟信号引入到单片机内,常用于多片单片机同时工作,已使各单片机同步。 单片机的时序单位:晶振周期为时钟脉冲频率的倒数,为最小的时序单位, 也称 T 状态;时钟周期包含两个晶振周期,也称 S 状态;完成一个基本操作所 需要的时间称为机器周期,由 6 个时钟周期组成,即 12 个晶振周期;指令的执 行时间称为指令周期,通常含有 14 个机器周期。 3.3.2 单片机的复位状态 当 MCS-51 系列单片机的复位引脚 RST(全称 RESET)出现 2 个机器周期以 上的高电平时,单片机就执行复位操作。如果 RST 持续为高电平,单片机就处 于循环复位状态。根据应用的要求,复位操作通常有两种基本形式:上电复位 和手动复位。上电复位要求接通电源后,自动实现复位操作。手动复位是当单 片机已在运行当中时,按下复位键 K 后松开,也能使 RST 为一段时间的高电平, 从而实现上电或开关复位的操作。 单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器 单片机课程设计 8 PC0000H,这表明程序从 0000H 地址单元开始执行。单片机冷启动后,片内 RAM 为随机值,运行中的复位操作不改变片内 RAM 区中的内容, 21 个特殊 功能寄存器复位后的状态为确定值。 单片机课程设计 9 3.4 系统硬件总体设计 波形的产生是通过 51 单片机执行某一波形发生器程序,向 D/A 转换器的 输入端按一定的规律发生数据,从而在 D/A 转换电路的输出端得到相应的电压 波形。 键盘AT89C51DAC0832 运放电路波形输出 图 3-3 总体设计图 3.5 DAC0832 的引脚及功能 DAC0832 是双列直插式 8 位 D/A 转换器,完成数字量输入到模拟量输出的 转换。 图 3-4 DAC0832 引脚图 DAC0832 结构:D0D7: 8 位的数据输入端, D7 为最高位, TTL 电 平,有效时间应大于 90ns(否则锁存器的数据会出错) ; ILE:数据锁存允许控制信号输入线,高电平有效; CS:片选信号输入线(选通数据锁存器) ,低电平有效; WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于 500ms)有效。由 ILE、CS、WR1 的逻辑组合产生,当 LE1 为高电平时,数据锁存器状态随输入 数据线变换, LE1 的负跳变时将输入数据锁存; 单片机课程设计 10 XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于 500ms)有效。 WR2:DAC 寄存器选通输入线,负脉冲(脉宽应大于 500ms)有效。由 WR1、XFER 的逻辑组合产生 LE2,当 LE2 为高电平时, DAC 寄存器的输出 随寄存器的输入而变化,LE2 的负跳变时将数据锁存器的内容打入 DAC 寄存器 并开始 D/A 转换。 IOUT1:模拟电流输出端 1,当 DAC 寄存器中数据全为 1 时,输出电流最 大,当 DAC 寄存器中数据全为 0 时,输出电流为 0。 IOUT2:模拟电流输出端 2, IOUT2 与 IOUT1 的和为一个常数。 Rfb:反馈信号输入线,改变 Rfb 端外接电阻值可调整转换满量程精度。 Vcc:电源输入端,范围为 (+5+ 15)V。 VREF:基准电压输入线,范围为 (-10+10)V; AGND:模拟信号地。 DGND:数字信号地。 3.6 74LS373 的引脚及功能 74LS373 是常用的地址锁存器芯片,它实质是一个带三态缓冲输出的 8D 触发器。 D0D7:数据输入端; Q0Q7:数据输出端; OE:三态允许控制端,低电平有效;当 OE 为低电平时, Q0Q7 为正常 逻辑状态,可用来驱动负载或总线;当 OE 为高电平时, Q0Q7 呈高阻态,既 不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。 LE:锁存允许端。当锁存允许端 LE 为高电平时, Q 随数据 D 而变;当 LE 为低电平时, Q 被锁存在已建立的数据电平。 图 3-5 74LS373 引脚图 3.7 系统硬件原理 51 单片机的最小系统最小系统由振荡电路、电源电路、复位电路、EA 及 单片机课程设计 11 应用程序组成。它有三种联接方式。一种是两级缓冲器型,即输入数据经过两 级缓冲器型,即输入数据经过两级缓冲器后,送入 D/A 转换电路。第二种是单 级缓冲型,输入数据经输入寄存器直接送入 DAC 寄存器,然后送 D/A 转换电 路。第三种是两个缓冲器直通,输入数据直接送 D/A 转换电路进行转换。 3.7.1 系统原理图 图 3-6 系统原理图 单片机课程设计 12 第四章 系统的软件设计 系统软件由主程序和产生波形的子程序组成,软件设计主要是产生各种波 形的子程序的编程。通过编程可得到各种波形。频率的改变可采用插入延时子 程序的方法来实现。 4.1 主程序流程图 图 4-1 主程序流程图 开始 初始化 读取波形选择开关 调波形发生子程序 结束 波形 转换 否 是否 波形判别 单片机课程设计 13 4.2 波形的产生 4.2.1 设计思路 利用中断,当 5 个开关中有任意一个闭合时,跳转至中断程序,在中断程 序中判断是哪一个按键闭合,跳转至相应的程序,执行输出波形的操作,每输 出一个点之后,判断按键是否断开,如果依旧闭合,则继续输出,如果已经断 开,则结束中断程序。 函数波形发生器 K0 锯齿 波 K1 梯形 波 K2 三角 波 K3 方波 K4 正弦 波 图 4-2 主程序流程图 4.2.2 锯齿波的产生 锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多 少则根据要求的频率来进行。然后加到某个数之后就再重新设置为初值,再重 复执行刚刚的操作,如此循环下去。 4.2.3 梯形波的产生 梯形波的实现是设置一个初值,然后进行加一,当加到某个数时延时,之 后减一,减到初值时在返回到之前的操作,继续加一、延时、减一。 4.2.4 三角波的产生 三角波的实现是设置一个初值,当加到某个值的时候,执行减一操作,减 到初值时,再加一。 4.2.5 方波的产生 方波的实现只需开始的时候设置一个初值然后直接输出这个值就行了,输 单片机课程设计 14 出一段时间后,然后再重新置一个数据,然后再输出这个数据一段时间,但是 此时的时间一定要等于前面那段时间。 4.2.6 正弦波的产生 正弦波的实现需要查表,每查一次表,输出一个数值,之后查下一个数值 继续输出,当一个波形的 256 个数值全部输出之后,从头开始继续输出。 单片机课程设计 15 第五章 系统调试与仿真结果 5.1 系统调试 根据系统设计方案,本系统的调试共分为三大部分:仿真电路调试,程序 调试和程序和仿真电路联调。由于在系统设计中采用模块设计法,所以方便对 各电路模块功能进行逐级测试。 5.1.1 仿真电路调试 对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。调试 结果表明,各模块能够实现其预期功能。 5.1.2 程序调试 软件调试采用 keil c 软件,将编好的程序进行调试,主要是检查语法错误。 在此过程中,发现了好多错误。要耐心调试。 5.1.3 联调 将调试好的仿真电路和程序进行联调,主要调试系统的实现功能。只要程 序调试完成,线路连好,本步没有困难。 5.2 仿真结果 在 Proteus 软件中运行仿真。按下 K0 键时,示波器输出锯齿波;按下 K1 键时输出梯形波;按下 K2 键时输出三角波;按下 K3 键时输出方波;按下 K4 键时输出正弦波。具体波形见附录二。 单片机课程设计 16 结论 本次的设计中利用 AT89C51 和 DAC0832 以及放大器完成电路的设计,用 开关来控制各种波形的发生及转换,用单片机输出后,经过模数转换器生成波 形,最终可以通过示波器观察。在这次的软件设计中,程序设计采用的是汇编 语言。汇编语言具有速度快,可以直接对硬件进行操作的优点,它可以极好的 发挥硬件的功能。但是汇编语言也存在编写的代码非常难懂,不好维护,很容 易产生 bug,难于调试的缺点。因此,在大型程序的设计中,多采用 C 语言进 行程序编译。 C 语言简洁高效,是最贴近硬件的高级编程语言,经过多年的发展,现在 已成熟为专业水平的高级语言。而且,现在单片机产品推出时纷纷配套了 C 语 言编译器,应用广泛。不过就本次课程设计来说,汇编语言还是适用的。由于 此次是第一次进行课设,有些软件以及芯片以前从未接触过,因此还不是很得 心应手,所以在设计中遇到了很多问题及难点。比如: proteus 软件以及 wave6000 的使用; D/A 转换器和锁存器的结构、功能等等,这些都需要自己 去查找资料了解这些。通过此次的课程设计,我进一步了解了波形发生器的原 理,在实际动手操作过程中,使我接触了许多我以前没接触过的元件,提高了 自己的动手能力。而且在编程时重新温习了刚学不久的 51 单片机以及 MATLAB 语言,不仅让我学习了一些新的知识,而且对以前所学内容进行了巩固,让我 懂得理论知识的重要性,没有理论的指导一切实际行动都是盲目的,且实际操 作是所学的理论知识得到验证,更能加深对理论知识的理解,让我受益匪浅。 单片机课程设计 17 参考文献 1陈志旺,李亮。51 单片机快速上手。机械工业出版社。 2薛定宇。控制系统计算及辅助设计MATLAB 语言与应用(第 2 版) 。清 华大学出版社。 3邹虹。单片机波形发生器的设计。重庆邮电学院学报。 4毅刚,彭喜元。单片机原理与应用设计。电子工业出版社。 5杨素行.模拟电子技术基础简明教程(第三版)M.北京:高等教育出版社, 2006. 6 Altium Designer 原理图与 PCB 设计 M.北京:电子工业出版社 2009. 7谭浩强.C 程序设计(第 2 版) M .北京:清华大学出版社 1999. 8陈明义.电子技术教程设计实用教程(第 3 版)M.长沙:中南大学, 2009. 9马晓.函数信号发生器的设计 D.河南 2012. 10李华.MCS-51 系列单片机实用接口技术 M. 11何立民.单片机应用技术选编 M. 12阎石.模拟电子技术基础 M. 单片机课程设计 18 附录一 程序 ORG 0000H LJMP MAIN ORG 0003H 外部中断 0 LJMP INT00 ORG 0040H MAIN: MOV SP,60H; 更改堆栈指针,避免堆栈与工作寄存器区发生冲突 SETB IT0; 外部中断请求 0 为下降沿触发方式 SETB EA; 中断允许总开关打开 SETB EX0; 允许外部中断 0 中断 INT00: CLR EA ; 关中断 PUSH PSW; 现场保护 PUSH Acc SETB EA; 开中断 JNB P1.0,IR0; 如果 K0 键闭合,则跳转至 IR0 输出锯齿波 JNB P1.1,IR1; 如果 K1 键闭合,则跳转至 IR1 输出梯形波 JNB P1.2,IR2; 如果 K2 键闭合,则跳转至 IR2 输出三角波 JNB P1.3,IR3; 如果 K3 键闭合,则跳转至 IR3 输出方波 JNB P1.4,IR4; 如果 K4 键闭合,则跳转至 IR4 输出正弦波 INTIR: CLR EA; 关中断 POP Acc; 现场恢复 POP PSW SETB EA ; 开中断 RETI 锯齿波发生子程序如下: 单片机课程设计 19 IR0: MOV R0,#0FEH 设置端口地址 MOV A,#00H LOOP: MOVX R0,A ; 写入 JB P1.0,INTIR; 如果 k0 键已经断开,则返回 INC A ; A 加一 SJMP LOOP; 循环 LJMP INTIR; 返回 梯形波发生子程序如下: IR1: MOV R0,#0FEH; 设置端口地址 MOV A,#00H UP: MOVX R0,A; 写入 JB P1.1,INTIR; 如果 k1 键已经断开,则返回 INC A; A 加一 JNZ UP ; 循环 DEC A; 如果已经溢出,则减一,减一之后 A 的值为 255 LCALL DELAY; 延时 JB P1.1,INTIR; 如果 k1 键已经断开,则返回 DOWN: DEC A; MOVX R0,A; 写入 JB P1.1,INTIR; 如果 k1 键已经断开,则返回 JNZ DOWN ; 循环 SJMP UP; 如果减到 0,则跳转至 UP,继续执行加一操作 LJMP INTIR; 返回 DELAY: MOV R7,#100; 延时子程序 DELAY1: MOV R6,#10 NOP 单片机课程设计 20 DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET 三角波发生子程序如下: IR2: MOV R0,#0FEH; 设置端口地址 MOV A,#00H UP2: MOVX R0,A; 写入 JB P1.2,INTIR; 如果 k2 键已经断开,则返回 INC A; A 加一 JNZ UP2; 循环 DOWN2: DEC A; A 减一 MOVX R0,A; 写入 JB P1.2,INTIR; 如果 k2 键已经断开,则返回 JNZ DOWN2; 循环 SJMP UP2; 如果减到 0,则跳转至 UP2,继续加一操作 LJMP INTIR; 返回 方波发生子程序如下: IR3: MOV R0,#0FEH; 设置端口地址 POSI: MOV A,#00H; 给 A 赋值 0 x00 MOVX R0,A; 写入 LCALL DELAY ; 延时 JB P1.3,INTIR; 如果 k3 键已经断开,则返回 NEGA: MOV A,#0FFH ; 给 A 赋值 0 xFF MOVX R0,A; 写入 LCALL DELAY; 延时 JB P1.3,INTIR; 如果 k3 键已经断开,则返回 单片机课程设计 21 SJMP POSI; 跳转至 POSI,继续下一个波形的输出 LJMP INTIR; 返回 正弦波发生子程序如下: IR4: MOV R0,#0FEH; 设置端口地址 MOV R1,#00H XX: MOV A,R1 LCALL HANSHU; 调用查表函数 MOVX R0,A; 写入 JB P1.4,INTIR; 如果 k4 键已经断开,则返回 INC R1 SJMP XX; 继续查表 LJMP INTIR ; 返回 HANSHU: MOV DPTR,#TAB1 MOVC A,A+DPTR RET TAB1: db 080h,083h,086h,089h,08ch,090h,093h,096h,099h,09ch,09fh,0a2h,0a5h,0a8h,0abh,0a eh db 0b1h,0b3h,0b6h,0b9h,0bch,0bfh,0c1h,0c4h,0c7h,0c9h,0cch,0ceh,0d1h,0d3h,0d5h,0d8 h db 0dah,0dch,0deh,0e0h,0e2h,0e4h,0e6h,0e8h,0eah,0ebh,0edh,0efh,0f0h,0f1h,0f3h, 0f4h db 0f5h,0f6h,0f8h,0f9h,0fah,0fah,0fbh,0fch,0fdh,0fdh,0feh,0feh,0feh,0ffh,0ffh,0ffh db 0f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论