




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学学 号:号: 51 湖南文理学院 机械工程学院机械工程学院 课课 程程 设设 计计 题题 目目 基于基于 AT89C52 单片机的单片机的 简易函数信号发生器设计简易函数信号发生器设计 专专 业业机械电子工程机械电子工程 班班 级级机电机电 08101 班班 姓姓 名名谭鹏辉谭鹏辉 指导教师指导教师陈卫国陈卫国 2011 年12 月07日 课程设计任务书课程设计任务书 姓 名谭鹏辉学 号51班 级机电 08101 班 课程名称单片机课程设计课程性质必修 设计时间2011 年 11 月 28 日 2011 年 12 月 9 日 设计名称基于 AT89C52 单片机的简易函数信号发生器设计 设计要求 1)以单片机为核心,经过 D/A 转换和放大电路的处理,最后输出信 号; 2)要求能输出正弦波、三角波、锯齿波和方波四种信号; 3)输出信号可以通过按键来改变 4)完成系统电路设计; 5)完成系统软件设计; 6)完成系统 Proteus 下的仿真。 5)完成课程设计报告。 计划与进度 时间:二周 1)方案设计 2 天 2)电路设计 2 天 3)软件设计 3 天 4)软、硬件联调 2 天 5)系统仿真 2 天 6)答辩 1 天 7)完成报告 2 天 任课教师 意 见 年年 月月 日日 教研室主任 签 名 年年 月月 日日 说明 平时考勤:20% 设计:30% 仿真:20% 答辩:10% 设计报告:20% 共计 100 分。 目目 录录 目 录 . 摘 要 .4 第一章 绪论 .5 1.1 单片机概述 .5 1.2 信号发生器的分类 .5 1.3 研究内容 .5 第二章 函数信号发生器设计 .6 2.1课程设计的目的.6 2.2 课程设计要求 .6 第三章 设计方案 .7 3.1 系统主要功能 .7 3.2 系统硬件构成及功能 .7 2.2.1 AT89C52 单片机及其说明 .7 3.2.2 资源分配 .10 3.2.3 D/A 转换模件部件 .11 3.2.4 外部控制模块部件 74LS22 .12 3.2.5 放大部分.12 3.3 系统软件设计及接口电路 .13 3.3.1 信号频率数据采集.13 3.3.2 正弦波产生程序.13 3.3.3 三角波产生程序.14 3.3.4 方波产生程序 .14 3.3.5 锯齿波产生程序.15 3. 3. 6 信号放大模块设计.15 3. 3. 7 数模转换模块设计.16 第四章 仿真图及及结果分析.17 4.1 波形发生器的调试与测试.17 4.2 仿真结果图.18 第五章 总结与展望.20 参考文献.21 附录一 元器件清单.22 附录二 程序清单.23 附录三 电路原理图.30 摘要摘要 本次作品是一个基于单片机设计的函数信号发生器。函数信号发生器的设计方法 有多种,利用单片机设计的函数信号发生器具有编程灵活,功能更以扩充等实际的优 点。利用单片机设计的函数信号发生器能够产生正弦波,锯齿波,三角波,方波,并 实现对频率和占空比的调节,以及液晶屏显示波形名称和波形频率,波形的切换和频 率的调节以及占空比的改变都可以用按键实现。在编程语言上,我们选择自身比较熟 悉的C 语言,这样在后期波形的调试及与硬件衔接方面更容易发挥出自身优势。经 过设计及后期长时间的调试,设计的所有功能均已实现。 关键词:单片机,函数发生器,液晶 LCD 第一章 绪论 1.1 单片机概述 随着大规模集成电路技术的发展,中央处理器(CPU)、随机存取存储器(RAM)、只 读存储器(ROM)、(I/O)接口、定时器/计数器和串行通信接口,以及其他一些计算机外 围电路等均可集成在一块芯片上构成单片微型计算机,简称为单片机。单片机具有体 积小、成本低,性能稳定、使用寿命长等特点。其最明显的优势就是可以嵌入到各种 仪器、设备中,这是其他计算机和网络都无法做到的9,10。 1.2 信号发生器的分类 信号发生器应用广泛,种类繁多,性能各异,分类也不尽一致。按照频率范围分 类可以分为:超低频信号发生器、低频信号发生器、视频信号发生器、高频波形发生 器、甚高频波形发生器和超高频信号发生器。按照输出波形分类可以分为:正弦信号 发生器和非正弦信号发生器,非正弦信号发生器又包括:脉冲信号发生器,函数信号 发生器、扫频信号发生器、数字序列波形发生器、图形信号发生器、噪声信号发生器 等。按照信号发生器性能指标可以分为一般信号发生器和标准信号发生器。前者指对 输出信号的频率、幅度的准确度和稳定度以及波形失真等要求不高的一类信号发生器。 后者是指其输出信号的频率、幅度、调制系数等在一定范围内连续可调,并且读数准 确、稳定、屏蔽良好的中、高档信号发生器。 1.3 研究内容 本文是做基于单片机的信号发生器的设计,将采用编程的方法来实现三角波、锯 齿波、矩形波、正弦波的发生。根据设计的要求,对各种波形的频率和幅度进行程序 的编写,并将所写程序装入单片机的程序存储器中。在程序运行中,当接收到来自外 界的命令,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电 路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出 第二章:函数信号发生器的设计第二章:函数信号发生器的设计 设计一个基于单片机的函数信号发生器,该函数信号发生器可以输出四种波形, 有正弦波,锯齿波,三角波,方波。在此基础上进一步实现对波形频率和占空比的调 节,并用液晶屏分两行显示波形名称和波形频率。 2.1 课程设计的目的: 1、巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决实 际课题设计的能力。 2、培养针对课题需要,选择和查阅有关手册、图表及文献资料的能力,提高组成 系统、编程、调试的动脑动手能力。 3、通过对课题设计方案的分析、选择、比较,熟悉运用单片机系统开发、软硬件 设计的方法内容及步骤。 4、掌握 DAC0832,LM324,74LS22 的接口电路,及使用方法。 5、熟悉掌握函数信号发生器的工作原理。 2.2 课程设计要求: 1、熟悉组成系统中的实验模块原理,画出实验原理图。 2、 写出完整的设计任务书:课题的名称、系统的功能、硬件原理图、软件框图、 元件清单、程序清单、参考资料。 3、输出几种波形,实现对频率和占空比的调节,以 1HZ 作为步进进行调节。 第三章:设计方案第三章:设计方案 3.1 系统主要功能 该函数信号发生器可以输出四种波形,有正弦波,锯齿波,三角波,方波。在此 基础上进一步实现对波形频率和占空比的调节,并用液晶屏分两行显示波形名称和波 形频率。 3.2 系统硬件构成及功能 函数信号发生器的设计总体框图如图所示,主要有单片机 AT89C52,电源,键盘模 块,LCD1602 显示模块构成。 按案件模块:由 5 个复位开关与 74LS21 组成的系统通过对单片机传输中断信号来 实现波形切换及频率和占空比的调节。 显示模块:用 LCD1602,分行显示波形类型和波形频率的显示。 电源模块:电源模块有 220V 市变电压经变压,整流,稳压得到+ -5V, + -12V 的电 压,维持系统正常工作。 系统的总体框图如图 1 所示: 键盘显 示控制 器 显示模块 键盘模块 波形输 出模块 电 源 源 主 控 器 AT89C 52 图 1 系统总体框图 3.2.1 AT89C52 单片机及其说明 AT89C52 为 8 位通用微处理器 图 2.PDIP 封装的 AT89C52 引脚图 采用工业标准的 C51 内核,在内部功能及管脚排布上与通用的8xc52 相同,其主 要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据 RAM 及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号 IR 的接收解码及与主板 CPU 通信等。主要管脚有: XTAL1(19 脚)和 XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚) 为复位输入端口,外接电阻电容组成的复位电路。 VCC(40 脚)和 VSS(20 脚) 为供电端口,分别接 +5V 电源的正负端。 P0P3 为可编程通用 I/O 脚,其功能用 途由软件定义,在本设计中, P0 端口(3239 脚)被定义为 N1 功能控制端口, 分别与 N1 的相应功能管脚相连接, 13 脚定义为 IR 输入端,10 脚和 11 脚定义 为 I2C 总线控制端口,分别连接 N1 的 SDAS(18 脚)和 SCLS(19 脚)端口, 12 脚、27 脚及 28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端, 用于当前制式的检测及会聚调整状态进入的控制功能。 P0 口口 P0 口是一组 8 位漏极开路型双向 I/O 口, 也即地址/数据总线复用口。作 为输出口用时,每位能吸收电流的 方式驱动 8 个 TTL 逻辑门电路,对端口 P0 写“1”时,可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位) 和数据总线复用,在访问期间激活内部上拉电阻。 在 Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校 验时,要求外接上拉电阻。 P1 口口 P1 是一个带内部上拉电阻的 8 位双向 I/O 口, P1 的输出缓冲级可驱动 (吸收或输出电流) 4 个 TTL 逻辑 门电路。对端口写 “1”,通过内部的上拉电阻把端口拉到高电平,此时可作输 入口。作输入口使用时,因为内部存在上拉 电阻,某个引脚被外部信号拉低时会输出一个电流 (IIL)。 参见表 1。 Flash 编程和程序校验期间, P1 接收低 8 位地址。 P2 口口 P2 是一个带有内部上拉电阻的 8 位双向 I/O 口,P2 的输出缓冲级可驱动 (吸收或输出电流) 4 个 TTL 逻辑 门电路。对端口 P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可 作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时 会输出一个电流 (IIL)。 在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行MOVX DPTR 指令)时,P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存 储器(如执行 MOVX RI 指令)时, P2 口输出 P2 锁存器的内容。 Flash 编程或校验时, P2 亦接收高位地址和一些控制信号。 P3 口口 P3 口是一组带有内部上拉电阻的 8 位双向 I/O 口。P3 口输出缓冲级可驱动 (吸收或输出电流) 4 个 TTL 逻 辑门电路。对 P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。 此时,被外部拉低的 P3 口将用上拉电阻输出电流( IIL) 。 P3 口除了作为一般的 I/O 口线外,更重要的用途是它的第二功能 P3 口还接收一些用于 Flash 闪速存储器编程和程序校验的控制信号。 RST 复位输入。当振荡器工作时, RST 引脚出现两个机器周期以上高电平将使单 片机复位。 ALE/PROG 当访问外部程序存储器或数据存储器时, ALE(地址锁存允许)输出脉冲用 于锁存地址的低 8 位字 节。一般情况下, ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此 它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳 过一个 ALE 脉冲。 对 Flash 存储器编程期间,该引脚还用于输入编程脉冲( PROG) 。 如有必要,可通过对特殊功能寄存器( SFR)区中的 8EH 单元的 D0 位置位, 可禁止 ALE 操作。该位置位后,只有一条 MOVX 和 MOVC 指令才能将 ALE 激活。此外,该引脚会被微弱拉高,单片 机执行外部程序时,应设置 ALE 禁止位无效。 PSEN 程序储存允许( PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数 据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲。在此期间,当访 问外部数据存储器,将跳过两次 PSEN 信号。 EA/VPP 外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为 0000HFFFFH) , EA 端必须保持低电平(接 地) 。需注意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA 端状态。 如 EA 端为高电平(接 Vcc 端) ,CPU 则执行内部程序存储器中的指令。 Flash 存储器编程时,该引脚加上 +12V 的编程允许电源 Vpp,当然这必须是 该器件是使用 12V 编程电压 Vpp。 XTAL1 振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2 振荡器反相放大器的输出端。 特殊功能寄存器 在 AT89C52 片内存储器中, 80H-FFH 共 128 个单元为特殊功能寄存器 (SFE) ,SFR 的地址空间映象如表 2 所示。 并非所有的地址都被定义,从 80HFFH 共 128 个字节只有一部分被定义, 还有相当一部分没有定义。对没有定义的 单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。 不应将数据“1”写入未定义的单元,由于这些单元在将来的产品中可能赋予新 的功能,在这种情况下,复位后这些单 元数值总是“0”。 AT89C52 除了与 AT89C51 所有的定时 /计数器 0 和定时/计数器 1 外,还增 加了一个定时 /计数器 2。定时/计数器 2 的控 制和状态位位于 T2CON(参见表 3)T2MOD(参见表 4) ,寄存器对 (RCAO2H、RCAP2L)是定时器 2 在 16 位捕获方式或 16 位 自动重装载方式下的捕获 /自动重装载寄存器。 数数据据存存储储器器 AT89C52 有 256 个字节的内部 RAM,80H-FFH 高 128 个字节与特殊功能 寄存器(SFR)地址是重叠的,也就是高 128 字节的 RAM 和特殊功能寄存器的地址是相同的,但物理上它们是分开的。 当一条指令访问 7FH 以上的内部地址单元时,指令中使用的寻址方式是不同 的,也即寻址方式决定是访问高 128 字节 RAM 还是访问特殊功能寄存器。如果指令是直接寻址方式则为访问特殊功能 寄存器。 例如,下面的直接寻址指令访问特殊功能寄存器0A0H(即 P2 口)地址单元。 MOV 0A0H,#data 间接寻址指令访问高 128 字节 RAM,例如,下面的间接寻址指令中, R0 的 内容为 0A0H,则访问数据字节地址为 0A0H, 而不是 P2 口(0A0H) 。 MOV R0,#data 堆栈操作也是间接寻址方式,所以,高128 位数据 RAM 亦可作为堆栈区使 用。 定时器 0 和定时器 1: 3.2.2 资源分配 晶振采用 12MHZ。P1 口的 P1.0-P1.4 分别与四个按键连接,分别控制波形切换、 频率加、频率减,占空比加,占空比减。 P2 口与 DAC0832 的 D0-D7 数据输入端相连。 P3 口用来控制 DAC0832 的输入寄存器选择信号 CS。 3.2.3 D/A 转换模块部件 DAC0832 芯片原理 管脚功能介绍(如图 6 所示) Vcc 20 Iout1 11 lsbDI0 7 Iout2 12 DI1 6 DI2 5 Rfb 9 DI3 4 DI4 16 Vref 8 DI5 15 DI6 14 msbDI7 13 ILE 19 WR2 18 CS 1 WR1 2 Xfer 17 U2DAC0832 图 3 DAC0832 管脚图 DI7DI0:8 位的数据输入端,DI7 为最高位。 ILE:数据锁存允许控制信号输入线,高电平有效。 CS:选片信号输入线(选通数据锁存器),低电平有效。 WR1:数据锁存器写选选通输入线,负脉冲有效,由 ILE、CS、WR1 的逻辑组合 产生 LE1,当 LE1 为高电平时,数据锁存器状态随输入数据线变化,LE1 的负跳变时 将输入数据锁存。 XFER:数据传输控制信号输入线,低电平有效,负脉冲有效。 WR2:DAC 寄存器选通输入线,负脉冲有效,由 WR2、XFER 的逻辑组合产生 LE2,当 LE2 为高电平时,DAC 寄存器的输出随寄存器的输入而变化,LE2 的负跳变 时将数据锁存器的内容打入 DAC 寄存器并开始 D/A 转换。 IOUT1:模拟电流输出端 1,当 DAC 寄存器中数据全为 1 时,输出电流最大,当 DAC 寄存器中数据全为 0 时,输出电流为 0。 IOUT2:模拟电流输出端 2, IOUT2 与 IOUT1 的和为一个常数,即 IOUT1IOUT2常数。 RFB:反馈电阻引出端,DAC0832 内部已经有反馈电阻,所以 RFB 端可以直接 接到外部运算放大器的输出端,这样相当于将一个反馈电阻接在运算放大器的输出端 和输入端之间。 VREF:参考电压输入端,此端可接一个正电压,也可接一个负电压,它决定 0 至 255 的数字量转化出来的模拟量电压值的幅度,VREF 范围为(+10-10)V。VREF 端 与 D/A 内部 T 形电阻网络相连。 Vcc:芯片供电电压,范围为(+5+15)V。 AGND:模拟量地,即模拟电路接地端。 DGND:数字量地。 3.2.4 外部控制模块部件 74LS22 图 4 74LS22 为四输入双与门 A1,B1,C1,D1为第一个与门的输入,Y1为第一个与门的输出。 A2,B2,C2,D2为第一个与门的输入,Y2为第一个与门的输出。在此系统中用来 给单片机提供中断信号。 3.2.5 放大部分 LM324 LM324 引脚图(管脚图) 图 5 LM324 引脚图 简介: LM324 系列器件为价格便宜的带有真差动输入的四运算放大器。与单电源应用 场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到 3.0 伏 或者高到 32 伏的电源下,静态电流为 MC1741 的静态电流的五分之一。共模输入范围 包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。它有 5 个引 出脚,其中“+”、 “-”为两个信号输入端, “V+”、 “V-”为正、负电源端, “Vo”为输出端。两 个信号输入端中,Vi-(-)为反相输入端,表示运放输出端 Vo 的信号与该输入端的位 相反;Vi+(+)为同相输入端,表示运放输出端 Vo 的信号与该输入端的相位相同。 3.3 系统的软件设计及接口电路 3.3.1 信号频率数据采集 本程序通过外部中断,接收减频或加频按键,单片机内部对接受的值经过运算得 出波形的输出延时,从而产生频率的改变。电路较为简单,成本较低。 3.3.2 正弦波产生程序 输入正弦波的采样点,计算出 256 个(一个周期内)正弦波信号值。然后通过输 出的两点间的延时来实现调频。依次循环输出,可得出正弦波。 采点值放在 table2中,程序如下: void sin()/正弦波 unsigned int i; for(i=0;i256;i+) DAC0832=table2i; delay(pinlv/256); 3.3.3 三角波产生程序 设个自变量 i 让它不断地自加 1,直到加到 255 时,t=i,对 t 进行不断地自减 1 直到减到 t=0,然后再不断地重复上述过程产生三角波。程序如下: void tran()/三角波 unsigned char i; for(i=0;i0;i-) DAC0832=i; delay(pinlv/64); 3.3.4 方波产生程序 设个自变量 i=0 使之延时一段时间,再另 i=255 时在延时与 i=0 相同的时间,然 后再重复上述过程。程序如下: void fang()/方波 DAC0832=0; delay(pinlv/2); DAC0832=0 xff; delay(pinlv/2); 3.3.5 锯齿波产生程序 锯齿波中的斜线用一个个小台阶来逼近,在一个周期内从最小值开始逐步递增, 当达到最大值后又回到最小值,如此循环,当台阶间隔很小时,波形基本上近似于直 线。适当选择循环的时间,可以得到不同的周期锯齿波。锯齿波发生原理与方波类似, 只是高低两个时延的常数不同,所以用延时法,来产生锯齿波,设个自变量 i 让它不 断地自加 1,直到叫到 255,DAC0832 可以又自动归 0,然后再不断地重复上述过程。 程序如下: void jvchi()/锯齿波 unsigned char i; for(i=0;i0;x-) for(y=110;y0;y-); void triangle_out()/三角波输出 DAdata=triangle_tabwavecount+; if(wavecount64) wavecount=0; DA_S1=0; /打开 8 位输入寄存器 DA_S1=1; /关闭 8 位输入寄存器 void sine_out() /正弦波输出 DAdata=sine_tabwavecount+; DA_S1=0; /打开 8 位输入寄存器 DA_S1=1; /关闭 8 位输入寄存器 void square_out() /方波输出 judge=judge; if(judge=1) DAdata=0 xff; else DAdata=0 x00; DA_S1=0; /打开 8 位输入寄存器 DA_S1=1; /关闭 8 位输入寄存器 void sawtooth_out() /锯齿波输出 DAdata=sawtooth_tabwavecount+; if(wavecount71) wavecount=0; DA_S1=0; /打开 8 位输入寄存器 DA_S1=1; /关闭 8 位输入寄存器 /*1602 液晶的相关函数*/ #define lcd_ports P1 sbit rs=P22; sbit rw=P23; sbit lcden=P24; void write_com(uchar com) rs=0;/置零,表示写指令 lcden=0; lcd_ports=com; delay(5); lcden=1; delay(5); lcden=0; void write_date(uchar date) rs=1;/置 1,表示写数据(在指令所指的地方写数据) lcden=0; lcd_ports=date; delay(5); lcden=1; delay(5); lcden=0; void disp_lcd(uchar addr,uc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备维护缺陷管理制度
- 设施设备校准管理制度
- 设计团队文件管理制度
- 设计院大客户管理制度
- 诊所人员体诊管理制度
- 诊所消毒服务管理制度
- 诊疗项目审批管理制度
- 财务管理授权管理制度
- 货品库存资金管理制度
- 货物配送公司管理制度
- 2025届高考语文复习:2024年新课标Ⅰ卷文学类文本《放牛记》说题 课件
- 2025发展对象考试题库与参考答案
- 肺癌的护理查房 课件
- 煤矿井巷工程监理规划方案
- 【数学】现实中的变量教学设计 2024-2025学年北师大版数学七年级下册
- 绝交协议书2025修订版:规范情感解除流程的法律文件
- 高一语文暑假讲义-初高衔接06:阅读基本功句子含义的理解(教师版)
- 煤矿安全用电培训课件
- 露营地自然灾害应急预案
- 2024版新能源汽车充电站场地租赁及充电服务合同2篇
- 实验室生物安全委员会及职责
评论
0/150
提交评论