基于单片机的数字电容测量毕业论文内容摘要:

复位引脚。 时钟在单片机中非常重要,单片机各功能部件的运行都是以时钟频率为基准。 时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。 常用的时钟电路有两种方式,一种是内部时钟方式,另一种为外部时钟方式。 AT89C51 单片机内部有一个用与构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚 XTAL1,输出端为引脚 XTAL2。 这两个引脚接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器电路。 电路中的电容 C1 和 C2 典型值 通常选择为 30PF 左右。 对外接电容的值虽然没有严格的要求,但是电容的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。 晶体的振荡频率的范围通常是在 — 12MHz 之间。 晶体的频率越高,则系统的时钟频率也就越高,单片机的运行速度也就越快。 为了提高温度稳定性,应采用温度稳定性能好的 NPO 高频电容。 AT89C51 单片机常选择振荡频率 6MHz 或 12MHz 的石英晶体。 2 系统硬件电路设计 9 测量电路 555 测量电路 图 测量电路 根据 RC 暂态电路理论可知 , TW 的时间宽度计算公式为: TW = ln3RCX = 1. 1RCX ( ) 由该公式可知 ,单稳态的暂态 1 持续时间与待测电容 CX 的容量成正比。 把输出信号 VO 送到单片机的 INT0 引脚 ,控制定时器 0 计算出暂态 1 期间的标准时钟个数 , 就可实现脉冲宽度测量 , 从而计算出电容容量。 在 555 芯片输出方波后,由于硬件的原因,输出的方波会有很多毛刺,为了去除这些毛刺本设计中使用了一个两输入与门( 74HC08),让信号通过74HC08 后会使输出的波形毛刺减少 很多,使单片机的测量结果变得精确。 2 系统硬件电路设计 10 按键选择量程 电路 按键是实现人机对话的比较直观的接口,可以通过按键实现人们想让单片机做的不同的工作。 键盘是一组按键的集合,键是一种常开型开关,平时按键的两个触点处于断开状态,按下键是它们闭合。 键盘分编码键盘和非编码键盘,案件的识别由专用的硬件译码实现,并能产生键编号或键值的称为编码键盘,而缺少这种键盘编码电路要靠自编软件识别的称为非编码键盘。 在单片机组成的电路系统及智能化仪器中,用的更多的是非编码键盘。 图 26 就是一种比较典型的按键电路,在按键没有按下的时候,输 出的是高电平,当按键按下去的时候,输出的低电平。 继电器控制电路 在大型仪器仪表系统中 ,经常要用到伺服电机、步进电机、各种电磁阀、泵等驱动电压高且功率较大的器件。 功率电子电路大多要求具有大电流输出能力 ,以便于驱动各种类型的负载。 功率驱动电路是功率电子设备输出电路的一个重要组成部分。 本电路由 ULN2020a 高压大电流达林顿晶体管来控制继电器 ,以满足继电器驱动需较大电流的要求。 ULN2020a能够同时驱动 7组高压大电流负载 ,解决了单片机输出电流小,难以控制继电器的问题。 如图 所示,单片通过机检测 按键,确定那个键被按下,然后通过单片机的 ~ 口控制 ULN2020A,驱动相应的继电器闭合,以此来控制 555 测量电路中的电阻从而改变测量电容的量程。 具体原理在软件算法设计上介绍。 按键开关 继电器 相应电阻 测量范围 SWITCH1 RL1 10μF~500μF SWITCH2 RL2 1μF~50μF SWITCH3 RL3 ~5μF SWITCH4 RL4 772KΩ 100pF~ SWITCH5 RL5 50pF~500pF3 系统软件设计 11 液晶显示电路 图 LCD显示电路 如图 所示,本显示电路 P0 口接上拉电阻与 lcd1602 的 D0D7 相 连,LCD1602 的 1 脚和 3 脚接一个 1K 的可调电阻,用于调节 LCD 的对比度。 我选用的是 16 脚带背光的 LCD,在 Proteus 里面没有该引脚,在 ares 中绘制 PCB封装时,我将其加上了。 实际电路是第 15 引脚串联了一个 10 欧姆的电阻与 +5V电源相连接,第 16 引脚与接地端相连接。 单片机的 、 、 分别与LCD 的 4, 5, 6 引脚相连,分别控制 LCD 的寄存器选择段,读写信号端,使能端相连接,与 D0D7 相结合,控制 LCD 的各种功能。 3 系统软件设计 程序设计算法设计 整个程序设计过程中遇到的最 大的问题的如何根据测量到的方波的频率来计算所测量的电容的大小。 在前面的介绍中我们知道: 555 时基芯片的输出频率跟所使用的电阻 R 和电容 C 的关系是: f=( R*Cx)。 又因为 T=1/f,所以 T=R*Cx/ () 即: 3 系统软件设计 12 Cx=T*() 如果单片机采用 12M 的晶振,计数器 T0 的值增加 1,时间就增加 1μ S ,我们采用中断的方式来启动和停止计数器 T0,中断的触发方式为脉冲下降沿触发,第一次中断到来启动 T0,计数器的值为 N1,第二次中断到来停止 T0,计数器器的值为 N2,则测量方波的周期为 T=( N2N1) *1us,如何开始时刻计数器的值 N1,则 T=N*106 简单时序图如图 31 所示。 图 时序图 则: 60 .7 7 2* * 1 0CN R  () 单片机的计数器的值 N=065535,为了测量的精度, N 的取值一般在100~5000,当电阻 R 越大,电容 C 的值就越小。 我们取不同的电阻值,就得到不同的电容测量的量程。 第一档: R1= C=100N *106*10 C=100N *10μF 10μF~500μF 第二档: R1= C=100N *106 C= 100N *1μF 1μF~50μF 第三档: R1= C= 100N *102*106 C= 100N *102*1μF ~5μF 第四档: R1=772KΩ C= 100N *104*106 C= 100N *104*1μF 100pF~ 第五档: R1= C=100N *105*106 C=100N *105*1μF 50pF~500pF 程序流程图设计 流程图是一种传统的算法表示法,它利用几何图形的框来代表各种不同性质的操作,用流程线来指示算法的执行方向。 由于它简单直观,所以应用广泛,特别是在早期语言阶段,只有通过流程图才能简明地表述算法,流程图成为程序员们交流的重要手段。 3 系统软件设计 13 主程序流程图 错误 !未找到引用源。 图 主程序流程图 本程序主要是通过测量 555 发出脉冲的宽度来计算脉冲的周期,通过两次中断来计算脉冲的宽度。 因为不同量程对应的算法不一样,因此要先检测量程,再进行计算。 中断程序流程图 错误 !未指定书签。 图 中断程序流程图 如图 所示,本中断程序 选用外部中断 0,即 void int0(void) interrupt 0。 主程序在初始化的时间已经开启总中断,并开启了外部中断即 IE=0x81。 并且在初始化的时间设置计数器的工作方式,设置外部中断触发方式为下降沿触发,这样可以使 555 发出的方波在相邻的下降沿之间触发中断,计算 555 发出方波的周期,从而计算电容的大小。 对应的中断程序为 TMOD=0x09。 IT0=1。 由 于T_flag 在初始化的时间设置为 0,因此只要检测到 555 发出方波的下降沿就能触发中断,即 if(T_flag==1) {TR0=1。 }。 然后通过计数等待下一次中断。 当再次间的放到 555 发出方波的下降延时,停止 T0。 然后关闭中断,关闭 555,将 T0的计数赋值给 N,然后对计数器清零。 LCD 显示流程图 错误 !未指定书签。 图 LCD显示流程图 图 程序用到了很多延时,是因为 LCD 处理速度慢于单片机的缘故。 每执行一个指令,单片机都要等一等 LCD。 3 系统软件设计 14 按键选择量程程序流程图 错误 !未找到引用源。 图 按键选择量程程序流程图 错误 !未找到引用源。 检测量程时,主要是通过 P2 口的几个按键。 在这里按键程序我写到了前面,因为只有先通过检测按键,单片机才能控制继电器调到指定量程,进而才能使555 发出在规定范围内的方波。 同时,在计算电容大小时,又要检测量程,以使单片机跳转到对应的算法程序上,使计算结果正确的显示出来,这一部分在主程序中执行。 图 是通功按键控制继电器选择量程的子程序流程图。 4 PCB 设计 本次做毕业设计,在 PCB 设计上浪费了较长的时间。 proteus 不仅具有仿真功能,而且具有 PCB 设计功能,这样直接可以将仿 真好的原理图文件生成 PCB网络连接图,这样免去了再次画原理图的麻烦。 当然了,在工业上,由于各大国内厂商基本上只认 Protel 做的板子, Proteus ares 自然也就没有那么多人去注意了。 Protel 是 Altium公司在 80 年代末推出的 EDA 软件,目前已经发展到 altium designer 2020,而国内很多 PCB 厂商还只能识别 Protel99 设计的板子,这也凸显了国内 PCB 行业较落后的现状。 元器件的封装设计 在设计 PCB 时,首先要做的是绘制库中没有的元器件的封装。 由于第一次使用 ares,很多 功能都不是很懂,很多原件封装都要自己创建。 在这里要提一下 LCD1602,由于库中 LCD1602 的封装为 14 引脚,我买的是 16 引脚的,而且库中封装的排列也不一致,于是,我便自己设计了 LCD 的封装。 首先查阅相关资料,找出 LCD 元器件的规格,以便于尺寸的设计,如图 所示,是外形尺寸框图: 4 PCB 设计 15 图 LCD 外 形尺寸图 如果按照上面的规格,将 LCD1602 的焊盘设置在相应位置,那么在焊接时恐不好焊接,经过反复思考,我将焊盘设置在 LCD1602 的边框之外,这样有利于焊接。 图 是我设计的封装图。 图 LCD 封装 当然,还有其它元件需要自己设计封装,设计过程类似,不再赘述。 由原理图生成网络表后,经过了 45 次的布局,布局都不理想,要么是布局不美观,要么是排线排不通。 如果考虑做成双层板,因为我买的是双列直插式封装原件,顶部焊盘是无法焊接的,如果考虑过孔,。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。