基于单片机的超声波液位测量系统本科生毕业设计(论文) 下载本文

本科生毕业设计(论文)

不同的功能模块,分别指定相应的入口参数和出口参数,对于一些要重复调用的程序一般把其编成函数,这样可以减少程序代码的长度,又便于整个程序的管理,还可增强可读性和移植性。

应用C语言的优越性:

(1)不懂得单片机的指令集,也能够编写完美的单片机程序;

(2)无须懂得单片机的具体硬件,也能够编出符合硬件实际的专业水平的程序; (3)不同函数的数据实行覆盖,有效利用片上有限的RAM空间;

(4)程序具有坚固性: 数据被破坏是导致程序运行异常的重要因素。C语言对数据进行了许多专业性的处理,避免了运行中间非异步的破坏;

(5)C语言提供复杂的数据类型 (数组、结构、联合、枚举、指针等),极大地增强了程序处理能力和灵活性;

(6)中断服务程序的现场保护和恢复,中断向量表的填写,是直接与单片机相关的,都由C编译器代办;

(7)提供常用的标准函数库,以供用户直接使用;

(8)头文件中定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化产品的开发;

(9)有严格的句法检查,错误很少,可容易地在高级语言的水平上很快被排除。 2.定时控制部件

定时控制部件起着控制器作用,由定时控制逻辑、指令寄存器(IR)和振荡器(OSC)等电路组成。指令寄存器(IR)用于存放从程序存储器中取出的指令码,定时控制逻辑用于对IR中指令码译码,并在OSC配合下产生指令的时序脉冲,以完成相应指令的执行[18]。

定时控制部件起着控制器作用,由定时控制逻辑、指令寄存器(IR)和振荡器(OSC)等电路组成。指令寄存器(IR)用于存放从程序存储器中取出的指令码,定时控制逻辑用于对IR中指令码译码,并在OSC配合下产生指令的时序脉冲,以完成相应指令的执行。

OSC是控制器的心脏,能为控制器提供时钟脉冲。引脚XTAL1为反向放大管Q4的输入端,XTAL2为Q2的输出端。只要在引脚XTAL1与XTAL2上外接定时反馈回路,OSC振荡器产生矩形时钟脉冲序列,其频率是单片机的重要性能指标之一。时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。而且也决定着系统时钟和定时器时钟与频率。

3.中断系统

计算机中的中断是指CPU暂停原程序执行转而为外部设备服务,并在服务完后回到原程序执行的过程。中断系统是指能够处理上述中断过程所需要的那部分电路。

27

本科生毕业设计(论文)

CIP-51 包含一个扩展的中断系统,支持20 个中断源,每个中断源有两个优先级。中断源在片内外设与外部输入引脚之间的分配随器件的不同而变化。每个中断源可以在一个SFR 中有一个或多个中断标志。当一个外设或外部源满足有效的中断条件时,相应的中断标志被置为逻辑?1‘。

如果中断被允许,在中断标志被置位时将产生中断。一旦当前指令执行完,CPU 产生一个LCALL到一个预定地址,开始执行中断服务程序(ISR)。每个ISR 必须以RETI 指令结束,使程序回到中断前执行完的那条指令的下一条指令。如果中断未被允许,中断标志将被硬件忽略,程序继续正常执行。中断标志置1 与否不受中断允许/禁止状态的影响。

每个中断源都可以用一个SFR (IE-EIE2)中的相关中断允许位允许或禁止,但是必须首先置?1‘EA 位(IE.7)以保证每个单独的中断允许位有效。不管每个中断允许位的设置如何,清?0‘EA 位将禁止所有中断。

注:任何清除EA 位的指令后面应立即跟随一条具有2 或多字节操作码的指令。例如:

// 在?C‘语言程序中: EA = 0 ; // 清除EA 位

EA = 0 ; // … 跟随一条2 字接操作码的指令 // 在汇编语言程序中: CLR EA ; 清除EA 位

CLR EA ; … 跟随一条2 字接操作码的指令

如果在―CLR EA‖操作码(或任何清除EA 位的指令)的执行期间产生了一个中断,并且该指令的后面是一条单周期指令,则中断可能被响应。但是在中断服务程序中读EA 位时将返回?0‘值。当―CLR EA‖操作码后面是一条多周期指令时,则中断不会被响应。

某些中断标志在CPU 进入ISR 时被自动清除。但大多数中断标志不是由硬件清除的,必须在 ISR 返回前用软件清除。如果一个中断标志在CPU 执行完中断返回(RETI)指令后仍然保持置位状态,则会立即产生一个新的中断请求,CPU 将在执行完下一条指令后重新进入该ISR。

(1) MCU 中断源和中断向量

MCU 支持20 个中断源。软件可以通过将任何一个中断标志设置为逻辑?1‘来模拟一个中断。如果中断标志被允许,系统将产生一个中断请求,CPU 将转向与该中断标志对应的ISR 地址。表4.2给出了MCU 中断源、对应的向量地址、优先级和控制位一览表。

(2) 外部中断

28

本科生毕业设计(论文)

两个外部中断源(/INT0和/INT1)可被配置为低电平触发或下降沿触发输入,由 IT0(TCON.0和 IT1(TCON.2)的设置决定。IE0(TCON.1)和 IE1(TCON.3)分别为外部中断/INT0 和/INT1的中断标志。如果/INT0 或/INT1 外部中断被配置为边沿触发,CPU 在转向 ISR 时将自动清除相应的中断标志。当被配置为电平触发时,中断标志将跟随外部中断输入引脚的状态,外部中断源必须一直保持输入有效直到中断请求被响应。在 ISR返回前必须使该中断请求无效,否则将产生另一个中断请求。

中断优先级

每个中断源都可以被独立地编程为两个优先级中的一个:低优先级或高优先级。一个低优先级的中断服务程序可以被高优先级的中断所中断,但高优先级的中断不能被中断。每个中断在 SFR(IP-EIP2)中都有一个配置其优先级的中断优先级设置位,缺省值为低优先级。如果两个中断同时发生,具有高优先级的中断先得到服务。如果这两个中断的优先级相同,则由固定的优先级顺序决定哪一个先得到服务 。

中断响应时间

中断响应时间取决于中断发生时 CPU的状态。 中断系统在每个系统时钟周期对中断标志采样并对优先级译码。最快的响应时间为 5个系统时钟周期:一个周期用于检测中断,4个周期完成对 ISR的长调用(LCALL) 。如果中断标志有效时 CPU 正在执行 RETI 指令,则需要再执行一条指令才能进入中断服务程序。因此,最长的中断响应时间(没有其它中断正被服务或新中断具有较高优先级)发生在 CPU 正在执行 RETI指令,而下一条指令是 DIV 的情况。在这种情况下,响应时间为 18 个系统时钟周期:一个时钟周期用于检测中断,5 个周期执行RETI,8个周期执行DIV 指令,4个周期完成对 ISR的长调用(LCALL) 。如果CPU正在执行一个具有相同或更高优先级的中断的 ISR,则新中断要等到当前ISR 执行完(包括 RETI和下一条指令)才能得到服务。

4.3 系统软件设计框图

根据以上所述系统硬件设计和所完成功能,系统软件需要实现以下功能: 1.信号控制

在系统硬件中,己经完成了超声波发射驱动电路、回波检测电路的设计。在系统软件中,要完成发射脉冲信号、采集回波信号。

2.数据存储

为了得到发射信号与接收回波间的时间差,要读出此刻计数器的计数值,然后存储在RAM中,而且每次发射周期的开始,需要对计数器清零。

3.信号处理

RAM中存储的计数值并不能作为距离值直接显示输出,因为计数值为十六进制

29

本科生毕业设计(论文)

数,先要将十六进制数转换为十进制数,然后根据计数值与实际距离的转换公式计算出距离值。

软件分为两部分,主程序和中断服务程序。如图4.3图4.31,图4.32 所示。主程序完成初始化工作。如图4.3所示为系统的主程序流程。

开始 程序初始化 定时中断子程序 否收到回波 结束

是 外部中断子程序 图4.3 主程序流程图

定时中断服务子程序完成超声波的发射和接收,外部中断服务子程序主要完成时间值的读取、距离计算、结果的输出等工作。程序流程图为图4.4,图4.5

30