图16 电阻-电压变换电路原理图
图16所示电路为电阻测量电路。其中,电阻R13和R14构成一组基准电阻。电路工作时,PNP管Q3的集电极电流IC3是恒定的,R18和R19负责调节IC3的大小。通过接入不同的电阻(R20或R21),可获得不同的倍率的集电极电流IC3,电流通过待测电阻Rx形成电压Vx。通过测量Vx即可获得待测电阻的阻值。经过计算,可知R20分支可测量的最大电阻值为2kΩ,R21分支为20kΩ。而P4端则是作为待测电阻的接口。 3.4.5 模数转换部分
图17 模数转换部分原理图
图17所示为模数转换部分。PCF8591芯片作为ADC芯片,使用I2C总线与单片机通讯,SCL是串行时钟,SDA是串行数据线,输出转换后的数字量。待测模拟量从AIN0进入,其余模拟输入口因本设计不需使用而接地。AGND端是模拟地,接上0Ω电阻,而VDD接上接地电容,有效分割模拟地和数字地,减少高频数字信号的干扰。
16
3.4.6 报警提示部分
3.4.7 单片机最小系统
图18 报警提示部分原理图
声报警。其实质是通过编程使单片机的引脚输出低电平,使Q1导通,蜂鸣器发声。
图19 单片机最小系统
上电复位电路用于单片机复位,配合频率为11.0592MHz的外部震荡电路,作为外部时
如图19所示,本次设计采用STC公司的89C52型单片机作为控制芯片,并采用RC
钟信号,提供单片机片内各种操作的时间基准(张景璐等,2010)。P1.0-P1.3作为按键的
输入线,P1.4及P1.5分别作为ADC芯片I2C总线的时钟线和数据线。P0口作为1602液
图18所示为蜂鸣器驱动电路。当出现测量值超出预定量程时,蜂鸣器会发出“嘀”
17
晶的数据总线,P2.0和P2.1作为1602液晶的控制线,另外P3.7用作控制蜂鸣器。 3.4.8 显示输出部分
图20 显示输出部分原理图
如图20所示,采用1602液晶作为输出显示器,读数更加准确和直观,能显示比数码管更丰富的信息。其中RS和RE为液晶的控制线,DB0-DB7为液晶的数据线,均与单片机的相应I/O口相连。Vo端接上一个10k的电位器再接地,通过调节电位器,可以调节液晶字符显示的明暗度,防止“鬼影”现象的出现。 3.4.9 开关及量程选择部分
图21 开关及量程选择部分原理图
如图21所示,拨码开关S1的左侧三个端口分别接上分压器、分流器、电阻测量电路,使用时拨动不同开关,连通对应的电路,测量不同的物理量。而下面的4个按键,负责通知单片机当前所选的待测物理量及档位,改变液晶显示器数值的输出方式。
18
3.4.10 整体硬件电路
见附录3。 3.5 电路工作过程描述
将相应的控制程序写入单片机是使电路各部分能协调工作,完成既定任务的前提。通过按钮选取要测量的物理值(电压、电流或电阻),然后通过选取合适的量程进行测量,以获得更准确的测量数据。单片机通过I2C总线控制PCF8591芯片,完成A/D转换,并通过该总线读取其输出的数据。单片机根据所选档位和量程对数据进行处理后,送至1602液晶处进行输出。若发生待测信号超出量程的情况,蜂鸣器会立即报警,提示使用者切换更高的量程进行测量。另外,通过单片机的复位按钮,可以对系统进行清零。
4 系统软件设计
4.1 C语言概述
(1)单片机的C语言的特点:
1. 本身不依赖机器硬件系统,方便从其他系统移植程序直接使用(郭天祥,2009); 2. 能方便管理寄存器储存器和数据类型等问题,但对相关的硬件的控制有限; 3. 在较大的程序代码中效率更高,在执行大应用程序时有优势; 4. 程序由若干模块组成,适用于模块化设计和维护;
5. 相比汇编函数,具有良好的可读性和可维护性,减少开发难度;
6. 有丰富的库函数,大大减少用户的编程强度,缩短编程时间及调试时间,提高软件的开发效率;
7. 能在不同类型的机器上使用,具有较好的可移植性。 (2)单片机的C语言与标准C语言的区别:
1. 标准C语言的库函数是按照通用计算机来定义的,而单片机的C语言库函数是按照单片机的应用情况来定义的;
2. 单片机C语言增加了集中针对单片机特有的数据类型,如单片机包含位操作空间和丰富的位操作指令;
3. 单片机C语言的存储模式与单片机的存储器紧密相关。使用不同存储器将会影响程序执行的效率,但标准C语言对存储模式的要求不高;
4. 单片机C语言中有专门的中断函数。 4.2 软件设计思路
19
本系统软件设计的思路是:使用C语言,将各部分的驱动程序(1602液晶、模数转换器、按键、蜂鸣器等)分别编写在不同子文件中,减少主文件的复杂度,增加可读性。然后,在主函数中,先初始化液晶显示器,然后进入大循环。在大循环中,读取模数转换芯片转换后数据,并根据按键的输入情况,确定物理量和量程,如果发生超出量程的情况,调用蜂鸣器进行报警,否则对获取的数据进行一定处理,最后发送至液晶显示器进行输出。 4.3 程序流程图 4.3.1 系统软件总流程图
4.3.2 电压测量流程图
开始 初始化系统 初始化液晶 获取量程信息 开始A/D转换 读取转换数据 处理数据 超限? Y 报警 N 送液晶显示 结束
图22 软件总流程图
20