3.7 报警电路的设计
报警电路如下图3-19。
工作的过程是:经过蜂鸣器链接到9018的集电极,如果检测到信号太低或者太大,单片机代开SP引脚,打开3极管,驱动蜂鸣器开始报警。
蜂鸣器作为3极管的集电极负载,当VT导通的时候,蜂鸣器发出叫声;VT不接通的时候,蜂鸣器默声。R是限流电阻。
图3-19 报警电路
4 程序的设计
软件设计主要包含三个部分工作:数据处理、模拟开关实现量程的自动转换,还有显示电压的真有效值计算。该设计的具有3个量程范围,具有量程自动转换能力;数据处理是把A/D变换之后的浮点数转换为字符型的数组;液晶显示部分就是把处理后的结果电压的真有效值传输到液晶显示器上。主要的流程图见附页部分。
4.1 量程自动变换程序设计
本设计共设3个量程转换:0V-100mV、100mV-1V、1V-10V。通过单刀八掷模拟开关CD4051来进行量程切换因为C接地了,所以不用考虑C引脚了。因为输入信号不知道为了避免电路被烧毁,设定的刚开始的量程应该是最大量程,也就是BA:10。
表4-1 量程变换控制
|
OUT |
|
V_ |
|
NC |
图4-1 量程转换流程图
4.2 数据处理程序设计
|
单 片 机 |
![]() |
![]() |
||||
|
电源电路 |
|
振荡电路 |
图4-2 判断浮点数位数流程图
LCD1602显示的数据是字符型数组,所以单片机要把输入的A/D变换后需要显示出来的浮点型的数据变换为字符型数组在LCD1602显示出来。通过A/D变换后的数据是浮点型的实数,在经过编写一个浮点数变换字符型数据ASCII码的子函数来实现数据的处理。数据处理程序的流程图如图 4-2、4-3。
图4-3 为浮点数变换为字符型数组的函数流程图。转换函数是把待转换数的每个位都分离出来,构成一个字符型数组,然后再LCD上显示出来。
在C语言中,浮点数的分离是经过运算算法实现的,待转换数经过除数10000、1000、100、10、1五次运算得出来的字符型数组。被10000除后,可得到了万位上的数字,以此类推被1000除得到千位上的数字,然后分别获得百位、十位、个位上的相应位置的数,吧这些数分别与DXO4相加就能得到相应的ASCII码了。然后通过LCD1602显示出来。
寄存器 |
内容 |
寄存器 |
内容 |
PC |
00H |
TOMD |
00H |
A |
00H |
TCON |
00H |
B |
00H |
TH0 |
00H |
PSW |
00H |
TL0 |
00H |
SP |
07H |
TH1 |
00H |
DPTR |
0000H |
TL1 |
00H |
P0-P3 |
OFFH |
SCON |
00H |
IP |
(XXX00000)B |
SBUF |
不变 |
IE |
(0XX00000)B |
PCON |
(0XXXXXX)B |
|
调整元件 |
|
取样回路 |
![]() |
|||
![]() |
|||
图4-3字符转换函数流程图
4.3 液晶显示模块程序的设计
液晶显示模块程序主要有初始化函数、送命令字控制字函数、送显示数据函数和送多个待字显示字符构成。
下面4-4是液晶显示的流程图
![]() |
BA |
00 |
01 |
10 |
11 |
量程 |
0V-100mV |
100mV-1V |
1V-10V |
无效 |
![]() |
|
取数据 |
。
图4-4 液晶显示流程图
液晶显示了二行十六个字符,有八位数据总线D0-D7,和R/S、R/W、EN三个控制引脚,标准电压是5V,并且能调节字符的对比度和背景灯光。
液晶显示有2个寄存器,一个为数据寄存器,另一个是命令寄存器。每个1602的特点是:软件编程时先写命令字,再写数据。
5 系统调试
下面是软件编写、软件调试中大方法。
5.1软件调试
本系统软件部分包含液晶显示、数据处理、量程转换等。程序用的是C语言,软件用的是uvision4编写的,并且最终能通过编译没有错误。
总结
通过3个月的对基于AD637为基础的交流毫伏表的制作,能将书本上学习得知识拿来用,能初步的进行设计电路,虽然遇到了很多困难但是通过对老师同学的询问,自己查阅资料,解决了这些问题,这个过程中对自己提高很大。在现在就业困难情况下,增加自身能力的不仅仅是一个毕业证,更为重要的是能适应公司的需求,有较好的动手能力。这次设计大大增加了我对电子电路的信心,培养了很大的兴趣。
在本次设计电路的过程中,遇到了很多问题,寻找了很多解决方法,最终解决了这些问题。刚开始遇到不明白的问题时询问了一些能力较强的同学,然后自己在网上再查查资料,明白了怎么解决。从基于AD637交流毫伏表的设计过程中也明白了单片机开发的一些大致规律:首先要了解器件的含义,其次画出电路的原理图。从而让我在单片机领域更进一步。然而在软件编程过程中也存在很大不足,程序编写和调试遇到了很多问题,让我认识到了自己的差距,知道了理论和实践还是有很大的差距。让我明白了实践才能检验真理。希望自己以后学习和实践一起进行,弥补自己的不足。