资源描述
本科毕业论文(设计)(2015 届)用于自动化生产线的频率计设计院 系 电子信息工程学院 专 业 电气工程及其自动化 姓 名指导教师 助教 2015 年 5 月学号:11084411082015 届本科毕业论文(设计)I摘 要数字频率计是一种基本的测量仪器。它被广泛应用于航天、电子、测控等领域,还被应用在计算机及各种数学仪表中。一般采用的是十进制数字,显示被测信号频率。基本功能是测量正弦信号,方波信号以及其他各种单位时间内变坏的物理量。由于其使用十进制数显示,测量迅速精确,显示直观,所以经常被用来使用。本文主要介绍数字频率计的设计和调试,本作品是基于 STC89C52 单片机作为平台,基本原理是通过 STC89C52 单片机进行频率的采集和分析工作,在通过程序使其显示在LCD1602 的液晶显示屏上,通过液晶显示屏,让使用者能够直观的看到当前的输入频率是多少。由于 STC89C52 单片机只能处理数字信号因此系统需要先把信号放大成方波信号,再通过施密特触发器整形方波,又由于单片机能处理的频率有限,所以这次我们先用74HC390 芯片对输入的信号进行了分频,使其降低了 100 倍,才送去给单片机处理,如果频率高于 200KHZ 的时候就计算分频后的频率,得到数据再换算成真实的频率。关键词:单片机; LCD 显示屏;分频器;2015 届本科毕业论文(设计)IIAbstractDigital frequency meter is a basic measuring instruments. It is widely used in aerospace, electronics, measurement and control, etc., are also used in computer and mathematical instrument. Generally using a decimal number, the display of the measured signal frequency. The basic function is to measure sinusoidal signals, square wave signal, and the deterioration of other various physical quantity per unit time. Due to the use of decimal display, fast and accurate measurements, visual display, so often used to use.This paper describes a digital frequency meter design and debugging, this work is based on the platform STC89C52 microcontroller as the basic principle is the collection and analysis of the operating frequency through STC89C52 microcontroller through the program so that it is displayed on the LCD1602 LCD display, through the liquid crystal display, allowing users to visually see how much the current input frequency.Because STC89C52 SCM system can only handle digital signals and therefore need to put a square wave signal is amplified signal, and then through the Schmitt trigger shaping a square wave, and because of the limited frequency microcontroller can handle, so this time we will start with 74HC390 chip input The signal is a frequency, it reduces by 100 times, was sent to the microcontroller processing, frequency divider if the frequency is higher than after 200KHZ when it is calculated to obtain the data and then converted into real frequency.Keywords: SCM; LCD display; divider2015 届本科毕业论文(设计)III目 录摘 要 IAbstractII目 录 III1.绪论 .11.1 研究背景与发展趋势 11.2 研究目的和意义 .11.3 本章小结 .22. 总体方案论证与设计 32.1 主控模块的选型和论证 32.2 显示模块的选型和论证 32.3 放大电路的选型和论证 32.4 系统整体设计概述 43.系统硬件电路设计 .53.1 主控模块 .53.1.1 STC89C52 单片机主要特性 .53.1.2 STC89C52 单片机的中断系统 .83.1.3 单片机最小系统设计 83.2 LCD 液晶显示器简介 83.2.1 液晶原理介绍 83.2.2 液晶模块简介 .93.2.3 液晶显示部分与 STC89C52 的接口 .102015 届本科毕业论文(设计)IV3.3 三极管放大电路设计 .103.4 整形模块设计 .113.4.1 施密特触发器芯片介绍 .113.4.2 74HC14 电路设计 .123.5 分频模块设计 123.5.1 74HC390 芯片介绍 .123.5.2 74HC390 分频电路设计 .134.系统软件设计 .144.1 主程序 144.2 传感器检测子程序 .154.3 显示数据子程序 .164.4 本章小结 .165.系统调试 .185.1 硬件调试 .185.2 软件调试 .196.结论 20附录(A): 系统原理图 22附录(B):系统仿真图 23附录(C):系统 PCB 图 24附录(D):系统源程序 252015 届本科毕业论文(设计)1绪论1.1 研究背景与发展趋势由于当今社会的需要,对信息传输和处理的要求不断提高,对频率的测量的精度也需要更高更准确的时频基准和更精密的测量技术。而频率测量所能达到的精度,主要取决于作为标准频率源的精度以及所使用的测量设备和测量方法。目前,测量频频的方法有直接测频法、内插法、游标法、频差倍增法等等。直接测频的方法较简单,但精度不高。频差倍增多法和周期法是一种频差倍增法和差拍法相结合的测量方法,这种方法是将被测信号和参考信号经频差倍增使被测信号的相位起伏扩大,再通过混频器获得差拍信号,用电子计数器在低频下进行多周期测量,能在较少的倍增次数和同样的取样时间情况下,得到比测频法更高的系统分辨率和测量精度,但是仍然存在着时标不稳而引入的误差和一定的触发误差。在电子系统广泛的应用领域中,到处看见处理离散信息的数字电路。供消费用的冰箱和电视、航空通讯系统、交通控制雷达系统、医院急救系统等在设计过程中都用到数字技术。 数字频率计是现代通信测量设备系统中必不可少的测量仪器,不但要求电路产生频率的准确度和稳定度都高的信号,也要能方便的改变频率。 数字频率计的实现方法主要有:直接式、锁相式、直接数字式和混合式(1)直接式优点:速度快、相位噪声低,但结构复杂、杂散多,一般只应用在地面雷达中。 (2)锁相式优点:相位同步的自动控制,制作频率高,功耗低,容易实现系列化、小型化、模块化和工程化。 (3)直接数字式优点:电路稳定、精度高、容易实现系列化、小型化、模块化和工程化。1.2 研究目的和意义在电子测量领域中,频率测量的精确度是最高的。因此,在生产过程中许多物理量,例如温度、压力、流量、液位、PH 值、振动、位移、速度、加速度,乃至各种气体的百分比成分等均用传感器转换成信号频率,然后用数字频率计来测量,以提高精确度。国际上数字频率计的分类很多。按功能分类,因计数式频率计的测量功能很多,用途很广。所以根据仪器具有的功能,电子计数器有通用和专用之分。一、通用型计数器:通用型计数器是一种具有多种测量功能、多种用途的万能计数器。它可测量频率、周期、多周期平均值、时间间隔、累加计数、计时等;若配上相应插件,就可测相位、电压、电流、功率、电阻等电量;配上适当的传感器,还可进行长度、重量、压力、温度、速度等非电量的测量。二、专用计数器:专用计数器指专门用来测量某种单一功能的计数器。如频率计数器,只能专门用来测量高频和微波频率;时间计数器,是以测量时间为基础的计数器,其测时分辨力2015 届本科毕业论文(设计)2和准确度很高,可达 ns 数量级;特种计数器,它具有特种功能,如可逆计数器、阈值计数器、差值计数器、倒数计数器等,用于工业和自控技术等方面。数字频率计按频段分类:低速计数器:最高计数频率10MHz;中速计数器:最高计数频率 10100MHz;高速计数器:最高计数频率100MHz ;微波频率计数器:测频范围 180GHz 或更高。由于大规模和超大规模数字集成电路技术、数据通信技术与单片机技术的结合,数字频率计发展进入了智能化和微型化的新阶段。其功能进一步扩大,除了测量频率、频率比、周期、时间、相位、相位差等基本功能外,还具有自捡、自校、自诊断、数理统计、计算方均根值、数据存储和数据通信等功能。可见,频率计是很有工业价值的。本作品即为一个基于单片机的数字频率计,它通74HC390 芯片进行分频,克服了单片机难以处理高频信号的困难,并使用LCD1602 液晶显示进行显示。1.3 本章小结本系统设计制作一个基于单片机的频率计。能实现以下几种功能:(1)能够对 1HZ 对 10MHZ 正弦波、三角波、方波信号等周期信号的频率进行测量(2)系统能够把测量信号的频率和周期显示在液晶屏幕上。2015 届本科毕业论文(设计)32. 总体方案论证与设计根据所要实现的功能划分,系统一共需要以下几个模块:主控模块、显示模块、时钟模块、温度检测模块,以下就针对这几个模块的选型和论证进行讨论。2.1 主控模块的选型和论证方案一:采用 MSP430 系列单片机,该单片机是 TI 公司 1996 年开始推向市场的一种16 位超低功耗的混合信号处理器。其内部集成了很多模拟电路、数字电路和微处理器,提供强大的功能。不过该芯片昂贵不适合一般的设计开发。方案二采用 51 系列的单片机,该单片机是一个高可靠性,超低价,无法解密,高性能的 8 位单片机,32 个 IO 口,且 STC 系列的单片机可以在线编程、调试,方便地实现程序的下载与整机的调试。因此选用方案二中的 51 系列单片机作为主控芯片。2.2 显示模块的选型和论证方案一:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较合适,如采用在显示数字显得太浪费,且价格也相对较高,所以不用此种作为显示。方案二:采用 LED 数码管动态扫描, LED 数码管价格虽适中,对于显示数字也最合适,而且采用动态扫描法与单片机连接时,占用单片机口线少。但是由于数码管动态扫描需要借助 74LS164 移位寄存器进行移位,该芯片在电路调试时往往有很多障碍,所以不采用 LED 数码管作为显示。方案三:采用 LCD 液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,对于本设计而言一个 LCD1602 的液晶屏即可,价格也还能接受,需要的借口线较多,但会给调试带来诸多方便。所以本设计中方案三中的 LCD1602 液显示屏作为显示模块。2.3 放大电路的选型和论证方案一:采用集成运放作为放大电路,该电路只需要在外部配置少量电阻电容则能完成放大功能,十分方便设计,但是本设计需要放大 1HZ 到 10MHZ 的信号,通频带比较宽,因此对集成运放的要求较高,一般能处理宽带信号的集成运放成本比较高。方案二:采用三极管或者场效应管作为放大电路,三极管放大电路所需要原件较为简单容易购置,而且电路较为成熟,三极管的价格也十分低廉,而且三极管电路性能优越,是作为一个低成本的放大电路的不二之选。所以本设计中选用三极管为放大电路中使用。2015 届本科毕业论文(设计)42.4 系统整体设计概述本系统以单片机为控制核心,对系统进行初始化,主要完成液晶显示、频率测量、放大整形滤波等功能的控制,起到总控和协调各模块之间工作的作用。放大电路施密特整形电路1 0 0 分频电路主控模块单片机液晶显示模块L C D 1 6 0 2图 2-1 系统结构框图本系统结构如图 2-1 所示,本设计可分为以下模块:三极管放大电路、整形电路、分频电路、液晶模块。下面对各个模块的设计方案逐一进行论证分析。2015 届本科毕业论文(设计)53.系统硬件电路设计3.1 主控模块主控模块模块在整个系统中起着统筹的作用,需要检测键盘,温度传感器等各种参数,同时驱动液晶显示相关参数,在这里我们选用了 51 系列单片机中的STC89C52 单片机作为系统的主控芯片。STC89C52 单片机的基本组成框图见图 3-1。时钟电路R O M / E P R O M / F l a s h 4 K BR A M 1 2 8 BS F R 2 1 个定时个 / 计数器 2C P U总线控制中断系统5 个中断源2 个优先级串行口全双工 1 个4 个并行口X T A L 2 X T A L 1R S TE AA L EP S E NP 0 P 1 P 2P 3V s sV c c图 3-1STC89C52 单片机结构图 3.1.1 STC89C52 单片机主要特性1. 一个 8 位的微处理器(CPU)。2. 片内数据存储器 RAM(128B),用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据等,SST89 系列单片机最多提供 1K 的RAM。3. 片内程序存储器 ROM(4KB),用以存放程序、一些原始数据和表格。但也有一些单片机内部不带 ROM/EPROM,如 8031,8032,80C31 等。目前单片机的发展趋势是将 RAM 和 ROM 都集成在单片机里面,这样既方便了用户进行设计又提高了系统的抗干扰性。SST 公司推出的 89 系列单片机分别集成了16K、32K、64K Flash 存储器,可供用户根据需要选用。4. 四个 8 位并行 IO 接口 P0P3,每个口既可以用作输入,也可以用作输出。5. 两个定时器计数器,每个定时器计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。为方便设计串行通信,目前的 52 系列单片机都会提供 3 个16 位定时器/计数器。6. 五个中断源的中断控制系统。现在新推出的单片机都不只 5 个中断源,例如 SST89E58RD 就有 9 个中断源。7. 一个全双工 UART(通用异步接收发送器)的串行 IO 口,用于实现单片机之间或单机与微机之间的串行通信。8. 片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率为 12MHz。SST89V58RD 最高允许振荡频率达 40MHz,因而大大的2015 届本科毕业论文(设计)6提高了指令的执行速度。 P1.02345/MOSI7CK8RET9XALVNU供图 3-2STC89C52 单片机管脚图3.1.2STC89C52 单片机的中断系统STC89C52 系列单片机的中断系统有 5 个中断源,2 个优先级,可以实现二级中断服务嵌套。由片内特殊功能寄存器中的中断允许寄存器 IE 控制 CPU 是否响应中断请求;由中断优先级寄存器 IP 安排各中断源的优先级;同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。在单片机应用系统中,常常会有定时控制需求,如定时输出、定时检测、定时扫描等;也经常要对外部事件进行计数。STC89C52 单片机内集成有两个可编程的定时/计数器:T0 和 T1,它们既可以工作于定时模式,也可以工作于外部事件计数模式,此外,T1 还可以作为串行口的波特率发生器。3.1.3 单片机最小系统设计 +YHZpFuW-B2015 届本科毕业论文(设计)7图 3-3 单片机最小系统电路图图 3-3 为单片机最小系统电路图,单片机最小系统有单片机、时钟电路、复位电路组成,时钟电路选用了 12MHZ 的晶振提供时钟,作用为给单片机提供一个时间基准,其中执行一条基本指令需要的时间为一个机器周期,单片机的复位电路,按下复位按键之后可以使单片机进入刚上电的起始状态。图中 10K 排阻为 P0 口的上拉电阻,由于 P0 口跟其他 IO 结构不一样为漏极开路的结构,因此要加上拉电阻才能正常使用。3.2 LCD 液晶显示器简介由于本设计中要求显示界面显示一些参数,因此这里选用了 LCD1602 作为界面显示,可以把一些相关的参数进行显示。 3.2.1 液晶原理介绍液晶显示器(LCD) 英文全称为 Liquid Crystal Display,它一种是采用了液晶控制透光度技术来实现色彩的显示器。和 CRT 显示器相比,LCD 的优点是很明显的。由于通过控制是否透光来控制亮和暗,当色彩不变时,液晶也保持不变,这样就无须考虑刷新率的问题。显示接口用来显示系统的状态,命令或采集的电压数据。本系统显示部分用的是 LCD 液晶模块,采用一个 162 的字符型液晶显示模块。 点阵图形式液晶由 M 行N 列个显示单元组成,假设 LCD 显示屏有 64 行,每行有 128 列,每 8 列对应 1 个字节的 8 个位,即每行由 16 字节,共 168=128 个点组成,屏上 6416 个显示单元和显示 RAM 区 1024 个字节相对应,每一字节的内容和屏上相应位置的亮暗对应。一个字符由 68 或 88 点阵组成,即要找到和屏上某几个位置对应的显示 RAM 区的 8 个字节,并且要使每个字节的不同的位为1 ,其它的为0 ,为1 的点亮,为0 的点暗,这样一来就组成某个字符。但对于内带字符发生器的控制器来说,显示字符就比较简单了,可让控制器工作在文本方式,根据在 LCD 上开始显示的行列号及每行的列数找出显示 RAM 对应的地址,设立光标,在此送上该字符对应的代码即可。3.2.2 液晶模块简介LCD1602 液晶模块采用 HD44780 控制器,hd44780 具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L 与单片机 MCU 通讯可采用8 位或 4 位并行传输两种方式,hd44780 控制器由两个 8 位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF ),显示数 RAM(DDRAM),字符发生器 ROMA( CGOROM)字符发生器 RAM(CGRAM),地址计数器 RAM(AC)。IR 用于寄存指令码,只能写入不能读出,DR 用于寄存数据,数据由内部操作自动写入 DDRAM 和 CGRAM,或者暂存从 DDRAM 和 CGRAM 读出的数据,BF为 1 时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM 用来存储显示的字符,能存储 80 个字符码,CGROM 由 8 位字符码生成 5*7 点阵字符 160 中和 5*10 点阵字符 32 种.8 位字符编码和字符的对应关系, CGRAM是为用户编写特殊字符留用的,它的容量仅 64 字节,可以自定义 8 个 5*7 点阵字符或者 4 个 5*10 点阵字符,AC 可以存储 DDRAM 和 CGRAM 的地址,如果地址码随指令写入 IR,则 IR 自动把地址码装入 AC,同时选择 DDRAM 或CGRAM,LCD1602 液晶模块的引脚图如图 3-4 所示。2015 届本科毕业论文(设计)8图 3-4LCD1602 引脚图液晶寄存器选择控制如表 3-1。表 3-1 寄存器选择控制RS R/W 操作说明0 0 写入指令寄存器(清除屏等)0 1 读 busy flag(DB7),以及读取位址计数器(DB0DB6)值1 0 写入数据寄存器(显示各字型等)1 1 从数据寄存器读取数据3.2.3 液晶显示部分与 STC89C52 的接口如图 3-5 所示。用 STC89C52 的 P0 口作为数据线,用 P1.2、P1.1、P1.0 分别作为 LCD 的 EN、R/W、RS 。其中 EN 是下降沿触发的片选信号, R/W 是读写信号,RS 是寄存器选择信号本模块设计要点如下:显示模块初始化:首先清屏,再设置接口数据位为 8 位,显示行数为 1 行,字型为 57 点阵,然后设置为整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位。向 LCD 的显示缓冲区中送字符,程序中采用 2 个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示.首先取一个要显示的字符或数据送到 LCD 的显示缓冲区,程序延时 2.5ms,判断是否够显示的个数,不够则地址加一取下一个要显示的字符或数据。2015 届本科毕业论文(设计)9P1.02345/MOSI67CK8RETXALVNU供+WDBlcd图 3-5LCD1602 与 STC89C52 的接口3.3 三极管放大电路设计 uF图 3-6 三极管放大电路由于单片机只能读取数字信号,当输入的信号比较小的时候单片机不能直接读取,因此这里使用了一级三极管放大电路对输入的信号进行放大,其中电路中的 R4 和 R5 给三极管的基极提供和合适偏置。基极电压可以由以下公式求得。由于三极管的基极和发射极之间的压降为 0.65V,因此发射机的电压可以由以下公式求得:由于 ICIE,IE=Ve/R60.88ma,因此 Vc=VCC-Ie*R3=2.64V。因此三极管放大电路的集电极输出端的直流静态工作点为 2.64V。因为本设计只处理信号,因此三极管放大电路的输入端采用的大电容进行交流耦合进而隔绝交流成分,为了使整个频率计能测量更小幅值的周期信号,这个电路用旁路电容对发射极电阻进行旁路从而提高其交流放大倍数,放大倍数 A 可以由以下公式求得。AR3/(R6/R C4/RC5)其中 RC4为 C4 交流等效阻抗,R C5为 C4 交流等效阻抗。但是放大倍数最终会受限于三极管的 (三极管的电流放大系数)。因此最终放大倍数会限制在数百倍,由于这里只需要把输入的周期信号放大到足够大就可以通过整形电路整形2015 届本科毕业论文(设计)10成方波,因此这里放大倍数不需要很精确,放大后的波形出现截止失真也不会对测量结果造成。3.4 整形模块设计3.4.1 施密特触发器芯片介绍施密特触发器也有两个稳定状态,但与一般触发器不同的是,施密特触发器采用电位触发方式,其状态由输入信号电位维持;对于负向递减和正向递增两种不同变化方向的输入信号,施密特触发器有不同的阈值电压。门电路有一个阈值电压,当输入电压从低电平上升到阈值电压或从高电平下降到阈值电压时电路的状态将发生变化。施密特触发器是一种特殊的门电路,与普通的门电路不同,施密特触发器有两个阈值电压,分别称为正向阈值电压和负向阈值电压。在输入信号从低电平上升到高电平的过程中使电路状态发生变化的输入电压称为正向阈值电压,在输入信号从高电平下降到低电平的过程中使电路状态发生变化的输入电压称为负向阈值电压。正向阈值电压与负向阈值电压之差称为回差电压。原理示意图如图 3-7 所示。图 3-7 施密特触发器原理示意图74HC14 是一款高速 CMOS 器件,74HC14 引脚兼容低功耗肖特基 TTL(LSTTL)系列。74HC14 遵循 JEDEC 标准 no.7A。74HC14 实现了 6 路施密特触发反相器,可将缓慢变化的输入信号转换成清晰、无抖动的输出信号。其芯片引脚图如图3-8 所示,芯片真值表如图 3-9 所示。图 3-8 74HC14 芯片引脚图Input 输入 output 输出A YL HH L2015 届本科毕业论文(设计)11图 3-9 74HC14 真值表3.4.2 74HC14 电路设计由于三极管放大电路输出的信号不是标准的方波信号,存在着上升沿不够陡峭,波形类似于正弦波等问题,为了使单片机对信号更好的采集,这里使用了施密特触发器 74HC14 对三极管放大电路输出的信号进行整形。电路图如图 3-10 所示。 1AY23456GND7890VCUH+图 3-10 施密特触发器电路原理图其中输入信号从芯片的 1 号脚输入,74HC14 本身是一个芯片内部带有 6 个施密特触发器,我这里为了充分利用芯片使用了其中三个,实际上可以只使用一个。整形后的信号从芯片的 6 号脚输出。3.5 分频模块设计3.5.1 74HC390 芯片介绍分频电路一般采用十进制计数器如 74HC290、74HC390 等来实现时间计数单元的计数功能。本次设计中选择 74HC390。由其内部逻辑框图 (如图 3)可知,其为双 2-5-10 异步计数器,并每一计数器均有一个异步清零端(高电平有效)。由于我们要设计的是 100 分频电路,因此 74HC390 内部两个计数器都用上,分别都设置成 10 计数器。图 3-11 74HC390 内部逻辑框图3.5.2 74HC390 分频电路设计2015 届本科毕业论文(设计)12由于单片机运行速度有限,单片机运行一条基础指令需要 1 个机器周期即 12个是时钟周期,换算成时间为 1us。因此当频率过高的时候单片机就不能很精确的换算出频率。为了解决这个问题,这设计加入了一个 100 分频的计数器。当频率高于 200KHZ 的时候单片机计算分频后的信号,当频率低于 200KHZ 的时候计算分频前的信号。这样高低搭配可以扩大单片机的测量频率。最终换算出其真实对应的频率并在液晶上显示。其中电路图如图 3-12 所示。CP0MR2Q34567GND89VUH+图 3-12 74HC390 分频电路原理图2015 届本科毕业论文(设计)134.系统软件设计4.1 主程序单片机上电后会先进行一个初始化把设置的变量的值清 0,然后开启定时器首先对 100 分频后的输入信号进行 1S 内计数,当测量到频率大于 200KHZ 的时候,单片机会显示出当前测量的频率和周期,然后进行下一次计数,当测量到的频率少于 200KHZ 的时候,单片机会重新采集分频前的数据,把测量到的数据显示出来,然后再进入到下一次的计数。2015 届本科毕业论文(设计)14系统初始化开始液晶初始化开启定时器 ,定时 1 S对分频前输入信号的脉冲进行计数1 S 时间是否到了 ?测量频率是否大于 2 0 0 K H Z ?对分频后输入信号的脉冲进行计数1 S 时间是否到了 ?利用液晶显示频率和周期利用液晶显示频率和周期否是否是是否4-1 系统主流程图4.2 传感器检测子程序首先先调用液晶自定义的字库,设置好 DDRAM 地址后在第一行显示,根据程序中的数据设置显示数据的首地址并设置循环量,在循环过程中不断的取字符代码直到终止,第二行的显示过程同一行的显示过程一样,两行显示完毕后便结束子程序。2015 届本科毕业论文(设计)15调用自定义字库设置 D D R A M 地址 , 在第一行显示设置显示数据首地址循环量设置取字符代码循环完 ?设置 D D R A M 地址 , 在第一行显示设置显示数据首地址循环量设置取字符代码循环完 ?结束图 4-2 LCD1602 初始化子函数流程图4.3 显示数据子程序显示数据子程序的主要功能就是把超声波模块测量后的结果经单片机处理完毕的距离显示在 LCD 液晶显示屏上。显示数据子程序流程图如图 4.2 所示。2015 届本科毕业论文(设计)16开始数据传送显示数据结束YN图 4.2 显示数据子流程图4.4 本章小结软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来了。软件任务分析环节是为软件设计做一个总体规划。从软件的功能来看可分为两大类:一类是执行软件,它能完成各种实质性的功能,如测量,计算,显示,打印,输出控制和通信等,另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色的软件。这两类软件的设计方法各有特色,执行软件的设计偏重算法效率,与硬件关系密切,千变万化。软件任务分析时,应将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义(输入输出定义)。在各执行模块进行定义时,将要牵扯到的数据结构和数据类型问题也一并规划好。各执行模块规划好后,就可以监控程序了。首先根据系统功能和键盘设置选择一种最适合的监控程序结构。相对来讲,执行模块任务明确单纯,比较容易编程,而监控程序较易出问题。这如同当一名操作工人比较容易,而当一个厂长就比较难了。软件任务分析的另一个内容是如何安排监控软件和各执行模块。整个系统软件可分为后台程序(背景程序)和前台程序。后台程序指主程序及其调用的子程序,这类程序对实时性要求不是太高,延误几十 ms 甚至几百 ms 也没关系,故通常将监控程序(键盘解释程序),显示程序和打印程序等与操作者打交道的程序放在后台程序中执行;而前台程序安排一些实时性要求较高的内容,如定时系统和外部中断(如掉电中断)。也可以将全部程序均安排在前台,后台程序为“使系统进入睡眠状态”,以利于系统节电和抗干扰。 2015 届本科毕业论文(设计)175.系统调试5.1 硬件调试频率计的电路较为复杂,涉及的模块比较多,其中包含三极管放大模块,整形模块,单片机最小系统模块,液晶模块和分频模块,因此对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺破带有包皮的导线,则会对电路造成短路现象。 在制作硬件电路之前,我们先根据实际需要的功能划分硬件模块,并且在 PROTEL 里面画出其硬件原理图和 PCB 图,检查无误后开始在万用板上焊接。在本频率计的硬件调试中遇到了很多的问题。回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:问题 1:一开始三极管放大电路总是不能放大交流信号,输出总是一个直流电压解决:经过查找相关资料,发现三极管的 1 脚和 3 脚焊接反了刚好转了 180度,改正后便可正常工作。问题 2:开始的时候液晶屏幕总是显示方格,不能正常显示内容解决: 经过查找芯片手册,知道 LCD1602 有一个管脚是专门负责调解对比度的,一开始的时候直接接高电平因此不能正常显示,后来因引脚连接到一个电位计的中间抽头,通过电位器就可以改变液晶的对比度。2015 届本科毕业论文(设计)185.2 软件调试频率计系统是一个比较复杂的数字型系统,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。首先为了更好的测试效果,我最开始是直接在 PROTUES 软件下进行仿真,在确定无误后,再把程序烧录到实物中运行。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件上的各种问题。在软件的调试过程中主要遇到的问题如下:问题:烧入程序后,LCD 液晶显示闪动,而且亮度不均匀。解决:首先对调用的延时进行逐渐修改,可以解决显示闪动问题。其次,由于本作品使作动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在反回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。2015 届本科毕业论文(设计)196.结论通过这次毕业设计,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起。经过我长时间的设计及调试,本系统基本能实现频率计系统的所有功能。不足之处有:1.硬件的稳定性有待进一步提高 2.系统界面人性化还不足。我的综合设计主要涉及硬件和软件两方面的内容,通过这些我的硬件和软件开发能力都获得了提高。首先硬件方面,基本了解了电子产品的开发流程和所要做的工作。基本掌握了 Protel99SE 原理图的方法,并设计了一个单片机最小系统。通过开发板的设计和硬件搭建的过程,使我对 51 系单片机的接口有了更深层次的理解,熟悉了一些单片机常用的外围电路引脚和连接方法,如 LCD 液晶等。并且我学会了分析问题解决问题的能力,加深了对所学理论知识的理解和运用。我的动手能力得到了很大的提高,创新意识得到了锻炼。2015 届本科毕业论文(设计)20参考文献1 彭伟.单片机 C 语言程序设计实训 100 例.电子工业出版社.2009 年2 吴运昌模拟电子线路基础广州:华南理工大学出版社,2004 年3 阎石数字电子技术基础北京:高等教育出版社,1997 年4 张晓丽等数据结构与算法北京:机械工业出版社,2002 年5 马忠梅等 ARM unsigned char time;unsigned int count;unsigned int count1;/端口及函数说明-sbit LCD_RS=P10; /片选信号 sbit LCD_RW=P11; /读写信号 sbit LCD_E=P12; /使能信号 #define LCD_DB P0 /数据信号 unsigned char character10=0;/在屏幕上显示的字符串 unsigned char character_1=“fre= Hz“;unsigned char FLAG = 0;void LCD_init(void);/初始化函数void LCD_write_command(unsigned char command);/写指令函数void LCD_write_data(unsigned char dat);/写数据函数void LCD_disp_char(unsigned char x,unsigned char y,unsigned char dat);/在某个屏幕位置上显示一个字符,X(0-15),y(1-2)void delay_n40us(unsigned int n);/延时函数void timer_init(); /中断初始化函数2015 届本科毕业论文(设计)25/-void delay_n40us(unsigned int n) /延时函数unsigned int i;unsigned char j; for(i=n;i0;i-)for(j=0;j2;j+); void delay_1s()unsigned int i,j;for(i = 0;i100;i+)for(j = 0;j1000;j+); void LCD_init(void) /液晶初始化函数LCD_write_command(0x38);/设置 8 位格式,2 行,5x7LCD_write_command(0x38);/设置 8 位格式,2 行,5x7LCD_write_command(0x38);/设置 8 位格式,2 行,5x7 切记要写三遍! LCD_write_command(0x0c);/整体显示,关光标,不闪烁LCD_write_command(0x06);/设定输入方式,增量不移位LCD_write_command(0x01);/清除屏幕显示delay_n40us(100);/清屏延时 void LCD_write_command(unsigned char dat) /写命令函数LCD_DB=dat;LCD_RS=0;/指令LCD_RW=0;/写入LCD_E=1; /使能LCD_E=0;delay_n40us(1);/写命令延时void LCD_write_data(unsigned char dat) /写数据函数LCD_DB=dat;LCD_RS=1;/数据LCD_RW=0;/写入
展开阅读全文