版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于EDA的数字频率信号源的设计摘 要当今是科技以及仪表设备高度智能化飞速发展的信息社会,电子技术的发展,给人们带来了根本性的转变。现代电子领域中,单片机的应用正在不断地走向深入,这必将导致传统控制与检测技术日益革新。单片机构成仪器具有高可靠性,高性价比,在智能仪表系统和办公自动化中得到广泛应用,因此,基于单片机的函数信号发生器普及是一种趋势。本文设计低频信号发生器,以 AT89C51 单片机为核心,通过键盘输入控制信号类型 和频率的的选择,采用 DA 转换芯片输出相应的波形,同时以液晶1602进行实时显示信号相关信息。采用C 语言进行编程,可实现方波,三角波,锯齿波和正弦波四种波形的产生,且
2、波形的频率可调。经测试该设计方案线路优化,结构紧凑,性能优越, 满足设计要求。【关键词】:数字信号源,AT89C51,模数转换,运放AbstractToday is the rapid development of science and technology as well as the rapid development of instrumentation information society, the development of electronic technology, has brought a fundamental change. In the modern electr
3、onic field, the application of the single chip computer is going deeper and deeper, which will lead to the change of the traditional control and detection technology. SCM constitute the instrument with high reliability, high cost, in the intelligent instrument system and office automation has been w
4、idely used, therefore, based on the function of MCU signal generator is a trend. In this paper, the design of low frequency signal generator, AT89C51 single-chip microcomputer as the core, through the keyboard input control the type and frequency of the signal, the DA conversion chip corresponding t
5、o the output waveform, also in 1602 LCD were real-time display signal related information. Using C language programming, can realize square wave, triangle wave, saw tooth wave and sine wave four kinds of waveform generation, and the frequency of the waveform can be adjusted. The design of the design
6、 of the line optimization, compact structure, superior performance, to meet the design requirements.【Key words】: Digital signal source, AT89C51, ADC, Op目 录一、引言11.1选题依据及意义11.2研究主要内容和方法11.3本文结构安排2二、系统整体方案设计32.1方案设计32.1.1信号发生模块32.1.2单片机控制模块32.1.3输出显示模块32.1.4键盘模块42.1.5电路设计最终方案42.2工作原理和系统基本框架4三、硬件设计63.1电
7、源模块设计63.2单片机最小系统63.3数模转换电路73.4按键模块83.5液晶显示模块93.6 运放驱动模块103.7 存储模块11四、软件设计124.1软件开发环境介绍124.2主函数程序设计124.3波形发生流程134.3.1正弦波发生子程序134.3.2矩形波发生子程序134.3.3三角波发生子程序144.3.4锯齿波发生子程序154.4按键程序设计164.5液晶显示子程序设计16五、调试过程17六、总结和展望20致 谢21参考文献22附 录231 硬件原理图232 源程序24毕业论文一、引言1.1选题依据及意义波形发生器在生活中发挥着越来越大的作用,传统的波形器通过硬件进行控制,如果
8、正弦波等多种波形通过555振荡电路产生,传统的波形就可以通过这种设计方式完成,但是这种方式在单片机应用中无法实现,这种方式在众多波形中质量较差,控制方式比较难,调试的范围比较小,体积较大和电路内部设施较为复杂等缺点,在社会发展的探索过程中,在工业控制,生物医学控制等领域需要较低频率的信号源,有硬件设施控制的波形达不到预想的效果,低频信号源需要很大的RC,大电阻和大电容设施在制作时非常困难,精度系数比较高,体积较大,容易漏电等缺点困扰着波形发生器的设计。电子技术在社会中不断发展,如今数字信号发生器的功能也向多样化发展,在社会中有了一定的可靠性。数字信号发生器在检测和实验领域扮演着必不可少的角色,
9、在通信、检测等领域意义重大。在生产、科研、教学、电子工程方面都是很好的工具,数字信号发生器有多种设计方法,有了越来越高超的设计技巧。随着我国的不断进步,对相应的测试仪器和手段有了更苛刻的要求,在众多检测仪器中发挥着至关重要的作用,开发数字信号发生器也具有了越来越重大的意义。传统的信号发生器基本都采用单片机或模拟电路,成本比较高制作方式较少种类不分明,制作相当复杂,无法准确可靠的制造出相应产品,无法在社会的发展中满足社会的需求。因此,更多的商家制作成本较少电路较为简单的发生器。1.2研究主要内容和方法本文将采用编程的方法来实现各种波形的发生。根据设计的要求,对各种波形的频率和幅度进行设计和总结,
10、将程序存储到单片机的程序中。在程序运行时,在接受外界的指令时,需要输出某种波形时再中断波形的发生程序,经过电路数/模转换器和运算放大器等处理后,从输出端口输出相应的程序。本设计采用文献法和实验法对整个系统设计进行研究。其中,文献研究法是根据所选设计方向收集相关文献资料,了解数字频率信号源的发展现状。熟悉掌握C语言程序编写并对KeilVision4单片机仿真软件有自己的见解和认识。而实验法则是根据系统的功能要求,选择合适的控制芯片、检测元件;设计硬件电路图,焊接电路搭建硬件模型;设计软件控制的流程主要通过KeilVision4单片机仿真软件进行编程和调试。1.3本文结构安排文中首先介绍了本论文研
11、究的背景、意义和方法。在第2章首先介绍了系统方案选择组成,第3章介绍了系统的硬件设计以及器件选型,硬件中有电源,单片机中最小的系统,数模转换电路界面等。第4章是对软件设计方面的介绍,首先介绍了软件的编译仿真平台,然后是对程序主流程的介绍,以及各个程序模块的分析介绍。第五章是介绍系统的调试。二、系统整体方案设计2.1方案设计 2.1.1信号发生模块方案一:通过MAX038芯片组成电路来输出相应的波形。MAX038是通过精密高频波形来产生芯片,可以产生较为准确的波形。但是成本比较高,程序更为复杂。方案二:通过分立元件实现多谐振振荡器的非稳态性,然后加入所需求的积分电路构成多种波形的发生器。这种发生
12、器频率较窄,而且电路的设计较为复杂,可以通过硬件电路的适当转换来实现频率的大小测量,操作很复杂。 方案三:通过单片机和DAC0832数模转换器生成相应波形通过编程的方法来控制输入到数模转换电路的数字量,从而控制输出信号的波形和频率。他的特点是设计较为简单价格便宜,在低频的范围内属于稳定性较好操作较为简单的设施。通过比较,方案三可以充分的发挥其独特的优势来满足设计需求,电路简单价格低,所以采用该方案。2.1.2单片机控制模块方案一:AVR单片机。AVR不是一个简单的外设功能的叠加,但更多的模型以满足不同设计开发者的实际需要,同时可以提供一个低成本的OTP芯片。此外,AVR属于低耗能具有睡眠功能,
13、上电和掉电等功能的设备,占用空间小,成本低,安全技术也非常可靠,能够最大程度地满足开发者的实际要求。因此,在工业控制,AVR单片机被广泛的应用到各行各业的控制中,其稳定性、系统功耗等都为广大开发者认可。价格相比同性能产品在中上游水平。方案二:选择51系列的单片机价格较为低廉,内部设有51内核可实现低功耗高效能的八位单片机,还拥有4K字节Flash只读程序储存器,如此强大的微型计算机在工业控制系统中属于低价位高可靠的设备。它具有128字节,看门狗,两个16位定时和计数单位,一个两级中断结构,内部晶振和时钟电路。根据实际的需求,最终选择51系列单片机型号为AT89C51,此设备价格低廉操作简单。2
14、.1.3输出显示模块方案一:用数码管进行显示。数码管的显示速度比较快,使用较为简单,现实效果简单明了,从而得到了各方的使用。但是我们需求的是低频率和指定的波形类型。用此设备并不能完全的展示丰富的内容,因此放弃了此方案。方案二:用LCD液晶进行显示。LCD可以清晰丰富的显示内容,信息量充足,使用简单,在各方得到了广泛的应用。我们采用LCD1602液晶来显示英语字母和数字,能够满足显示要求,可以选择此方案。2.1.4键盘模块方案一: 采用独立式按键电路,每个按键都有自己独特的功能,都占有一个I/O接口,每个接口的功能互不影响,直接扫描此类键盘端口。但是按键较多,比较占用单片机的I/O接口,但是电路
15、设计比较简单,编程比较容易。方案二:采用矩阵式键盘,键盘为4*4矩阵式行列扫描,优点是当按键较为多时,可以尽量少占用I/O的数目。对于此系统,由于按键数目不多,故采用方案一。2.1.5电路设计最终方案本系统包括主控模块,显示模块,信号发生模块,键盘模块,运放模块,综上各方案所述,确定最终设计方案为:用AT89C51作为主控制系统,LCD液晶作为显示部分,独立式按键成为键盘模块。DAC0832作为信号的发生模块,LM324作为电流电压的放大模块。2.2工作原理和系统基本框架 虚拟信号可通过数/模转换器对数字信号进行转换来实现,因此,用数字信号转换成模拟信号可获得相应的波形。在本设计中,AT89C
16、51是核心部分,其中含有数字/模拟转换电路、电流/电压转换放大电路、按键电路、LCD液晶显示电路和晶振电路。12MHz晶振来提供工作脉冲。P1接LED显示电路,用来显示波形类型的频路和大小;P0接DAC0832的D10D17,来提供相应的数字信息;P2.0P2.4外接独立键盘,控制不同信号的类型和频率等;P3部分口作为LCD的控制信号。DAC0832输出的模拟信号为电流信号,所以用电流/电压运算放大器LM324将电流信号再转换成电压信号输出。用两片LM324可以得到输出波形的双极性输出,将输出的波形与示波器相连即可观察输出波形的特征。独立式键盘可以控制从P0口输出的数字信号,按下不同的键可以使
17、此输出信号改变,从而使输出的波形实现正弦波、矩形波、锯齿波和三角波之间的转变,并能够改变波形输出频率的大小。在此过程中,单片机将信号的类型和频率经过处理后,由P1口送到LCD液晶显示器上进行显示,LCD1602第一行显示信号的类型,第二行显示波形的频率。整个系统的结构框图如图2.1所示。图2.1 数字频率信号源系统结构框图三、硬件设计3.1电源模块设计变压器经过一个保险丝连接电源,变压器或后面的电路如果发生短路,保险丝会因大电流引发的高温溶化而断开,从而保证后续电路不会受大电流的损坏。变压器输出后经过桥式整流电路,整流后的电源纹波很大,还需要接一个容值较大的电解电容滤除纹波。当负载电流大时稳压
18、器内的电阻会变小,当负载电流变小时稳压器内的电阻又会变大,使的稳压器的输出电压基本保持不变。 LM7805最大输出电流为1A。三端稳压器后面接一个104的瓷片电容,起滤波和阻尼作用。图3.1 220V交流稳压成5V直流原理图3.2单片机最小系统单片机最小系统是单片机工作的根本,它由晶振电路和复位电路组成。最小系统的工作前提是晶振电路必须稳定工作,为系统的运行提供工作时钟;最小系统上电的时候,复位引脚将产生一个上电复位脉冲信号,让单片机执行上电复位操作。复位引脚会产生一个上电复位脉冲信号,让单片机执行此操作。电容的大小选择会影响到系统复位时间,设计中通常选用16V10UF的电解电容,由于电路工作
19、电压为5V,电容耐压值可以满足设计的要求,复位电阻的大小为10K,电阻和电容组成了阻容复位电路;图中X1为按键,当单片机运行中出现故障时,当单片机无法正常工作时,按下复位按键可以实现系统复位,程序重新执行、本电路设计可通过上电复位和按键复位两种方式实现复位。最小系统见图3.2 所示。 图3.2单片机最小系统电路图3.3数模转换电路1.单缓冲方式输入锁存器和DAC寄存器相应的控制信号引脚分别连在一起来实现单缓冲,数据会写入DAC寄存器,从而进行D/A的转换。当只有一路模拟量输出时或有记录模拟量输出但是并不要去同步时适合此方法,2. 双缓冲方式在多电路D/A进行转换输出时,如果需要同步进行,可采用
20、双缓冲同步方式。DAC0832在双缓冲系统工作时,数字的输入和D/A的转换分步进行。CPU的数据分向各个电路的D/A转换器的数字,并将相应的数字进行储存和锁定,然后CPU对DAC系统发出控制信号,使DAC系统储存相应的数据,实现同步转换输出。3. 直通工作方式当DAC0832芯片的片选信号、写信号1、2及传送控制信号的引脚全部接地,允许输入锁存信号ILE引脚+5V时,DAC0832芯片就处于直通工作方式,数字量一旦输入,就直接进入DAC寄存器,进行D/A转换,从输出端得到转换的模拟量。如图3.3所示。图3.3 DAC0832数模转换电路图3.4按键模块该子系统是5个独立键盘和一个2输入与门组成
21、,其中与门输出端连接单片机的P3.2口以便形成外部中断。5个按键分别连接单片机的P2.0P2.4口。2输入与门一引脚与K1按键相连,另一引脚接高电平。当K1按下时,INT0为低电平,可知外部中断到了,系统执行中断程序。当K2K5按键某一个按下时,对应的P2.1P2.4口中某个为低电平,系统可以感知此按键按下,从而执行相应的程序。5个按键的功能分别是波形转换,频率升高,频率降低,占空比升高,占空比降低。原理图如图3.4所示。图3.4 按键扫描电路图3.5液晶显示模块液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显
22、示字符地址,也就是告诉模块在哪里显示字符,图3.4是1602的内部显示地址。图3.4 1602LCD内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在该位置呢?实际证明并不可行,因为写入显示地址时要求最高位D7恒定为高电平1,所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。对液晶模块进行初始化时要先设置显示模式,当显示出数字时光标会自动的向右移动,无需主动的进行控制。每次输入指令时都要确定液晶模块是否处于忙碌状态。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵
23、字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等。每一个字符都有一个固定的代码。表3.1 LCD1602引脚定义管脚号管脚名称LEVER管脚功能描述1VSS0电源地2VDD+5.0V电源电压3V0-指令数据4D/I(RS)H/LD/I=“H”,表示DB7DB0为显示数据液晶显示器驱动电压D/I=“L”,表示DB7DB0为显示5R/WH/LR/W=“H”,E=“H”数据被读到DB7DB0R/W=“L”,E=“HL”数据被写到IR或DR6EH/LR/W=“L”,下降沿有效,锁存DB7DB0R/W=“H”,高电平有效 DDRAM数据读到DB7DB07DB0H/L数据线8D
24、B1H/L数据线9DB2H/L数据线10DB3H/L数据线11DB4H/L数据线12DB5H/L数据线13DB6H/L数据线14DB7H/L数据线滑动变阻器是为了调节液晶屏亮度的,一般现在的LCD都会自带调节用的滑动变阻器,原理图保留这部分,如果实际购买模块自带,则可以不用焊接。原理图如图3.5所示。图3.5 液晶显示电路图3.6 运放驱动模块本设计中,为了减少数模转换的时间浪费,数模转换芯片DAC0832采用直通的工作方式。由于从DAC0832转换出来的模拟信号为电流信号,为了方便观测输出信号的特征,特将DAC0832输出的信号经过电流/电压转换放大电路转变为电压信号。本设计中使用的运放为L
25、M324。DAC0832输出信号经运放电路转变为电压后有两种输出方式。一种为单极性输出方式。此方式中,DAC0832通过使用一片LM324运算放大器将从单片机输入的数字量Din转换为电压输出,其输出电压为Uout=Din/28 *(-VREF)。当VREF=5V时,Uout的输出范围为-5V0V。另一种为双极性输出方式。本设计中采用双极性输出方式。如图3.6所示。图3.6 LM324运放驱动电路图3.7 存储模块AT24C02芯片是8引脚的SOP8封装。它的1-3号引脚是地址引脚,通接不同的电平可以设置不同的地址。由于可以设置3个引脚的不同状态信息,可以得到8个不同的外部地址,这有助于单片机对
26、不同外部EEPROM的寻址和存储。AT24C02和单片机的接口形式传统I2C总线方式,单片机可以通过IIC总线对器件进行读写操作设计中选择P30和P31口分别和芯片的5脚和6脚相连接,单片机程序中通过模拟IIC的实现方式实现对外部存储器的数据读写操作。在进行电路设计中为了确保电路的稳定性和IO口的驱动能力,设计中考虑在IIC通讯的两个引脚上加上拉电阻,从而增大单片机IO口的驱动能力本设计中的上拉起电阻大小选择4.7K 。由于本设计中只有一个外部存储器件所以将地址设置为0,也就是将A0/A1/A2三个引脚接到低电平上。芯片的4脚和8脚是芯片的供电引脚接到5V上可以给芯片供电。存储电路见图3.7所
27、示。图3.7 存储模块电路图四、软件设计4.1软件开发环境介绍51单片机的软件开发环境采用Keil软件进行C语言编程,Keil软件内部集成了强大的库函数,可用软件可以实现单片机的程序开发和在线调试,Keil软件内提供了C语言编译器、链接器、库函数管理器、宏汇编和一个仿真调试器等在内的开发设计例子,由一个集合组成的格局将各个模块连接在一起。C51工作效率非常高,语言代码很紧密,便于观察理解。Keil可以准确的模拟8021的外部接口。来帮助工作人员了解其配置,更快的发展该产品。设计人员可以目标设备上进行模拟编程和仿真,非常适合设计人员和在校学生进行产品设计。4.2主函数程序设计主函数首先实现单片机
28、,液晶屏LCD1602的初始化工作。单片机的初始化包括GPIO引脚的初始化,时钟定时器的初始化,中断优先级的设置等。主控部分在初始化结束后,程序进入while(1)的无限循环,在循环中不断轮询是否有按键被按下,根据按键逻辑刷新LCD的显示。流程图如图4.1所示。 图4.1 主程序流程图4.3波形发生流程本系统采用编程的方法,来输出四种不同的波形即正弦波、矩形波、三角波、锯齿波。各种波形的产生方法如下。4.3.1正弦波发生子程序正弦波是由特殊的方式产生的,并不能够通过设备直接产生,只能通过图4.2的方式来无限接近正弦波形。可以看出,在工作周期内阶梯数目越多,单片机的波形和正弦波的波形更相似。如果
29、正弦波的正伏是2.56V,则波谷的值就应该是00H,波峰的值应该是FFH。将正弦波的第一周期的波形角度分为若干等份,计算出每个波形角所对应的电压值,电压值计算方法:Vx=2.5(1+sin),因为00HFFH对应的数字量为0255,所以根据算出的电压就可得到对应的数字量。单片机将一个周期的数字量进行存储,然后逐渐取出数字量,将其转换成阶梯波,使其接近正弦波输出。图4.2为正弦波产生的流程图。 图4.2 正弦波产生的流程图4.3.2矩形波发生子程序如图4.3所示,矩形波的实现比较简单。首先定义一个无符号字符型变量i=0,使自变量i不断的自动加1,若i的值小于squa_num,将P0口赋值为0xF
30、F;若i的值大于squa_num,则将P0口赋值为0x00。当i自加到256后又自动变为0,以此循环,即可得到矩形波。当squa_num=128时,此时输出的为方波。可改变矩形波的空间占用量;改变时间的大小就可对矩形波形的频率进行改变, 图4.3 矩形波产生流程图4.3.3三角波发生子程序可以用多个小台阶来接近三角波中的实现,台阶的间隔很小时波形就会无限接近一条直线。首先定义一个无符号字符型变量i=0,使自变量i不断的自动加1,若i的值小于128,将P0口赋值为i;若i的值大于128,则将P0口赋值为256-i。当i自加到256后又自动变为0,以此循环,从而P0口实现了周期性的数字量变换,在经
31、过数模转换后转变成模拟信号,经运算放大电路后就得到了周期性的三角波。三角波产生流程图如图4.4所示。 图4.4 三角波发生流程图4.3.4锯齿波发生子程序锯齿波的实现过程与三角波类似,也是定义一个变量i=0,并使P0=i,自变量i不断的自动加1,直到加到255,然后i又可以自动归为0,再不断的重复上过程。在此过程中,P0口的值也随着i一样变化,经数模转换DAC0832后,周期性逐一变化的数字量就转换为锯齿波输出了。通过调节P0口每相邻两个值之间的延迟时间,就可以改变锯齿波的频率。图4.5为锯齿波发生流程图。 图4.5 锯齿波发生流程图 4.4按键程序设计在本设计中,主要是通过按键来调节输出波形
32、的类型、频率的大小及矩形波的占空比,采用程序控制扫描方式,时刻监视着有无按键按下。为了能够更准确的判断按键的情况,一旦有按键按下时,先延时去除按键的抖动,再判断是哪个按键按下,从而单片机对应的执行相应的程序。图4.6为按键处理流程图。图4.6 按键处理流程图4.5液晶显示子程序设计LCD1602的显示函数的实现主要是对寄存器的读写命令和数据,需要严格按照其时序图操作。在本设计中,由于需要显示的内容比较多,且有些需要重复显示,有些只要显示一次,故只画出液晶显示的基本流程,如图4.7所示。 图4.7 液晶显示流程图五、调试过程经过调试,当程序没有问题时,通过Proteus软件进行仿真。点击“Vir
33、tual Instruments Mode”,出现“INSTRUMENTS”时选择“OSCILLOSCOPE”,就将模拟示波器选中了。在绘图区点击左右来钢制模拟示波器,A、B、C、D为其四个输入通道,连接到要测试波形的节点即可。启动Proteus仿真,示波器显示面板会自动打开,IO口有输出波形即显示。图5.1所示为程序刚运行还没有按键按下,输出正弦波。液晶显示当前波形类型及频率值。图5.1 正弦波输出按下K1后,波形切换为矩形波。如图5.2所示。K2和K3分别升高和降低矩形波的频率,K4和K5分别升高和降低矩形波的占空比。再按下K1,继续切换至三角波、锯齿波、正弦波.,循环转换。如图5.3和图
34、5.4所示。图5.2 矩形波输出图5.3 三角波输出图5.4 锯齿波输出六、总结和展望经过两个多月的努力,通过在老师和同学们的帮助下基本完成数字频率信号源的设计,并且达到了设计目的。本论文是在了解当数字频率信号源的条件下,自行设计的一个数字频率信号源,主要是了解数字频率信号源的工作原理,工作过程以及相关软、硬件的设计。本论文主要是以MCU控制系统为主控芯片,同时设计相关的各种电路,并且针对性的进行了相应的驱动软件的编写。通过本设计的完成,本人对数字频率信号源的原理有了很深地了解,熟练地掌握了数字频率信号源各部分的工作流程,对单片机有更深的了解和掌握,提高自己的设计水平,熟悉专业软件的应用和C语
35、言的编程,对今后的工作有很大的帮助。通过这次设计,我对所学的专业知识有了更深的理解,尤其是单片机和运放电路方面。做了很多的资料方面的学习,掌握了单片机的基本工作的方法,以及焊接调试的流程。在设计过程中,查阅了大量的中外文资料,解决了不少难题,使我在分析问题解决问题的能力方面有了提升,增强了对学习的信心,并对电子专业产生了浓厚的兴趣,相信这对我以后的工作和学习有重要的帮助。由于时间较短,该设计还存在着一些不足,例如,可以适当的加入声光报警来实现输出波形后的提示,以及可以设计一些通用化的接口以便直接和其它相关测量仪器联合使用,实现分布式、网络化操作等等,这一切都有待于后期的完善。致 谢经过几个月资
36、料的查找和对本毕业设计相关知识的学习,已经完成整个系统的设计,在这个毕业设计过程中曝露出我许多的问题,由于对有些专业知识的了解不够深入,设计有些方面还是不够完善。在姚俊老师的帮助下,解决了遇到的很多设计难题,才使得毕业设计能够顺利的完成。再次对我的指导教师姚俊表示深深的感谢,姚俊老师在忙碌的工作中,对我毕业设计的进行耐心的指导,从设计最初我查找资料的时候,给我很大帮助让我在众多的资料中梳理出需要的知识的重点,在毕业设计的中期我提出系统的设计方案和解决方法,姚俊老师对我的设计方案进行了评估,指导我方案中出现的我的问题,并提出了宝贵的经验。在毕业设计后期对我设计电路和程序进行了指导。使我对单片机硬
37、件电路和软件程序有了更深入的了解。把我繁琐的设计变得简洁、系统功能更合理。深深感受到了姚俊老师对整个系统全局统筹性很强,使我也从中学到很多在课堂上学不到设计经验。在此,对姚俊老师的严谨的治学态度和对学生负责的态度表示深深钦佩。其次对和我一起做毕设的同学表示深深的感谢,当我遇到问题时候,帮助我解决好多我能力之外的困难,如果没有他们的帮助我能这么顺利的完成我毕业设计。最后感谢大学所有任课教师,他们在我在学校的四年里耐心的传授我知识,对我的各个方面能力培养付出太多的艰辛工作。为我在以后的工作中更好的学习打下了坚实的基础,同时感谢所有的同学们正式有你们鼓励和支持,才让我在做毕业设计这段时间不断改掉缺点
38、,努力的把我的毕业设计认真的完成。参考文献1 张丽娜.51单片机系统开发与实践.北京航空航天大学出版社M.20132 李叶紫. MCS-51单片机应用教程M.北京:清华大学出版社,2004.232238.3 程朗.基于8051单片机的双通道波形发生器的设计与实现J.计算机工程与应用, 2012.8:100103.4 姚福安.Proteus基础教程M. 北京:清华大学出版社, 2005.22(5):5758.5 杜华.任意波形发生器及应用J.国外电子测量技术,2005.1:3840. 6 张友德.单片微型机原理、应用与实践M.上海:复旦大学出版社,2010.4044. 7 王静.基于单片机的数据
39、串口通信D.长江大学,20138 张永瑞.电子测量技术基础M.西安:西安电子科技大学出版社,2006.61101. 9 范红刚.51单片机自学笔记:第二版.北京航空航天大学出版社Z. 201310 戴仙金主编 51单片机及其C语言汇编程序开发实例 清华大学出版 社,2008附 录 1 硬件原理图2 源程序#include<reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned inttypedef unsigned char unint8;typedef unsigned
40、char unint16;uchar data disdata16,buf4;uint tvalue,i,k,LL,dat = 0x0000; uchar tflag,tflag1,tflag2; uint TH,TL,TCHA ,HH,HL,HCHA;void key();/*端口定义*/sbit lcdrs=P00;sbit lcdrw=P01;sbit lcden=P02;sbit LCD_psb=P12;uchar i;uchar code a="温度:"/*定义全局变量*/void delay(uint z)uint x,y;for(x=z;x>0;x-)f
41、or(y=110;y>0;y-);void write_com(uchar com)lcdrs=0;lcdrw=0;P2=com;delay(5);lcden=1;delay(5);lcden=0;void write_data(uchar date)lcdrs=1;lcdrw=0;P2=date;delay(5);lcden=1;delay(5);lcden=0;void init_12864()LCD_psb=1;write_com(0x38);write_com(0x0c);write_com(0x01);void pos(uchar x,uchar y) switch(y) ca
42、se 0:y=0x80;break;case 1:y=0x90;break;case 2:y=0x88;break;case 3:y=0x98; write_com(x+y);void init_display_12864()init_12864();i=0;pos(0,0);while(ai!='0') write_data(ai); i+;i=0;pos(0,1);while(bi!='0') write_data(bi); i+;i=0;pos(0,2);while(ci!='0') write_data(ci); i+;i=0;pos(0
43、,3);while(di!='0') write_data(di); i+;/*程序*/*端口定义*/sbit Clk = P13;sbit DATI = P14;sbit DATO = P14;sbit CS = P15;/*定义全局变量*/void delay(uchar x)uchar m,j; for(m=0;m<x;m+) for(j=0;j<108;j+);uchar CH; /通道变量void adc0832(uchar CH)uchar i,test,adval;adval = 0x00;test = 0x00;/初始DATI = 1;Clk = 0
44、;_nop_();CS = 0;_nop_();Clk = 1;_nop_();if ( CH = 0x00 ) /通道选择Clk = 0;DATI = 1; /通道0的第一 Clk = 1;_nop_();Clk = 0;DATI = 0;/通道0的第二位_nop_();Clk = 1;_nop_();elseClk = 0;DATI = 1; Clk = 1;_nop_();/通道1的第一使Clk = 0;DATI = 1; _nop_();Clk = 1;_nop_();/通道1的第二位Clk = 0;DATI = 1;for( i = 0;i < 8;i+ ) /读取 adval
45、<<= 1;_nop_();Clk = 1;_nop_();Clk = 0;if (DATO)adval |= 0x01;elseadval |= 0x00;for (i = 0; i < 8; i+) /读取吿位的倿br> test >>= 1;if (DATO)test |= 0x80;else test |= 0x00;_nop_();Clk = 1;_nop_();Clk = 0;dat = adval;_nop_();CS = 1; DATO = 1;Clk = 1;dat=dat*196;/*程序*/sbit DQ=P16;/ds18b20与单片
46、机连接口 void delay_18B20(unsigned int i)/延时1微秒 while(i-);void ds1820rst()/*ds1820复位*/ unsigned char x=0;DQ = 1; delay_18B20(4); /延时DQ = 0; delay_18B20(100); /精确延时大于480usDQ = 1; delay_18B20(40); uchar ds1820rd()/*读数据*/ unsigned char i=0,dat = 0;for (i=8;i>0;i-) DQ = 0;dat>>=1;DQ = 1; /给脉冲信号if(D
47、Q)dat|=0x80;delay_18B20(10);return(dat);void ds1820wr(uchar wdata)/*写数据*/unsigned char i=0; for (i=8; i>0; i-) DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata>>=1; read_temp()uchar a,b;ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ds1820wr(0x44);ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ ds
48、1820wr(0xbe); a=ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8; tvalue=tvalue|a; if(tvalue<0x0fff)tflag=0; else tvalue=tvalue+1;tflag=1; tvalue=tvalue*(0.625); return(tvalue);/*DHT11*/sbit TRH = P17; unsigned char strDHT1=" "unsigned char strDHT2=" "unint8 TH_data,TL_data,R
49、H_data,RL_data,CK_data;unint8 TH_temp,TL_temp,RH_temp,RL_temp,CK_temp;unint8 com_data,untemp,temp,respond;uchar m;void delay_ms(unsigned char ms) / 毫秒级延时子程序 unsigned char i;while(ms-)for(i = 0; i< 150; i+) _nop_();_nop_();_nop_();_nop_();void delay_us()/5us级延时程序unint8 i;i-;i-; i-;i-;i-;i-;char re
50、ceive()/收发信号检测,数据读取 unint8 i; ST=0;com_data=0; for(i=0;i<=7;i+) respond=2; while(!TRH)&&respond+);delay_us();delay_us();delay_us(); if(TRH) temp=1;respond=2;while(TRH)&&respond+); else temp=0;com_data<<=1;com_data|=temp; return(com_data); void read_TRH() TRH=0;delay_ms(18);
51、/主机拉低18ms TRH=1; /DATA总线由上拉电阻拉高 主机延时20us delay_us(); delay_us(); delay_us(); delay_us(); TRH=1; if(!TRH) respond=2; while(!TRH)&& respond+); respond=2;/判断从机是否发出 80us 的高电平 while(TRH && respond+); /数据接收状态 RH_temp = receive(); RL_temp = receive(); TH_temp = receive(); TL_temp = receive(); CK_temp = receive(); TRH=1;ST=1; /数据校验 untemp=(RH_temp+RL_temp+TH_temp+TL_temp); if(untemp=CK_temp)RH_data = RH_temp;RL_data = RL_temp;TH_data = TH_temp; TL_d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商铺装修合同样本
- 水暖电消防承包合同范本
- 2025农作物种子买卖合同范本
- 柴油运输合同范本年
- 演出化妆服务合同
- 范文二手房买卖定金合同
- 委托合同行纪合同居间合同
- 2025【合同范本】房屋土建施工合同范本
- 2024年中考物理(广州卷)真题详细解读及评析
- 简单的橱柜合同范本
- 消防员证考试题库2000题中级
- 农产品质量安全检测技术
- 【蝉妈妈】2024年抖音电商酒水行业趋势洞察报告
- 海洋垃圾处理行业可行性分析报告
- 公共部门绩效管理案例分析
- 无人机培训计划表
- 2024届高考英语词汇3500左右
- 2024年-2025年海船船员考试-船舶人员管理考试题及答案
- 2025届安徽省皖南八校联盟高二物理第一学期期末统考试题含解析
- 安全开发流程培训文件课件
- 第六章-主成分分析法
评论
0/150
提交评论