版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. . . . 目 录摘要1前言11 概述21.1研究目的和意义21.2 DDS的发展状况与前景31.3 基于CPLD芯片的解决方案32 信号发生器原理42.1 波形发生器原理42.2 DDS原理62.3实际实现原理73多功能信号发生器的硬件组成和选型73.1 系统顶层框图73.2开发板介绍83.3 液晶模块93.3.1液晶显示原理93.3.2 1602液晶103.4 键盘模块143.4.1传统键盘143.4.2键盘改进153.5人机交互163.6 单片机和CPLD通信的实现174 多功能信号发生器的软件设计194.1 USART串行通信194.1.1 USART介绍194.1.2 USART
2、设置194.1.3 中断224.2 Quartus软件介绍234.3 VerilogHDL语言介绍244.4 ROM宏模块应用254.5单片机对按键数据的处理284.6 ATmega8515单片机软件流程图294.7 CPLD系统原理框图294.7.1 系统原理框图294.7.2接口功能模块304.7.3 相位累加器314.7.4 各种信号的实现方法325系统实现结果与分析335.1各模块仿真结果与分析335.2实际输出结果与分析356 结束语38致40参考文献41附录:421CPLD详细系统框图422ATmega8单片机程序433ATmega8515单片机程序444CPLD程序4850 /
3、52基于CPLD的多功能信号发生器设计摘要:本文详细介绍了基于直接数字频率合成技术(DDS)的信号发生器设计的原理和实现方法。由ATmega8515单片机作为主控芯片,管理键盘输入、液晶显示,实现人机交互,向CPLD传送控制信号与频率字数据。利用Altera公司的设计平台Quartus II,在CPLD上实现各个功能模块,通过D/A输出波形,产生设定频率的正弦信号、三角波信号、方波信号和FSK、ASK、BPSK等调制信号。在写本文之前实物已经完成,能很好的完成预定的波形,所以本文介绍的软件方法和硬件电路都是确切可行的,仿真波形和输出结果都是真实有效的。关键词:1602液晶;单片机;CPLD;D
4、DS;信号发生器Abstract: This paper has detailed talked about the theories and methods of designs of signal generator with the technology of Direct Digital Frequency Synthesis (DDS). As the main control chip, the MCU ATmega8515 manages the input of keyboard, the display of LCD, realizes human-machine inter
5、action and sends the control signal and frequency words to CPLD. With the software Quartus II, made by Altera company, to achieve each function module in CPLD, use D/A to display signals, generate sine signal, triangle signal, pulse signal and some modulated signals such as FSK, ASK, BPSK which freq
6、uency has been set. Before this paper, the function has already been finished, and can accomplish all the predetermined task perfectly. So, those software and hardware this paper introduced are all reliable, and the simulation waveform and output results are real and effective.Key words: LCD1602; MC
7、U; CPLD; DDS; Signal generator前言1971年,美国学者J.Tierney的 A Digital Frequency Synthesizer 一文首次提出了以全数字技术,从相位出发直接合成所需波形的一种原理。到了80年代后期,随着微电子技术的发展,直接数字频率合成(Direct Digital Frequency Synthesis 简称DDS或DDFS)得到了飞速的发展,它以其特有的优越性能和特点成为现代频率合成技术中的姣姣者。信号源的核心技术是频率合成技术,常用的频率合成技术有直接频率合成、锁相环频率合成和直接数字频率合成(DDS)。DDS是一种从相位概念出发直
8、接合成所需频率的技术。DDS技术因为其具有频率分辨率高、频率切换速度快、相位噪声低和频率稳定度高等特点,而广泛的应用于通信、航空航天、仪表仪器等领域。DDS的特点是:l DDS的频率分辨率在相位累加器的位数N足够大时,理论上可以获得相应的分辨精度,这是传统方法难以实现的。l DDS是一个全数字结构的开环系统,无反馈环节,因此其速度极快,一般在纳秒量级。l DDS的相位误差主要依赖于时钟的相位特性,相位误差小。另外,DDS的相位是连续变化的,形成的信号有良好的频谱,这是传统的直接频率合成方法无法实现的。本论文第一章简述了对DDS研究的目的和意义,国外现状和发展趋势,然后提出了利用CPLD实现的方
9、法。第二章详细论述了DDS的原理以与实现的基本思想。第三章具体介绍了整个系统的硬件组成。包括键盘液晶的选择,单片机和CPLD的连接,单片机管理键盘和液晶等容。第四章主要讲述了整个系统的软件部分,包括主控单片机的软件流程,基于CPLD的DDS各个模块的实现等。第五章给出了各种仿真结果和输出波形,证明了本系统的正确性。第六章是结束语,对本系统做出了评价,以与对系统的不足之处和进一步改进和优化提出了几点意见。1 概述1.1研究目的和意义随着科学技术的发展,对信号发生器的要求越来越高,信号发生器在电路实验和设备检测中具有十分广泛的用途,已成为科学研究和实验不可缺少的基本仪器。例如在通信、广播、电视系统
10、中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。在工业、农业、生物医学等领域,如高频感应加热、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的振荡器。现在的科学技术遍布各个领域,每个领域都有不同的信号类型要求,有低频的、高频的、正弦信号、三角波信号、脉冲信号、各种调制信号、随机信号等各种信号类型,因此研究一个包含多种功能的信号发生器是有意义的。传统的信号发生器由于波形精度低,频率稳定度差等原因,已不能满足许多实际应用的需要。因此,对信号发生器的研究,特别是高稳定性高精度的信号源的研究是很有必要的。1.2 DD
11、S的发展状况与前景近几年超高速数字电路的发展以与对DDS的深入研究,DDS的最高工作频率以与噪声性能已接近并达到锁相频率合成器相当的水平。随着这种频率合成技术的发展,现已广泛应用于通讯、导航、雷达、遥控遥测、电子对抗以与现代化的仪器仪表工业等领域。直接数字频率合成器的基本优点是在微处理器的控制下.能够准确而快捷地调节输出信号的频率、相位和幅度。近10多年来AD和Qualcomm等几家公司根据这些改进技术推出了一系列性能优良的DDS专用集成电路.其工作频率可达IGHz,频率分辨率可到mHz,排除DAC的限制,杂散指标已可达到-70dbc以下。其应用领域也不再限于频率合成,己有专门用于产生LFM信
12、号的。随着集成电路工艺的不断改善,这些产品的功能也愈来愈强大。现在不仅在一个芯片上能够集成DDS所需要的全部功能,例如频率和相位累加器、相位一幅度变换电路和数模转换器(DAC)等,而且也具备了一些有用的调制能力,例如相移键控(PSK)和正交幅度调制(QAM)等。 除了在仪器中的应用外,DDS在通信系统和雷达系统中也有很重要的用途。通过DDS可以比较容易的产生一些通信中常用的调制信号如:频移键控(FSK)、二进制相移键控(BPSK)和正交相移键控(QPSK)。DDS可以产生两路相位严格正交的信号,在正交调制和解调中的到广泛应用,是一中很好的本振源。在雷达过DDS和PLL相结合可以产生毫米波线性调
13、频信号,DDS移相精度高、频率突变快和发射波形可突变等优点在雷达系统中也可以得到很好的发挥。信号发生器技术发展至今,引导技术潮流的还是国外的几大仪器公司,如Tektronix、Agilent、日本横河等。美国的FLUKE公司的FLUKE-25型函数信号发生器是现有的测试仪器中最具多样性的几种仪器之一,它和频率计组合在一起,在任何条件下频率都可以达到5MHz,最大输出幅度也达到10Vpp。国也有不少公司已经有类似的仪器,如盛普仪器科技的SPF120DDS信号发生器,华高仪器生产的HG1600H型数字合成函数/任意波形信号发生器。1.3 基于CPLD芯片的解决方案 利用可编程逻辑芯片设计DDS的方
14、法通常是采用VHDL语言输入和原理图法相结合来设计整个信号发生电路,这种方法通常需要调用很多模块,综合性较强,对设计者要求较高。用CPLD实现DDS较专用DDS芯片更为灵活,只要改变FPGA中ROM的数据和控制参数,DDS就可以产生任意调制波形,且分辨率高,具有相当大的灵活性。将DDS设计嵌入到CPLD芯片所构成的系统中,其系统成本并不会增加多少,而购买专用芯片的价格则是前者的很多倍。所以采用CPLD设计DDS系统具有很高的性价比。 Max+pluslI是Altera提供的一个完整的EDA开发软件,可完成从设计输入、编译、逻辑综合、器件适配、设计仿真、定时分析、器件编程的所有过程 。Quart
15、us是Altera近几年来推出的新一代可编程逻辑器件设计环境,其功能更为强大。用Quartus设计DDS系统数字部分最简单的方法是采用原理图输入。波形存储器设计主要考虑的问题是其容量的大小,利用波形幅值的奇、偶对称特性,可以节省3/4的资源,这是非常可观的。为了进一步优化速度的设计,可以选择菜单Assign Global Project Logic Synthesis的选项Optimize10(速度),并设定Global Project logic Synthesis Style为FAST,经寄存器性能分析最高频率达到100MHz以上。虽然有的专用DDS芯片的功能也比较多,但控制方式却是固定的
16、,因此不一定是我们所需要的。而利用CPLD则可以根据需要方便地实现各种比较复杂的调频、调相和调幅功能,具有良好的实用性。就合成信号质量而言,专用DDS芯片由于采用特定的集成工艺,部数字信号抖动很小,可以输出高质量的模拟信号;利用CPLD也能输出较高质量的信号,虽然达不到专用DDS芯片的水平,但信号精度误差在允许围之。2 信号发生器原理2.1 波形发生器原理如果一个存储器(这里以ROM为例)有n条地址线,则这个存储器的存储空间为。存储器中的数据与波形的关系如图所示。假设在个存储单元存放了一个周期的正弦波数据,则每个单元的数据就表示正弦值的大小,这种存储器称为波形数据存储器。图中表明了存储单元与正
17、弦波形的对应关系。如果重复地从0单元读出波形数据存储器中的数据,在波形数据存储器的输出端就会得到周期的正弦系列;如果将周期的正弦序列输入到D/A转换器,则会在D/A转换器的输出端得到连续的正弦电压或电流。输出的正弦序列(或连续的正弦电压或电流)的周期是由什么决定呢?它是由读出数据的时钟频率决定的。设clk为加于波形数据存储器的时钟,该时钟的周期为,则其频率为。显然,时钟频率越高,读取波形数据存储器一个周期的数据所用的时间就越短,因而从D/A转换器得到的正弦信号的频率就越高。图2-1 存储器中的数据与波形关系图2-2 波形发生器的系统组成如图2-2为波形发生器的系统组成,其中,时钟加于二进制计时
18、器,生成波形数据存储器所需的地址信号,地址信号的产生频率正比于时钟频率。计数器的输出在0之间周而复始地变化,从而使波形数据存储器输出周期的正弦序列,D/A转换器则输出连续的模拟正弦电压(或电流)波形。下图中给出了一周期的正弦波形与时钟周期的关系。从图中可以得到这样一个重要的关系式。图2-3 一周期的正弦波形与时钟周期的关系2.2 DDS原理对于正弦信号发生器,它的输出可以用以下表达式来描述: (2-1)其中是指输出信号波形,是指输出信号频率。由于上述表达式中时间是连续信号,必须将其离散化和量化才能进行数字处理,用基准时钟clk进行抽样,令正弦信号的相位: (2-2)在一个clk周期,相位的变化
19、量为: (2-3)为了对进行数字量化,把分成份,因此每个clk周期的相位增量的量化值为: (2-4)其中B为整数。将(2-3)带入(1-4)即可得到: (2-5)可见,当给定固定的量化位数N,基准时钟,对于每一特定的频率,其相位增量的量化值是个固定值,因此只要对相位的量化值进行简单的累加运算,就可以得到正弦信号的当前相位值。而用于累加的相位增量量化值决定了信号的输出频率,并呈现简单的线性关系。直接数字合成器DDS就是根据上述原理而设计的数字控制频率合成器。从上述原理推导中可以很容易的得出输出频率的计算: (2-6) 其中是频率输入字,是系统基准时钟频率值,N是相位累加器的数据位宽,也就是频率输
20、入字的数据位宽。DDS的频率分辨率,也称频率最小步进值,可用频率输入值步进一个最小间隔的频率输出变化量来衡量。由式(2-6)有: (2-7)DDS频率输入字计算: (2-8)注意要取整,这会带来一些误差。2.3实际实现原理频率字其实就是每次累加的大小,为了方便理解,举一个简单的例子,比如输出1-100的数据,到了100时就立刻回到1,又开始从1-100。设频率字为1,即每次加1后输出,则加了100次后得到一个完整的输出,也就是100个时钟周期后得到一个完整周期的波形。如果频率字设为2,每个时钟周期加2,则在50个时钟周期后输出一个完整周期。如果频率字为3,则输出一个周期波形只需33个时钟周期。
21、所以改变频率字就是改变每次累加的大小,由于ROM表里面的步进值是固定的,所以频率字越大,地址步进越快,ROM表查找得越快,输出波形频率就越高。本系统使用的是32位的频率字,因为D/A转换器使用的10位精度,所以设置的ROM表也是10位的,也就是存了一个周期波形的1024个点,所以将累加器的高10位当做ROM表的地址。当输出信号频率很低时,每加一个点就需要较长的时间;当输出频率很高时,一次就跳了几个点,并没有输出ROM表的所有点。比如160MHz的系统时钟,输出10MHz的信号,则每个波形只有16个点。改变ROM表就可以改变输出波形,理论上讲可以输出任意周期信号,只要将该波形的数据存入ROM表即
22、可。3多功能信号发生器的硬件组成和选型3.1 系统顶层框图下图为系统的顶层框图:图3-1 系统顶层框图此系统为一完整系统,包括键盘输入数据,液晶显示信号频率和类型,单片机控制CPLD输出设定的信号波形,能够独立完成信号发生器的功能,可以直接使用。键盘输入用于设定输出信号的频率以与工作方式,使用5*4键盘。由ATmega8单片机单独控制键盘,然后将按键值换成0-19的数字,通过USATR串行通信的方式传给主控单片机ATmega8515。键盘使用扫描的方式来检测按键动作,采用了很好的防抖动措施,使键盘工作稳定,按键准确。液晶显示用于显示相关信息,包括输出信号类型,信号频率等。采用LCD1602液晶
23、,能显示两行符号,部已经存储了160个不同的点阵字符图形,正好能满足本系统的需求。单片机是整个系统的管理核心,使用ATmega8515单片机。它和管理键盘的ATmega8单片机进行串行通信,接受ATmega8传输来的按键数据。ATmega8515单片机将输入的数据送至液晶显示,将有效数据送至CPLD,控制CPLD输出波形,实现整个系统的人机交互界面。信号发生器的各种信号波形的实现主要是由CPLD来完成的。先在CPLD部建立三种基本波形采样量化后的ROM表,通过查表的方式来输出波形。它根据单片机给的波形类型和信号频率,将波形数据送给D/A,同时给D/A提供转换时钟信号。D/A主要是将CPLD传送
24、来的波形数据转换成连续波形输出。3.2开发板介绍本系统使用的是康芯公司的GWDVPB_E的CPLD开发板,开发板上带有AT89S51单片机、CPLD器件和A/D、D/A的电路板,所以上图中的主要功能都是在开发板上实现的。我们平时使用的都是CodeVisionAVR编译器,简单方便,直接支持C语言编程。该编译器不支持AT89S51单片机,所以采用了一个替代产品ATmega8515单片机,引脚和AT89S51单片机一样,可以直接替代它。图3-2 ATmega8515单片机ATMEL公司的AVR系列单片机ATmega8515,是高性能低功耗的8为微处理器。具有8K字节的可编程FLASH可擦写1000
25、0次;512字节的EEPROM,可编程100000次;512字节的部SRAM;两个具有独立预分频器和比较器功能的8 位定时器/ 计数器,一个具有预分频器、比较功能和捕捉功能的16 位定时器 /计数器;3路PWM通道;可编程的串行USART;可工作与主/从机模式的SPI串行接口。ATmega8515单片机有4路8位可编程IO口,其中A口和C口分别和CPLD的IO1-IO16相连,用于跟CPLD通信和交换数据。另外的B口和C口都分别引出。B口作为液晶显示的数据接口,C口的部分IO口作为液晶的操控口。B口的SPI串行接口用于跟电脑通信,电脑通过该串行接口经过下载线向单片机编程。由于下载口和液晶的数据
26、口是共用的,所以在单片机下载和运行时有时会冲突。由于板上的单片机系统没有复位电路,所以需要外接复位电路,可以焊接在液晶的接口板上,因为液晶口正好接了复位线。开发板上单片机的下载线接口顺序和我们平时用的不同,所以平时使用的下载线不能在此开发板上使用,当然改一下就可以了。下载线可以直接用编CPLD的JTAG口的下载线,然后用ispdown软件就可以下了,这样就不用总是更换并口了。本系统单片机的时钟使用的是单片机部1MHz的时钟,因为新的单片机的设置都是部1MHz时钟,虽然外部接有20MHz有源晶振,但是单片机的熔丝位没办法更改,本可以用MuCodeISP软件更改的,但是该软件不支持ByterBla
27、sterII编程器,无法设置成外部时钟,所以只能用1MHz时钟。这个时钟在后面编程,特别是在USART串口通信时特别重要,这个将在后面介绍。CPLD使用的是Altera公司的EP2C5T144C8型号的器件。A/D、D/A电路板上的D/A转换器使用的TI公司的10位高速D/A转换器THS5651A1,最高时钟达160MHz,如果每个波形输出16个点则可以输出10MHz信号波形。1ns的建立/保持时间,片1.2V参考电压。因为康芯公司已经做成了具体的模块PCB板,它的使用变得很简单,只要给定10位数据,然后给个时钟就可以得到输出信号。3.3 液晶模块3.3.1液晶显示原理液晶显示器以其微功耗、小
28、体积、使用灵活等诸多优点在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。液晶显示器通常可分为两大类,一类是点阵型,另一类是字符型。点阵型液晶通常面积较大,可以显示图形;而一般的字符型液晶只有两行,面积小,只能显示字符和一些很简单的图形,简单易控制且成本低。目前市面上的字符型液晶绝大多数是基于 HD44780液晶芯片的,控制原理是完全一样的,为 HD44780 写的控制程序可以很方便地应用于市面上大部分的字符型液晶。(1)线段的显示:点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128
29、个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H00FH的16字节的容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。(2)字符的显示:用LCD显示一个字符时比较复杂,因为一个字符由6×8或8
30、15;8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但对于带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号与每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。3.3.2 1602液晶(1)液晶硬件电路连接液晶用的是1602液晶,它在本系统中的作用是显示输出信号类型、显示信号频率。因为1602液晶可以显示两行,屏幕上能显示16个字符,正好能满足本系统的所有显示。1602液晶的硬件连接包括电
31、源正极VDD;电源地VSS;液晶显示偏压VL,一般好近地电压;背光电源正负极BLA/BLK,不用背光时可以悬空或都接地。需要编程的引脚连接包括8位并行数据口D0-D7;读/写选择位R/W,数据/命令选择位RS;使能信号E。它与单片机的连接如图3-3。图3-3 1602液晶硬件连接原理图(2)指令系统1602液晶的指令系统如表3-1,1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000
32、001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据容11从CGRAM或DDRAM读数11读出的数据容表3-1 1602液晶指令系统指令3:光标和显示位置设置I/D,光标移动方向,高电平右移,低电平左移,S:屏幕上所有文字是否左移或右移,高电平表示有效,低电平表示无效。指令4:显示开关控制。D:控制整体的显示开与关,高电平表示开
33、显示,低电平表示关显示。C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C :高电平时显示移动的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时为双行显示,F:低电平时显示5X7的点阵字符,高电平时显示5X10的显示字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平表示不忙。(3)读写控制其读写控制时序表如表3-2:读状
34、态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无表3-2 1602液晶读写控制表其读写操作时序如图3-4、图3-5:图3-4 液晶读操作时序图图3-5 液晶写操作时序图按照上面的时序图和读写控制表,就可以很容易的向液晶读写数据了。(4)液晶显示液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里
35、显示字符,图3-6是1602的部显示地址。图3-6 液晶部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602液晶模块部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图3-7所示,这些字符有:阿拉伯
36、数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。图3-7 液晶带字符库 (5)液晶初始化液晶初始化就是设置液晶的个各个工作模式。(1)延时15ms;(2)写指令38H(不检测忙信号);(设置16*2显示,5*7点阵,8位数据接口)(3)延时5ms;(4)写指令38H(不检测忙信号);(5)延时5ms;(6)写指令38H(不检测忙信号);(以后每次写指令、读/写操作前都得检测忙信号);(7)写指令08H:显示关闭;(8)写指令01H
37、:清屏;(9)写指令06H:光标移动设置;(10)写指令0CH:显示开与光标设置。3.4 键盘模块3.4.1传统键盘传统的4*4键盘,是用单片机边界扫描,分横线和竖线,如图3-8。图3-8 4*4键盘键盘的作用是设定信号源的频率值和信号类型的,是人机交互的重要组成部分。如果键盘做的性能不够稳定,那么用户的使用和整机给人带来的感觉都会严重受挫,而且对后续程序的编写和调试都会带来很大的不便。按键一端接在横线上,另一端接在竖线上,横线经过电阻接到了电源,当没有按键按下,横线脚总是高电平。将横线接到单片机,单片机不断的读4位横线的电平。然后单片机在竖线上输出高电平或低电平。具体做法是让4位竖线输出11
38、10,然后让0左移,依次输出1101、1011、0111。就这样不断扫描,始终保持有且只有一根竖线输出低电平。当有按键按下时,某一横线和某一竖线就会连通,在横线上就会读到低电平,然后根据这一时刻竖线输出的状态就可以完全确定是哪个按键按下。比如图2-1中圈中的那个按键按下时,如果此时row2输出低电平,读line2的电平就会是低电平,因此就知道有按键按下,然后根据这时刻的row值和line值就可以确定是该键按下,就得到了按键信息。因为人的按键动作(一般大于几十ms)远比单片机扫描速度(us级别)慢,所以不用担心按键按下时竖线扫描还没扫到那一列按键就松开了的情况。因为按键都是机械按键,在按下和松开
39、的时候都存在较严重的机械振动,这种机械抖动的速度比单片机的扫描速度快,这样就会引起重复按键的后果。外界的干扰也会使出现假按下的现象,所以按键一般都需要防抖动。这种按键还有另外两个严重的缺点,一是消耗的部CPU的资源很多。因为要不断的扫描,不断的输出和读入,就为了个键盘消耗那么多的资源很是浪费,影响其他任务的执行。二是要占用的引脚很多,4*4键盘就要8个IO口,如果键盘数再增加,那就要更多的引脚,这显然不佳。为了改变上述缺点,这次对键盘做了改进。基本原理不变,但是单独用个差点性能的单片机来管理它,将按键值处理后通过串行通信将数据传给主单片机,这样只占用了主单片机的2个IO口,而且只有当有按键动作
40、时才将数据传给主控单片机,极大的节省了主单片机的资源。而且这种小模块做好了就可以长期使用,后面的人用起来也很方便,不需要重新开始。3.4.2键盘改进和传统的键盘相比,此键盘做了改进。此次的键盘是用ATmega8单独管理的,然后将数据经过USART的通信方式跟主控单片机ATmega8515传输按键信息,ATmega8管理键盘产用了比较完善的防抖动措施,使键盘性能得到较大的改善,ATmega8单片机的软件流程图如图3-9。图3-9 键盘软件流程图图3-9中的初始化是对单片机工作状态和跟ATmega8515通信做所必要的设置。通过“读-延时后再读、比较两次数据”这种方式,分别对按下和弹起时刻做处理来
41、消除机械抖动,而且最后是在按键松开后才最终得到确定的数据的,也就是说ATmega8单片机是在按键松开后将数据传输给ATmega8515单片机的。这样有个好处就是,如果只是在按下时防抖动来确定数据,然后将数据传输给主控单片机,那么当按着不动时,将不断的传输同一数据,造成重复按键的效果,显然不好。所以在弹起时再进行一次防抖动,弹起后再确定数据和传输数据,这样就更加稳定可靠,也避免了上述问题。对于按键值的确定,因为是竖线输出,横线读入,所以按键值key是由两个共同决定的,所以只要用两个switch-case语句分别对横线和竖线的各种情况作出处理,就可以将得到的key值转换为自定的按键代号。而且swi
42、tch-case语句可以在没有按键按下时保持当前值,便于键盘模块的单独调试。本系统使用的是5*4键盘,使用的是0-19的按键代号,所以ATmega8传输给ATmega8515的是0-19中的数字。3.5人机交互各个单独的功能模块将在其他地方介绍,这里先介绍下人机交互,介绍人机交互可以从总体上来了解整个系统的工作流程,实现什么样的功能,而具体怎样实现功能则不是此处的讨论重点。根据人机交互的要求,它更多的考虑用户的体验。键盘上总共20个按键,编号为0-19,其中0-9是数字键,输入就是数字。其他的按键对应如下表:10111214151619其他正弦波三角波方波FSKASKBPSKHz空表3-3 键
43、值对应的功能其中按下19时在液晶上显示的是Hz,其实还有其他的功能,因为它是最后一个按键信息,所以等到19就知道数据输入结束,液晶上给出单位,单片机将数据传给CPLD,传完后将单片机暂存的数据释放,等待下一次输入新数据。所以它将相当于“运行”按钮,开始进行数据的处理和传输。当按键输入的是功能键时,也就是上表中的键值时,液晶就应该输出对应信号类型。然后按键输入频率值,也就是0-9间的逐个逐个的数字,液晶就应当逐个逐个的输出数字。也就是说按键每按一次(0-9之间的数字),液晶就要将该数字显示出来。最后按下19,液晶就给出单位Hz。然后表面上看就没什么动作了,具体数据的处理和传输在人机界面上是看不到
44、的。按键完后就可以用示波器看输出波形了。除了FSK外,其他的波形只需要输入一个频率字即可,所以在显示信号类型的同时显示提示符“F1”,例如ASK,在按15键时显示:ASK F1然后后面跟按键输入的频率数字。但是FSK有两个频率字,它的显示如下:FSK F1F2 只有在F1输入完成,输完第一个“Hz”后才会出现F2。也就是说FSK模式要输入两次“Hz”。还有几个按键没有使用,就是13/17/18,当按下这三个键时,系统不做任何动作,当然键值还是会传给主控单片机ATmega8515的,由ATmega8515来处理,管理键盘的ATmega8不将他们撇开,这样做的好处是让键盘模块化,以便于其他系统使用
45、。3.6 单片机和CPLD通信的实现单片机的一个重要任务就是跟CPLD通信,这个因为不像单片机间的USART通信,没有固定的接口或者协议来进行通信,所以得自己定义一种通信的协议。由于是自己设定通信协议,所以具有很大的灵活性。根据产生波形的需要,CPLD所需要的控制信号和数据信号都不同,所以单片机和CPLD的通信是在最后完成的。CPLD需要产生正弦波,三角波,方波,FSK,ASK,BPSK六种波形。其中前三种基本波形只需要一个频率字即可。调制波形的调制信号是使用的固定的500Hz,不需要按键控制。BPSK和ASK需要输入载波频率,FSK需要输入两个频率字。具体接口如表3-4:正弦波三角波方波FS
46、KASKBPSK调制信号空空空部1KHz部1KHz部1KHz频率字F1输入输入输入输入输入输入频率字F2空空空输入空空表3-4 单片机和CPLD传输数据表图3-10 单片机和CPLD接口连接图单片机和CPLD的接口连接图如图3-11所示,其中D0-D7是并行的8位数据口。reset是复位引脚,单片机给CPLD复位用的,在软件里将它在最开始执行,而且只执行一次,达到的效果就是跟单片机的按键复位一样。当reset脚为高电平时就复位。给CPLD的f_slect信号是频率字选择信号,因为FSK模式时要输入两个频率字,所以当f_slect为0时,数据给F1;当f_slect为1时,数据给F2。因为其他的
47、都是用的F1,所以在其他模式时f_slect一直为0,只有在FSK模式传F2时才将f_slect置1。时钟信号clk就相当于数据交接的指令,当clk的上升沿到来时,CPLD读取8位并行数据接口上的数据。EN是使能信号,只有当EN为高电平时才能进行8位并行数据的传输。低电平将禁止CPLD读取数据。波形输出方式由manner的状态决定,manner和输出波形对应如下表:manner01234567输出波形正弦波三角波方波FSKASKBPSK空空表3-5 manner状态表控制状态manner对CPLD的控制是独立的,不受时钟信号clk和EN的控制,但是受reset的控制。当reset为高时,man
48、ner被置为零。f_slect和manner是有联系的,只有当manner为3时,即输出FSK时,f_slect才可能有高电平,因为此时要传输两个频率字。在CPLD部使用的频率字是32位的,也就是说每个频率字包括4个8位数据,要传4次,因此每次传数据时,单片机的clk要给出4次上升沿,每次上升沿时给一次8位并行数据data。CPLD就按这种协议接收数据,然后把4个8位数据连接成32位。在单片机方也是先将频率字分成32位2进制数,保存在一个包含4个元素的一维数组中,单片机从高位到低位分4此传输,CPLD按顺序接收然后组合成32位。按照从高位到低位的顺序是有好处的,那样CPLD恢复32位数据就简单
49、得多了,只要3次“左移、相加”就可以了。单片机和CPLD的通信时序控制图如下图:图3-11 单片机和CPLD的通信时序控制图该图是为了说明控制时序的,先要让EN置1。在clk的上升沿到来之前要将data数据准备好,传输数据是4个串行的传,每个是并行的8为数据。4 多功能信号发生器的软件设计4.1 USART串行通信4.1.1 USART介绍通用同步和异步串行接收器和转发器 (USART) 是一个高度灵活的串行通讯设备。主要特点为: 全双工操作( 独立的串行接收和发送寄存器); 异步或同步操作; 主机或从机提供时钟的同步操作; 高精度的波特率发生器; 支持5, 6, 7, 8, 或9 个数据位和
50、1 个或 2 个停止位; 硬件支持的奇偶校验操作; 数据过速检测; 帧错误检测; 噪声滤波,包括错误的起始位检测,以与数字低通滤波器; 三个独立的中断:发送结束中断, 发送数据寄存器空中断,以与接收结束中断; 多处理器通讯模式; 倍速异步通讯模式。4.1.2 USART设置本系统使用异步操作,5个数据位和2个停止位,奇偶校验,然后通过中断来接收数据。ATmega8515单片机和管理键盘的ATmega8单片机就是通过USART串行通信方式来传输数据的。因为总共用的20个按键,按键值时019,所以使用5个数据位就恰好合适。将ATmega8设置为传输数据,将ATmega8515设置为接收数据。(1)
51、IO数据寄存器UDR图4-1 USART IO 数据寄存器UDRUSART 发送数据缓冲寄存器和 USART 接收数据缓冲寄存器共享一样的 I/O 地址,称为USART 数据寄存器或 UDR。将数据写入 UDR 时实际操作的是发送数据缓冲器存器(TXB),读 UDR时实际返回的是接收数据缓冲寄存器 (RXB) 的容。在 5、6、7 比特字长模式下,未使用的高位被发送器忽略,而接收器则将它们设置为 0。只有当UCSRA寄存器的UDRE标志置位后才可以对发送缓冲器进行写操作。如果UDRE没有置位,那么写入 UDR 的数据会被 USART 发送器忽略。当数据写入发送缓冲器后,若移位寄存器为空,发送器
52、将把数据加载到发送移位寄存器。然后数据串行地从 TxD 引脚输出。(2)控制和状态寄存器A-UCSRA图4-2控制和状态寄存器A-UCSRA全部设置为0就可以了。(3)控制和状态寄存器B-UCSRB图4-3控制和状态寄存器B-UCSRB Bit 7 RXCIE: 接收结束中断使能置位后使能 RXC 中断。当 RXCIE 为 1,全局中断标志位 SREG 置位, UCSRA 寄存器的 RXC 亦为 1 时可以产生 USART 接收结束中断。(ATmega8515中SREG置位,所以SREG|=0X80,其中的0X代表16进制数;在mega8515单片机中此为置1,mega8中置0) Bit 6 TXCIE: 发送结束中断使能置位后使能 TXC 中断。当 TXCIE为 1,全局中断标志位 SREG 置位,UCSRA 寄存器的TXC 亦为 1 时可以产生 USART 发送结束中断。(mega8515和mega8都设置为0) Bit 5 UDRIE: USART 数据寄存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国礼仪课件教学课件
- 开学课件模板教学课件
- 灌肠护理课件教学课件
- 2024年农用搬运机械项目资金筹措计划书代可行性研究报告
- 精神病医院药剂科相关
- 3.2.3酸碱中和滴定 课件高二上学期化学人教版(2019)选择性必修1
- DB1304T 480-2024商品煤采样技术规范
- 社团的活动部部门介绍
- 静脉输液治疗在临床中的应用
- 白血病饮食宣教
- 阿里巴巴国际站:2024年珠宝眼镜手表及配饰行业报告
- 2024至2030年全球及中国高速光谱相机行业深度研究报告
- 2024年新冀教版一年级上册数学课件 我上学了 5排座位
- 2024至2030年中国氟化工行业“十四五”分析及发展前景预测研究分析报告
- 2025届新高考语文热点冲刺复习议论文标题
- 人教PEP版(2024新版)三年级上册英语Unit 3 Amazing animals教学设计
- 2024年实验室操作安全基础知识试题与答案
- 通识教育题库附有答案
- 2023年七年级科技制作教案全册
- 走进非遗-山东民间美术智慧树知到答案2024年山东第二医科大学
- 一年级上册校本课程教案
评论
0/150
提交评论