函数发生器的软件设计 毕业论文.doc

上传人:小小飞 文档编号:3913117 上传时间:2019-10-10 格式:DOC 页数:51 大小:1.07MB
返回 下载 相关 举报
函数发生器的软件设计 毕业论文.doc_第1页
第1页 / 共51页
函数发生器的软件设计 毕业论文.doc_第2页
第2页 / 共51页
函数发生器的软件设计 毕业论文.doc_第3页
第3页 / 共51页
函数发生器的软件设计 毕业论文.doc_第4页
第4页 / 共51页
函数发生器的软件设计 毕业论文.doc_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《函数发生器的软件设计 毕业论文.doc》由会员分享,可在线阅读,更多相关《函数发生器的软件设计 毕业论文.doc(51页珍藏版)》请在三一文库上搜索。

1、题目 函数发生器的软件设计 专业 学号姓名 设计的主要内容:1利用AT89C51、DAC0832等芯片对函数发生器进行设计,使之能产生正弦波、方波、三角波。2设计软件总程序和具体的正弦波、三角波、方波产生子程序。3掌握正弦波、方波、三角波三种波形发生的原理。基本要求:1能产生正弦波、方波、三角波三种波形,波形的频率可调,输出幅度的可调,并且具有显示功能。2英文翻译不少于5000字符。3资料综述不少于3000字符。4中英文摘要不少于200字符。主要参考资料:1蔡明生 电子设计 北京 高等教育出版社 2004.12全国大学生电子设计竞赛组委会 第五届全国大学生电子设计竞赛获奖作品选编 北京 北京理

2、工大学出版社 2003.13张毅坤 陈善久 裘雪红 单片微型计算机原理及应用 西安 西安电子科技大学出版社 1998 完 成 期 限:2011年2月28日到2010年6月10日 指 导教师签 章: 专业负责人签章: 2011年 2 月 26 函数发生器的软硬件设计函数发生器的软件设计摘 要函数发生器是一种多波形的信号源,它可以产生正弦波,方波,三角波等任意波形,在电子行业中应用很广泛。本设计是设计一个基于单片机的函数发生器的软件设计,利用AT89C51单片机产生正弦波,方波,三角波三种波形,用C语言编程,程序中包括中断子程序,显示子程序,键盘扫描子程序等功能子程序,正弦波用查表法编程,利用改变

3、查询两点之间的时间改变频率,程序也可控制幅度的改变,方波和三角波程序简单,将在论文中详解,最后输出的波形利用DAC0832进行数/模转换,用LCD显示幅度和频率。本设计是以软件介绍为主,对各个程序的编写调试都有很好的介绍。关键词 函数发生器 单片机 数/模转换 Function Generator SoftwareABSTRACTFunction Generator is a multi-wave signal source, which can produce sine, square, triangular wave arbitrary waveform applications in t

4、he electronics industry is extensive. This design is to design a microcontroller based function generator of software design, use of microcontroller AT89C51 produce sine, square, triangle of three waveforms, using C language programming, the program includes interrupt routines, display routines, the

5、 keyboard scan subroutine features such as subroutines, sine wave method with the lookup table programming, using the time change the query to change the frequency between two points, the program can also control the rate of change, square wave and triangular wave procedure is simple, Xiang Jie in t

6、he paper, the final output waveform for use DAC0832 D / A converter, with LCD display amplitude and frequency. The design is based on software, the main presentation, the preparation of each program has a very good introduction to debugging.KEYWORDS Function Generator SCM D / A converter II 目 录摘要IAB

7、STRACTII1 绪论11.1 设计背景11.2 单片机的应用12 系统设计方案32.1 系统分析32.1.1 功能定义32.1.2 可行性分析32.2 系统需求分析42.2.1 系统功能要求42.2.2 系统性能要求42.3 总体方案设计43 硬件设计63.1 总体硬件设计63.2 系统模块设计73.2.1 电源模块设计73.2.2 复位与时钟电路模块设计83.2.3 D/A转换模块设计93.2.4 电压变换原理图113.2.5 键盘接口设计113.2.6 显示器接口设计164 函数发生器软件设计204.1 软件总体设计204.2 软件功能设计204.2.1 初始化程序设计204.2.2

8、键盘扫描及处理程序设计214.2.3 三角波发生程序设计264.2.4 正弦波发生程序设计274.2.5 方波发生程序设计304.2.6 中断服务程序设计314.2.7 液晶显示32致谢35参考文献36附录1 电路原理图37附录2 电路原理图38附录3 程序源代码391 绪论1.1 设计背景函数发生器亦称波形发生器,作为实验用信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。目前,市场上常见的波形发生器多为纯硬件的搭接而成,且波形种类有限,多为锯齿、正弦、方波、三角等波形。函数发生器作为一种常见的应用电子仪器设备,传统的可以完全由硬件电路搭接而成,如采用555振荡电路发生正弦波、

9、三角波和方波的电路便是可取的路径之一,不用依靠单片机。但是这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点。在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟机械振动等领域常常要用到低频信号源1。而由硬件电路构成的低频信号其性能难以令人满意,而且由于低频信号源所需的RC很大;大电阻,大电容在制作上有困难,参数的精度亦难以保证;体积大,漏电,损耗显著更是其致命的弱点。一旦工作需求功能有增加,则电路复杂程度会大大增加。1.2 单片机的应用当今是科学技术及仪器设备高度智能化飞速发展的信息社会,电子技术的进步,给人们带来了根本性的转变。现代电子领域中,单片机的应用正在不断的走

10、向深入,这必将导致传统控制与检测技术的日益革新。单片机构成的仪器具有高可靠性、高性能价格比,在智能仪表系统和办公自动化等诸多领域得以极为广泛的应用,并走入家庭,从洗衣机、微波炉到音响汽车,处处可见其应用。因此,单片机技术开发和应用水平已逐步成为一个国家工业发展水平的标志之一。一块单片机芯片就是一台计算机。由于单片机的这种特殊的结构形式,在某些应用领域中,它承担了大中型计算机和通用微型计算机无法完成的一些工作。使其具有很多显著的优点和特点,因此在各个领域中都得到了迅猛的发展。单片机的特点归纳起来有以下几个方面2。 具有优异的性能价格比单片机尽可能地把应用所需的存储器,各种功能的I/O 接口集成在

11、一块芯片内,因而其性能很高,而价格却相对较低廉,即性能价格比很高。 集成度高、体积小、可靠性高单片机把各种功能部件集成在一块芯片上,因而集成度高,均为大规模或超大规模集成电路。又内部采用总线结构,减少了芯片之间的连线,这大大提高了单片机的可靠性与抗干扰能力。同时,其体积小,对于强磁场环境易于采取屏蔽措施,适合于在恶劣环境下工作。 控制功能强单片机体积虽小,但“五脏俱全”,它非常适用于专门的控制用途。为了满足工业控制要求,一般单片机的指令系统中有极丰富的转移指令,I/O口的逻辑操作指令以及位操作指令。其逻辑控制功能及运行速度均高于同一档次的微机。 低电压、低功耗单片机大量用于携带式产品和家用消费

12、类产品,低电压和低功耗尤为重要。目前,许多单片机已可在2.2V电压下运行,有的已能在1.2V或0.9V下工作,功耗降至A级,一粒钮扣电池就可长期使用。利用单片机采用程序设计方法来产生低频信号,其下限频率很低。具有线路相对简单,结构紧凑,价格低廉,频率稳定度高,抗干扰能力强,用途广泛等优点,并且能够对波形进行细微调整,改良波形,使其满足系统的要求3。只要对电路稍加修改,调整程序,即可完成功能升级。这里介绍一种采用AT89C51单片机和一片DAC0832数模转换器做成的便携式函数发生器,它的特点是价格低、性能高,在低频范围稳定性好、操作方便、体积小、耗电少等。函数发生器与其它相比还具有如下优点4:

13、较分立元件信号发生器而言,具有频率高,工作稳定,容易调试等特性;较专用DDS芯片的信号发生器而言,具有结构简单,成本低等特性。2 系统设计方案2.1 系统分析2.1.1 功能定义基于单片机的信号发生系统是一个实际应用系统,可为相关实验及实际应用提供支持。本论文包括硬件系统的详细设计及C语言在基本控制中的应用5。此系统具有的功能如下:硬件部分 电源模块(12V,5V); 时钟与复位电路模块; 键盘设计模块; 波形产生与电压变换模块; D/A转换模块; 显示模块;软件部分 系统复位初始化; 键盘扫描与处理; 三角波发生程序设计; 正弦波发生程序设计; 方波发生程序设计; 中断服务程序设计; 液晶显

14、示;2.1.2 可行性分析 可行性分析根据技术指标及系统设计目的,经研究芯片的选择如下6:主控芯片采用ATMEL公司的89C51;采用12MHz的晶振器为89C51提供时钟信号;稳压块选用7812与7805相串联,提供12V和5V电压,7912产生-12V电压;对于89C51的P0口的数据采用74LS373进行锁存后经过DAC0832进行D/A转换;显示器采用LCD1602液晶显示;8位D/A转换器采用DAC0832;运算放大器采用LM324。大部分的芯片及器件都可以通过网络购买,所以器件的选择完全可行。 经济上的可行性讨论本设计是一个实验系统,芯片的选择在前面已经讨论,从前面的讨论中可见芯片

15、大部分可在网上找到。因此,设计费用主要集中在购买元器件上,而大部分的元器件又不是很贵,所以经济上本设计完全可行。2.2 系统需求分析2.2.1 系统功能要求系统具有D/A转换功能,LCD1602液晶显示功能,上电自动复位功能,24键盘输入接口,信号幅度频率变换功能。2.2.2 系统性能要求 系统的D/A转换功能具有8位精度; 动态扫描LCD显示器; 89C51单片机时钟信号为12MHZ; 系统上电自动复位; 系统具有8位行列扫描键盘。2.3 总体方案设计一个单片机主系统的硬件电路设计包含两部分内容:一是单片机系统扩展部分设计,它包括存储器扩展和接口扩展。存储器扩展指EPROM、EEPROM和R

16、AM的扩展。接口扩展是指各接口芯片以及其他功能器件的扩展7。二是各功能模块的设计,如信号检测功能模块、信号控制功能模块、人机对话功能模块、通讯功能模块等,根据系统功能要求配置相应的D/A、键盘、显示器等外围设备。本机硬件设计包括两部分,即电源部分设计和主系统设计。电源设计和主系统框图分别如图2-1,2-2所示。图2-1 交流直流电压转换图2-2 主系统结构框图3 函数发生器硬件设计3.1 总体硬件设计单片机应用系统的硬件电路设计包含两部分内容8:一是系统扩展,即单片机内部的功能单元(如ROM、I/O、定时/计数器等)容量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计适当的电

17、路。二是系统配置,即按照功能要求配置外围设备如显示器、D/A转换等,要设计合适的电路。系统的扩展和模块设计应遵循下列原则9: 尽可能选择标准化、模块化的典型电路,提高设计的成功率和结构的灵活性。 系统的扩展与外围设备配置的水平应充分满足应用系统的功能要求。 硬件结构应结合应用软件方案一并考虑。硬件结果与软件方案会产生相互影响, 考虑的原则是:软件能实现的功能尽可能由软件来实现,以简化硬件结构。但必须注意,由软件实现的硬件功能,其响应时间要比直接用硬件响应来的长,而且占用CPU时间。所以,选择软件方案时,要考虑到这些因素。 可靠性及抗干扰性设计是硬件系统设计不可缺少的部分,它包括芯片、器件选择,

18、去耦滤波等。 单片机外接电路较多时,必须考虑其驱动能力。驱动能力不足时,系统工作不可靠,解决的办法是增加驱动能力,增设线驱动器或减少芯片功耗,降低总线负载。 系统的扩展及各功能模块的设计在满足系统功能要求的基础上,应适当留有余地,以备将来修改、扩展之需。 在考虑硬件总体结构的同时要注意通用性的问题。根据以上原则,进行硬件设计。系统采用较为普及的89C51单片机作为系统的核心。它不但容易实现设计指标,而且还有较好的性价比10。程序存贮器89C51内部自带8K的ROM,512B的RAM,所以不需要对其扩展存储器。键盘接口矩阵式键盘适用于按键数量较多的场合,系统采用了行列式键盘设计即矩阵键盘,用I/

19、O线组成行、列结构,按键设置在行列的交点上,24的行列结构可构成8个键的键盘。因此,在按键数量较多时,可以节省I/O线。按键的识别方法有两种,一种为扫描法,另一种为线反转法。此设计采用了行列式及与之相适应的行列扫描法。LCD液晶驱动 本设计实现了89C51的I/O口对24键盘和8位LCD液晶显示的控制。为增加对LCD液晶显示器的驱动能力及稳定性,在它与89C51之间设置了提高驱动能力的74LS373。D/A转换本设计D/A转换部分采用DAC0832芯片,由于它不带锁存器,故在使用时必须加74LS373进行数据锁存11。信号变换部分对信号的变换部分采用四运放集成芯片LM324,它采用14脚双列直

20、插塑料封装,它的内部包含四组形式完全相同的运算放大器。可靠性方面在使用应用系统时,可能会受到多种干扰的侵袭,直接影响到系统的可靠性,因此,本系统适当加入去耦电容,以减少干扰,确保精度。3.2 系统模块设计3.2.1 电源模块设计稳压电源是单片机控制系统的重要组成部分,它不仅为测控系统提供多路电源电压,还直接影响到系统的技术指标和抗干扰性能。近年来,传统的线性稳压电源正逐步被高有效率的开关电源所取代,特别是单片开关电源的迅速推广应用,为设计新型、高效、节能电源创造了良好的条件。本机使用三种共地电源:+12V,12V,+5V,硬件设计中采用自带电源方式。因为本机有89C51单片机,还有许多逻辑芯片

21、,这些芯片的工作电源电压为+5V,所以电源中必须有+5V电源。另外由于D/A转换器件Vee端需接-12V电压,LM324也需要提供12V电源,所以需要设计一个能产生12V,+5V的电源12。经过综合分析,变压器选用16W32V变压器,整流用一片RBV-406集成电桥。稳压部分选用三端集成7805,7812,7912稳压器件。48特别说明,在使用稳压器件时,一定要注意7912是左边接地,右边输出,中间输入;而7812是左边输入,右边输出,中间接地。电源部分原理图如3-1图所示:图3-1 电源原理图3.2.2 复位与时钟电路模块设计 复位电路设计单片机的复位是靠外电路实现的,在时钟电路工作后,只要

22、在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便实现初始化状态复位18。为了保证应用系统可靠地复位,通常是RST引脚保持10ms以上的高电平。复位电路连接如下图所示。系统上电时,在RC电路充电过程中,由于电容两端电压不能跳变,故使RESET端电平呈高电位,系统复位。经过一段时间,电容充电,使RESET端呈低电位,复位结束。复位电路如图3-2所示:图3-2 复位电路 时钟电路设计 89C51系列单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振),就构成了内部振荡方式。由于单片机内部有一个高增

23、益反向放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲。晶振通常选用6MHZ、12MHZ或24MHZ。内部振荡方式如图3-3所示。图中电容C1、C2起稳定振荡频率、快速起振的作用。电容值一般为530pF。内部振荡方式所得时钟信号比较稳定,实用电路中使用较多。 外部振荡方式是把已有的时钟信号引入单片机内。这种方式适宜用来使单片机的时钟与外部信号保持一致。外部振荡方式电路如图3-4所示。对HMOS的单片机(8031,8031AH等),外部时钟信号由XTAL2引入;对于CHMOS的单片机(89C51),外部时钟信号由XTAL1引入。图3-3 内部振荡 图3-4 外部振荡3.2.3 D/A

24、转换模块设计 D/A转换器概述D/A转换器的性能指标:分辨率:输出模拟电压应能区分02n-1共2n个输入数字量。表示方法:用输入二进制数的位数表示;如8位。用输出模拟电压的最小值与最大值的比值表示。指最小输出电压和最大输出电压之比。DAC0832的分辨率为1/256。精度:DAC0832实际输出电压与理想的输出电压的偏差。 DAC0832的最大满刻度偏差为+1LSB 。线性度:DAC0832实际传输特性曲线与理想的传输特性曲线的偏差。 DAC0832的最大误差为+0.19% 。温度灵敏度:在输入不变的情况下,输出模拟电压随温度变化产生的变化量。一般用满刻度输出条件下温度每升高1,输出电压变化的

25、百分数作为温度系数。转换速度:用完成一次转换所需的时间建立时间Tset来衡量。建立时间:输入信号从开始变化到输出电压进入与稳态值相差1/2LSB范围以内的时间。输入信号由全0变为全1所需时间最长。当外接运放时,转换时间还应加上运放的上升(下降)时间。 (3-1)式中为转换时间 ,为建立时间,输出最大电压值,为运放输出转换速率。 D/A转换系统的实现根据DAC0832的特性设计出本系统的D/A转换电路如图3-5所示:图3-5 系统D/A实现工作原理:本系统由VREF提供参考电压,相应参考电流为I=VREF/R1。电容C4提供补偿,OUT输出电流,经过LM324运算放大器转换成电压。所以输出电压:

26、 (3-2) =5K (3-3) (3-4)3.2.4 电压变换原理图电压变换的原理采用运算放大器搭建电路,DAC输出的信号经过LM324运算放大电路,达到预定的信号输出幅度,运算电路的设计中,Rf为反馈电阻,经过一定的比例运算达到最终的设计目的。C5为滤波电容。可以滤除杂波信号。具体设计电路原理图如图3-6所示:图3-6 系统信号变换3.2.5 键盘接口设计 键盘设计需要解决的几个问题:键盘是若干按键的集合,是向系统提供操作人员干预命令及数据的接口设备。键盘可分为编码键盘和非编码键盘两种类型。编码键盘能自动识别按下的键并产生相应代码,以并行或串行方式发给CPU。它使用方便,接口简单,响应速度

27、快,但需要专用的硬件电路。非编码键盘则是通过软件来确定按键并计算键值。这种方法虽然没有编码键盘速度快,但它不需要专用的硬件支持,因此得到了广泛的应用。键盘是计算机应用系统中的一个重要组成部分,设计时必须解决下述一些问题。按键的确认键盘实际上是一组按键开关的集合,其中每一个按键就是一个开关量输入装置。键的闭合与否,取决于机械弹性开关的通、断状态。反应在电压上就是呈现出高电平或低电平,若高电平表示断开,那么低电平键闭合。所以,通过电平状态(高或低)的检测,便可确定相应按键是否已被按下。重键与连击的处理实际按键操作中,若无意中同时或先后按下两个以上的键,系统确定哪个键操作是有效的,完全取决设计者的意

28、图。如视按下时间最长者为有效键,或认为最先按下的键为当前的按键,也可以将最后释放的键看成是输入键。不过单片机控制系统的资源有限,交互能力不强,通常总是采用单键按下有效,多键同时按下无效的原则。有时,由于操作人员按键动作不够熟练,会使一次按键产生多次击键的效果,及重键的情形。为消除重键的影响,编制程序时可以将键的释放作为按键的结束。等键释放电平后再转去执行相应的功能程序,以防止一次击键多次执行的错误发生。按键防抖动技术键盘作为向系统提供操作人员的干预命令的接口,以其特定的按键代表着各种确定操作命令。所以准确无误地辨认每个键的动作及其所处的状态,是系统能否正常工作的关键。多数键盘的按键均采用机械弹

29、性开关。一个电信号通过机械触点的断开、闭合过程,完成高、低电平的切换。由于机械触点的弹性作用,一个按键开关闭合及断开的瞬间必然伴随有一连串的抖动。消除按键盘抖动通常有两种方法:硬件消抖和软件消抖。通过硬件电路消除按键过程中抖动的影响是一种广为采用的措施。这种做法,工作可靠,且节省机时。 硬件消抖是通过在按键输出电路上加一定的硬件线路来消除抖动,一般采用RS触发器或单稳态电路,如图3-7所示。软件消抖则是利用延时来跳过抖动过程。图3-7 单稳态硬件消抖电路键盘的结构形式一般有两种:独立式键盘与矩阵式键盘。独立式键盘就是各按键相互独立,每个按键各接一根I/O口线,每根I/O口线上的按键都不会影响其

30、它的I/O口线,示例如下图所示。矩阵式键盘又叫行列式键盘。用I/O口线组成行、列结构,键位设置在行列的交点上。例如44的行、列结构可组成16个键的键盘,比一个键位用一根I/O口线的独立式键盘少了一半的I/O口线。对矩阵键盘的工作过程可分两步:第一步是CPU首先检测键盘上是否有键按下;第二步是再识别是哪一个键按下。独立式键盘如图3-8所示:图3-8 独立式键盘 矩阵键盘的工作方式查询工作方式这种方式是直接在主程序中插入键盘检测子程序,主程序每执行一次,则键盘检测子程序就对键盘进行检测一次。如果没有键按下,则跳过键识别,直接执行其他程序;如果有键按下,则通过键盘扫描子程序识别按键,得到按键的编码值

31、。然后根据编码值进行相应的处理,处理完后再回到主程序执行。键盘扫描子程序流程如图3-9所示:图3-9 键盘扫描流程图中断工作方式如图所示,就是中断工作方式,当有中断的时候,就去执行扫描程序,没有中断的时候,CPU可以去做其他的事情。这样可以提高CPU的效率。键盘中断工作方式如图3-10所示:图3-10 键盘中断工作方式 系统键盘的实现依据上述工作原理,结合本设计实际,设计出本系统键盘结构如图3-11所示。图3-11 系统键盘实现工作原理如下:检测键盘上是否有键按下:将行线送入低电平,列线送入高电平。读入P1口的状态来判别。其具体过程如下:P1口输出0FH,即所有行线置成高电平,所有列线置成低电

32、平,然后将P1口状态读入与0FH比较。如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为1。识别键盘中哪一个键按下:确认有键按下后,保存行扫描时有键按下时的状态X 。P1口输出F0H,进行列扫描,保存列扫描状态Y,取出键值Z=X|Y.例如第一行第一列有键按下,那么行扫描读入的状态为00001110,列扫描读入的状态为11100000,最后键值Z=11101110=EEH,然后转去执行相应的服务程序。3.2.6 显示器接口设计功能简介:其液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,每一个字符都有一个固定的代码13。LCD1602以其微功耗、体

33、积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用,实物图如图3-12所示:外形尺寸(LxWxH) 80.0x36x12.0视域尺寸(WxHxT) 64.5x13.8驱动电压(V) 5.0V or 3.3V工作温度:(oC) 050 or -2070存储温度:(oC) -1060 or -3080显示类型: STN or FSTN颜色: 蓝色(带背光)生产工艺: SMT其主要技术参数为:显示容量:4.55.5V;工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WXH)mm1602采用标准的16脚接口,其管脚定义如下:

34、图3-12 LCD1602实物图第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0

35、D7为8位双向数据线。第15脚:背光电源接5V正电压。第16脚:背光电源接地。1602的读写操作、屏幕和光标的操作都是通过指令编程来实现的。液晶模块内部的控制器共有11条控制指令,其指令具体功能介绍如下:指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否

36、闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。与LED数码管相比,液晶显示器的显示效果相对较好,液晶显示器显示不仅直观,而且界面具有人机交互美观的特点。

37、而且具有低功耗,容易控制,占用CPU资源少这些优点,从而成为一些显示器的首选14。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如A 15。 以下是1602的16进制ASCII码表地址: 读的时候,先读左边那列,再读

38、上面那行,如:感叹号!的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)16。指令集:1602通过D0D7的8位数据端传输数据和指令。 显示模式设置: (初始化) 0011 0000 0x38 设置162显示,57点阵,8位数据接口; 显示开关及光标设置: (初始化) 0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效) 0000 01NS N=1(读或写一个字符后地址指针加1 &光标加1), N=0(读或写一个字符后地址指针减1 &光标减1), S=1 且 N=1 (当写一个字符后,整屏显示左移) S=0 当写一个字符后,整屏显示不移动

39、 数据指针设置: 数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H) 其他设置: 01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。LCD显示与单片机连接电路图如图3-13所示: 图3-13 液晶原理图通过液晶1602显示输出的波形、频率,其电路图如图3-14所示:图3-14 液晶显示如图3-14所示,1602的八位数据端接单片机的P1口,其三个使能端RS、RW、E分别接单片机的P3.7P3.5。通过软件控制液晶屏可以显示波形的种类以及波形的频率17。4 函数发生器软件设计4.1 软件总体设计应用系统中的应用软件是根据系统功能要求而设计

40、的,能可靠地实现系统的各种功能。一个优秀的应用系统的应具有下列特点: 根据软件功能要求,将系统软件分成若干个独立的部分。设计出软件的总体结构,使其结构清晰、流程合理。 要树立结构化程序设计风格,各功能程序模块化、子程序化。既便于调试、链接,又便于移植、修改。 建立正确的数学模型。即根据功能要求,描述各个输入和输出变量之间的数学关系,它是关系到系统好坏的重要因素。 为提高软件设计的总体效率,以简明、直观法对任务进行描述,在编写应用软件之前,应绘制出程序流程图。 要合理分配系统资源,包括ROM、RAM、定时数器、中断资源等。 注意在程序的有关位置处写上功能注释,提高程序的可读性。 加强软件抗干扰设

41、计,它是提高系统应用可靠性的有利措施。本系统的软件包括以下几个程序模块: 初始化程序; 键盘扫描程序与处理程序; 三角波发生程序; 正弦波发生程序及其服务程序; 方波发生程序; 定时器0中断服务程序; 液晶显示程序;4.2 软件功能设计4.2.1 初始化程序设计复位程序完成如下工作: 显示2秒的PPP.HELLO初始界面; 将频率值转换成定时器的初值; 置定时器0工作于方式1,即16位定时器方式,送入定时器0定时初值,启动定时器0工作; 显示初始频率,幅度和产生波形的类型; 转键盘扫描程序。系统的初始化流程如图4-1所示。图4-1 初始化流程图4.2.2 键盘扫描及处理程序设计这部分程序包括如

42、下几部分: 键盘扫描程序judge; 先对P1置数,行扫描; 判断是否有键按下; 延时10ms,软件去干扰; 确认按键按下X = P1, 保存行扫描时有键按下时状态; 列扫描; 保存列扫描时有键按下时状态; 取出键值; 执行相应键值程序。下面分别介绍其功能及设计思想16。键盘扫描程序单片机系统中,键盘扫描是CPU工作的一个主要内容之一。CPU忙于各项工作任务时,如何兼顾键盘扫描。既保证不失时机的响应键盘操作,又不过多占用CPU时间。因此,要根据应用系统中的CPU的忙、闲情况,选择好键盘的工作方式。在单片机应用系统设计中,为了节省硬件,通常采用非编码键盘,在这种键盘结构中,单片机对它的控制有三种

43、方式:程序控制扫描方式;定时扫描工作方式;中断工作方式。 程序控制扫描方式这种方式就是只有当单片机空闲时,才调用键盘扫描子程序,响应键盘的输入请求。 定时扫描方式这种方式就是每隔一定的时间对键盘扫描一次。通常是利用单片机内部定时器产生10ms的定时中断,CPU响应定时器溢出中断请求,对键盘进行扫描,以响应键盘输入请求。 中断工作方式为进一步提高CPU效率,可以采用中断扫描工作方式。即在键盘有健按下时,才执行键盘扫描,执行该键功能程序。本系统采用程序控制扫描工作方式。在该设计中的键盘的行列线连接于89C51的P1口上。键盘扫描程序自复位后就开始工作,时刻监视键盘,有无键按下。在监视键盘过程中,允

44、许定时器T0中断,即同时动态显示数据和输出波形。一旦有键按下,先延时10ms,去除键的抖动,然后关中断,不允许定时器T0发生中断。其框图如图4-2所示: 图4-2 键盘扫描对应键盘如图4-3所示:图4-3 键盘实现键盘采用矩阵式键盘,由软件产生相应编码,再根据相应编码调用相应的子程序。编码产生原理:P1口低四位表示行,高四位表示列。键盘所在的行和所在的列用0表示,其它的行和列用1表示。如第一行第一列key2编码值为(11101110)2=0xee,第二行第三列key8编码值为(10111101)2=0xbd。表4-1 键盘处理程序键值对应处理程序0x7dkey1键选择发波类型(1为正弦波,2为三角波,3为方波)0xeekey2幅度增加 0xdeKey3幅度减小0xbeKey4 无功能0x7eKey5频率增加0xedKey6频率减小0xddKey7占空比增大调整0xbdKey8占空比减小调整键盘扫描源程序如下:void judge(void)uchar temp;P1=0xfe;/第一行扫描11111110;temp=P1;temp=temp&0xf0;/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1