《函数发生器的设计__毕业设计说明书(35页).doc》由会员分享,可在线阅读,更多相关《函数发生器的设计__毕业设计说明书(35页).doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-函数发生器的设计_毕业设计说明书-第 0 页四川信息职业技术学院毕业设计说明书(论文)设计(论文)题目:函数发生器的设计 专 业: 通 信 技 术 班 级: 学 号: 姓 名: 指导教师: 年 月 日四川信息职业技术学院毕业设计任务书学生姓名学号班级通技06-2专业通信技术设计题目函数发生器的设计指导教师姓名职称工作单位及所从事专业联系方式备注讲师/工程师高级工程师设计内容:设计一个能产生多种函数波形的信号发生器,要求该系统具有如下特点和功能:1能产生正弦波、矩形波、三角波、锯齿波,且波形频率和占空比可调;2频率范围:100Hz1MHz,连续可调;3矩形波占空比:30%60%,连续可调;4输
2、出电压:UP-P 1V。进度安排:2008.92008.10:完成资料的收集;2008.102008.11:完成设计的逻辑组织结构;2008.112008.12:编写设计与答辩。主要参考文献、资料(写清楚参考文献名称、作者、出版单位):1芯片实验室.2李金奎.单片机应用.北京:高等教育出版社,20063苏平.单片机原理与接口技术.北京:电子工业出版社,20034李维祥,孙秀强,孙桂玲等.MCS-51单片机原理与应用.天津:天津大学出版社,20015张红润,易涛.单片机应用技术教程.北京:清华大学出版社,20036唐程山.数字电子技术.北京:人民邮电出版社,20057叶淬编.电工电子技术.北京:
3、化学工业出版社,20048郑应光.模拟电子技术.江苏:东南大学出版社,2005审批意见教研室负责人:年 月 日备注:任务书由指导教师填写,一式二份。其中学生一份,指导教师一份。目录摘要1第1章绪论21.1函数发生器的发展21.2函数发生器设计的背景21.3函数发生器实现的特色功能2第2章系统设计42.1方案论证42.2方案选择5第3章单元电路设计63.1单片机主控模块63.2I/O扩展模块63.3D/A转换模块73.3.1D/A选择73.3.2D/A输入设计83.4波形产生模块93.5增益放大模块113.6人机接口113.6.1键盘模块113.6.2显示模块123.7频率计算模块123.8电源
4、模块133.9总体电路13第4章软件设计164.1流程图及设计164.2软件系统的使用说明20第5章调试22结论24致谢25参考文献26附录1单片机端口分配表27附录2程序代码28附录3总电路原理图35摘要函数信号发生器作为一种常用的信号源,广泛应用于电子电路、自动控制和科学研究等领域。它是一种为电子测量和计量工作提供符合严格技术要求的电信号设备,因此是电子测试系统的重要部件,是决定电子测试系统性能的关键设备。它与示波器、电压表、频率计等仪器一样是最普通、最基本的,也是得到最广泛应用的电子仪器之一。本文设计了一款基于AT89C51单片机、MAX038芯片实现的函数发生器,可以产生频率、幅度可调
5、的正弦波、方波、三角波、三种周期性信号,输出波形失真小于0.75%,频率可调范围为,矩形波占空比可调范围为30%60%。该函数发生器具有成本低廉、结构简单、人机界面友好等特点,在教学方面具有较高实用价值。关键词单片机;函数发生器;频率;幅度;占空比第1章绪论1.1函数发生器的发展波形发生器亦称函数发生器,作为实验用信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。目前,市场上常见的波形发生器多为纯硬件的搭接而成,且波形种类有限,多为正弦、方波、三角等波形。单片机构成的仪器具有高可靠性、高性能价格比,在智能仪表系统和办公自动化等诸多领域得以极为广泛的应用,并走入家庭,从洗衣机、微波
6、炉到音响汽车,处处可见其应用。因此,使用单片机技术开发的函数发生器性能更加优良,随着单片机的普遍应用,与单片机结合开发的函数发生器也将得到广泛应用。1.2函数发生器设计的背景函数发生器能提供正弦波、方波、三角波等多种波形,有的还同时具有调制和扫描能力,在我们的大学电子实验室、科研机构研究实验室、工厂开发实验室等有着广泛的应用,特别是在基础教育方面应用更加广泛。信号源主要给被测电路提供所需要的已知信号(各种波形),信号源在电子实验和测试处理中,提供信号驱动电路正常工作。一般来说任意波形发生器,是一种特殊的信号源,综合具有其它信号源波形生成能力,因而适合各种仿真实验的需要。但为了增强任意波形生成能
7、力,它往往依赖计算机通讯输出波形数据。在函数发生器的发展中功能越来越多,结构上也越来越复杂,体积也越来小。但是在整体设计的造价上花费越大,对于使用者来说操作过于复杂。综合上述,我设计了一款面向教学使用的函数发生器。该函数发生器体积小、重量轻、操作简单。对于购买者,在价格上更有着比其它同性能的函数发生器更低的价格。1.3函数发生器实现的特色功能为了克服函数发生器在教学使用中输出波形易失真、精度低、价格昂贵及不易携带等缺点,设计一款能产生多种函数波形的函数发生器,要求该系统具有如下特色功能:1能产生正弦波、方波、三角波,且波形频率和占空比可调;2频率范围:,连续可调;3矩形波占空比:30%60%,
8、连续可调;4输出电压:。本文设计函数发生器是由软件和硬件相组合,产生在教学使用中常见的三种波形信号,即正弦波、方波、三角波三种信号。信号输出的频率、占空比范围宽,输出信号幅度可调,并且输出频率可以显示,体积小,价格低廉,克服函数发生器在教学使用中的缺点。第2章系统设计2.1方案论证根据题目的要求,本信号发生器可分解为以下几个部分,结构框图如图2-1所示。I/O扩展波形产生MCU控制单元周期计算按键信号放大显示图2-1函数发生器组成结构一般有如下几种实现方案:方案一:采用直接数字频率合成(DDS)芯片实现:DDS是较为先进的一种频率合成技术,基于DDS技术的波形发生器具有输出频率稳定、准确,波形
9、质量好和输出频率范围宽等一系列独特的优点。此种方案是向DDS芯片写控制字,通过改变相位累加字来实现,常见的DDS芯片,如AD9954等,只有正弦波输出,要产生三种波形,需外接波形变换电路。方案二:采用单片机结合MAX038芯片完成设计。MAX038是一个精密高频波形产生器,它能产生高频正弦波、三角波、方波,输出频率和占空比可以通过调整电流、电压或电阻来分别地控制。所需的输出波形可由在A0和A1输入端设置适当的代码来选择;单片机通过D/A芯片输出模拟信号,此模拟信号控制MAX038输出波形。在最后的波形输出端通过运放放大输出波形信号;单片机主要控制D/A芯片连接、显示,最终采用LED数码管显示频
10、率。2.2方案选择第一种方案采用晶体振荡器作为时钟,因此,频率稳定度很好,但均需外接波形变换电路,通常采用二极管电阻网络来实现正弦波到三角波变换,且还须外接多个VCO,所以电路较复杂;第二种方案采用单片机结合MAX038芯片设计函数发生器。单片机性能优良,价格低廉,应用普遍。MAX038芯片是MAXIM公司生产的一个只需要很少外部元件的精密高频波形产生器,它能产生准确的高频正弦波、三角波、方波。输出频率和占空比可以通过电流、电压或电阻来调整,并且占空比与频率的调节互不干扰。在硬件的使用上充分利用单片机最小应用系统,而且还有可扩展的部分。从总的设计上来说该设计方案造价低廉,性能优良。综合上述,第
11、二种方案设计合理,价格低廉,所以采用第二种方案设计。原理结构框图如下:MAX038AT89C51单片机显示D/A转换74LS74信号放大按键I/O扩展图2-2函数发生器原理结构第3章单元电路设计3.1单片机主控模块系统采用AT89C51单片机作为控制核心。AT89C51单片机与MCS-51系列单片机产品兼容,采用了Flash存储器结构,可以在线下载程序,易于日后的升级。它主要负责各个模块的初始化工作;可以设置定时器、寄存器的初值;处理按键响应;LED数码管显示等。硬件电路连接如图3-1所示。本设计采用人工复位,时钟频率为晶振。P1.0,P1.1,P1.2,P1.3,P1.4为按键模块的接口。图
12、3-1单片机主控模块3.2I/O扩展模块该模块主要完成单片机的输入输出口的扩展,并以此模块驱动显示。1AT89C51单片机的P1.6和P1.7端口分别接在8255芯片的A0、A1端口。A0、A1起控制作用,主要控制8255的A口、B口、C口、控制接口的选择。8255芯片的A口作为D/A芯片输入,B口C口作为显示控制端口。28255的A口、B口、C口、控制接口的地址分别为0000H、0001H、0002H、0003H,设无关位取0。A、B、C口均设为输出口,选用方式0工作。74LS373是一个锁存器,在电路中起到地址锁存作用。I/O扩展电路见图3-2所示。图3-2I/O扩展电路3.3D/A转换模
13、块数模转换器,又称D/A转换器,简称DAC,它是把数字量转变成模拟量的器件。该模块功能主要完成电流输出,改变输出步进信号频率。3.3.1D/A选择DAC0832是8位分辨率的D/A转换集成芯片,与微处理器完全兼容,这个系列的芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到了广泛的应用。这类D/A转换器由8位输入锁存器,8位DAC寄存器,8位DA转换电路及转换控制电路构成。DAC0832的应用特性:1DAC0832是微处理器兼容型D/A转换器,可以充分利用微处理器的控制能力实现对D/A转换的控制;2DAC0832内部无参考电压源,须外接参考电压源;3DAC0832为电流输入
14、型D/A转换器,要获得模拟电压输出时,需要外加转换电路。DAC0832的引脚图见图3-3所示。DAC08321245367891020191817161514131112CSDI3VREFGNDWR1DI0DI1DI2RFBGNDVCCXFERDI7WR2ILEDI6DI5DI4IOUT2图3-3DAC0832引脚3.3.2D/A输入设计AT89C51的P2口作为DAC0832的片选信号,采用单缓冲器方式,锁存8位数据,DAC0832的工作电压为,基准电压采用。对于8位A/D转换器,当输入电压满刻度为时,其输出数字量的变化范围为0255,转换电路对输入模拟电压的分辨能力为。设计当中DAC083
15、2输出电压范围9.5,基准电压为。 (3-1)DAC0832输入量的大小。由公式(3-1)计算DAC0832输出电压的大小。设计输出电压为19.5,每一次步进0.5。DAC0832输入量见表3-1所示。表3-1DAC0832输入量电压()11.52.02.53.03.54.0电流()20304050607080输入量25.638.451.264.076.889.6102.4电压()4.55.05.56.06.57.07.5电流()90100110120130140150输入量115.2128.0140.8153.6166.4179.2192.0电压()8.08.59.09.5-电流()1601
16、70180190-输入量204.8217.6230.4243.2-由上表可以得出输出的步进量值为12.8。通过单片机对DAC0832的输入量步进加减12.8,使获得相应的输出电压。3.4波形产生模块本模块功能主要输出信号波形及实现频段选择控制。本设计采用的是MAXIM公司生产的MAX038芯片,它是一种高频精密的函数发生器,可产生三角波、正弦波、方波,且频率及占空比可调。MAX038芯片内部包含有精密带隙电压参考、鉴相器和同步输出,能以最少的外部元件构成一台多波形的高频函数发生器。MAX038的核心部分是一个电流控制的基本振荡器。由恒定电流对外部电容充电和放电,来获得三角波和方波信号输出。其控
17、制电流由外部信号、和IIN管脚的输入电流决定。1输出波形的选择由MAX038芯片逻辑地址引脚A0和A1的组合来决定,A1A010或11时,输出正弦波;A1A000时,输出方波;A1A001时输出三角波。波形切换可在内完成,但输出波形有的延迟时间。AT89C51的P1.7端口与P1.6端口控制A0和A1。2输出频率由IIN引脚的电流、SOSC引脚的对地电容量和FADJ引脚的电压来决定。MAX038步进频率控制电压由8位DAC0832提供,经的电位器接入到IIN引脚。设IIN输入端电压为,串接电阻为,则有 (3-2)式中,输出频率,单位;输入端电压,单位;串接电阻,单位;是决定输出频率的串入电容值
18、,单位。3电容是SOSC引脚的对地电容,本设计在SOSC引脚设置了一个开关,电容取四个容量值,分别为、。本设计设计了四个频段,在输入电压为时,根据公式(3-2)可得:当连接电容输出频率范围在到。当连接电容输出频率范围在到。当连接电容输出频率范围在到。当连接电容输出频率范围在到。具体见表3-2所示。序号频段电容步进1234表3-2频段切换4通过改变FADJ引脚、DADJ引脚上的电压可以调节频率和占空比。本设计以改变FADJ引脚上的电压作为频率的细调,改变DADJ引脚上的电压作为占空比的调节。当在FADJ引脚施加一个范围的电压,可使输出频率的调节范围为 (3-3)为步进输出频率,为MAX038输出
19、频率。 (3-4)由公式(3-4)可得:当时,当时,当时,综合上述,改变FADJ引脚上的电压使频率的调节范围在(11.7)才能满足设计要求,所以FADJ引脚上所加电压的范围设计为。DADJ引脚上的电压值的变化控制波形的占空比,通常时,则占空比为。若在范围变化将引起输出波形占空比在的变化(在范围内改变占空比,对输出频率的影响最小),根据设计要求波形占空比在范围内调节。综合上述DADJ引脚上所加范围的电压,占空比的调节范围为。5MAX038输出的信号电压固定为峰-峰值,通过放大电路将MAX038输出的信号放大,使输出信号波形幅度可调。3.5增益放大模块放大电路主要是对MAX038输出的双极性电压信
20、号幅值进行处理,以达到输出电压可调。采用低频运放放大波形信号以提高输入阻抗,采用LM324 四运放作为放大元件。LM324是四运放集成电路,它采用14脚双列直插塑料封装,它的内部包含四组完全相同的运算放大器,除电源共用外,四组运放相互独立。放大电路见图3-4所示。图3-4放大电路当时,放大0.83倍;当时,放大5倍。3.6人机接口3.6.1键盘模块键盘模块采用独立式按键作为输入设备,为了防止按键抖动产生误差,本设计采用软件去抖动。按键电路见图3-5所示。图3-5按键模块电阻作为上拉电阻,在有按键按下后容易判断前两次电平的变化。74ALS21是一个4输入与门,当没有按键按下时74ALS21输出高
21、电平,有按键按下后输出低电平,则低电平触发了单片机的外部中断0,从而认为有按键按下。由于触发中断需要一定的时间所以按键不采用硬件去抖动,而才用软件去抖动。3.6.2显示模块显示采用7SEG-MPX6-CC-RED(六位共阴7段LED显示器)显示。七段显示译码器将把输入的BCD码,翻译成驱动七段LED数码管各对应的所需电平。由于扩展了I/O口,则七段显示译码器直接接在8255的B口C口上由8255芯片直接驱动显示。8255芯片B口定为片选端,C口定为位选端。待显示字符从左到右依次放在一个数组中,从左向右顺序显示。程序中的段选码表存在另外的一个数组中,表中段选码表存放的次序为09、D、E、F。当数
22、码管最后一位显示“D”表示,显示“E”表示,显示“F”表示。3.7频率计算模块该模块主要与单片机组合计算输出信号的频率。频率计算电路见图3-6所示。图3-6频率计算电路P3.0的功能为清零,使用定时器中断来计算输入波形频率的大小。频率计算原理见图3-7所示。INT0fsTs图3-7频率计算原理当信号上升沿来到时2Q端输出低电平引起单片机中断并开始记时,再一次信号上升沿来到中断并停止记时,通过公式(3-5)计算频率的大小。 (3-5)3.8电源模块为了提高电源的稳定性,减少纹波,部分电路采用变压器降压、整流、电容滤波将电压降为,在通过稳压管7805电压可稳定在输出。这样可防止交流中的不稳定而造成
23、输出的直流电压偏低,从而使单片机不能正常工作。电路对电源的要求较高,采用变压器,将交流电变成,经桥式整流、电容滤波,再经过三端稳压器CW78M12稳压,输出直流电压(W78M12最大输出电流为);同样使用CW79M12稳压输出负电压。电压给LM324芯片供电;从CW79M12稳压输出负电压再分压输出及的可调电压;从CW78M12与CW79M12输出端分压,通过电位器调节输出的电压。3.9总体电路硬件电路设计从整体上主要分为8个模块,分别为:控制处理模块、按键模块、显示模块、I/O口扩展模块、D/A模块、波形产生模块、放大模块、频率计算模块。硬件流程图见图3-8所示。I/O扩展电容切换MAX03
24、8AT89C51单片机DADJ电压调节FADJ电压调节显示D/A转换74LS74信号放大按键图3-8硬件流程在硬件连接完毕后先检查是否连接错误防止元器件被较大的电流烧毁。单片机加电后首先进行自检,MAX038不会有波形信号输出,只有先按下按键后才会有波形输出,在此之前DAC0832也不会有电流输出。当键按下后AT89C51单片机处理按键的功能。单片机加电后开始初始化,LED初始化时显示六个8,约1秒后自动关闭显示,表明单片机初始化正确完毕;在有按键按下后单片机处理按键的功能,控制相应的操作;AT89C51单片机通过P0口传输操作指令,8255芯片的A口接DAC0832,通过运放使DAC0832
25、输出的电流转变为电压信号,再接一个的电位器,以方便调节DAC0832输出的电压。通过输出的电压大小改变电流的大小,从而控制输出波形步进频率。通过MAX038第10脚输入的电流大小来改变输出频段的选择。如果要使频率连续输出,则该变第8脚(FADJ)电压使之频率连续输出,调节占空比则调节第7脚(DADJ)的输入电压。频率输出共分为四频段,分别为:、和,对此相应的步进频率为:、。频段切换需改变MAX038的COSC引脚电容的容量;由于输出波形的幅度是一个恒定值,通过集成运放来放大输出信号;对于频率的显示则使用AT89C51的定时器和计数器来计算输出波形的频率;步进加键和步进减键不会进行频段的选择,在
26、一个频段内循环加减,控制DAC0832转换输出电压范围为。第4章软件设计4.1流程图及设计系统软件按照其功能分为5个模块,每个独立的模块通过主程序联系组成一个完整的系统程序。5个模块分别为:主程序模块、显示模块、按键判断模块、频率计算模块、D/A转换模块。1主程序流程主程序流程见图4-1所示。步进按键NY波形按键初始化频率计算正弦波波形输出判断按键显示6个81秒后关闭等待按键中断While(1)显示等待按键中断是否到1秒开始图4-1主程序流程3键盘处理流程采用中断的方法来设置键盘。采用外部中断0,当有按键按下后所对应的端口变为低电平,通过74ALS21与门来启动外部中断0。键盘流程图见图4-2
27、所示。等待按键中断判断按键正弦波波形输出频率计算步进按键波形按键图4-2键盘流程3计算频率将MAX038输出信号通过74LS74芯片接入到外部中断1,当信号的高电平来到时,发生中断,并启动单片机本身的定时器来计时,在一次此中断来临时关闭定时器定时,从而获得信号的周期。4显示流程采用动态显示从数组中取出显示数字。对于以下的显示标志采用“D”表示,以上到以下显示标志用“E”表示,的显示标志用“F”表示。程序中每一分钟计算一次频率并显示,提高频率更新速率。显示流程见图4-3所示。YN频率计算显示等待按键中断是否到1秒图4-3显示流程5波形选择应用P1.7、P1.6的输出来选择波形的输出控制。波形选择
28、见表4-1所示。表4-1波形选择A1A0波形10或1正弦波00矩形波01三角波6步进频率单片机控制DAC0832输出电压来改变MAXO38 IIN端电流的大小,从而进行频段的选择。在没用选择波形输出的情况下进行步进频率则将有正弦波输出。频率步进流程分为步进加(图4-4)和步进减(图4-5)。步进加Tem2+Tem2=0输出电压Tem2=17NY步进加Tem2+Tem2=0输出电压1秒后关闭NYD/A转换IOUT1D/A转换图4-4频率步进加步进减Tem2+Tem2+输出电压Tem2=0NY图4-5频率步进减4.2软件系统的使用说明1按键说明(1)按键0:步进加;(2)按键1:步进减;(3)按键
29、2:正弦波;(4)按键3:矩形波;(5)按键4:三角波。2软件的使用单片机加电后首先进行自检,MAX038不会有信号输出,只有先按下按键后才会有信号输出。在此之前8255芯片在单片机启动时也将进行初始化操作,显示初始化,显示六个8。在没有按键按下1秒后数码管将又一次点亮。当信号输出后按下步进加键(0号键)或步进减键(1号键)则波形的频率将发生变化,在此之外在没有选择波形输出时按下步进加键(0号键)或步进减键(1号键)将会启动正弦波波形输出。频率输出共有四频段分别为:、和。频段切换需该变MAX038 COSC引脚电容的容量。步进加键(0号键)和步进减键(1号键)不会进行频段的选择,并在一个频段内
30、循环加减。DAC0832输出电压范围为。软件操作不具有对占空比的控制调节,要调节占空比则需对MAX038的外围电路进行调节。第5章调试本设计的调试分为软件调试和硬件调试,对于软件调试主要应用单片机仿真软件(ProteusProfessional)和Keil软件;硬件调试则搭接实际电路加电进行调试。1软件调试在Keil软件中编写原程序代码,对代码进行格式语法调试,将其错误的进行纠正。本设计应用高级语言编写程序代码,编写时参考C语言语法格式编写。应用单片机仿真软件仿真部分电路,此部分电路包括按键电路、显示电路、I/O扩展电路及DAC0832电压输出。在单片机仿真软件中装载原程序代码,并运行,LED
31、数码管将全部点亮,约1秒后自动熄灭。如果没有按键按下LED数码管将再一次全部点亮。此部分出现故障则应在显示程序代码中修改,主要的问题是不显示或部分数码管不显示,问题在于对数码管进行动态扫描时段选码或位选码编写错误对于DAC0832的调试,则对DAC0832输入电流信号,输出处将电流变换为电压信号,参考表(3-1)理论输出电压对其软件进行修改。另外在硬件调试中可以调节反馈回路的阻值,从而改变电压的输出;以一个信号源作为向单片机输入的频率信号,在频率计算电路中计算频率。在74LS74的CP端输入固定频率信号,观察显示频率,如果与输入频率不相同则在显示值的基础上加减误差值。这样调节可以避免频率误差。
32、2硬件调试(1) 在不通电的情况下,按照设计电路接线图检查安装电路,在安装的电路按电路图一一对照检查连线;(2) 连线检查完毕后,直观检查电源、地线、元器件接线端之间有无短路,连线间有无连接不良,二极管及电解电容的引线端有无错接、反接,芯片是否安装错误;(3) 把经过准确测量的电源电压接入电路,用电灯代替风机,首先观察有无异常现象,如冒烟、异味、触摸器件有无过热,电源是否短路等,如有异常现象立即切断电源,排除故障后通电;(4) 在硬件调试当中主要调试波形发生电路、放大电路、波形转换电路。在调试当中改变MAX038 COSC端的电容进行频段切换,改变改变输入电流的大小,从而改变频率的大小。在II
33、N端输入一个固定的电流,用示波器测量输出频率大小,改变DADJ端的电压(调节的电阻值),观察输出频率的改变范围是否是产生固定频率的11.7倍范围内,至少在11.5倍范围这样才符合设计要求,改变的电阻值也可以调节频率的输出。另外改变频段在测量输出频率的范围;(5) 在调节占空比当中,设置方波输出调节电阻值。占空比范围至少在内符合设计要求;(6) MAX038的输出固定峰峰值以符合设计要求,在波形的输出端有放大波形信号,最大放大5倍。结论通过3个多月的毕业设计,函数发生器终于做成功了。按照老师的要求,本函数发生器能产生正弦波、矩形波、三角波;频率范围在内连续可调;方波占空比在范围内连续可调;输出电
34、压:。总体上完成任务书上的要求但是具体分析该系统发现仍然存在如下一些问题:1频率范围在时,输出波形信号可以使用集成运放对输出信号进行放大。超过这个频段范围时,在用此集成运放放大信号,信号将产生失真;2本函数发生器能显示输出波形的频率,但信号的幅度却没有显示。因此可以使用单片机的P2口连接D/A转换,采集输出信号幅度,用LED显示信号幅度;3函数发生器可以输出较常用的正弦波波、三角波、方波三种信号,信号种类的数量少。技术只是一方面,更多的我是学会了利用资源。“时间作为一种最宝贵的资源”,让我在这设计中体会颇深。由于在这设计过程中有很多事情要做,所以时间显的特别紧张。但我制定了论文写作计划。当然,
35、我要付出比别人更多的时间和精力,因为我在做这个设计的同时也在做西南科技大学自考本科的毕业设计。但想到自己的前途,我又信心百倍的做了起来。以上是我这段时间的感受。通过本次设计,不仅是对我这三年所学知识的一个考验,也是对我单片机编程与写作水平的一个考核,而且还给了我一个找出自己不足的机会。致谢经过几个月的努力,终于将论文和设计做完了。感谢所有教授我知识的老师和含辛茹苦的父母,是他们给了我这样的机会。同时在本次毕业设计和论文写作中,也要感谢我的老师和同学对我的帮助,因为有了他们的支持,我才能坚持写完!尤其是指导我的刘雪亭老师,她给了我许多技术指导,多次提出一些建设性的建议和创想,并提出我编程中常犯的
36、错误,这让我进步神速,还有网络上一些热心的朋友。最后,还要感谢所有帮助过我的人,谢谢你们!参考文献1芯片实验室.2李金奎.单片机应用.北京:高等教育出版社,20063苏平.单片机原理与接口技术.北京:电子工业出版社,20034李维祥,孙秀强,孙桂玲,等.MCS-51单片机原理与应用.天津:天津大学出版社,20015张红润,易涛.单片机应用技术教程.北京:清华大学出版社,20036唐程山.数字电子技术.北京:人民邮电出版社,20057叶淬编.电工电子技术.北京:化学工业出版社,20048郑应光.模拟电子技术.江苏:东南大学出版社,20059(美)汤姆.彼德鲁编.电子技术完全实践.德利斯科学出版社
37、,200610博益网.11百度空间.12得益网.13维普咨讯.14廖炉霖.跟我学Protel 99.北京:冶金工业出版社,200015谭浩强编.C程序设计(第二版).北京:清华大学出版社,199916赵克林.C语言程序设计教程.四川:北京工业大学出版社,2004附录1单片机端口分配表I/O端口分配作用方式P0.0连接8255的D0端输出P0.1连接8255的D1端输出P0.2连接8255的D2端输出P0.3连接8255的D3端输出P0.4连接8255的D4端输出P0.5连接8255的D5端输出P0.6连接8255的D6端输出P0.7连接8255的D7端输出P1.0按键0输入P1.1按键1输入P
38、1.2按键2输入P1.3按键3输入P1.4按键4输入P1.6MAX038的A0端输出P1.7MAX038的A1端输出P2.074LS373片选端输出P3.074LS74复端输入P3.2按键中断输入端输出P3.3外部信号输入端输入附录2程序代码#include #include absacc.h#define COM8255 XBYTE0x007f #define PA8255 XBYTE 0x007c #define PB8255 XBYTE 0x007d #define PC8255 XBYTE 0x007e#define uint unsigned int #define uchar un
39、signed charsbit P3_0=P30;uchar n;uint table113=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x5f,0x79,0x71;uint table26=0xdf,0xef,0xf7,0xfb,0xfd,0xfe; uint table310=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;unsigned long count;unsigned long period; uint rflag=0; uint key1; uint key2; ui
40、nt z1; uint j1; uint s1; uchar status; bit flag; sbit P1_7=P17; sbit P1_6=P16; void service_int1() interrupt 0 using 2 /*外部中断0*/ flag=1; status=P1; status=status|224;void delays (void) /*延时函数*/ char i,j; for(i=20;i0;i-) for(j=248;j0;j-);void keyscan(void) /*按键函数*/ if(rflag) switch(status) case 254:k
41、ey1=0;break; case 253:key1=1;break; case 251:key1=2;break; case 247:key1=3;break; case 231:key1=4;break; rflag=0;void zxb(void) /*正弦波函数*/ z1=1; j1=0; s1=0; P1_7=1; PA8255=25.6+(key2*12.8);void jxb(void) /*矩形波函数*/ z1=0; j1=1; s1=0; P1_7=0; P1_6=0; PA8255=25.6+(key2*12.8);void sjb(void) /*三角波函数*/ z1=0; j1=0; s1=1; P1_7=0; P1_6=1; PA8255=25.6+(key2*12.8);void control (void) /*频率计算函数*/ TMOD=0x09; TR1=1; TH0=0; TL0=0; P3_0=0;P3_0=1; TR1=1; ET1=1; EA=1;void bxcs(void) /*波形产生函数*/ switch(key1) case 0: if(key2=17) key2=0;