基于DDS技术的信号发生器的设计与实现-毕业设计_第1页
基于DDS技术的信号发生器的设计与实现-毕业设计_第2页
基于DDS技术的信号发生器的设计与实现-毕业设计_第3页
基于DDS技术的信号发生器的设计与实现-毕业设计_第4页
基于DDS技术的信号发生器的设计与实现-毕业设计_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

PAGE唐山学院毕业设计设计题目:基于DDS技术的信号发生器的设计与实现系别:信息工程系2012PAGE基于DDS技术的信号发生器的设计与实现摘要DDS是直接数字式频率合成器(DirectDigitalSynthesizer)的英文缩写。与传统的频率合成器相比,DDS具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是实现设备全数字化的一个关键技术。本设计采用单片机为核心处理器,利用键盘输入信号的参数,控制DDS的AD9850模块产生信号,信号的参数在LCD1602上显示,完成正弦信号和方波信号的输出,用示波器输出验证。DDS是一种全数字化的频率合成器,由相位累加器、波形ROM、D/A转换器和低通滤波器构成。时钟频率给定后,输出信号的频率取决于频率控制字,频率分辨率取决于累加器位数,相位分辨率取决于ROM的地址线位数,幅度量化噪声取决于ROM的数据位字长和D/A转换器位数。与传统的频率合成方法相比,DDS合成信号具有频率切换时间短、频率分辨率高、相位变化连续等诸多优点。使用单片机灵活的控制能力与AD9850的高性能、高集成度相结合,可以克服传统DDS设计中的不足,从而设计开发出性能优良的信号发生器系统。关键词:单片机直接数字频率合成AD9850DDSDesignandImplementationoftheSignalGeneratorBasedonDDSTechnologyAbstractDDSisDirectDigitalfrequencySynthesizer(DirectDigitalSynthesizer)Englishabbreviations.Comparedwiththetraditionalfrequencysynthesizer,withlowcost,DDSlowpowerconsumption,highresolutionandfastconvertingspeedtimeandsoon,widelyusedintelecommunicationsandelectronicinstrumentsfield,istorealizeequipmentfulldigitalakeytechnology.Thisdesignusesthesinglechipprocessorasthecore,usingakeyboardinputsignalparameters,controlofDDSAD9850moduleproducesignals,thesignalparametersinLCD1602showthatthecompletesinesignalandsquarewavesignaloutput,theoutputwithanoscilloscopevalidation.DDSisAfulldigitalfrequencysynthesizer,byphaseaccumulators,waveformROM,D/Aconverterandlowpassfiltercomposition.TheclockfrequencyafterAgiven,theoutputdependsonthefrequencyofthesignalfrequencycontrolword,thefrequencyresolutiondependsonaccumulatorsdigits,phaseresolutiondependsontheROMaddresslinedigits,amplitudequantizationnoisedependsontheROMdataAwordlengthandD/Aconverterdigits.Andthefrequencyofthetraditionalmethodthanthesynthesis,DDSsynthesissignalhasafrequencyswitchingfrequencyofshorttime,highresolutionandcontinuousphasechanges,andmanyotheradvantages.Usingsinglechipmicrocomputercontroloftheflexibleabilityandhighperformance,highlevelofintegrationoftheAD9850combination,canovercomethedisadvantageofthetraditionalDDSdesign,todesignthedevelopedgoodperformanceofsignalgeneratorsystem.Keyword:MCU;directdigitalfrequencysynthesis;AD9850;DDS目录1引言 12DDS概要 22.1DDS介绍 22.1.1DDS结构 22.1.2典型的DDS函数发生器 32.2DDS数学原理 53总体设计方案 83.1系统设计原理 83.2总体设计框图 84系统硬件模块的组成 94.1单片机控制模块 94.1.1STC89C52主要性能 94.1.2STC89C52功能特性描述 94.1.3时钟电路 114.1.4复位电路 114.2AD9850模块 124.2.1AD9850简介 124.2.2AD9850的控制字与控制时序 144.2.3单片机与AD9850的接口 154.3滤波电路设计 154.4键盘控制模块 164.5LCD显示模块 164.5.1液晶显示器显示原理 164.5.21602LCD引脚与时序 174.6A/D转换模块 205软件设计与调试 215.1程序流程图 215.2软件调试 225.2.1keil编程工具介绍 225.2.2STC-ISP下载工具介绍 236硬件电路制作 246.1原理图的绘制 246.2电路实现的基本步骤 246.3硬件测试波形图 257结论 27谢辞 28参考文献 29附录 30外文资料 43唐山学院毕业设计PAGE491引言在电子科技技术领域中,经常要用一些信号作为测量基准信号或输入信号,也就是所谓的信号源。信号源是各种各样的,包括正弦波信号源、函数发生器、脉冲发生器、扫描发生器、任意波形发生器、合成信号源等。作为电子系统非常重要的组成部分的信号源,在很大程度上影响着系统的性能特点,因而常称之为电子系统的测试信号源。随着电子技术的发展,对信号源的要求越来越高,要求其输出频率高达微波频段甚至更高,频率范围从零Hz到几GHz频率分辨率达到mHz甚至更小,相应频点数更多;频率转换时间更是达到ns级,频谱纯度越来越高。同时,对频率合成器能耗、体积大小、重量等也有更高的规格要求。现在要求信号源能产生波形的种类多、频率范围高,而且还要体积小、可靠性高、操作简单灵活、使用方便及可由计算机控制等特点。当今高性能的信号源均通过频率合成技术来实现。随着计算机、数字集成电路和微电子技术的发展,频率合成技术有了新的突破,直接数字频率合成技术(DirectDigitalSynthesisDDS),它是将先进的数字信号处理理论与方法引入到信号合成领域的一项新技术,它的出现为进一步提高信号的频率稳定度提供了新的解决方法。同时,随着微电子技术的迅速发展,尤其是单片机技术的发展,智能仪器也有了新的进展,功能更加完善,性能也更加可靠,智能程度也不断提高直接数字式频率合成技术的出现导致了频率合成领域的一次重大革命。直接数字频率合成器问世之初,构成DDS元器件的速度的限制和数字化引起的噪声这两个主要缺点阻碍了DDS的发展与实际应用。近几年超高速数字电路的发展以及对DDS的深入研究,DDS的最高工作频率以及噪声性能已接近并达到锁相频率合成器相当的水平。信号发生器是一种常用的信号源,广泛应用于电子测量、自动控制和工程设计等领域。随着电子技术的发展,对信号源频率的稳定度、准确度以及频谱纯度的要求越来越高。DDS(直接数字合成)技术是从相位概念出发直接合成所需波形的一种新的频率合成技术,与传统的模拟式波形产生法相比,它具有相位变换连续、频率转换速度快、分辨率高、稳定度高、相位噪声小、便于集成、易于调整及控制灵活等多种优点。基于DDS技术的信号发生器是一类新型信号源,它已成为众多电子系统中不可缺少的组成部分。 2DDS概要2.1DDS介绍DDS芯片中主要包括频率控制寄存器、高速相位累加器和正弦计算器三个部分(如Q2220)。频率控制寄存器可以串行或并行的方式装载并寄存用户输入的频率控制码;而相位累加器根据频率控制码在每个时钟周期内进行相位累加,得到一个相位值;正弦计算器则对该相位值计算数字化正弦波幅度(芯片一般通过查表得到)。DDS芯片输出的一般是数字化的正弦波,因此还需经过高速D/A转换器和低通滤波器才能得到一个可用的模拟频率信号。另外,有些DDS芯片还具有调幅、调频和调相等调制功能及片内D/A变换器(如AD7008)。DDS的优点:1.频率分辨率高,输出频点多,可达2的N次方个频点(N为相位累加器位数);2.频率切换速度快,可达us量级;3.频率切换时相位连续;4.可以输出宽带正交信号;5.输出相位噪声低,对参考频率源的相位噪声有改善作用;6.可以产生任意波形;7.全数字化实现,便于集成,体积小,重量轻。在各行各业的测试应用中,信号源扮演着极为重要的作用。但信号源具有许多不同的类型,不同类型的信号源在功能和特性上各不相同,分别适用于许多不同的应用。信号源中采用DDS技术在当前的测试测量行业已经逐渐称为一种主流的做法。2.1.1DDS结构1971年,美国学者J.Tierney等人撰写的“ADigitalFrequencySynthesizer”-文首次提出了以全数字技术,从相位概念出发直接合成所需波形的一种新组成原理。限于当时的技术和器件产,它的性能指标尚不能与已有的技术相比,故没受到重视。近几年间,随着微电子技术的迅速发展,直接数字频率合成器(DirectDigitalFrequencySynthesis简称DDS或DDFS)得到了飞速的发展,它以有别于其它频率合成方法的优越性能和特点成为现代频率合成技术中的佼佼者。具体体现在相对带宽、频率转换时间短、频率分辨率高、输出相位连续、可产生宽带正交信号及其他多种调制信号、可编程和全数字化、控制灵活方便等方面,并具有极高的性价比。DDS是直接数字式频率合成器(DirectDigitalSynthesizer)的英文缩写。与传统的频率合成器相比,DDS具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是实现设备全数字化的一个关键技术[1]。直接数字频率合成器(DirectDigitalSynthesizer)是从相位概念出发直接合成所需波形的一种频率合成技术。一个直接数字频率合成器由相位累加器、加法器、波形存储ROM、D/A转换器和低通滤波器(LPF)构成。DDS的原理框图如下图2-1所示:累加器累加器加法器加法器ROMLPFD/A参考符号fcN位N位SnSt频率控制字相位控制字波形控制字图2-1DDS原理框图其中K为频率控制字、P为相位控制字、W为波形控制字、fc为参考时钟频率,N为相位累加器的字长,D为ROM数据位及D/A转换器的字长。相位累加器在时钟fc的控制下以步长K作累加,输出的N位二进制码与相位控制字P、波形控制字W相加后作为波形ROM的地址,对波形ROM进行寻址,波形ROM输出D位的幅度码S(n)经D/A转换器变成阶梯波S(t),再经过低通滤波器平滑后就可以得到合成的信号波形。合成的信号波形形状取决于波形ROM中存放的幅度码,因此用DDS可以产生任意波形。这里我们用DDS实现正弦波的合成作为说明介绍。2.1.2典型的DDS函数发生器一个完整周期的函数波形被存储在上面所示的存储器查找表中。相位累加器跟踪输出函数的电流相位。为了输出一个非常低的频率,采样样本之间的差相位(Δ)将非常小。例如,一个很慢的正弦波可能将有1度的Δ相位。则波形的0号采样样本采得0度时刻的正弦波的幅度,而波形的1号采样将采得1度时刻的正弦波的幅度,依次类推。经过360次采样后,将输出正弦曲线的全部360度,或者确切地说是一个周期。一个较快的正弦波可能会有10度的Δ相位。于是,36次采样就会输出正弦波的一个周期。如果采样率保持恒定,上述较慢的正弦波的频率将比较快的正弦波慢10倍。进一步说,一个恒定的Δ相位必将导致一个恒定正弦波频率的输出。但是,DDS技术允许通过一个频率表迅速地改变信号的Δ相位。函数发生器能够指定一个频率表,该表包括由波形频率和持续时间信息组成的各个段。函数发生器按顺序产生每个定义的频率段。通过生成一个频率表,可以构建复杂的频率扫描信号和频率跳变信号。DDS允许函数发生器的相位从一级到另一级连续变化。矢量信号发生器提供高灵活度和强大的解决方案,可用于科学研究,通信,消费电子,宇航/国防,半导体测试以及一些新兴领域,如软件无线电,无线电频率识别(RFID),以及无线传感网络等[2]。有些公司还提供许多其他利用DAC来产生模拟信号的模拟输出产品。模拟输出板的基本架构是,将一个小型的FIFO存储器连接到一个DAC上。绝大部分的模拟输出板被用来产生静态电压,而且许多可以被用来产生低频波形。频率预置与调节电路K被称为频率控制字,也叫相位增量。DDS方程为:f0=fc*K/2n,f0为输出频率,fc为时钟频率。当K=1时,DDS输出最低频率(也即频率分辨率),为fc/2n,而DDS的最大输出频率由Nyquist采样定理决定,即fc/2,也就是说K的最大值为2n-1。因此,只要n足够大,DDS可以得到很细的频率间隔。要改变DDS的输出频率,只要改变控制字K即可。累加器相位累加器由N位加法器与N位寄存器级联构成。每来一个时钟脉冲fc,加法器将频率控制字K与寄存器输出的累加相位数据相加,再把相加后的结果送至寄存器的数据输入端。寄存器将加法器在上一个时钟作用下继续与频率控制字进行相加。这样,相位累加器在时钟的作用下,进行相位累加。当相位累加器累加满时就会产生一次溢出,完成一个周期性的动作。控制相位的加法器此加法器通过改变相位控制字P可以控制输出信号的相位参数。令相位加法器的字长为N,当相位控制字由0跃变到P(P≠0)时,波形存储器的输入为相位累加器的输出与相位控制字P之和,因而其输出的幅度编码相位会增加P/2N,从而使最后输出的信号产生相移。控制波形的加法器次加法器通过改变波形控制字W可以控制输出信号的波形。由于波形存储器中的不同波形是分块存储的,所以当波形控制字改变时,波形存储器的输入为改变相位后的地址与波形控制字W(波形地址)之和,从而使最后输出的信号产生和相移。波形存储器波形存储器用相位累加器输出的数据作为波形存储器的取样地址,进行波形的相位一幅值转换,即可在给定的时间上确定输出的波形的抽样幅值。N位的寻址ROM相当于把0°~360°的正弦信号离散成具有2N个采样值的序列,若波形ROM有D位数据位,则2N个样值的幅值D位二进制数值固化在ROM中,按照地址的不同可以输出相应相位的正弦信号的幅值。相位—幅度变换原理图如下图所示:图2-2相位—幅度变换原理图图2-2相位—幅度变换原理图(地址)ROM波形存储器相位量化序列波形幅度量化序列(数据)D/A转换器D/A转换器的作用是把合成的正弦波数字量转换成模拟量。正弦幅度量化序列S(n)经D/A转换后变成了包络为正弦波的阶梯波S(t)。需要注意的是,频率合成器对D/A转换器的分辨率有一定的要求,D/A转换器的分辨率越高,合成的正弦波S(t)台阶数就越多,输出的波形的精度也就越高。低通滤波器对D/A输出的阶梯波S(t)进行频谱分析,可知S(t)中除主频fo外,还存在分布在fc、2fc等等的两边±fo处的非谐波分量,幅值包络为辛格函数。因此,为了取出主频f0,必须在D/A转换器的输出端接入截止频率为fc/2的低通滤波器。2.2DDS数学原理设有一频率为的余弦信号:(2-1)现在以采样频率对进行采样,得到的离散序列为:(2-2)其中为采样周期。对应的相位序列为(2-3)从上式可以看出相位序列呈线性,即相邻的样值之间的相位增量是一个常数,而且这个常数仅与信号的频率有关,相位增量为:(2-4)因为信号频率与采样频率之间有以下关系:(2-5)其中与为两个正整数,所以相位的增量也可以完成: (2-6)由上式可知,若将的相位均匀的分为等份,那么频率为的余弦信号以频率采样后,它的量化序列的样品之间的量化相位增量为一个不变值。 根据上述原理可以构造一个不变量为量化相位增量的量化序列:(2-7)然后完成从到另一个序列的映射,由构造序列:(2-8)公式(2-8)是连续信号经采样频率为采样后的离散时间序列,根据采样定理,当时,经过低通滤波器平滑后,可唯一恢复出。可见,通过上述变换不变量将唯一的确定一个单频率模拟余弦信号:(2-9)该信号的频率为:(2-10)公式(2-10)就是直接数字频率合成(DDS)的方程式,在实际的DDS中,一般取,于是DDS方程就可以写成:(2-11)根据公式(2-11)可知,要得到不同的频率只要通过改变的具体数值就可以了,而且还可以得到DDS的最小频率分辨率(最小频率间隔)为当时的输出频率:(2-12)可见当参考频率始终一定时,其分辨率由相位累加器的位数决定,若取,,则,即分辨率可以达到,这也是最低的合成频率,输出频率的高精度DDS的一大优点。由奈奎斯特准则可知,允许输出的最高频率,即,但实际上在应用中受到低通滤波器的限制,通常。由此可见DDS的工作频率带较宽,可以合成从直流到的频率信号,同时它的频率稳定度高[3]。

3总体设计方案3.1系统设计原理单片机STC89C52是整个系统关键部分,通过对键盘进行扫描读入信号控制信息,经转换后输出到DDS芯片模块。本文提出的采用DDS作为信号发生核心器件的全数控函数信号发生器设计方案,根据输出信号波形类型可设置、输出信号幅度和频率可数控、输出频率宽等要求,选用了美国A/D公司的AD9850芯片,并通过单片机程序控制和处理AD9850的40位控制字,从而实现了信号幅度、频率、类型以及输出等选项的全数字控制。本系统主要由单片机、DDS直接频率信号合成器、AD转换模块、数字衰减电路、由AD9850模块输出波形。信号波形的参数信息经STC89C52控制的LCD1602显示。3.2总体设计框图本设计采用单片机为核心处理器,利用键盘输入信号的参数,控制DDS的AD9850模块产生信号,信号的参数在LCD1602上显示,完成正弦信号和方波信号的输出,用示波器输出验证。系统构成如下图3-1所示。LCD1602LCD1602键盘单片机AD9850低通滤波器信号输出图3-1系统框图由系统框图可知,键盘控制频率的输入,键盘输入的数据通过单片机的控制,在LCD上显示其频率、波形类型和幅度大小,控制AD9850输出波形,通过电位器调节信号的幅度和方波的占空比。

4系统硬件模块的组成4.1单片机控制模块主控电路中,以单片机为主体,通过分析键盘输入的数字值,对AD9850写入相应的控制字。它是系统的大脑。单片机(MicroController,又称微控制器)是在一块硅片上集成了各种部件的微型机算计,这些部件包括中央处理器CPU、数据存贮器RAM、程序存贮器ROM、定时器/计数器和多种I/O接口电路。4.1.1STC89C52主要性能单片机STC89C52的主要性能分别为:与MCS-51单片机产品兼容;8K字节在系统可编程Flash存储器;1000次擦写周期;全静态操作:0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。4.1.2STC89C52功能特性描述

STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用宏晶公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、有效的解决方案[2]。STC89C52具有以下标准功能:8k字节Flash、256字节RAM、32位I/O口线、看门狗定时器、2个数据指针、三个16位定时器/计数器、一个6向量2级中断结构、全双工串行口、片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下个中断或硬件复位为止[4]。STC89C52的引脚结构如图:图4-1STC89C52单片机的引脚图140P1.0 VCC 23456789101112131514161719182039383736353334313230292826272524232221P1.1 P1.2P1.3P1.4P1.5P1.6P1.7RST P3.0 /RXDP3.1/TXDP3.2/INT0 P3.3/INT1 P3.4/T0P3.5/T1 P3.6/WR XTAL2 P3.7/RD GND XTAL1 P0.0 P0.3 P0.2 P0.6 P0.5EX_LVD/RST2P0.1 P0.4 P0.7ALENAP2.7 P2.6 P2.5P2.4 P2.3 P2.2 P2.0P2.1 401STC89C52P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),在flash编程和校验时,P1口接收低8位地址字节。P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器。能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。随着计算机技术的高速发展,单片机以其自身的特点,已广泛应用于智能仪器、工业控制、家用电器、电子玩具等各个领域。4.1.3时钟电路图4-2时钟电路XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为11.0592MHz,时钟频率就约为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取30PF左右。STC89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自激振荡器。片外石英晶体或者陶瓷谐振器及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,这里采用电容60pF,晶振采用11.0592MHz。4.1.4复位电路AT89C51的外部复位电路有上电自动复位和手动按键复位。上电复位电容充电来实现。手动按键复位又分为按键电平复位和按键脉冲复位。按键电平复位电路是在普通RC复位电路的基础上接一个有下拉电阻10K、上拉电容10μf接VCC,电源由开关经串接的1K限流电阻至复位脚(和上拉电容并联),上拉电容支路负责在“上电”瞬间实施复位;开关通过1K上拉电阻和10K下拉电阻分压器,保证对单片机实施按键电平复位。电路图如下图所示:图4-3复位电路4.2AD9850模块4.2.1AD9850简介随着数字技术的飞速发展,用数字控制方法从一个参考频率源产生多种频率的技术,即直接数字频率合成(DDS)技术异军突起。美国AD公司推出的高集成度频率合成器AD9850便是采用DDS技术的典型产品之一。AD9850采用先进的CMOS工艺,其功耗在3.3V供电时仅为155mW,扩展工业级温度范围为-40~80℃,采用28脚SSOP表面封装形式。AD9850的引脚排列如图4.6所示,图4.7为其组成框图。中层虚线内是一个完整的可编程DDS系统,外层虚线内包含了AD9850的主要组成部分[5]。图4-4AD9850管脚排列图相位控制字相位控制字频率控制字相位累加器∑相位寄存器∑正弦查询表微控制器DACLPF比较器正弦波输出方波输出图4-5AD9850组成框图AD9850内含可编程DDS系统和高速比较器,能实现全数字编程控制的频率合成。可编程DDS系统的核心是相位累加器,它由一个加法器和一个N位相位寄存器组成,N一般为24~32。每来一个外部参考时钟,相位寄存器便以步长M递加。相位寄存器的输出与相位控制字相加后可输入到正弦查询表地址上。正弦查询表包含一个正弦波周期的数字幅度信息,每一个地址对应正弦波中0°~360°范围的一个相位点。查询表把输入地址的相位信息映射成正弦波幅度信号,然后驱动DAC以输出模拟量。相位寄存器每过2N/M个外部参考时钟后返回到初始状态一次,相应地正弦查询表每经过一个循环也回到初始位置,从而使整个DDS系统输出一个正弦波。输出的正弦波周期T0=Tc2N/M,频率fout=Mfc/2N,Tc、fc分别为外部参考时钟的周期和频率。AD9850采用32位的相位累加器将信号截断成14位输入到正弦查询表,查询表的输出再被截断成10位后输入到DAC,DAC再输出两个互补的电流[8]。DAC满量程输出电流通过一个外接电阻RSET调节,调节关系为:(4-1)Rset的典型值是3.9kΩ。将DAC的输出经低通滤波后接到AD9850内部的高速比较器上即可直接输出一个抖动很小的方波。其系统功能如图4-11所示。高速高速DDS8位*5并行装入频率/相位数据寄存器数据输入寄存器10位DAC32位频率控制字相位控制字并行装入串行装入1位*40串行装入参考时钟输入主复位频率更新及数据寄存器复位模拟输出字装入时钟+VS+GNDDACRSET模拟输入+-CLOCKOUT/CLOCKOUT比较器AD9850频率、相位和控制数据输入图4-6AD9850系统功能图AD9850在接上精密时钟源和写入频率相位控制字之后就可产生一个频率和相位都可编程控制的模拟正弦波输出,此正弦波可直接用作频率信号源或经内部的高速比较器转换为方波输出。在125MHz的时钟下,32位的频率控制字可使AD9850的输出频率分辨率达0.0291Hz;并具有5位相位控制位,而且允许相位按增量180°、90°、45°、22.5°、11.25°或这些值的组合进行调整[6]。4.2.2AD9850的控制字与控制时序AD9850有40位控制字,32位用于频率控制,5位用于相位控制,1位用于电源休眠(Powerdown)控制,2位用于选择工作方式。这40位控制字可通过并行方式或串行方式输入到AD9850,在并行装入方式中,通过8位总线D0…D7将可数据输入到寄存器,在重复5次之后再在FQ-UD上升沿把40位数据从输入寄存器装入到频率/相位数据寄存器(更新DDS输出频率和相位),同时把地址指针复位到第一个输入寄存器。接着在W-CLK的上升沿装入8位数据,并把指针指向下一个输入寄存器,连续5个W-CLK上升沿后,W-CLK的边沿就不再起作用,直到复位信号或FQ-UD上升沿把地址指针复位到第一个寄存器[7]。在串行输入方式,W-CLK上升沿把25引脚的一位数据串行移入,当移动40位后,用一个FQ_UD脉冲即可更新输出频率和相位。AD9850的复位(RESET)信号为高电平有效,且脉冲宽度不小于5个参考时钟周期。AD9850的参考时钟频率一般远高于单片机的时钟频率,因此AD9850的复位(RESET)端可与单片机的复位端直接相连[8]。本设计考虑到数据传输速率的问题,使用并行方式工作,对于串行工作方式只做简单的介绍。4.2.3单片机与AD9850的接口AD9850有两种与微机并行打印口相连的评估版,并配有Windows下运行的软件,可以作为应用参考,但运用单片机实现对DDS的控制与微机实现的控制相比,具有编程控制简便、接口简单、成本低,容易实现系统的小型化等优点,因此普遍采用MCS51单片机作为控制核心来向AD9850发送控制字。单片机与AD9850的接口既可采用并行方式,也可采用串行方式,但为了充分发挥芯片的高速性能,应在单片机资源允许的情况下尽可能选择并行方式,本文重点介绍其并行方式的接口。并行接口I/O方式的并行接口电路比较简单,但占用单片机资源相对较多,AD9850的数据线D0~D7与P2口相连,FQ_UD和W_CLK分别与P3.0(10引脚)和P3.2(11引脚)相连,RESET与单片机的P3.1相连,所有的时序关系均可通过软件控制实现。4.3滤波电路设计为了使输出的频率不受外界和一些杂波的干扰,需用一个低通滤波器(LPF)滤除高次谐波。常用的滤波器的频率响应有三种:巴特沃斯型(Butterworth),切比雪夫型(Chebyshev)和椭圆型(Cauer)。其中巴特沃斯滤波器通带最平坦,它的通带内没有纹波,在靠近零频处,有最平坦通带,趋向阻带时衰减单调增大,缺点是从通带到阻带的过渡带最宽,对于带外干扰信号的衰减作用最弱,过渡带不够陡峭,因此它适用于对通带要求较高,而去除的频率离通带较远的情况;切比雪夫滤波器在通带内衰减在零值和一个上限值之间做等起伏变化,阻带内衰减单调增大,带内有起伏,但过渡带比较陡峭;椭圆滤波器不仅通带内有起伏,阻带内也有起伏,而且过渡带陡峭。比较起来,椭圆滤波器性能更好,本设计中采用的是椭圆滤波器[10]。具体电路图如图4-9所示。图4-7滤波电路4.4键盘控制模块图4-图4-8键盘控制电路本设计采用4*4数字矩阵键盘对波形的进行控制,扫描的方法确定按键,然后对按键进行处理,因为采用的键盘没有去抖功能,用延时程序来给键盘去抖。4.5LCD显示模块现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件了。1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。4.5.1液晶显示器显示原理

线段的显示:点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理[11]。字符的显示:用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。汉字的显示:汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5……右边为2、4、6……根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节……直到32B显示完就可以LCD上得到一个完整字符。

4.5.21602LCD引脚与时序字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。1)1602LCD的基本参数及引脚功能

1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图:图4-9LCD尺寸2)LCD1602主要技术参数:

显示容量:16×2个字符

芯片工作电压:4.5—5.5V

工作电流:2.0mA(5.0V)

模块最佳工作电压:5.0V

字符尺寸:2.95×4.35(W×H)mm3)引脚功能说明1602型LCD可以显示2行16个字符,有8位数据总线D0~D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能[6]。1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表

表4-1引脚接口说明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0~D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。在实际的接线中,1602的DB0—DB7与单片机的P0口相接,RS与P3.3相接,R/W与P3.4相接,E与P3.5相接。VL与地之间接一个10K的滑动变阻器来到1602初始显示的调节。4)1602液晶模块内部的控制器共有11条控制指令,如下表所示表4-2控制字说明表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L**6置功能00001DLNF**7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。(说明1为高电平,0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置指令2:光标复位,光标返回到地址00H指令3:光标和显示位置设置I/D,光标移动方向,高电平右移,低电平左移,S:屏幕上所有文字是否左移或右移,高电平表示有效,低电平表示无效。指令4:显示开关控制。D:控制整体的显示开与关,高电平表示开显示,低电平表示关显示。C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位S/C:高电平时显示移动的文字,低电平时移动光标指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时为双行显示,F:低电平时显示5X7的点阵字符,高电平时显示5X10的显示字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址BF:忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平表示不忙。6.1602LCD的RAM地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在,哪里显示字符,图是1602的内部显示地址。例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。

在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。4.6A/D转换模块信号的幅值是由AD转换模块处理得到,由于单片机的口资源有限,我们采用以PCF8591芯片为核心的AD处理模块。PCF8591是一个单片集成、单独供电、低功耗、8-bitCMOS数据获取器件。PCF8591具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。PCF8591的3个地址引脚A0,A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。PCF8591主要性能指标:单电源供电,PCF8591的操作电压范围2.5V-6V,低待机电流,通过I2C总线串行输入/输出,PCF8591通过3个硬件地址引脚寻址,PCF8591的采样率由I2C总线速率决定,4个模拟输入可编程为单端型或差分输入,8-bit逐次逼近A/D转换器,自动增量频道选择等特点。模块的接口:AIN0芯片模拟输入接口0AIN1芯片模拟输入接口1AIN2芯片模拟输入接口2AIN3芯片模拟输入接口3SCLIIC时钟接口接单片机IO口SDAIIC数字接口接单片机IO口GND模块地外接地VCC电源接口外接3.3V-5V

5软件设计与调试5.1程序流程图通过键盘输入频率值,并实现对频率步进的控制,处理用户由键盘键入的频率值,判断是否超出范围,生成频率控制字,经并行方式送入DDS,合成用户所需的频率,并通过程序实现频率的显示。程序流程图如下:主程序输入主程序输入初始化LED显示键盘扫描是否有键按下?处理按键频率字修改AD9850数据更新开始结束否是图5-1程序流程图DDS的时钟频率很高,对周围电路有一定影响,在电路中采取了一些抗干扰措施,如:引线尽量短,减少交叉,每个芯片的电源与地之间都解忧去耦电容,数字地与模拟地分开。在LCD的显示调节时也要选取适当的电阻才能使液晶屏正常的显示,常选取的阻值为1000欧左右。5.2软件调试本系统的软件调试可以在Keiluvision2的环境中完成,Keil系统为软件的开发和调试提供了良好的用户界面和强大的功能,程序调试无误后,可以装入Proteus中进行仿真,也可以直接下载到单片机中进行调试。采用自下而上即单独调试好每一个模块后,再连接成一个完整的系统调试。5.2.1keil编程工具介绍随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。应用Keil进行软件仿真开发的主要步骤为:编写源程序并保存——建立工程并添加源文件——设置工程——编译/汇编、连接,产生目标文件——程序调试。Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。首先选择菜单File/New,在源程序编辑器中输入汇编语言或C语言源程序(或选择File/Open,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm或.c;然后选择菜单Project/NewProject,建立新工程并保存;工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面“+”号展开,接着选择SourceGroup1,右击鼠标弹出快捷菜单,选择AddFiletoGroup/SourceGroup1,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。加入文件后点“close”返回主界面,展开“SourceGroup1”前面“+”号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project/OptionforTarget“Target1”(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,在Output选项卡中选中“CreateHexFile”;其它选项卡内容一般可取默认值。工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。5.2.2STC-ISP下载工具介绍STC-ISP是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2052系列和12C5410等系列的STC单片机,使用简便,现已被广泛使用。下载步骤:1)选择MCU类型:STC89C52RC;2)选择串口及波特率;3)打开编译好的.HEX文件;4)点击“Download/下载”按钮,给单片机上电,消息框提示握手成功,几秒种后程序下载完毕,单片机自动开始运行下载的程序。软件界面如图5-2所示:图5-2软件界面

6硬件电路制作本次论文设计的原理图绘制和PCB制作所采用的软件是Protel99SE。Protel99SE是Protel公司近10年来致力于Windows平台开发的最新结晶,能实现从电学概念设计到输出物理生产数据,以及这之间的所有分析、验证和设计数据管理。因而今天的Protel最新产品已不是单纯的PCB(印制电路板)设计工具,而是一个系统工具,覆盖了以PCB为核心的整个物理设计。Protel设计系统是一套建立在IBM兼容PC环境下的EDA电路集成设计系统,由于其高度的集成性与扩展性,一经推出,立即为广大用户所接受,很快就成为世界PC平台上最流行的电子设计自动化软件。6.1原理图的绘制1)创建一个新的设计文件管理库执行FILE|NEW命令新建一个管理数据库文件,选择SCHEMATICDOCUMENT图标,单击OK。2)加载元件库在电路图放置元件之前,必须先加载库文件。执行主菜单的DESIGN|ADDREMOVELIBRARY命令或单击左侧设计管理器的ADD|REMOVE按钮。3)绘制电路图放置元件、绘制导线、放置电源部件、放置电气连接点、放置文字标注。4)修改元件参数5)保存原理图6.2电路实现的基本步骤1)单片机方案设计。2)电路原理图:利用电路设计软件,将方案用标准的电路原理图表示,为电路板图的生成提供依据。本系统的原理图绘制和PCB绘制都是在Protel99se中完成。3)制板:根据电路原理图,网上买元器件进行焊接。4)程序的烧录和调试。硬件电路实物图如图6-1所示:图6-1硬件电路实物图图6-1硬件电路实物图6.3硬件测试波形图1.正弦波:频率1000HZ,幅度1.01V,波形如图6-2所示。图6-2正弦波波形图图6-2正弦波波形图2.方波:频率1000HZ,幅度2V,波形如图6-3所示。图6-3方波波形图图6-3方波波形图3.失真的方波:频率1MHZ,幅度2V,波形如图6-4所示。图6-图6-4失真的方波波形图

7结论在本设计过程中,我翻阅了大量的相关书籍及资料,不仅从中收获了相关的专业知识,还掌握了很多高效的学习方法。在程序设计过程中,我学会了解决常见错误的方法,并养成了良好的编程习惯。在调试的过程中,从老师那里学到了调试应该遵循的步骤和相关的经验。在这次实践中让我收获了很多课本以外的知识。通过本次设计实践,不仅丰富了我的知识还开阔了我的视野。在整个样机制作和调试的过程中,还总结了一些经验。1.在焊接电路板之前,要合理的布局,方便后面的焊接工作和调试中的查错。焊接的时候,要认真焊好每一个焊点每一条线,为调试做好基础,减少不必要的麻烦。2.要熟悉本设计中各个芯片的性能、特点及其应用。3.把任务分成几个部分,模块,各个模块分别编程调试,然后再对各个模块进行衔接,整合成一个系统调试。能够很好的节约时间,效率也挺高。4.遇到问题不能急噪,程序调试过程中好多未知的问题,冷静沉着的去解决,不要抱怨,认真的查找问题的根节。5.在硬件和软件调试的时候应该遵循:先检查硬件电路是否准确无误的连接好,然后检查硬件电路的最小系统是否正常工作,接着编写一些测试程序去检测电路中各个芯片是否正常工作,最后再调试程序。6.由于椭圆形滤波器有一个上限截止频率,所以当频率较高时方波会出现失真现象。

参考文献[1]刘抒珍,童子权,任丽军,刘小红.DDS波形合成技术中低通椭圆滤波器的设计[J].哈尔滨理工大学学报.2004.[2]J.TierneyC.Rader,B.Gold.Adigitalfrequencysynthesizer.IEEETransactiononAudioandElectroacoustics.VOL.AU-19,NO.I.1971.[3]黄蕾.基于单片机的直接数字频率合成(DDS)技术的应用与研究[D].湖南大学硕士学位论文.2005.[4]王光明.智能任意函数信号发生器的研究[D].国防科技大学硕士学位论文.2002.[5]郑戍华.基于DDS的信号源研制[D].北京理工大学硕士学位论文.2003.[6]郁伯康.直接数字频率合成器.杭州电子工业学院.1997.[7]AnalogDevices.AD9851Datasheet[EB/OL].[8]谢自美.电子线路设计.实验.测试[M].武汉:华中科技大学出版社,2000.[10]邬宽民.单片机外围器件实用手册,数据传输接口器件分册.北京.北京航空航天大学出版社.2001.[11]康华光.电子技术基础模拟部分[M].北京:高等教育出版社,1999.[12]AnalogDevices.AD811Datasheet[EB/OL].[13]郭勇,肖明清,谭靖,王学奇.DDS芯片AD9851及其应用[J].电子技术,2001.[14]NickKanopoulos,PeterN.Marinos.LectureNotesinComputerScience[M].HeidelbergofSpringerBerlin,1986.[15]PavelSteffan,RadimirVrba.single-chipPotentiostatMeasurementSystem[M].SpringerBoston,2007.

附录附录一硬件原理图附录二程序/*键盘及LCD显示程序*/#include<reg52.h>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include<intrins.h>#include<math.h>sbitRS=P3^3;//定义端口sbitRW=P3^4;sbitEN=P3^5;#defineRS_CLRRS=0#defineRS_SETRS=1#defineRW_CLRRW=0#defineRW_SETRW=1#defineEN_CLREN=0#defineEN_SETEN=1#defineDataPortP0#defineKeyPortP1unsignedcharcodedofly_code[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//转换成液晶显示的字符unsignedlongintFrequency_Out_9850;voidWrite_9850(unsignedlongintFrequency_Out_9850);/*uS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编,大致延时长度如下T=tx2+5uS*/voidDelayMs(unsignedcharms){unsignedchari;while(ms--){for(i=0;i<250;i++){_nop_();_nop_();_nop_();_nop_();}}}/*判忙函数*/bitLCD_Check_Busy(void){DataPort=0xFF;RS_CLR;RW_SET;EN_CLR;_nop_();_nop_();_nop_();_nop_();_nop_();EN_SET;return(bit)(DataPort&0x80);}/*写入命令函数*/voidLCD_Write_Com(unsignedcharcom){while(LCD_Check_Busy());//忙则等待RS_CLR;RW_CLR;EN_SET;_nop_();_nop_();DataPort=com;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();EN_CLR;_nop_();_nop_();}/*写入数据函数*/voidLCD_Write_Data(unsignedcharData){while(LCD_Check_Busy());//忙则等待RS_SET;RW_CLR;EN_SET;_nop_();_nop_();DataPort=Data;_nop_();_nop_();_nop_();_nop_();_nop_();EN_CLR;_nop_();_nop_();}/*清屏函数*/voidLCD_Clear(void){LCD_Write_Com(0x01);DelayMs(5);}/*写入字符串函数*/voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s){if(y==0) { LCD_Write_Com(0x80+x); }else { LCD_Write_Com(0xC0+x); }while(*s) {LCD_Write_Data(*s);s++; }}/*写入字符函数*/voidLCD_Write_Char(unsignedcharx,unsignedchary,unsignedcharData){if(y==0) { LCD_Write_Com(0x80+x); }else { LCD_Write_Com(0xC0+x); }LCD_Write_Data(Data);}/*初始化函数*/voidLCD_Init(void){LCD_Write_Com(0x38);/*显示模式设置*/DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);LCD_Write_Com(0x08);/*显示关闭*/LCD_Write_Com(0x01);/*显示清屏*/LCD_Write_Com(0x06);/*显示光标移动设置*/DelayMs(5);LCD_Write_Com(0x0C);/*显示开及光标设置*/}/*按键扫描函数,返回扫描键值*/unsignedcharKeyScan(void)//键盘扫描函数,使用行列反转扫描法{unsignedcharcord_h,cord_l;//行列值中间变量KeyPort=0x0f;//行线输出全为0cord_h=KeyPort&0x0f;//读入列线值if(cord_h!=0x0f)//先检测有无按键按下{DelayMs(10);//去抖if((KeyPort&0x0f)!=0x0f){cord_h=KeyPort&0x0f;//读入列线值KeyPort=cord_h|0xf0;//输出当前列线值cord_l=KeyPort&0xf0;//读入行线值while((KeyPort&0xf0)!=0xf0);//等待松开并输出return(cord_h+cord_l);//键盘最后组合码值}}return(0xff);//返回该

温馨提示

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

评论

0/150

提交评论