基于AT9C单片机简易函数信号发生器设计技术文件.doc_第1页
基于AT9C单片机简易函数信号发生器设计技术文件.doc_第2页
基于AT9C单片机简易函数信号发生器设计技术文件.doc_第3页
基于AT9C单片机简易函数信号发生器设计技术文件.doc_第4页
基于AT9C单片机简易函数信号发生器设计技术文件.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、1 学学 号号: : 51 湖南文理学院 机械工程学院机械工程学院 课课 程程 设设 计计 题题 目目 基于基于 at89c52 单片机的单片机的 简易函数信号发生器设计简易函数信号发生器设计 专专 业业机械电子工程机械电子工程 班班 级级机电机电 08101 班班 姓姓 名名谭鹏辉谭鹏辉 指导教师指导教师陈卫国陈卫国 2011 年12 月07日 2 课程设计任务书课程设计任务书 姓 名谭鹏辉学 号51班 级机电 08101 班 课程名称单片机课程设计课程性质必修 设计时间2011 年 11 月 28 日 2011 年 12 月 9 日 设计名称基于 at89c52 单片机的简易函数信号发生器

2、设计 设计要求 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% 设计

3、报告:20% 共计 100 分 3 目目 录录 目 录 . 摘 要 .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.

4、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 4 摘要摘要 本次作品是一个基于单片机设计的函数信号发生器函数信号发生器的设计方法有 多种,利用单片机设计的函数信号发生器具有编程灵活,功能

5、更以扩充等实际的优点利 用单片机设计的函数信号发生器能够产生正弦波,锯齿波,三角波,方波,并实现对频率和 占空比的调节,以及液晶屏显示波形名称和波形频率,波形的切换和频率的调节以及占空 比的改变都可以用按键实现在编程语言上,我们选择自身比较熟悉的c 语言,这样在后 期波形的调试及与硬件衔接方面更容易发挥出自身优势经过设计及后期长时间的调试, 设计的所有功能均已实现 关键词:单片机,函数发生器,液晶 lcd 5 第一章第一章 绪论绪论 1.1 单片机概述 随着大规模集成电路技术的发展,中央处理器(cpu)随机存取存储器(ram)只读存 储器(rom)(i/o)接口定时器/计数器和串行通信接口,以

6、及其他一些计算机外围电路 等均可集成在一块芯片上构成单片微型计算机,简称为单片机单片机具有体积小成本 低,性能稳定使用寿命长等特点其最明显的优势就是可以嵌入到各种仪器设备中,这 是其他计算机和网络都无法做到的9,10 1.2 信号发生器的分类 信号发生器应用广泛,种类繁多,性能各异,分类也不尽一致按照频率范围分类可 以分为:超低频信号发生器低频信号发生器视频信号发生器高频波形发生器甚高频 波形发生器和超高频信号发生器按照输出波形分类可以分为:正弦信号发生器和非正 弦信号发生器,非正弦信号发生器又包括:脉冲信号发生器,函数信号发生器扫频信号 发生器数字序列波形发生器图形信号发生器噪声信号发生器等

7、按照信号发生器性能 指标可以分为一般信号发生器和标准信号发生器前者指对输出信号的频率幅度的准 确度和稳定度以及波形失真等要求不高的一类信号发生器后者是指其输出信号的频率 幅度调制系数等在一定范围内连续可调,并且读数准确稳定屏蔽良好的中高档信号 发生器 1.3 研究内容 本文是做基于单片机的信号发生器的设计,将采用编程的方法来实现三角波锯齿 波矩形波正弦波的发生根据设计的要求,对各种波形的频率和幅度进行程序的编写, 并将所写程序装入单片机的程序存储器中在程序运行中,当接收到来自外界的命令,需 要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换 器和运算放大器处理后,从信

8、号发生器的输出端口输出 6 第二章第二章:函数信号发生器的设计函数信号发生器的设计 设计一个基于单片机的函数信号发生器,该函数信号发生器可以输出四种波形,有正 弦波,锯齿波,三角波,方波在此基础上进一步实现对波形频率和占空比的调节,并用液晶 屏分两行显示波形名称和波形频率 2.1 课程设计的目的: 1巩固加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决实际课 题设计的能力 2培养针对课题需要,选择和查阅有关手册图表及文献资料的能力,提高组成系统 编程调试的动脑动手能力 3通过对课题设计方案的分析选择比较,熟悉运用单片机系统开发软硬件设计的 方法内容及步骤 4掌握 dac0832,l

9、m324,74ls22 的接口电路,及使用方法 5熟悉掌握函数信号发生器的工作原理 2.2 课程设计要求: 1、熟悉组成系统中的实验模块原理,画出实验原理图 2 写出完整的设计任务书:课题的名称系统的功能硬件原理图软件框图元件清 单程序清单参考资料 3输出几种波形,实现对频率和占空比的调节,以 1hz 作为步进进行调节 7 第三章第三章:设计方案设计方案 3.1 系统主要功能 该函数信号发生器可以输出四种波形,有正弦波,锯齿波,三角波,方波在此基础上进 一步实现对波形频率和占空比的调节,并用液晶屏分两行显示波形名称和波形频率 3.2 系统硬件构成及功能 函数信号发生器的设计总体框图如图所示,主

10、要有单片机 at89c52,电源,键盘模块, lcd1602 显示模块构成 按案件模块:由 5 个复位开关与 74ls21 组成的系统通过对单片机传输中断信号来 实现波形切换及频率和占空比的调节 显示模块:用 lcd1602,分行显示波形类型和波形频率的显示 电源模块:电源模块有 220v 市变电压经变压,整流,稳压得到+ -5v, + -12v 的电压,维 持系统正常工作 系统的总体框图如图 1 所示: 图 1 系统总体框图 3.2.1 at89c52 单片机及其说明 at89c52 为 8 位通用微处理器 键盘显 示控制 器 显示模块 键盘模块 波形输 出模块 电 源 源 主 控 器 at

11、89c 52 8 图 2.pdip 封装的 at89c52 引脚图 采用工业标准的 c51 内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要 用于会聚调整时的功能控制 功能包括对会聚主 ic 内部寄存器 数据 ram 及外部 接口等功能部件的初始化 ,会聚调整控制 ,会聚测试图控制 ,红外遥控信号 ir 的接收 解码及与主板 cpu 通信等主要管脚有 :xtal1(19 脚)和 xtal2(18 脚)为振荡器 输入输出端口 ,外接 12mhz 晶振rst/vpd(9 脚)为复位输入端口 ,外接电阻电容组 成的复位电路 vcc(40 脚)和 vss(20 脚)为供电端口 ,分别接+5

12、v 电源的正负端 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 口, 也即地址/数据总线复用口 作为输 出口用时,每位能吸收电流的

13、 方式驱动 8 个 ttl 逻辑门电路 ,对端口 p0 写“1”时,可作为高阻抗输入端用 在访问外部数据存储器或程序存储器时 ,这组口线分时转换地址 (低 8 位)和数据 总线复用,在访问期间激活内部上拉电阻 在 flash 编程时,p0 口接收指令字节 ,而在程序校验时 ,输出指令字节 ,校验时,要 求外接上拉电阻 p1 口口 p1 是一个带内部上拉电阻的 8 位双向 i/o 口, p1 的输出缓冲级可驱动 (吸收或 输出电流)4 个 ttl 逻辑 门电路对端口写“1”,通过内部的上拉电阻把端口拉到高电平 ,此时可作输入口 作输入口使用时 ,因为内部存在上拉 电阻,某个引脚被外部信号拉低时会

14、输出一个电流 (iil) 参见表 1 flash 编程和程序校验期间 ,p1 接收低 8 位地址 p2 口口 p2 是一个带有内部上拉电阻的 8 位双向 i/o 口,p2 的输出缓冲级可驱动 (吸收 9 或输出电流)4 个 ttl 逻辑 门电路对端口 p2 写“1”,通过内部的上拉电阻把端口拉到高电平 ,此时可作输入 口,作输入口使用时 ,因为内部存在上拉电阻 ,某个引脚被外部信号拉低时会输出一个 电流(iil) 在访问外部程序存储器或 16 位地址的外部数据存储器 (例如执行 movx dptr 指令)时,p2 口送出高 8 位地址数据 在访问 8 位地址的外部数据存储器 (如执行 movx

15、 ri 指令)时,p2 口输出 p2 锁存器的内容 flash 编程或校验时 ,p2 亦接收高位地址和一些控制信号 p3 口口 p3 口是一组带有内部上拉电阻的 8 位双向 i/o 口p3 口输出缓冲级可驱动 (吸 收或输出电流 )4 个 ttl 逻 辑门电路对 p3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口 此 时,被外部拉低的 p3 口将用上拉电阻输出电流 (iil) p3 口除了作为一般的 i/o 口线外,更重要的用途是它的第二功能 p3 口还接收一些用于 flash 闪速存储器编程和程序校验的控制信号 rst 复位输入当振荡器工作时 ,rst 引脚出现两个机器周期以上高电

16、平将使单片机复 位 ale/prog 当访问外部程序存储器或数据存储器时 ,ale(地址锁存允许 )输出脉冲用于锁存 地址的低 8 位字 节一般情况下,ale 仍以时钟振荡频率的 1/6 输出固定的脉冲信号 ,因此它可对 外输出时钟或用于定时目的 要注意的是 :每当访问外部数据存储器时将跳过一个 ale 脉冲 对 flash 存储器编程期间 ,该引脚还用于输入编程脉冲 (prog) 如有必要,可通过对特殊功能寄存器 (sfr)区中的 8eh 单元的 d0 位置位,可禁 止 ale 操作该位置位后,只有一条 movx 和 movc 指令才能将 ale 激活此外,该引脚会被微弱拉高 ,单片机执 行

17、外部程序时 ,应设置 ale 禁止位无效 psen 程序储存允许 (psen)输出是外部程序存储器的读选通信号 ,当 at89c52 由外部 程序存储器取指令 (或数 据)时,每个机器周期两次 psen 有效,即输出两个脉冲 在此期间,当访问外部数 据存储器,将跳过两次 psen 信号 ea/vpp 外部访问允许 欲使 cpu 仅访问外部程序存储器 (地址为 0000hffffh),ea 端必须保持低电平 (接 地)需注意的是:如果加密位 lb1 被编程,复位时内部会锁存 ea 端状态 如 ea 端为高电平(接 vcc 端),cpu 则执行内部程序存储器中的指令 flash 存储器编程时 ,该

18、引脚加上 +12v 的编程允许电源 vpp,当然这必须是该器 10 件是使用 12v 编程电压 vpp xtal1 振荡器反相放大器的及内部时钟发生器的输入端 xtal2 振荡器反相放大器的输出端 特殊功能寄存器 在 at89c52 片内存储器中 ,80h-ffh 共 128 个单元为特殊功能寄存器 (sfe), sfr 的地址空间映象如表 2 所示 并非所有的地址都被定义 ,从 80hffh 共 128 个字节只有一部分被定义 ,还有 相当一部分没有定义 对没有定义的 单元读写将是无效的 ,读出的数值将不确定 ,而写入的数据也将丢失 不应将数据“1”写入未定义的单元 ,由于这些单元在将来的产

19、品中可能赋予新的功 能,在这种情况下 ,复位后这些单 元数值总是“0” at89c52 除了与 at89c51 所有的定时 /计数器 0 和定时/计数器 1 外,还增加了 一个定时/计数器 2定时/计数器 2 的控 制和状态位位于 t2con(参见表 3)t2mod(参见表 4),寄存器对 (rcao2hrcap2l)是定时器 2 在 16 位捕获方式或 16 位 自动重装载方式下的捕获 /自动重装载寄存器 数数据据存存储储器器 at89c52 有 256 个字节的内部 ram,80h-ffh 高 128 个字节与特殊功能寄存 器(sfr)地址是重叠的 ,也就是高 128 字节的 ram 和特

20、殊功能寄存器的地址是相同的 ,但物理上它们是分开的 当一条指令访问 7fh 以上的内部地址单元时 ,指令中使用的寻址方式是不同的 , 也即寻址方式决定是访问高 128 字节 ram 还是访问特殊功能寄存器 如果指令是直接寻址方式则为访问特殊功能寄 存器 例如,下面的直接寻址指令访问特殊功能寄存器0a0h(即 p2 口)地址单元 mov 0a0h,#data 间接寻址指令访问高 128 字节 ram,例如,下面的间接寻址指令中 ,r0 的内容为 0a0h,则访问数据字节地址为 0a0h, 而不是 p2 口(0a0h) mov r0,#data 堆栈操作也是间接寻址方式 ,所以,高 128 位数据

21、 ram 亦可作为堆栈区使用 定时器 0 和定时器 1: 3.2.2 资源分配 晶振采用 12mhzp1 口的 p1.0-p1.4 分别与四个按键连接,分别控制波形切换频率 加频率减,占空比加,占空比减 p2 口与 dac0832 的 d0-d7 数据输入端相连 p3 口用来控制 dac0832 的输入寄存器选择信号 cs 3.2.3 d/a 转换模块部件 11 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 ms

22、bdi7 13 ile 19 wr2 18 cs 1 wr1 2 xfer 17 u2dac0832 图 3 dac0832 管脚图 di7di0:8 位的数据输入端,di7 为最高位 ile:数据锁存允许控制信号输入线,高电平有效 cs:选片信号输入线(选通数据锁存器),低电平有效 wr1:数据锁存器写选选通输入线,负脉冲有效,由 ilecswr1 的逻辑组合产生 le1,当 le1 为高电平时,数据锁存器状态随输入数据线变化,le1 的负跳变时将输入数据 锁存 xfer:数据传输控制信号输入线,低电平有效,负脉冲有效 wr2:dac 寄存器选通输入线,负脉冲有效,由 wr2xfer 的逻辑

23、组合产生 le2,当 le2 为高电平时,dac 寄存器的输出随寄存器的输入而变化,le2 的负跳变时将数据锁 存器的内容打入 dac 寄存器并开始 d/a 转换 iout1:模拟电流输出端 1,当 dac 寄存器中数据全为 1 时,输出电流最大,当 dac 寄存器中数据全为 0 时,输出电流为 0 iout2:模拟电流输出端 2, iout2 与 iout1 的和为一个常数,即 iout1+iout2=常 数 rfb:反馈电阻引出端,dac0832 内部已经有反馈电阻,所以 rfb 端可以直接接到外 部运算放大器的输出端,这样相当于将一个反馈电阻接在运算放大器的输出端和输入端 之间 vref

24、:参考电压输入端,此端可接一个正电压,也可接一个负电压,它决定 0 至 255 的 数字量转化出来的模拟量电压值的幅度,vref 范围为(+10-10)vvref 端与 d/a 内部 t 形电阻网络相连 vcc:芯片供电电压,范围为(+5+15)v agnd:模拟量地,即模拟电路接地端 dgnd:数字量地 3.2.4 外部控制模块部件 74ls22 12 图 4 74ls22 为四输入双与门 a1,b1,c1,d1为第一个与门的输入,y1为第一个与门的输出 a2,b2,c2,d2为第一个与门的输入,y2为第一个与门的输出在此系统中用来给单片 机提供中断信号 3.2.5 放大部分 lm324 l

25、m324 引脚图(管脚图) 13 图 5 lm324 引脚图 简介: lm324 系列器件为价格便宜的带有真差动输入的四运算放大器与单电源应用场合 的标准运算放大器相比,它们有一些显著优点该四放大器可以工作在低到 3.0 伏或者高 到 32 伏的电源下,静态电流为 mc1741 的静态电流的五分之一共模输入范围包括负电 源,因而消除了在许多应用场合中采用外部偏置元件的必要性它有 5 个引出脚,其中“+” “-”为两个信号输入端,“v+”“v-”为正负电源端,“vo”为输出端两个信号输入端中,vi- (-)为反相输入端,表示运放输出端 vo 的信号与该输入端的位相反;vi+(+)为同相输入端,

26、表示运放输出端 vo 的信号与该输入端的相位相同 3.3 系统的软件设计及接口电路 3.3.1 信号频率数据采集 本程序通过外部中断,接收减频或加频按键,单片机内部对接受的值经过运算得出波 形的输出延时,从而产生频率的改变电路较为简单,成本较低 3.3.2 正弦波产生程序 输入正弦波的采样点,计算出 256 个(一个周期内)正弦波信号值然后通过输出的 两点间的延时来实现调频依次循环输出,可得出正弦波 采点值放在 table2中,程序如下: void sin()/正弦波 unsigned int i; for(i=0;i256;i+) 14 dac0832=table2i; delay(pinl

27、v/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()/方波 15 dac0832=0; delay(pinlv/2); dac0

28、832=0 xff; delay(pinlv/2); 3.3.5 锯齿波产生程序 锯齿波中的斜线用一个个小台阶来逼近,在一个周期内从最小值开始逐步递增,当 达到最大值后又回到最小值,如此循环,当台阶间隔很小时,波形基本上近似于直线适 当选择循环的时间,可以得到不同的周期锯齿波锯齿波发生原理与方波类似,只是高低 两个时延的常数不同,所以用延时法,来产生锯齿波,设个自变量 i 让它不断地自加 1,直 到叫到 255,dac0832 可以又自动归 0,然后再不断地重复上述过程程序如下: void jvchi()/锯齿波 unsigned char i; for(i=0;i255;i+) dac083

29、2=i; delay(pinlv/256); 3.3.6信号放大模块设计 16 从单片机中输出的数字信号经过 dac0832 转换后,由于信号的幅值比较小,所以需 要放大采用常规的放大方式,采用两片运放,实现两 级放大,设计的电路如图 6:图 6 图 6 放大电路接口 3. 3. 7数模转换模块设计 本设计模数转换采用常见的芯片:dac0832,本 设计采用直通方式进行模数转换为了简洁起见,在仿真图中采用网络节点的方式进行连 线,从单片机 p0 口输出的数据直接连接到模数芯片 dac0832 的数据口如图: 图 7 da 转换接口电路 17 第四章第四章 仿真图及结果分析仿真图及结果分析 4.

30、1 波形发生器的调试与测试 本系统是在 protues 下仿真,使用 keil c 编程从而实现其设计及仿真 在测试本系统是采用的是将设置的数值与示波器所测值进行对比,进而可以知道本 系统的性能 频率测试数据: 设定频率(hz)示波器测试频率(hz) 相对误差% 3.93.961.5 7.87.931.28 15.6316.133.19 18 4.2 仿真结果图 正弦波仿真图 图 8 正弦波图 三角波仿真图 19 图 9 三角波图 锯齿波仿真图 图 10 锯齿波图 方波仿真图 20 图 11 方波图 第五章第五章 总结总结与展望与展望 本次的设计中利用 at89c52 和 dac0832 以及

31、放大器完成电路的设计,用开关来控制 各种波形的发生及转换,用单片机输出后,经过模数转换器生成波形,最终可以通过示波 器观察 在这次的软件设计中,程序设计采用的是汇编语言汇编语言具有速度快,可以直 接对硬件进行操作的优点,它可以极好的发挥硬件的功能但是汇编语言也存在编写的 代码非常难懂,不好维护,很容易产生 bug,难于调试的缺点因此,在大型程序的设计中,多 采用 c 语言进行程序编译c 语言简洁高效,是最贴近硬件的高级编程语言,经过多年的 发展,现在已成熟为专业水平的高级语言而且,现在单片机产品推出时纷纷配套了 c 语 言编译器,应用广泛不过就本次课程设计来说,汇编语言还是适用的 由于真正意义

32、上的程序设计还不多,因此还不是很得心应手,所以在设计中遇到一些 问题和一些难点比如:在程序设计中如何实现程序结构的最优化,以达到较高的质量这 是以后设计中要注意的问题 通过这次课程设计,我进一步了解了波形发生器的原理,在实际动手操作过程中,使我 接触了许多我以前没接触过的元件,而且重新温习了刚学不久的汇编语言,使我学得了许 多知识,使我获益匪浅 这次课程设计,使我的动手能力得到了很大的提高,更使我们懂得理论知识的重要性, 没有理论的指导一切实际行动都是盲目的,且实际操作是我们得到的理论知识得到验证, 更能增加对理论知识的理解 21 参考文献 1 程全.基于 at89c52 实现的多种波形发生器

33、的设计j.周口师范学院学报, 2005.22(5):5758. 2 周明德.微型计算机系统原理及应用m.北京:清华大学出版社,2002.341364. 3 刘乐善.微型计算机接口技术及应用m.北京:北京航空航天大学出版社, 2001.258264. 4 童诗白.模拟电路技术基础m.北京:高等教育出版社,2000.171202. 5 杜华.任意波形发生器及应用j.国外电子测量技术,2005.1:3840. 6 张友德.单片微型机原理应用与实践m.上海:复旦大学出版社,2004.4044. 7 程朗.基于 8051 单片机的双通道波形发生器的设计与实现j.计算机工程与应用, 2004.8:1001

34、03. 8 张永瑞.电子测量技术基础m.西安:西安电子科技大学出版社,2006.61101. 9 李叶紫. mcs-51 单片机应用教程m.北京:清华大学出版社,2004.232238. 22 附录附录 1 元器件清单 元件名称数量备注 at89c521 74ls221 lm3241 电阻310k 排阻14.7k 液晶显示屏1lcd1602 滑动变阻器110k 晶振112mhz 23 附录附录 2 程序清单 #include #define uchar unsigned char #define uint unsigned int /#define fosc 24000000/12000000

35、 /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,tltemp;/传递频率的中间变量 /uint t_temp; uchar judge=1; /在方波输出函数中

36、用于简单判别作用 uchar waveform; /当其为 012 时,分别代表三种波 uchar code freq_unit4=10,50,200,10; /三种波的频率单位 sawtooth uchar idata wavefreq4=1,1,1,1; /给每种波定义一个数组单元,用于存放单位 频率的个数 uchar code lcd_hang1=sine wave triangle wave square wave sawtooth wave select wave: press no.1 key! ; uchar idata lcd_hang216=f= hz ; 24 /*ucha

37、r 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_adjust= /频率调整中间值 380,184,118,86,67,55,

38、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,0 xff,0 xff,0 xff; uchar code w

39、avetl= 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, 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,0 xff,0 xff,0 xff,0 xff,0 xf

40、f,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,0 xd0,0 xde,/三角波频率调整中间

41、值 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 xe8,0 xf0,0 x f8

42、,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 x 80, 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; 25 uchar code sine_tab256= /输出电压从 0 到最大值(正弦波 1/4 部分) 0 x80,0 x83,0 x86,0 x89,0 x8d,0 x90,0 x93,0

43、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 xe 3,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 xfd

44、,0 xfe,0 x ff,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 x cf,0 xcc

45、,0 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,

46、0 x45,0 x43, 0 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

47、 x00,0 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 x3 a,0 x3d, 0 x40,0 x43,0 x45,0 x48,0 x4c,0 x4e,0 x51,0

48、x55,0 x57,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 x3

49、c,0 x3e,0 x40,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,

50、0 xa0,0 xa2,0 xa4,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 26 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=11

51、0;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=

温馨提示

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

评论

0/150

提交评论