首页 基于52单片机的低频信号发生器

基于52单片机的低频信号发生器

举报
开通vip

基于52单片机的低频信号发生器 密级: NANCHANG UNIVERSITY 学 士 学 位 论 文 THESIS OF BACHELOR (2006—2010年) 题 目 试验箱低频信号源的设计与改造 学 院: 信息工程 ...

基于52单片机的低频信号发生器
密级: NANCHANG UNIVERSITY 学 士 学 位 论 文 THESIS OF BACHELOR (2006—2010年) 题 目 试验箱低频信号源的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 与改造 学 院: 信息工程 系 电子信息 专业班级: 电子064班 学生姓名: 蔡侃侃 学号: 6102106127 指导教师: 卢金平 职称: 高级实验师 起讫日期: 2010.3.22-2010.6.11 南 昌 大 学 学士学位论文原创性申明 本人郑重申明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果。对本文的研究作出重要贡献的个人和集体,均已在文中以明确方式表明。本人完全意识到本申明的法律后果由本人承担。 作者签名: 日期: 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权南昌大学可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密□,在 年解密后适用本授权书。 本学位论文属于 不保密□。 (请在以上相应方框内打“√”) 作者签名: 日期: 导师签名: 日期: 试验箱低频信号源的设计与改造 专业:电子信息工程 学号: 6102106127 学生姓名:蔡侃侃 指导教师:卢金平 摘要 信号发生器是一种应用广泛的信号源,它经常应用在自动控制系统电、子技术实验等科研领域。 目前, 有很多的信号发生器构成方法,例如采用专用的信号发生芯片MAX038、采用DDS(Direct2Digital Synthesis)型的任意波发生器、以及传统的AWG等。 该可调低频信号发生器的设计以单片机(AT89C52)作为核心控制系统,由晶体振荡电路,地址发生电路,波形产生电路,运算放大电路,数字模拟转换电路组成。由于输出波形的频率较低,所以决定使用AT89C52作为控制电路,用中断查表法形成波形的数据输出,再用D/A转换器输出需要的波形信号。该信号发生器可以输出正弦波,方波,三角波三种波形,可提供输出频率从1HZ--10KHZ的方波以及频率从1HZ--5000HZ的正弦波(三角波)。该设计适用于初学者将其作为一学习板使用,系统价格低廉,功能实用。 关键词:可调低频信号发生器;AT89C52; 正弦波;方波;三角波 Design of  Adjustable Low-frequency Signal Generator Based on the MCU Abstract Signal generator is a staple signal source ,which is widely used in automatic control system, the experiment of electronic technology and other scientific research field . At present, the signal generator has many methods to design, such as the dedicated chip MAX038, the signal generator based on DDS (Direct2Digital Synthesis)as well as the traditional, such as AWG. The Adjustable Low-frequency Signal Generator consists of the microcontroller AT89C52, the crystal circuit, the address maker circuit, the waveforms maker circuit, the operational amplifiers circuit and the transformation circuit between analog signals and digital signals. For the output signals are low frequency, we choose the microcontroller AT89C52 which use the interrupt lookup method to output the waveform data. The Signal Generator can output three waves including sine wave, square wave, triangle wave. The range of frequency is 1HZ~2KHZ. The design can be used as a developed target board by beginners, and the cost of the system is inexpensive, nevertheless, the function is applied. Key words: signal generator; AT89C51;frequency of output; Sine wave; Square Wave; Triangle wave. 目录 摘要 Ⅰ IIAbstract 第一章 绪 论 1 1.1低频信号发生器的介绍 1 1.2单片机的发展及简要介绍 1 1.3 AT89C52芯片的介绍 2 1.4 TLC7528数模转换器的介绍 7 第二章 单片机的仿真软件的应用 8 2.1 Proteus ISIS软件的应用介绍 8 2.2 Keil软件的应用介绍 9 第三章 可调低频信号发生器的设计 10 3.1 信号发生器设计的基本要求 10 3.2 信号发生器的电路设计与仿真 10 3.2.1硬件设计部分: 10 3.2.2 软件设计部分: 11 3.2.3电路仿真: 15 3.3 信号发生器的实物制作 21 3.3.1 Protel Dxp制版: 21 3.3.3 测试与调试 23 3.3.4 心得体会 24 参考文献 25 致谢 26 第一章 绪 论 1.1低频信号发生器的介绍 随着电子测量以及很多部门对各种信号发生器的广泛需要以及电子技术的快速发展,促使信号发生器性能提高,种类增多。尤其随着70年代微处理器的崭露头角,更促使信号发生器向着智能化、自动化方向发展。现在,微处理器运用在许多信号发生器上,因而这些信号发生器具备了自校、自检、诊断自动故障和形成自动波形和修正等功能,能够和控制计算机以及其他的测量仪器方便的一起构成自动测试系统。当前信号发生器总的发展是向着低功耗、高频率精度、宽频率覆盖、多功能、智能化和自动化方向发展。 在工程教育,科学研究及生产实践中,如教学实验、工业过程控制、材料试验、动态 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 、生物医学、机械振动试验等领域,低频信号发生器常常会有用武之地。而在我们一些科学研究中,以及日常生活中,方波和正弦波、矩形波信号是常用的基本测试信号。譬如在电视机、示波器等仪器中,为了利用荧光屏显示图像,让电子能够按照一定得规律运动,常用到方波产生器作为时基电路。信号发生器作为一种通用的电子设备,在科研、测控、通讯生产等领域都得到了非常广泛的运用。 但市面上能看到的信号发生器在带宽、波形种类、频率精度及程控方面都已经不能够满足许多方面实际应用的各种要求。加之各类功能的半导体集成芯片的迅速发展,使我们研制一种宽频带、功耗低,能产生多种波形并具有程控等低频的信号发生器成为迫切的需求。 该设计课题的研究和制作全面说明对低频信号发生器要有一个全面的理解掌握、对低频信号的发生原理要非常了解,以及对低频信号发生器工作流程要有一定的了解:要熟练联接调试波形的设定,单片机(52单片机,显示电路),D/A转换,连接通信,显示和各模块等各个部分,能够正确的掌握常规芯片的使用方法、掌握简单低频信号发生器应用系统软件的设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ,进一步提高我们在信号处理方面的实际操作能力。 1.2单片机的发展及简要介绍 随着社会的发展,家电智能化给大家的生活带来了革命性的变化。在我们的生活的周围,单片机的运用可见,如冰箱、洗衣机、电脑外围芯片、防盗器和工业控制器等。单片机以其强大的控制能力已经被广泛的运用于诸多领域,配以各种接口传感器能够实现系统的智能化。无论是在工业制造领域、医疗领域,还是在国防军事领域、航天航空领域,微控制器都起着非常重要的作用。从最初的8位控制器到现在的16位、32位控制器都还有很强劲的发展和应用空间。那到底什么是单片机呢?所谓“单片机”,单片机就是在半导体硅片上合成了微处理器(CPU)、存储器(RAM,ROM,EPROM)和各种输入输出接口(定时器/计数器,并行I/O口,串行口,模拟数字转换器以及脉宽调制器PWM等),这样的一块集成电路芯片具备了一台计算机的属性,因此被称为单片机。在单片机刚面世的时候,其结构单一,功能较差,但经过20多年的迅猛发展,单片机的结构已经变得十分的精妙,集成度也提高了好几个数量级,功能更是当年无法相提并论的。在国际上,多把单片机称为微控制器MCU,由于在使用中,通常是它处于测控系统的中心地位并嵌入其中,所以我们又把单片机称为嵌入式控制器EMCU。在中国,我们习惯于把它称为“单片机”,在本课程设计中使用的是AT89C52。 1.3 AT89C52芯片的介绍 (1)主要性能 : 与MCS-51单片机产品兼容、8K字节的在系统可编程Flash存储器、一千次的擦写周期、全静态操作:0Hz~24MHz、三级加密程序存储器、三十二个可编程I/O口线、三个16位定时器/计数器以及八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。 (2)功能特性: AT89C52是一种低功率消耗、性能较高CMOS8位微控制器,具备8K在系统可编程Flash 存储器。使用Atmel公司高密度非易失性存储器高技术制作,可以与工业80C51产品指令和引脚全部兼容片上。Flash能够允许程序存储器在系统可编程执行,亦适合于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89C52具有以下 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 功能:8k字节Flash,256字节RAM,32 位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。此外,AT89C52 可降低到0Hz静态逻辑操作,支持2种软件可抉择节电模式。空闲模式时,CPU 不再工作,却允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保留下来,振荡器被冻结,单片机所有工作都停止,直到下一个中断开始或者有硬件复位为止。 (3)管脚说明: 图1-1 AT89C52管脚分布 ·VCC:供电电压, ·GND:接地。 ·P0口:P0口作为一个8位漏级开路双向的I/O口,每脚可以吸纳8TTL门电流。当P1口的管脚第一次写1时,被视为输入高阻。P0可以用于外部程序或者数据存储器,它可以被定义为数据或者地址的第八位。在FIASH编程时,P0 口被视为为原码输入口,当FIASH开始校验时,P0输出原码,此时P0外部一定被拉高。 ·P1口:P1口是内部提供的8位上拉电阻的双向I/O口,P1口缓冲器能收到输出4TTL门电流。P1口管脚写入1后,可作为输入,其管脚被内部上拉为高电平, P1口被外部下拉为低电平的时候,将输出电流,这是由于内部上拉的原因。在FLASH编程和校验时,P1口被认为是第八位地址接收。 ·P2口:P2口是一个8位内部上拉电阻的双向I/O口,P1口缓冲器可收到或者输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉为高电平,且作为输入。作为输入,P2口的管脚将被外部拉低的时侯,将输出电流。这是由于内部上拉的原因。P2口在用于外部程序存储器或者是16位地址外部数据存储器进行操作时,P2口输出地址作为高八位。在给出地址“1”时,它有内部上拉的优点,当对外部八位地址数据存储器进行读写操作时,P2口输出它的特殊功能寄存器上的内容。P2口在FLASH编程和校验的时候,接收信号作为高八位地址信号和控制信号。 ·P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,P3口缓冲器可接收输出4个TTL门电流。当P3口写入“1”后,被内部上拉为高电平,并且作用于输入。作为输入,因为外部下拉为低电平,P3口将输出电流(ILL),这是由于上拉的原因。 ·P3口也可作为AT89C51的一些特殊功能口。 ·P3口管脚备选功能: ·P3.0 RXD(串行输入口) ·P3.1 TXD(串行输出口) ·P3.2 /INT0(外部中断0) ·P3.3 /INT1(外部中断1) ·P3.4 T0(记时器0外部输入) ·P3.5 T1(记时器1外部输入) ·P3.6 /WR(外部数据存储器写选通) ·P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 ·RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ·ALE/PROG:当访问外部存储空间时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期之中,此引脚作用于输入编程脉冲。在平时,ALE端以一定的频率周期输出正脉冲函数,此频率为振荡器频率的六分之一。因此它可用于对外部输出的脉冲或用于定时作用的目的。然而值得注意的是:每当用作外部数据存储的时候,它将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上复位。此时, ALE只是在执行MOVX,MOVC指令是ALE时才能够起作用。此外,该引脚被略微拉高。若是微处理器在外部执行状态ALE为禁止,那么置位无效。 ·PSEN:外部程序存储器的选通信号。在由外部程序存储空间取指期间,每个机器周期是两次PSEN才有效。但在访问外部数据存储器时,这两次有效的PSEN信号都将不能够实现。 ·EA/VPP:当EA保持低电平时,不管是否有内部的程序存储空间,那么在此期间外部程序存储空间(0000H-FFFFH)。注意当加密方式是1时,EA将内部定为RESET;当EA端保持高电平时,此间内部程序存储空间。在FLASH编程期间,此引脚也可以用作施加12V编程电源。 ·XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 ·XTAL2:来自反向振荡器的输出。 (4)复位电路: MCS-52 单片机复位电路是指单片机的初始化操作。单片机启运开始工作时,都需要先经过复位,其作用是使CPU和系统中其他配置器件处于一个确定的初始状态,并从这个状态开始执行命令。因而,复位是一个非常重要的操作方式。但单片机自己是不能自动执行复位的,必须配合恰当的外部电路才可以实现。 复位功能:复位电路的基本功能:系统上电时提供复位功能,一直到系统电源稳定后,去除复位信号。为保险起见,电源稳定后必须经一定的延时才可以撤销复位的信号,以防电源开关或电源插头分-合过程中导致的抖动而对复位功能产生影响。 单片机的复位是由外部的复位电路来控制的。片内复位电路是通过复位引脚RST复位电路与一个斯密特触发器相连,斯密特触发器用来达到抑制噪声的目的,在每个机器周期它的输出由复位电路采样一次。复位电路通常运用上电自动复位以及按钮复位两种方式。 单片机复位后的状态:单片机的复位操作使单片机达到初始化的状态,其中包括使得程序计数器PC=0000H,这说明程序从0000H地址开始运行。单片机工作后,片内RAM为任意值,运行中的复位操作不会更改片内RAM区中的数据,21个特殊功能寄存器在复位之后的数据为确定值,见表1。 值得注意的是,记住在复位后的一些特殊功能寄存器的主要状态,对于理解单片机的初态,减少相关的应用程序中的初始化是非常必要的。 说明:表中符号*为随机状态; 表1-1 寄存器复位后状态表 特殊功能寄存器 初始状态 特殊功能寄存器 初始状态 A B PSW SP DPL DPH P0—P3 IP IE 00H 00H 00H 07H 00H 00H FFH ***00000B 0**00000B TMOD TCON TH0 TL0 TH1 TL1 SBUF SCON PCON 00H 00H 00H 00H 00H 00H 不定 00H 0********B PSW=00H,表示选寄存器0组为工作寄存器组; SP=07H,说明堆栈指针指向的是片内RAM 07H字节存储空间,依据堆栈操作的先加后压原则,第一个被压入的数据写入到08H单元中;Po-P3=FFH,则代表向各端口线都已经写入1,此时,各端口的作用既可用于输入又可用于输出 。IP=×××00000B,则表明各个中断源是等级低的优先级; IE=0××00000B,则表明各个中断均已经被关闭;系统复位是任何微机系统执行的初始化步骤,使控制芯片整体回到默认的硬件状态下。 由RESET引脚来控制的52单片机复位,此引脚与高电平相连超过24个振荡周期后,52单片机便可以进入芯片内部复位状态,并且可以在此状态下一直等待,一直至RESET引脚转为低电平以后,才校验EA引脚是高电平还是低电平,如果为高电平则运行芯片内部程序的代码,若为低电平则会执行外部程序的代码。在系统复位后52单片机将一些其内部的重要寄存器设置为特定的数值,至于内部RAM的数据则保持不变。 (5)晶振电路: 晶振是晶体振荡器的简称,在电路方面它可以等效成一个电容和一个电阻并联再串联一个电容的二端口网络,电学上这个电路有两个谐振点,以频率的高低分把其中较高的频率称为并联谐振,较低的频率称为串联谐振。 AT89C52单片机内部有一个高增益反相放大器,用于构成振荡器。引脚XTAL2和XTAL1分别是此放大器的输出端和输入端。作为反馈器件的片外晶体谐振器与该放大器一起构成一个自激振荡器。电容C2和C1和外接晶体谐振器一起构成并联谐振电路,接在放大器的反馈回路中。虽然对外接电容的值没有非常严格的要求,但震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性会由电容的大小影响。所以,此电路系统的晶体振荡器的值为12MHz,电容的种类应尽量选择陶瓷电容,电容值大概30μF。在电路板焊接时,电容和晶体振荡器应尽可能安装得靠近单片机芯片,这样做是为了减少寄生电容,更好地保证震荡器可靠稳定地工作。 负载电容值是晶振的一个重要的参数,为了得到晶振标称的谐振频率,我们可以选择与负载电容值相等的并联电容。 1.4 TLC7528数模转换器的介绍 TLC7528是8位双路数字--模拟转换器,它具有单独的片内数据锁存器,它的特点包括非常严密的DAC至DAC一致性。信号通过公共输入口传送到两个DAC数据锁存器中的任意一个。输入控制端DACA/DACB决定哪一个DAC被使用。该元件的装载周期和随机存取存储器的写周期很相似,可以非常方便地与大多数输出端口和通用微处理器总线相接口。在最高有效位变化期间内,分段高阶位可以使得闪变最小,该变化期间内的闪变脉冲最强大。  TLC7528功耗小于15 mW,工作电源为5——15 V。2或4象限乘法功能使这种器件成为许多微处理器控制的信号控制应用和增益设置的良好选择。它可以工作在电压方式,产生的不是电流输出而是电压输出。 第二章 单片机的仿真软件的应用 2.1 Proteus ISIS软件的应用介绍 Proteus具有和其他EDA工具一样的原理图编辑、电路仿真功能及印刷电路板(PCB)设计,最大的特色是它的电路仿真的可视化和交互化,通过Proteus软件的VSM(虚拟仿真模式),用户可以对单片机及外围元器件、数字电路、模拟电路、模数混合电路等电子线路进行系统仿真。Proteus软件由ISIS和ARES两部分构成,其中ARES是一款强大的PCB布线编辑软件,ISIS是一款便捷的电子系统原理设计和仿真平台软件。Proteus ISIS软件的特点是:第一,提供软件调试功能。在硬件仿真系统中可以观察各个变量、寄存器等的当前状态,同时具备单步、全速、设置断点等调试功能,因此在该软件的仿真系统中,可以支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件,并且也具备这些功能。第二,支持主流单片机系统的仿真。目前单片机 的类型有: 8051系列, PIC12系列,68000系列,PIC16系列,PIC18系列,Z80系列,AVR系列,HC11系列以及各种外围芯片。第三,实现了单片机仿真和SPICE电路仿真相结合,数字电路仿真、具有模拟电路仿真、单片机及其外围电路组成的系统的仿真、12C调试器、SPI调试器、RS232动态仿真、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器,逻辑分析仪、信号发生器等。第四,具有强大的原理图绘制功能。总之,该软件是一款集SPICE和单片机分析于一身的仿真软件,功能非常强大。在此介绍Proteus ISIS软件的一些基本操作和工作环境。 基本操作:进入Proteus ISIS 双击桌面上的ISIS 7 Professional 图标或者单击屏幕下方的 “开始”→“程序”→“Proteus 7 Professional”→“ISIS 7 Professional”,进入Proteus ISIS集成环境。在进入之后开始依照自己的设计将元器件找到,完成原理图。 其工作界面如下图所示: 图2-1 Proteus ISIS的工作界面 2.2 Keil软件的应用介绍 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,下面仅介绍该软件的简单的应用。 使用步骤: 1.创建工程(作用是管理文件进行编译),工程的后缀名为.uv2。 2.选择芯片的型号(本设计中用AT89C52)。 3.创建源文件,即用C语言编写程序,文件的后缀名为.c。 4.将原文件添加到工程中。 5.最后将生成的16进制文件(.hex文件)加载到原理图中,即可检测仿真结果 第三章 可调低频信号发生器的设计 3.1 信号发生器设计的基本要求 设计并制作一台函数信号发生器,能实现以下基本要求: 第一,能产生方波、正弦波、三角波三种波形,其具体的波形有按键选择。 第二,波形无明显失真; 第3, 频率范围为1Hz—1000Hz。 3.2 信号发生器的电路设计与仿真 3.2.1硬件设计部分: 图3-1信号发生器设计的系统结构框图 如图所示,P3.0-P3.2接三个控制键,其中T1为频率增加键,T2为频率减小键,T3为正弦波和三角波的转化键。P1口输出波形数据,经过DAC0832进 行数模转化得到波形。 图3-2初始化子程序流程图 该程序的主要功能是设置定时器的初始值,工作模式,开中断和开定时器。当定时器计到极限时就要产生中断,即输出一波形数据。 图3-3键扫描子程序流程图 图3-4波形数据产生子程序流程图 在键扫描子程序中,其任务是检查三个键是否按下来执行其功能。三个键分别用于频率增加、减小和选择正弦波或三角波;在波形数据产生子程序是定时器T1的中断程序,即当定时器计数溢出时就要产生中断,此时单片机按次序将波形数据表中的波形数据一一送至DAC0832进行数模转化。 3.2.2 软件设计部分: #include "reg51.h" #define uchar unsigned char #define uint unsigned int #define key P3 #define dataout P1 uchar code sin_tab[256]= // 正弦波数据表(256个数字); { 0x80,0x83,0x85,0x88,0x8A,0x8D,0x8F,0x92,0x94,0x97,0x99,0x9B,0x9E,0xA0,0xA3,0xA5, 0xA7,0xAA,0xAC,0xAE,0xB1,0xB3,0xB5,0xB7,0xB9,0xBB,0xBD,0xBF,0xC1,0xC3,0xC5,0xC7 0xC9,0xCB,0xCC,0xCE,0xD0,0xD1,0xD3,0xD4,0xD6,0xD7,0xD8,0xDA,0xDB,0xDC,0xDD, 0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0xE3,0xE4,0xE4,0xE5,0xE5,0xE6,0xE6,0xE7,0xE7,0xE7, 0xE7,0xE7,0xE7,0xE7,0xE7,0xE6,0xE6,0xE5,0xE5,0xE4,0xE4,0xE3,0xE3,0xE2,0xE1,0xE0, 0xDF,0xDE,0xDD,0xDC,0xDB,0xDA,0xD8,0xD7,0xD6,0xD4,0xD3,0xD1,0xD0,0xCE,0xCC, 0xCB,0xC9,0xC7,0xC5,0xC3,0xC1,0xBF,0xBD,0xBB,0xB9,0xB7,0xB5,0xB3,0xB1,0xAE,0xAC,0xAA,0xA7,0xA5,0xA3,0xA0,0x9E,0x9B,0x99,0x97,0x94,0x92,0x8F,0x8D,0x8A,0x88,0x85, 0x83,0x80,0x7D,0x7B,0x78,0x76,0x73,0x71,0x6E,0x6C,0x69,0x67,0x65,0x62,0x60,0x5D,0x5B,0x59,0x56,0x54,0x52,0x4F,0x4D,0x4B,0x49,0x47,0x45,0x43,0x41,0x3F,0x3D,0x3B,0x39,0x37, 0x35,0x34,0x32,0x30,0x2F,0x2D,0x2C,0x2A,0x29,0x28,0x26,0x25,0x24,0x23,0x22,0x21,0x20, 0x1F,0x1E,0x1D,0x1D,0x1C,0x1C,0x1B,0x1B,0x1A,0x1A,0x1A,0x19,0x19,0x19,0x19,0x19, 0x19,0x19,0x19,0x1A,0x1A,0x1A,0x1B,0x1B,0x1C,0x1C,0x1D,0x1D,0x1E,0x1F,0x20,0x21, 0x22,0x23,0x24,0x25,0x26,0x28,0x29,0x2A,0x2C,0x2D,0x2F,0x30,0x32,0x34,0x35,0x37,0x39, 0x3B,0x3D,0x3F,0x41,0x43,0x45,0x47,0x49,0x4B,0x4D,0x4F,0x52,0x54,0x56,0x59,0x5B,0x5D,0x60,0x62,0x65,0x67,0x69, 0x6C,0x6E,0x71,0x73,0x76,0x78,0x7B,0x7D, }; uchar code thr_tab[256]= // 三角波数据表(256个数字); { 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE, 0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD, 0xBE,0xBF,0xBF,0xBE,0xBD,0xBC,0xBB,0xBA,0xB9,0xB8,0xB7,0xB6,0xB5,0xB4,0xB3, 0xB2,0xB1,0xB0,0xAF,0xAE,0xAD,0xAC,0xAB,0xAA,0xA9,0xA8,0xA7,0xA6,0xA5,0xA4, 0xA3,0xA2,0xA1,0xA0,0x9F,0x9E,0x9D,0x9C,0x9B,0x9A,0x99,0x98,0x97,0x96,0x95,0x94, 0x93,0x92,0x91,0x90,0x8F,0x8E,0x8D,0x8C,0x8B,0x8A,0x89,0x88,0x87,0x86,0x85,0x84,0x83,0x82,0x81,0x80,0x7F,0x7E,0x7D,0x7C,0x7B,0x7A,0x79,0x78,0x77,0x76,0x75,0x74,0x73,0x72,0x71,0x70,0x6F,0x6E,0x6D,0x6C,0x6B,0x6A,0x69,0x68,0x67,0x66,0x65,0x64,0x63,0x62,0x61,0x60,0x5F,0x5E,0x5D,0x5C,0x5B,0x5A,0x59,0x58,0x57,0x56,0x55,0x54,0x53,0x52,0x51,0x50, 0x4F,0x4E,0x4D,0x4C,0x4B,0x4A,0x49,0x48,0x47,0x46,0x45,0x44,0x43,0x42,0x41,0x40,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, }; /*****************************************************************/ uint data THHL=65535; //T1的16位定时器初值; uchar data keyword,n=0; //键值存放,查表指针; bdata sinthr; sbit sin_thr=sinthr^0; //正弦波或三角波标志(1为正弦波,0为三角波); sbit ww=key^7; //方波输出口; /*********************键扫描子函数**********************/ keyscan() { keyword=key&0x07; if (keyword!=0x07) { while((key&0x07)!=0x07); //等待释放 switch(keyword) { case 6:{if(THHL>=65235)THHL=65535;else{THHL=THHL+255;}break;} case 5:{if(THHL<=500)THHL=0;else{THHL=THHL-255;}break;} case 3:{sin_thr=~sin_thr;break;} default:{break;} } } } /******************初始化函数***********************/ clearmen() { key=0xff,dataout=0x00;THHL=65279; //按键输入状态,波形输出为0; TH1=THHL/256;TL1=THHL%256; //装定时初值(T1用); TMOD=0X10;ET1=1;TR1=1;EA=1; //方式1为16位定时模式,T1中断 } 允许,开定时器,开总中断; /**************主函数*******************/ main() { clearmen(); while(1) { keyscan(); } } /************************T1中断函数***********************/ void time_intt1(void)interrupt 3 { EA=0;TR1=0;TH1=THHL/256;TL1=THHL%256;TR1=1; if(sin_thr){dataout=sin_tab[n];} else{dataout=thr_tab[n];} if(n>=255){n=0;}else{n++;} ww=~ww; EA=1; } /************************程序结束**************************/ 3.2.3电路仿真: 图3-5电路原理图 (2)仿真结果: 在仿真的过程中,软件清晰的显示了调频的各个过程,如截图所示。图3-6至图3-11均是本信号源可得到的部分频率(全部的频率可通过调节得到),图3-6是本设计可得的最大的频率,下面以图3-6为例,计算一下其误差: 该信号源所用的芯片的机器周期为1us(系统时钟为12MHz),定时器的初值是65279,当定时器计到65535时会溢出,即中断产生。由于方波是由P3.7产生,所以其周期是1us*256*2=512 us。而三角波(正弦波)是由数据表得到,每个数据表中含256个数据,一次中断取出一个,所以其周期是1us*256*256=65.536ms。观察图3-6得到方波的周期是550us左右,频率约为1800HZ,三角波(正弦波)的周期是70 ms左右,频率约为14HZ.比较二者的数值可知结果几乎相等,所以证实了该设计较为精确。 按键1和2分别对应于频率增加和减小,按键3用于转化波形。图3-6至图3-11显示了频率的逐渐变化,图3-12显示了在按键3按下,三角波和正弦波相互转化的一个瞬间,具体的调节过程可在测试中显示。 图3-6三角波和正弦波 图3-7频率增大 图3-8频率再增大 图3-9频率进一步增大 图3-10方波和正弦波 图3-11方波和正弦波频率增大 图3-12波形的转换 随着频率要求进一步的增大,以上的频率已经达不到要求。只有通过吧正弦表及三角表中的数字个数减少,并且把初始化函数中的初值变大为65534,这样周期变短,使得波形频率变大。变大后的方波频率可达10KHZ,正弦波和三角波频率可达5000HZ左右。 改动的正弦表(16个数字):sin_tab[16]= { 0x80,0xAE,0xCE,0xE2,0xE7,0xDB,0xC1,0x9E, 0x76,0x4F,0x30,0x1D,0x19,0x24,0x3D,0x60, }; 改动的三角表(16个数字):thr_tab[64]= { 0x80,0x90,0xA0,0xB0,0xBF, 0xAF,0x9F,0x8F, 0x7F,0x6F,0x5F,0x4F,0x40,0x50,0x60,0x70, }; 改动后的仿真波形如下图所示: 图3-13修改后的方波和三角波 图3-14修改后的方波和正弦波 3.3 信号发生器的实物制作 表3-1 元件清单 名称 规格型号 数量 名称 规格型号 数量 单片机 AT89C52 1 电阻 1KΩ 1 晶振 12MHz 1 10KΩ 1 排阻 1 数模转换器 TLC7528CN 1 电容 22uF 1 按键 4 30pF 2 复位键 1 104 2 ISP口 1 100uF 1 电源 1 LED-RED 1 3.3.1 Protel Dxp制版: Protel Dxp是目前最受欢迎的电子线路设计软件,利用它可以方便地设计各种电路原理图和PCB图,并可以对电路板进行简单的仿真与分析。同时,该软件还附带了丰富的元件集成库,其中保存了每个元件的原理图符号、封装模型和其他模型等。Protel Dxp通过把工程管理、原理图设计、PCB设计、信号完整性分析等技术进行完美融合,为用户提供了全面的设计解决方案,使用户可以轻松进行各种复杂的电路板设计。以下是信号发生器的Protel Dxp制版过程的简要介绍: 第一,创建设计工程:新建一个文件夹命名为Signal,选择File>New>PCB Project菜单,创建一个PCB Project1.PrjPCB的工程文件,选择File> Save Project菜单,打开Save As对话框,将所创建的工程名为Signal. PrjPCB。 第二,绘制原理图:选择File>New>Schematic菜单,创建新原理图文件,并启动原理图编辑器,单击标准工具栏的保存活动文档工具,在弹出的保存文件对话框中选择Signal文件夹,输入Signal.SchDoc文件名后单击“保存”按钮,执行菜单命令Design>Options,打开Document Options 对话框。在Standard styles 选项的下拉列表中选择A4,设置图纸规格,其他选项均采用默认值,然后点击OK按钮确认。选择View>Fit Document菜单,使文档在窗口中最大化显示,单击标准工具栏的缩放区按钮,在绘图区单击并拖动定义希望放大的区域。最后单击编辑区右侧的Libraries标签,打开Libraries库文件面板,打开元件库下拉列表,选择Miscellaneous Devices.IntLib 集成库,搜索所需要的元件,双击选中,然后用导线将它们连接成原理图,如下图所示: 图3-15 可调低频信号发生器原理图 第三,进行原理图校验与分析:在完成原理图的绘制以后,根据先前设定的设计规则对原理图进行校验,或者通过电路仿真对电路的可行性进行分析,对电路的结构进行优化。 第四,设计印制电路板:启动PCB编辑器,加载根据原理图创建的网络连接和元件封装,对电路板进行自动布局并进行手工调整,对电路板进行手工布线,布线结束后对改图进行覆铜操作,得到最后的实验板如下图: 图3-16可调低频信号发生器PCB图 第五,制板:将最后得到的PCB图作为模版进行制板,并将准备好的器件焊接至该板子上。 3.3.2 测试与调试 将保存的hex程序文件烧录进单片机AT89C52中,并按照原理图正确接线,接好后进行测试,结果应该与预测的效果相同,若有异常则检查故障并对仿真进行修正。 3.3.3 心得体会 通过这次对可调低频信号发生器的设计与制作,让我了解了设计电路的程序,也让我明白了关于信号发生器的原理与设计理念,要设计一个电路首先要用仿真软件进行仿真,成功之后才实际接线的。但是最后的成品却不一定与仿真时完全一样,因为在实际的应用中有着各种各样的条件制约着,理论和实践是有差距的,反复的修改和测试能给我们较多宝贵的 经验 班主任工作经验交流宣传工作经验交流材料优秀班主任经验交流小学课改经验典型材料房地产总经理管理经验 。所以,在设计时应考虑两者的差异,结合器件的实际情况从中找出最适合的设计方法。总而言之,这次的课程设计让我对电路设计和各种软件都有了较深入的了解,使我巩固了上课时候学习的知识,并且对这些知识的实际运用有了新的认识。所以说,坐而言不如立而行,通过自己动手实际操作我受益匪浅,但是在设计的过程中还是犯了许多的错误,希望能在老师的教导和自己的练习中得到纠正和提高。 参考文献 [1] 张毅刚,彭喜元,董继成.单片机原理及应用[M].北京:高等教育出社,2006:67-94. [2] 李刚、林凌. 新概念单片机教程[M]. 天津:天津大学出版社,2007.6 [3] 李金平,沈明山,姜余祥.电子系统设计[M].北京:电子工业出版社,2007:1-9,180-196,398-440. [4] 甘登岱. 跟我学Protel Dxp 电路设计与制版[M].北京:人民邮电出版社,2004:196-214. 致谢 这次毕业设计能够制作成功,和许多人对我的帮助是分不开的,首先我要感谢我的毕设指导老师卢金平老师,是他对我设计的思路提供帮助,在制作困难的时候,也是他给了我鼓励。其次我还要感谢学校提供给我们图书馆这样一个好地方让我们查阅相关资料,我所做的毕设中很多信息均来自图书馆中的书籍。这些书中的珍贵信息对我的帮助非常巨大。最后我想感谢在我做毕业设计中那些在身边帮助我的各位同学,本来我对DXP,PROTUES,以及KEIL这三款软件不是非常熟悉,是身边的同学在关键时候给予我耐心的帮助,让我现在对这些软件更加熟悉,也使我毕业设计中的制版和仿真能够成功。 PAGE - 18 - _1315069070.vsd 开始 T1置初值,设置为16位定时模式(方式1) T� 结束 _1315071672.vsd � 是否有键按下 开始查键 有键按下,根据按键的数值执行功能 频率增大 频率减小 选择波形 有 按1 按2 按3 查键结束� 否 _1315071700.vsd � 按键3是否按下 中段开始执行 关闭中断,关闭定时,重新载入初值,开定时器 输出方波 输出三角波 输出正弦波 查表指针加1 开中断,返回� 否 是 _1315068543.vsd � 控制键� P3.0 P3.1 P3.2 AT89S51 单片机控制器 P1口 P3.7 DAC0832 D0—D7 � 方波输出 正弦波或三角波输出
本文档为【基于52单片机的低频信号发生器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_666004
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:31
分类:金融/投资/证券
上传时间:2010-07-15
浏览量:62