单片机课程设计具体要求正文格式_第1页
单片机课程设计具体要求正文格式_第2页
单片机课程设计具体要求正文格式_第3页
单片机课程设计具体要求正文格式_第4页
单片机课程设计具体要求正文格式_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、河南理工大学本科课程设计报告摘要本设计是多功能信号发生器,以 AT89S52 单片机为核心,通过按键输入控制输出信号的类型、频率和幅值,采用 DA 转换芯片DAC0832输出相应的波形,同时以LED 显示器进行实时显示信号相关信息。我们采用 C 语言进行编程,可实现100-1Khz的方波,锯齿波,三角波和正弦波四种波形的产生,且波形的频率、幅值可通过按键调节,并显示在数码管上。而且,波形的幅值还可通过电位器实现无极调幅,增加了可选幅值范围。经测试该设计方案线路优化,结构紧凑,性能优越,满足设计要求。关键字:单片机AT89S52,DAC0832,信号发生器目录 1 概述 1.1选题背景及其意义

2、1.2单片机概述 1.3信号发生器分类 1.4主要电路元件介绍2 系统总体方案及硬件设计 2.1 方案总设计2.2硬件设计3 软件设计 3.1软件开发环境简介 3.2Keil uVision4简介Proteus7.10 简介 3.3Keil 与Proteus 联合调试仿真4 Proteus软件仿真5课程设计体会参考文献附1:源程序代码附2:系统原理图1 概述1.1 选题背景及其意义本文从信号发生器又称信号源或振荡器的背景,在生产实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如方波、锯齿波、三角波、正弦波的电路被称为函数信号发生器。在通信、广播、电视

3、系统,在工业、农业、生物医学领域内,函数信号发生器在实验室和设备检测中具有十分广泛的用途。信号发生器作为一种常见的应用电子仪器设备,传统的可以完全由硬件电路搭接而成,如采用555振荡电路发生正弦波、三角波和方波的电路便是可取的路径之一,不用依靠单片机。但是这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点。在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟机械振动等领域常常要用到低频信号源。而由硬件电路构成的低频信号其性能难以令人满意,而且由于低频信号源所需的RC很大;大电阻,大电容在制作上有困难,参数的精度亦难以保证;体积大,漏电,损耗显著更是致命的弱点。一旦工作需求

4、功能有增加,则电路复杂程度会大大增加1.2 单片机概述单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器 CPU 随机存储器 RAM、只读存储器 ROM、多种 I/O 口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片机具有集成度高、系统结构简单、使用方便、实现模块化、可靠性高、处理功能强、速度快等特点,因为被广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。1.3 信号发生器分类信号发生器是指产生所需参数的电

5、信号的仪器。因其应用广泛,种类繁多,特性各异,分类也不尽一致。按信号波形可分为正弦信号、函数信号、脉冲信号和随机信号发生器等四大类;按频率覆盖范围分为低频信号发生器、高频信号发生器和微波信号发生器;按输出电平可调节范围和稳定度分为简易信号发生器、标准信号发生器和功率信号发生器;按频率改变的方式分为调谐式信号发生器、扫频式信号发生器、程控式信号发生器和频率合成式信号发生器等。信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。 1.4主要电路元件介绍 1) 单片机简介 AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Era

6、sable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高并且价廉的方案。AT89C51现在AT89S51/52已经逐渐取代了AT89C51/52。

7、VCC:供电电压。 GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。at89c51

8、P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们

9、被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示: (1)口管脚 备选功能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脚两个机器周期的高电平时间。at8

10、9c51ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有

11、效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。 2)DAC0832简介 DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到

12、广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。2.1 )DAC0832的主要特性参数* 分辨率为8位; * 电流稳定时间1us; * 可单缓冲、双缓冲或直接数字输入; * 只需在满量程下调整其线性度; * 单一电源供电(+5V+15V); * 低功耗,20mW。2.2 )DAC0832结构* D0D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错); * ILE:数据锁存允许控制信号输入线,高电平有效; * CS:片选信号输入线(选通数据锁存器),低电平有效; * WR1:数据锁存器写选通输入线,负脉冲(脉宽应大

13、于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存; 图 DAC0832的逻辑框图和引脚排列 XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效; WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR2、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。 IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化; IOUT2:电流输出端2,

14、其值与IOUT1值之和为一常数; Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度; Vcc:电源输入端,Vcc的范围为+5V+15V; VREF:基准电压输入线,VREF的范围为-10V+10V; AGND:模拟信号地 DGND:数字信号地 3 )数码显示管3.1) 原理及分类一位 LED 显示器由 8 个发光二极管组成,其中 7 个发光二极管 a-h控制 7 个笔画段的亮或暗,另一位控制一个小数点的亮和暗。LED 显示器有共阴极和共阳极 2 种形式,其结 图 3-3 数码管结构图 构如图3-3所示。共阳极显示器是发光二极管的阳极连接在一起,当需要显示某字符时,只需要将共阳

15、极端接高电平,a-h 中某些位接低电平即可。共阴极显示器是发光二极管的阴极连接在一起,当需要显示某字符时,只需要将共阴极端接低电平,a-h 中某些位接高电平即可。3.2) 显示器的工作方式显示器的工作方式分为静态显示方式和动态显示方式两种。 静态显示方式 静态显示方式就是显示器在显示一个字符时,相应的发光二极管恒定的导通或截止,例如 a、b、c、e、f 导通,g 截止时显示“0”,这种使显示器显示字符的字形数据常称为段数据。静态显示方式的每一个七段显示器,需要由一个 8 位并行口控制。优点是显示稳定,提高了工作效率,缺点是位数较多时显示口随之增加。 动态显示方式动态显示方式是一位一位的轮流点亮

16、各位显示器,对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数可以实现亮度较高较稳定的显示,如显示器的位数不大于 8 位,则控制显示器公共极的电位只需要一个 8 位口(位数据口),控制字形也需要一个 8 位口(段数据口)。 2 系统总体方案及硬件设计 2.1 方案总设计 2.1.1方案原理 该设计设计一个多功能信号发生器,我们采用的是 AT89S52 单片机用软件实现信号的输出。该单片机是一个微型计算机,包括中央处理器 CPU,RAM,ROM、I/O 接口电路、定时计数器、串行通讯等,是波形设计的核心。该信号发生器原理

17、框图如图 2.1,总体原理为:利用 AT89S52 单片机构造多功能信号发生器,可产生正弦波,方波,三角波,锯齿波四种波形,通过 C 语言对单片机的编程即可产生相应的波形信号,并可以通过键盘进行各种功能的转换和信号频率的控制,当输出的数字信号通过数模转换成模拟信号也就得到所需要的信号波形,通过运算放大器的放大输出波形,同时让显示器显示输出的波形信息。 系统总框图 2.1.2方案设计 本方案其主要模块包括复位电路、时钟信号、键盘控制、D/A 转化及 LED 显示。其各个模块的工作原理如下:1.复位电路是为单片机复位使用,使单片机接口初始化;89C51 等 CMOS51 系列单片机的复位引脚 RE

18、T 是施密特触发输入脚,内部有一个上拉低电阻,当振荡器起振以后,在 RST 引脚上输出 2 个机器周期以上的高电平,器件变进入复位状态开始,此时 ALE、PSEN、P0、P1、P2、P4 输出高电平,RST 上输入返回低电平以后,变退出复位状态开始工作。该方案采用的是人工开关复位,在系统运行时,按一下开关,就在 RST 断出现一段高电平,使器件复位。2.时钟信号是产生单片机工作的时钟信号,控制着计算机的工作节奏,可以通过提高时钟频率来提高 CPU 的速度。AT89S52 内部有一个可控的反相放大器,引脚 XTAL1、XTAL2 为反相放大器输入端和输出端,在 XTAL1、XTAL2 上外接 1

19、2MHZ 晶振和 30pF 电容便组成振荡器。时钟信号常用于 CPU 定时和计数。3.键盘模块是是用于控制信号输入的类型,当按键按下时,可以通过单片机编AT89S52单片机数/模准换器、DAC0832、LM324、运放放大、接口电路、键盘输入程读取闭合的键号,实现相应的信号输出。其步骤主要是a、判断是否有键按下;b、去抖动,延时 20ms 左右;c、识别被按下的键号;d、处理,实现功能。4.D/A 转换也称为数模转换,是把数字量变换成模拟量的线性电路。单片机产生的数字信号通过 DAC0832 转化成模拟信号,输出相应的电流值,通过LM324 集成运算放大器可以取出模拟量得电压值,最后利用示波器

20、获得输出的模拟信号的波形;衡量数模转换的性能指标有分辨率、转换时间、精度、线性度等。LED 显示器用由若干个发光二极管按一定的规律排列而成,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光用于是显示相关输出波形的信息,包括信号的类型、频率和幅值。2.1.3设计功能 1.产生方波、锯齿波、三角波、正弦波四种波形频率100HZ-1KHZ,按键可实现步进100HZ调节。2.产生-5V- +5V的幅值的波形信号,幅值调节可选按键步进0.1V,也可选择用电位器无极调节。3.显示采用 8 位 LED 显示器,前两位显示幅值;后四位显示频率。4.按键输入采用8个按键实现输入,P00-P

21、07。2.2硬件设计 2.2.1硬件原理 对于该低频信号发生器的设计,我们采用了以AT89S52单片机芯片作为核心处理器,编程实现各种不同类型信号的产生,最后通过 DA 转换输出到示波器。结构简单,思路仅仅有条,而根据设计的基本要求,我们又把其细分为不同的功能模块,各个功能模块相互联系,相互协调,通过单片机程序构成一个统一的整体,其整体电路原理框图如图所示:2.2.2时钟电路 单片机的时钟信号通常用两种电路形式得到:内部振荡和外部振荡方式。在引脚XTAL1 和 XTAL2 外接晶体振荡器,构成了内部振荡方式。由于单片机内部有一个高增益的反相放大器,当外接晶振后,就构成了自激振荡,并产生振动时钟

22、脉冲。晶振通常选用 6MHZ、12MHZ、24MHZ。本设计中时钟电路图如图4-2,我们选择了12MHZ和晶振分别接引脚XTAL1和XTAL2,电容 C1,C2 均选择为 30pF,对振荡器的频率有稳定作用,当频率较大时,正弦波、方波、三角波及锯齿波中每一点的延时时间为几微妙,故延时时间还要加上指令时间才能获得较大的频率波形。2.2.3复位电路 2.2.4数码管电路 2.2.5 DAC0832模数转换电路 根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。本设计选用直通方式。DAC0832的数据口和单片机的P2口相连

23、。CSDA:片选信号输入线(选通数据锁存器),低电平有效;WR:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;2.2.6LM324运放电路和低通滤波电路 LM324的5管脚与DAC0832的(IOUT2)12管脚相连,LM324的6管脚与DAC0832的(IOUT1)11管脚相连,LM324的7管脚与DAC0832的REF(9)管脚相连. 2.2.7按键和波形指示LED电路图 4-7 波形指示LED和按键电路本系统有4中波形产生分别是:方波、锯齿波、三角

24、波和正弦波。每种波形对应相应的LED灯,当选择方波模式时单片机的P3.5输出高电平DS1就亮了,显示出,现在的波形模式是方波,同理DS2-锯齿波,DS3三角波,DS4正弦波。由于需要实现波形、幅值和频率的可调,所以,通过8个按键实现输入。4个按键是波形模式选择,4个按键分别是幅值加、减,频率加、减。其对应关系见下表。表4.1 按键功能及I/O情况方波锯齿波三角波正弦波幅值加幅值减频率加频率减按键K8K7K1K2K6K3K5K4I/OP0.7P0.6P0.0P0.1P0.5P0.2P0.4P0.3 3软件开发 3.1软件开发环境简介3.1.1 Keil uVision4简介Keil C51是美国

25、Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。优点:1.Keil C51生成的目标代码效率非常之高,多

26、数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 2.与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面3.1.2 Proteus7.10 简介Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广

27、刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种

28、编译器。功能特点:Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是: 1原理布图 2PCB自动或人工布线 3SPICE电路仿真 革命性的特点 1互动的电路仿真 用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。 2仿真处理器及其外围电路 可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。3.1.3 Keil 与Proteu

29、s 联合调试仿真把Keil 与Proteus 联合调试将大大加快开发进度。用Proteus把硬件电路搭载出来,用keil写c程序,把写好要调试的程序下载到Proteus仿真的单片机里,然后,更改程序调试参数。在Proteus里边有示波器,可以用示波器查看程序的运行结果,不断调试,摘到达到满意的效果时在进行实物调试,这样不仅加快了调试的进程,而且使单片机的rom的擦写次数明显减少,增加了单片机的使用寿命。变量、数组、端口初始化函数初始化定时器T0初始化,开中断开始按键扫描波形模式选择加查表及定时器0定时时间计算频率幅值加减选择减给DAC0832值数码管显示指示LED显示3.2主程序3.3按键处理

30、程序程序位于函数keyscan()中,keyscan()函数位于主循环中,每循环一次调用一次,检测键盘是否按下,如果按下去延时抖动,然后检测到底是哪个按键按下,针对不同的按键按下采取不同的动作。因为按键采用的是扫描法,故需要注意消抖的处理,在此用软件法去抖动即可。软件法去抖动的实质是软件延时,即检测到某一键状态变化后延时一段时间,再检测该按键的状态是否保持着,如是则作为按键处理,否则,视为抖动,不予理睬。去抖动的延时时间一般参考资料多描述为20ms左右,在实际应用中应大于20ms。否则,会导致按一次多处理,影响程序正常执行。NNYY按键扫描入口延时得到键值返回有按键按下?该键按下?图5-2 按

31、键扫描及处理程序流程图表 5.1各按键功能及I/O情况方波锯齿波三角波正弦波幅值加幅值减频率加频率减按键K8K7K1K2K6K3K5K4I/OP0.7P0.6P0.0P0.1P0.5P0.2P0.4P0.3按键是以上表中的中的定义方式工作的,不同的按键按下就会有不同的参数,程序根据这些参数来执行,从而产生不同的波形,不同的频率,在数码管上显示不同的信息。3.4 数码管输出程序分析数码管显示入口关位码送段码开位码返回 图 5-3 数码管显示流程图数码管输出程序是送段选码和位选码的程序,位于主程序中。轮流点亮6个数码管,每大约5ms变换一次,由于轮换的次数太快,由于视觉暂留效应,看上去是6个数码管

32、看上去好像一直点亮。3.5 各种波形产生思路3.5.1 方波产生方波的产生比较简单,只需要根据按键输入的幅值和频率计算出相应的DA数据送给数据就可以产生相应的波形。具体来说,例如产生500Hz的2.5V的波形。首先,要计算出定时器的定时频率,由于,方波只有两种状态,峰值和0值。峰值时由按键设定的,其中峰值占一个周期的一半,即要定时产生1000Hz的定时器频率,每进一次中断函数就把DA的数据更新为上次值的取反。让DA数据在峰值和0之间依次切换即可。3.5.2 锯齿波产生思路首先,根据按键设定的波形频率,选择一个周期内合适的点数,根据点数和峰值计算相邻2个点的幅度的步进值,根据点数和频率设定相邻2

33、点的时间值,计算出定时器的初值,然后,定时输出刷新DA的数据就可以产生一定频率和幅值的波形。3.5.3 三角波产生思路首先,根据按键设定的波形频率,选择一个周期内合适的点数,根据点数和峰值计算相邻2个点的幅度的步进值,根据点数和频率设定相邻2点的时间值,计算出定时器的初值,然后,设置一个变量每进一次定时中断DA数据就加幅值步进,当等于总点数的一半时,每进一次定时中断就把DA数据减幅值步进直到DA数据为0,计数变量清零。每进一次定时中断输出刷新DA的数据就可以产生一定频率和幅值的三角波。3.5.4 正弦波产生思路首先,写一个表格,然后根据按键设定的波形频率,选择一个周期内合适的点数,根据点数和峰

34、值计算相邻2个点的幅度的步进值,根据点数和频率设定相邻2点的时间值,计算出定时器的初值,然后,设置一个变量每进一次定时中断DA数据就加幅值步进,当等于总点数的一半时,每进一次定时中断就查表把DA数据减幅值步进直到DA数据为0,计数变量清零。每进一次定时中断查表输出刷新DA的数据就可以产生一定频率和幅值的三角波。 4 Proteus软件仿真 图一仿真电路图 图二输出波形图 正弦波 方波 三角波 5课程设计体会 在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计的问题,而程序设计是一个很灵活的东西,

35、它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。要设计一个成功的电路,必须要有耐心,要有坚持的毅力。在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原理以及可行的原因。这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。完成这次设计后,我在书本理论知识的基础上又有了更深层次的理解。

36、同时在本次设计的过程中,我还学会了高效率的查阅资料、运用工具书、利用网络查找资料。我发现,在我们所使用的书籍上有一些知识在实际应用中其实并不是十分理想,各种参数都需要自己去调整。偶而还会遇到错误的资料现象,这就要求我们应更加注重实践环节。最后还要在此感谢指导老师们和我的同学,他们在整个过程中都给予了我充分的帮助与支持。参考文献 1 谭浩强.C 程序设计. 北京:清华大学出版社,20022 王为青,程国刚. 单片机 Keil Cx51 应用开发技术.北京:人民邮电大学出版社,20073道客巴巴 基于单片机的信号发生器设计2010-04-04张友德,赵志英,涂时亮. 单片机微型机原理、应用和实验.

37、 上海:复旦大学出版社,2006.105丁向荣,谢俊,王彩申. 单片机 C 语言编程与实践. 北京:电子工业出版社,2009.8 附1 源程序代码1.主程序:#include"h.h"void main()timer_init();while(1)keysccan();display();if(buttonflag=1)/有按键动作再执行switch(boxing)case 0:led=0x20;/方波指示灯 th=tab2f-1;/周期设定 tl=tab3f-1;/周期设定 break;case 1:led=0x10;/锯齿波指示灯 th=255;/周期设定 tl=tab

38、5f-1;/ dj=tab4fz-1/tab6f-1;/步进计算 break;case 2:led=0x08;/三角波指示灯 th=255;/周期设定 tl=tab7f-1;/ ds=tab4fz-1/tab8f-1;/步进计算 break;case 3:led=0x04; th=255;/周期设定 tl=tab11f-1;/ break; P3=led;/指示波形2.头文件:#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit we=P36;sbit du=P37;sbit led1=P

39、35;sbit led2=P34;sbit led3=P33;sbit led4=P32;uchar th=236,tl=120;/定时器初值设定uchar i;uchar led,fz=50;/指示灯和幅值50代表5.0uchar f=5;/1频率代表100uchar boxing=0;/0方波1锯齿波2三角波3正弦波uchar buttonflag;/按键动作标志uchar dj;/锯齿波两点之间的步进;uchar ds;/三角波两点之间的步进uchar sq;/方波切换标志uchar scount;/三角波点数计数uchar dz;/正弦波步进uchar zcount;/正弦波计数uch

40、ar code tab0=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/共阴数码管显示0f/uchar code tab1=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/位选编码uchar code tab1=0xfe,0xfd,0xef,0xdf,0xbf,0x7f;/位选编码uchar code tab2=236,246,249,251,252,252,253,253,253,254;/方波Thuchar code tab3=150,78,

41、148,53,45,214,75,165,234,35;/方波TLuchar code tab4=5,10,15,20,26,31,36,41,46,51, 56,61,66,71,77,82,87,92,97,102, 107,112,117,122,128,133,138,143,148,153, 158,163,168,173,179,184,189,194,199,204, 209,214,219,224,230,235,240,245,250,255;/幅值uchar code tab5=161,181,200,210,200,212,206,200,208,215;/锯齿TLuch

42、ar code tab6=80,50,40,35,25,25,19,15,15,15;/锯齿波点数uchar code tab7=153,180,196,197,198,200,194,194,192,187;/三角波TLuchar code tab8=40,25,20,15,12,10,8,7,6,5;/三角波点数的一半uchar code tab9=80,50,40,30,24,20,16,14,12,10;/三角波点数uchar code tab10=135,145,158,167,176,188,199,209,/正弦64 218,226,234,240,245,249,252,254

43、,254,253,251,247,243,237,230,222,213,204,193,182,170,158,146,133,121,108,96,84,72,61,50,41,32,24,17,11,7,3,1,0,0,2,5,9,14,20,28,36,45,55,66,78,90,102,114,128 ;/正弦波表格uchar code tab11=123,253,176,131,160,179,119,138,154,169;/正弦波tluchar code tab12=64,64,32,16,16,16,8,8,8,8;/正弦波点数uchar code tab13=135,15

44、8,176,199,/正弦32 218,234,245,252,254,251,243,230,213,193,170,146,121,96,72,50,32,17,7,1,0,5,14,28,45,66,90,114 ;/正弦波表格uchar code tab14=135,176,/正弦16 218,245,254,243,213,170,121,72,32,7,0,14,45,90;/正弦波表格 uchar code tab15=135,/正弦8 218,254,213,121,32,0,45;/正弦波表格 uchar code tab16=135,209,/正弦10 254,230,158,61,7,14,78,128 ;/正弦波表格void delay(uchar i)uchar x,y;for(x=i;x>1;x-)for(y=100;y>1;y-);void timer_init()TMOD=1;TH0=th;TL0=tl

温馨提示

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

评论

0/150

提交评论