




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1学学 号:号: 51湖南文理学院机械工程学院机械工程学院课课 程程 设设 计计题题 目目基于基于 AT89C52 单片机的单片机的简易函数信号发生器设计简易函数信号发生器设计专专 业业机械电子工程机械电子工程班班 级级机电机电 08101 班班姓姓 名名谭鹏辉谭鹏辉指导教师指导教师陈卫国陈卫国2011 年12 月07日2课程设计任务书课程设计任务书姓 名谭鹏辉学 号51班 级机电 08101 班课程名称单片机课程设计课程性质必修设计时间2011 年 11 月 28 日 2011 年 12 月 9 日设计名称基于 AT89C52 单片机的简易函数信号发生器设计设计要求1)以单片机为核心,经过
2、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 分。3 目目 录录目 录 .摘 要 .4第一章
3、 绪论 .51.1 单片机概述 .51.2 信号发生器的分类 .51.3 研究内容 .5第二章 函数信号发生器设计 .62.1课程设计的目的.62.2 课程设计要求 .6第三章 设计方案 .73.1 系统主要功能 .73.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 放大部分.123.3 系统软件设计及接口电路 .13 3.3.1 信号频率数据采集.13 3.3.2 正弦波产生程序.13 3.3.3 三角波产生程序.14 3.
4、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附录三 电路原理图.304摘要摘要本次作品是一个基于单片机设计的函数信号发生器。函数信号发生器的设计方法有多种,利用单片机设计的函数信号发生器具有编程灵活,功能更以扩充等实际的优点。利用单片机设计的函数信号发生器能够产生正弦波,锯齿波,三角波,方波,并实现对频率和占空比的调节,
5、以及液晶屏显示波形名称和波形频率,波形的切换和频率的调节以及占空比的改变都可以用按键实现。在编程语言上,我们选择自身比较熟悉的C 语言,这样在后期波形的调试及与硬件衔接方面更容易发挥出自身优势。经过设计及后期长时间的调试,设计的所有功能均已实现。关键词:单片机,函数发生器,液晶 LCD 5 第一章 绪论1.1 单片机概述随着大规模集成电路技术的发展,中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、(I/O)接口、定时器/计数器和串行通信接口,以及其他一些计算机外围电路等均可集成在一块芯片上构成单片微型计算机,简称为单片机。单片机具有体积小、成本低,性能稳定、使用寿命长等特
6、点。其最明显的优势就是可以嵌入到各种仪器、设备中,这是其他计算机和网络都无法做到的9,10。1.2 信号发生器的分类信号发生器应用广泛,种类繁多,性能各异,分类也不尽一致。按照频率范围分类可以分为:超低频信号发生器、低频信号发生器、视频信号发生器、高频波形发生器、甚高频波形发生器和超高频信号发生器。按照输出波形分类可以分为:正弦信号发生器和非正弦信号发生器,非正弦信号发生器又包括:脉冲信号发生器,函数信号发生器、扫频信号发生器、数字序列波形发生器、图形信号发生器、噪声信号发生器等。按照信号发生器性能指标可以分为一般信号发生器和标准信号发生器。前者指对输出信号的频率、幅度的准确度和稳定度以及波形
7、失真等要求不高的一类信号发生器。后者是指其输出信号的频率、幅度、调制系数等在一定范围内连续可调,并且读数准确、稳定、屏蔽良好的中、高档信号发生器。1.3 研究内容本文是做基于单片机的信号发生器的设计,将采用编程的方法来实现三角波、锯齿波、矩形波、正弦波的发生。根据设计的要求,对各种波形的频率和幅度进行程序的编写,并将所写程序装入单片机的程序存储器中。在程序运行中,当接收到来自外界的命令,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出6第二章:函数信号发生器的设计第二章:函数信号发生器的设计设计一个基于单片机的函数信
8、号发生器,该函数信号发生器可以输出四种波形,有正弦波,锯齿波,三角波,方波。在此基础上进一步实现对波形频率和占空比的调节,并用液晶屏分两行显示波形名称和波形频率。2.1 课程设计的目的:1、巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决实际课题设计的能力。2、培养针对课题需要,选择和查阅有关手册、图表及文献资料的能力,提高组成系统、编程、调试的动脑动手能力。3、通过对课题设计方案的分析、选择、比较,熟悉运用单片机系统开发、软硬件设计的方法内容及步骤。4、掌握 DAC0832,LM324,74LS22 的接口电路,及使用方法。5、熟悉掌握函数信号发生器的工作原理。2.2 课程
9、设计要求:1、熟悉组成系统中的实验模块原理,画出实验原理图。2、 写出完整的设计任务书:课题的名称、系统的功能、硬件原理图、软件框图、元件清单、程序清单、参考资料。3、输出几种波形,实现对频率和占空比的调节,以 1HZ 作为步进进行调节。7第三章:设计方案第三章:设计方案3.1 系统主要功能该函数信号发生器可以输出四种波形,有正弦波,锯齿波,三角波,方波。在此基础上进一步实现对波形频率和占空比的调节,并用液晶屏分两行显示波形名称和波形频率。3.2 系统硬件构成及功能函数信号发生器的设计总体框图如图所示,主要有单片机 AT89C52,电源,键盘模块,LCD1602 显示模块构成。按案件模块:由
10、5 个复位开关与 74LS21 组成的系统通过对单片机传输中断信号来实现波形切换及频率和占空比的调节。显示模块:用 LCD1602,分行显示波形类型和波形频率的显示。电源模块:电源模块有 220V 市变电压经变压,整流,稳压得到+ -5V, + -12V 的电压,维持系统正常工作。系统的总体框图如图 1 所示:键盘显示控制器显示模块键盘模块波形输出模块电 源源主控器AT89C52图 1 系统总体框图 3.2.1 AT89C52 单片机及其说明AT89C52 为 8 位通用微处理器8 图 2.PDIP 封装的 AT89C52 引脚图采用工业标准的 C51 内核,在内部功能及管脚排布上与通用的8x
11、c52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据 RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR 的接收解码及与主板 CPU 通信等。主要管脚有: XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。 VCC(40 脚)和 VSS(20 脚)为供电端口,分别接 +5V 电源的正负端。 P0P3 为可编程通用 I/O 脚,其功能用途由软件定义,在本设计中, P0 端口(3239 脚)被定义为 N1 功能控制端口,分别与
12、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 位)和数据总
13、线复用,在访问期间激活内部上拉电阻。 在 Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 P1 口口P1 是一个带内部上拉电阻的 8 位双向 I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流) 4 个 TTL 逻辑 门电路。对端口写 “1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉 电阻,某个引脚被外部信号拉低时会输出一个电流 (IIL)。 参见表 1。 Flash 编程和程序校验期间, P1 接收低 8 位地址。 9P2 口口P2 是一个带有内部上拉电阻的 8 位双向 I/O 口,P2 的输
14、出缓冲级可驱动(吸收或输出电流) 4 个 TTL 逻辑 门电路。对端口 P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流 (IIL)。 在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行MOVX DPTR 指令)时,P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储器(如执行 MOVX RI 指令)时, P2 口输出 P2 锁存器的内容。 Flash 编程或校验时, P2 亦接收高位地址和一些控制信号。 P3 口口P3 口是一组带有内部上拉电阻的 8 位双向 I/O 口。P
15、3 口输出缓冲级可驱动(吸收或输出电流) 4 个 TTL 逻 辑门电路。对 P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的 P3 口将用上拉电阻输出电流( IIL) 。 P3 口除了作为一般的 I/O 口线外,更重要的用途是它的第二功能 P3 口还接收一些用于 Flash 闪速存储器编程和程序校验的控制信号。 RST复位输入。当振荡器工作时, RST 引脚出现两个机器周期以上高电平将使单片机复位。 ALE/PROG当访问外部程序存储器或数据存储器时, ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字 节。一般情况下, ALE 仍以时钟振荡频率的 1/6
16、 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。 对 Flash 存储器编程期间,该引脚还用于输入编程脉冲( PROG) 。 如有必要,可通过对特殊功能寄存器( SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 MOVX 和 MOVC 指令才能将 ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 禁止位无效。 PSEN程序储存允许( PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数 据)时,每个机器周期两次 PSE
17、N 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次 PSEN 信号。 EA/VPP外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为 0000HFFFFH) ,EA 端必须保持低电平(接 10地) 。需注意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA 端状态。 如 EA 端为高电平(接 Vcc 端) ,CPU 则执行内部程序存储器中的指令。 Flash 存储器编程时,该引脚加上 +12V 的编程允许电源 Vpp,当然这必须是该器件是使用 12V 编程电压 Vpp。 XTAL1振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2振荡器反相放大器的输出端。
18、特殊功能寄存器在 AT89C52 片内存储器中, 80H-FFH 共 128 个单元为特殊功能寄存器(SFE) ,SFR 的地址空间映象如表 2 所示。 并非所有的地址都被定义,从 80HFFH 共 128 个字节只有一部分被定义,还有相当一部分没有定义。对没有定义的 单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。 不应将数据“1”写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单 元数值总是“0”。 AT89C52 除了与 AT89C51 所有的定时 /计数器 0 和定时/计数器 1 外,还增加了一个定时 /计数器 2。定时/计数器 2
19、的控 制和状态位位于 T2CON(参见表 3)T2MOD(参见表 4) ,寄存器对(RCAO2H、RCAP2L)是定时器 2 在 16 位捕获方式或 16 位 自动重装载方式下的捕获 /自动重装载寄存器。 数数据据存存储储器器AT89C52 有 256 个字节的内部 RAM,80H-FFH 高 128 个字节与特殊功能寄存器(SFR)地址是重叠的,也就是高 128 字节的 RAM 和特殊功能寄存器的地址是相同的,但物理上它们是分开的。 当一条指令访问 7FH 以上的内部地址单元时,指令中使用的寻址方式是不同的,也即寻址方式决定是访问高 128 字节 RAM 还是访问特殊功能寄存器。如果指令是直
20、接寻址方式则为访问特殊功能寄存器。 例如,下面的直接寻址指令访问特殊功能寄存器0A0H(即 P2 口)地址单元。 MOV 0A0H,#data 间接寻址指令访问高 128 字节 RAM,例如,下面的间接寻址指令中, R0 的内容为 0A0H,则访问数据字节地址为 0A0H, 而不是 P2 口(0A0H) 。 MOV R0,#data 堆栈操作也是间接寻址方式,所以,高128 位数据 RAM 亦可作为堆栈区使用。 定时器 0 和定时器 1: 113.2.2 资源分配晶振采用 12MHZ。P1 口的 P1.0-P1.4 分别与四个按键连接,分别控制波形切换、频率加、频率减,占空比加,占空比减。P2
21、 口与 DAC0832 的 D0-D7 数据输入端相连。P3 口用来控制 DAC0832 的输入寄存器选择信号 CS。3.2.3 D/A 转换模块部件DAC0832 芯片原理管脚功能介绍(如图 6 所示)Vcc20Iout111lsbDI07Iout212DI16DI25Rfb9DI34DI416Vref8DI515DI614msbDI713ILE19WR218CS1WR12Xfer17U2DAC0832图 3 DAC0832 管脚图DI7DI0:8 位的数据输入端,DI7 为最高位。ILE:数据锁存允许控制信号输入线,高电平有效。CS:选片信号输入线(选通数据锁存器),低电平有效。WR1:数
22、据锁存器写选选通输入线,负脉冲有效,由 ILE、CS、WR1 的逻辑组合产生 LE1,当 LE1 为高电平时,数据锁存器状态随输入数据线变化,LE1 的负跳变时将输入数据锁存。XFER:数据传输控制信号输入线,低电平有效,负脉冲有效。WR2:DAC 寄存器选通输入线,负脉冲有效,由 WR2、XFER 的逻辑组合产生LE2,当 LE2 为高电平时,DAC 寄存器的输出随寄存器的输入而变化,LE2 的负跳变时将数据锁存器的内容打入 DAC 寄存器并开始 D/A 转换。IOUT1:模拟电流输出端 1,当 DAC 寄存器中数据全为 1 时,输出电流最大,当 DAC 寄存器中数据全为 0 时,输出电流为
23、 0。IOUT2:模拟电流输出端 2, IOUT2 与 IOUT1 的和为一个常数,即IOUT1IOUT2常数。RFB:反馈电阻引出端,DAC0832 内部已经有反馈电阻,所以 RFB 端可以直接接到外部运算放大器的输出端,这样相当于将一个反馈电阻接在运算放大器的输出端和输入端之间。VREF:参考电压输入端,此端可接一个正电压,也可接一个负电压,它决定 0至 255 的数字量转化出来的模拟量电压值的幅度,VREF 范围为(+10-10)V。VREF 端与 D/A 内部 T 形电阻网络相连。12Vcc:芯片供电电压,范围为(+5+15)V。AGND:模拟量地,即模拟电路接地端。DGND:数字量地
24、。3.2.4 外部控制模块部件 74LS22图 474LS22 为四输入双与门A1,B1,C1,D1为第一个与门的输入,Y1为第一个与门的输出。A2,B2,C2,D2为第一个与门的输入,Y2为第一个与门的输出。在此系统中用来给单片机提供中断信号。3.2.5 放大部分 LM324LM324 引脚图(管脚图)13 图 5 LM324 引脚图简介: LM324 系列器件为价格便宜的带有真差动输入的四运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到 3.0 伏或者高到 32 伏的电源下,静态电流为 MC1741 的静态电流的五分之一。共模输入范围包括负电源
25、,因而消除了在许多应用场合中采用外部偏置元件的必要性。它有 5 个引出脚,其中“+”、 “-”为两个信号输入端, “V+”、 “V-”为正、负电源端, “Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端 Vo 的信号与该输入端的位相反;Vi+(+)为同相输入端,表示运放输出端 Vo 的信号与该输入端的相位相同。3.3 系统的软件设计及接口电路3.3.1 信号频率数据采集本程序通过外部中断,接收减频或加频按键,单片机内部对接受的值经过运算得出波形的输出延时,从而产生频率的改变。电路较为简单,成本较低。3.3.2 正弦波产生程序输入正弦波的采样点,计算出 256 个(一个
26、周期内)正弦波信号值。然后通过输出的两点间的延时来实现调频。依次循环输出,可得出正弦波。采点值放在 table2中,程序如下:void sin()/正弦波unsigned int i;for(i=0;i256;i+)14DAC0832=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
27、/64);3.3.4 方波产生程序设个自变量 i=0 使之延时一段时间,再另 i=255 时在延时与 i=0 相同的时间,然后再重复上述过程。程序如下:void fang()/方波15DAC0832=0;delay(pinlv/2);DAC0832=0 xff;delay(pinlv/2);3.3.5 锯齿波产生程序锯齿波中的斜线用一个个小台阶来逼近,在一个周期内从最小值开始逐步递增,当达到最大值后又回到最小值,如此循环,当台阶间隔很小时,波形基本上近似于直线。适当选择循环的时间,可以得到不同的周期锯齿波。锯齿波发生原理与方波类似,只是高低两个时延的常数不同,所以用延时法,来产生锯齿波,设个自
28、变量 i 让它不断地自加 1,直到叫到 255,DAC0832 可以又自动归 0,然后再不断地重复上述过程。程序如下:void jvchi()/锯齿波unsigned char i;for(i=0;i255;i+)DAC0832=i;delay(pinlv/256);3.3.6信号放大模块设计16从单片机中输出的数字信号经过 DAC0832 转换后,由于信号的幅值比较小,所以需要放大。采用常规的放大方式,采用两片运放,实现两级放大,设计的电路如图 6:图 6 图 6 放大电路接口3. 3. 7数模转换模块设计本设计模数转换采用常见的芯片:DAC0832,本设计采用直通方式进行模数转换。为了简洁
29、起见,在仿真图中采用网络节点的方式进行连线,从单片机 P0 口输出的数据直接连接到模数芯片 DAC0832 的数据口。如图: 图 7 DA 转换接口电路 17第四章第四章 仿真图及结果分析仿真图及结果分析 4.1 波形发生器的调试与测试本系统是在 protues 下仿真,使用 Keil C 编程。从而实现其设计及仿真。在测试本系统是采用的是将设置的数值与示波器所测值进行对比,进而可以知道本系统的性能。频率测试数据: 设定频率(HZ)示波器测试频率(HZ) 相对误差%3.93.961.57.87.931.2815.6316.133.19184.2 仿真结果图正弦波仿真图 图 8 正弦波图三角波仿
30、真图 图 9 三角波图19锯齿波仿真图 图 10 锯齿波图方波仿真图 图 11 方波图20第五章第五章 总结总结与展望与展望本次的设计中利用 AT89C52 和 DAC0832 以及放大器完成电路的设计,用开关来控制各种波形的发生及转换,用单片机输出后,经过模数转换器生成波形,最终可以通过示波器观察。在这次的软件设计中,程序设计采用的是汇编语言。汇编语言具有速度快,可以直接对硬件进行操作的优点,它可以极好的发挥硬件的功能。但是汇编语言也存在编写的代码非常难懂,不好维护,很容易产生 bug,难于调试的缺点。因此,在大型程序的设计中,多采用 C 语言进行程序编译。C 语言简洁高效,是最贴近硬件的高
31、级编程语言,经过多年的发展,现在已成熟为专业水平的高级语言。而且,现在单片机产品推出时纷纷配套了 C 语言编译器,应用广泛。不过就本次课程设计来说,汇编语言还是适用的。由于真正意义上的程序设计还不多,因此还不是很得心应手,所以在设计中遇到一些问题和一些难点。比如:在程序设计中如何实现程序结构的最优化,以达到较高的质量。这是以后设计中要注意的问题。 通过这次课程设计,我进一步了解了波形发生器的原理,在实际动手操作过程中,使我接触了许多我以前没接触过的元件,而且重新温习了刚学不久的汇编语言,使我学得了许多知识,使我获益匪浅。这次课程设计,使我的动手能力得到了很大的提高,更使我们懂得理论知识的重要性
32、,没有理论的指导一切实际行动都是盲目的,且实际操作是我们得到的理论知识得到验证,更能增加对理论知识的理解。21参考文献1 程全.基于 AT89C52 实现的多种波形发生器的设计J.周口师范学院学报,2005.22(5):5758.2 周明德.微型计算机系统原理及应用M.北京:清华大学出版社,2002.341364.3 刘乐善.微型计算机接口技术及应用M.北京:北京航空航天大学出版社,2001.258264.4 童诗白.模拟电路技术基础M.北京:高等教育出版社,2000.171202.5 杜华.任意波形发生器及应用J.国外电子测量技术,2005.1:3840.6 张友德.单片微型机原理、应用与实
33、践M.上海:复旦大学出版社,2004.4044. 7 程朗.基于 8051 单片机的双通道波形发生器的设计与实现J.计算机工程与应用,2004.8:100103.8 张永瑞.电子测量技术基础M.西安:西安电子科技大学出版社,2006.61101.9 李叶紫. MCS-51 单片机应用教程M.北京:清华大学出版社,2004.232238.22附录附录 1 元器件清单元件名称数量备注AT89C52174LS221LM3241电阻310k排阻14.7K液晶显示屏1LCD1602滑动变阻器110K晶振112MHZ23附录附录 2 程序清单#include#define uchar unsigned c
34、har#define uint unsigned int/#define Fosc 24000000/12000000 /12 分频后的频率#define DAdata P0/DA 数据端口sbit DA_S1= P20; / 控制 DAC0832 的 8 位输入寄存器,仅当都为 0 时,可以输出数据(处于直通状态),否则,输出将被锁存sbit DA_S2= P21; / 控制 DAC0832 的 8 位 DAC 寄存器,仅当都为 0 时,可以输出数据(处于直通状态),否则,输出将被锁存sbit key= P32;uchar wavecount; /抽点计数uchar THtemp,TLtem
35、p;/传递频率的中间变量/uint T_temp;uchar judge=1; /在方波输出函数中用于简单判别作用uchar waveform; /当其为 0、1、2 时,分别代表三种波uchar code freq_unit4=10,50,200,10; /三种波的频率单位 sawtoothuchar idata wavefreq4=1,1,1,1; /给每种波定义一个数组单元,用于存放单位频率的个数uchar code lcd_hang1=Sine Wave Triangle Wave Square Wave sawtooth Wave Select Wave: press No.1 ke
36、y! ;uchar idata lcd_hang216=f= Hz ;/*uchar code wave_freq_adjust= /频率调整中间值 0 xff,0 xb8,0 x76,0 x56,0 x43,0 x37,0 x2e,0 x26,0 x20,0 x1c, /正弦波频率调整中间值0 xff,0 x8e,0 x5a,0 x41,0 x32,0 x28,0 x20,0 x1b,0 x17,0 x0e, /三角波频率调整中间值0 xff,0 x8e,0 x5a,0 x41,0 x32,0 x28,0 x20,0 x1b,0 x17,0 x0e; uint code wave_freq_
37、adjust= /频率调整中间值 380,184,118,86,67,55,46,28,38,32,295,142, 90,65,50,40,32,27,23,14,295,142, 90,65,50,40,32,27,23,14; */*uchar code waveTH= 0 xfc,0 xfe,0 xfe,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xfc,0 xfe,0 xfe,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff
38、,0 xff,0 xff,0 xff;uchar code waveTL= 0 xf2,0 x78,0 xfb,0 x3c,0 x63,0 x7d,0 x8f,0 x9d,0 xa8,0 xb1,0 x17,0 x0b,0 xb2,0 x05,0 x37,0 x58,0 x70,0 x82,0 x90,0 x9b,24 0 x4d,0 xa7,0 xc4,0 xd3,0 xdc,0 xe2,0 xe6,0 xea,0 xec,0 xee;*/*这两组数组很重要,需要根据波形来调试,选择合适的值,使输出波形达到频率要求*/uchar code waveTH= 0 xfd,0 xfe,0 xff,
39、0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xfd,0 xfe,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xec,0 xf6,0 xf9,0 xfb,0 xfc,0 xfc,0 xfd,0 xfd,0 xfd,0 xfe;uchar code waveTL= 0 x06,0 x8a,0 x10,0 x4e,0 x78,0 x93,0 xa8,0 xb3,0 xbe,0 xc6, /正弦波频率调整中间值0 xac,0 xde,0 x48,0 x7a,0 x99,0 xaf,0 xbb,0 xc8
40、,0 xd0,0 xde,/三角波频率调整中间值0 x88,0 x50,0 x90,0 x32,0 x34,0 xbe,0 x4a,0 xa3,0 xe5,0 x2c; /*/uchar code triangle_tab= /每隔数字 8,采取一次0 x00,0 x08,0 x10,0 x18,0 x20,0 x28,0 x30,0 x38,0 x40,0 x48,0 x50,0 x58,0 x60,0 x68,0 x70,0 x78,0 x80,0 x88,0 x90,0 x98,0 xa0,0 xa8,0 xb0,0 xb8,0 xc0,0 xc8,0 xd0,0 xd8,0 xe0,0
41、 xe8,0 xf0,0 xf8,0 xff,0 xf8,0 xf0,0 xe8,0 xe0,0 xd8,0 xd0,0 xc8,0 xc0,0 xb8,0 xb0,0 xa8,0 xa0,0 x98,0 x90,0 x88,0 x80,0 x78,0 x70,0 x68,0 x60,0 x58,0 x50,0 x48,0 x40,0 x38,0 x30,0 x28,0 x20,0 x18,0 x10,0 x08,0 x00;uchar code sine_tab256=/输出电压从 0 到最大值(正弦波 1/4 部分)0 x80,0 x83,0 x86,0 x89,0 x8d,0 x90,0
42、 x93,0 x96,0 x99,0 x9c,0 x9f,0 xa2,0 xa5,0 xa8,0 xab,0 xae,0 xb1,0 xb4,0 xb7,0 xba,0 xbc,0 xbf,0 xc2,0 xc5,0 xc7,0 xca,0 xcc,0 xcf,0 xd1,0 xd4,0 xd6,0 xd8,0 xda,0 xdd,0 xdf,0 xe1,0 xe3,0 xe5,0 xe7,0 xe9,0 xea,0 xec,0 xee,0 xef,0 xf1,0 xf2,0 xf4,0 xf5,0 xf6,0 xf7,0 xf8,0 xf9,0 xfa,0 xfb,0 xfc,0 xfd,0
43、 xfd,0 xfe,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,/输出电压从最大值到 0(正弦波 1/4 部分)0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xfe,0 xfd,0 xfd,0 xfc,0 xfb,0 xfa,0 xf9,0 xf8,0 xf7,0 xf6,0 xf5,0 xf4,0 xf2,0 xf1,0 xef,0 xee,0 xec,0 xea,0 xe9,0 xe7,0 xe5,0 xe3,0 xe1,0 xde,0 xdd,0 xda,0 xd8,0 xd6,0 xd4,0 xd1,0 xcf,0 xcc,0
44、 xca,0 xc7,0 xc5,0 xc2,0 xbf,0 xbc,0 xba,0 xb7,0 xb4,0 xb1,0 xae,0 xab,0 xa8,0 xa5,0 xa2,0 x9f,0 x9c,0 x99 ,0 x96,0 x93,0 x90,0 x8d,0 x89,0 x86,0 x83,0 x80,/输出电压从 0 到最小值(正弦波 1/4 部分)0 x80,0 x7c,0 x79,0 x76,0 x72,0 x6f,0 x6c,0 x69,0 x66,0 x63,0 x60,0 x5d,0 x5a,0 x57,0 x55,0 x51,0 x4e,0 x4c,0 x48,0 x45
45、,0 x43,250 x40,0 x3d,0 x3a,0 x38,0 x35,0 x33,0 x30,0 x2e,0 x2b,0 x29,0 x27,0 x25,0 x22,0 x20,0 x1e,0 x1c,0 x1a,0 x18,0 x16 ,0 x15,0 x13,0 x11,0 x10,0 x0e,0 x0d,0 x0b,0 x0a,0 x09,0 x08,0 x07,0 x06,0 x05,0 x04,0 x03,0 x02,0 x02,0 x01,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,/输出电压从最小值到 0(正弦波 1/4 部分)0 x00,0
46、x00,0 x00,0 x00,0 x00,0 x00,0 x01,0 x02 ,0 x02,0 x03,0 x04,0 x05,0 x06,0 x07,0 x08,0 x09,0 x0a,0 x0b,0 x0d,0 x0e,0 x10,0 x11,0 x13,0 x15 ,0 x16,0 x18,0 x1a,0 x1c,0 x1e,0 x20,0 x22,0 x25,0 x27,0 x29,0 x2b,0 x2e,0 x30,0 x33,0 x35,0 x38,0 x3a,0 x3d,0 x40,0 x43,0 x45,0 x48,0 x4c,0 x4e,0 x51,0 x55,0 x57,
47、0 x5a,0 x5d,0 x60,0 x63,0 x66 ,0 x69,0 x6c,0 x6f,0 x72,0 x76,0 x79,0 x7c,0 x80; uchar code sawtooth_tab=0 x00,0 x02,0 x04,0 x06,0 x08,0 x0a,0 x0c,0 x0e,0 x10,0 x12,0 x14,0 x16,0 x18,0 x1a,0 x1c,0 x1e,0 x20,0 x22,0 x24,0 x26,0 x28,0 x2a,0 x2c,0 x2e,0 x30,0 x32,0 x34,0 x36,0 x38,0 x3a,0 x3c,0 x3e,0 x4
48、0,0 x42,0 x44,0 x46,0 x48,0 x4a,0 x4c,0 x4e,0 x50,0 x52,0 x54,0 x56,0 x58,0 x5a,0 x5c,0 x5e,0 x60,0 x62,0 x64,0 x66,0 x68,0 x6a,0 x6c,0 x6e,0 x70,0 x72,0 x74,0 x76,0 x78,0 x7a,0 x7c,0 x7e,0 x80,0 x82,0 x84,0 x86,0 x88,0 x8a,0 x8c,0 x8e;/0 x90,0 x92,0 x94,0 x96,0 x98,0 x9a,0 x9c,0 x9e,0 xa0,0 xa2,0 x
49、a4,0 xa6,0 xa8,0 xaa,0 xac,0 xae,0 xb0,0 xb2,0 xb4,0 xb6,0 xb8,0 xba,0 xbc,0 xbe,/0 xc0,0 xc2,0 xc4,0 xc6,0 xc8,0 xca,0 xcc,0 xce,0 xd0,0 xd2,0 xd4,0 xd6,0 xd8,0 xda,0 xdc,0 xde,0 xe0,0 xe2,0 xe4,0 xe6,0 xe8,0 xea,0 xec,0 xee;void delay(uchar z) uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void triangle_
50、out()/三角波输出 DAdata=triangle_tabwavecount+;if(wavecount64) wavecount=0;DA_S1=0; /打开 8 位输入寄存器DA_S1=1; /关闭 8 位输入寄存器void sine_out() /正弦波输出 DAdata=sine_tabwavecount+;26DA_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 P1sbit rs=P22;sbit rw=P23;sbit lcden=P24;void write_com(u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司职工餐厅用工合同范本
- 劳动纠纷解除合同范本
- 公司聘用合同范本英语
- 出地转让合同范本
- 协会招商服务合同范本
- 医院废品合同范本
- 协议解除销售合同范本
- 医院融资合同范本
- 劳动建筑合同范本
- 住宿方舱租赁合同范本
- 软件系统项目实施方案(共3篇)
- 2025年山东药品食品职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2025年恩施市福牛物业有限公司招聘笔试参考题库含答案解析
- 《滚动轴承-》课件
- 2025年中国CAR-T免疫细胞治疗行业市场发展前景研究报告-智研咨询发布
- 妊娠期用药安全课件
- 月子会所护理人员礼仪
- GB/T 44958-2024化工设备安全管理规范
- 无人机行业调查研究报告
- 2025年轧钢原料工技能考试题库
- 大学生考研规划
评论
0/150
提交评论