毕业设计论文--基于单片机的电容测量仪设计内容摘要:

M 中字符代码与字符图形对应关系 1602 液晶模 块内部的控制器共有 11 条控制指令,其控制命令如下表所示。 表 2 LCD1602 内部 11 条控制指令 它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。 (说明: 1 为高电平、 0 为低电平) 指令 1:清显示,指令码 01H,光标复位到地址 00H 位置 指令 2:光标复位,光标返回到地址 00H 指令 3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。 高电平表示有效,低电平则无效 指令 4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 指令 5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标 指令 6:功能设置命令 DL:高电平时为 4 位总线,低电平时为 8 位总线 N:低电平时为单行显示,高电平时双行显示 F 低电平时显示 5x7 的点阵字符,高电平时显示 5x10 的点阵字符(有些模块是 DL:高电平时为 8 位总线,低电平时为4 位总线) 指令 7:字符发生器 RAM 地址设置 指令 8: DDRAM 地址设置 指令 9:读忙信号和光标地址 BF:为忙标志位,高 电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令 10:写数据指令 11:读数据 LCD1602 液晶显示模块可以和单片机 AT89C51 直接接口,电路如下图所示。 图 16 LCD1602 与 AT89C51 连接图 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。 要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,下表是 LCD1602 的内部显示地址 表 3 LCD1602 内部显示地址 图 17 LCD1602 显示电路 各部分电路连接成整个电路图 当各个部分的电路设计完成后,下面的工作就是组合成一个总的电路图。 现今用的最多的电路设计软件就是 Proteus, Proteus 软件是英国 Labcenter electronics 公司出版的 EDA 工具软件。 它不仅具有其它 EDA 工具软件的仿真功能,还能仿真单片机及外围器件。 它是目前最好的仿真单片机及外围器件的工具。 虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。 Proteus 是世界上著名的 EDA工具 仿真软件 ,从原理 图布图、代码调试到单片机与外围电路协同仿真,一键切换到 PCB 设计,真正实现了从概念到产品的完整设计。 是目前世界上唯一将电路仿真软件、 PCB 设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持 805 HC1 PIC10/12/16/18/24/30/DsPIC3 AVR、 ARM、 8086 和 MSP430等,目前已增加 Cortex 和 DSP 系列处理器,并持续增加其他系列处理器模型。 在编译方面,它也支持 IAR、 Keil 和 MPLAB 等多种编译器。 图 18 总电路图 3 基于单片机电容测量软件设计 软件设计 软件设计是一个创造性的过程,对一些设计者来说需要一定的资质,而最后设计通常都是由一些初步设计演变而来的。 从书本上学不会设计,只能经过实践,通过对实际系统的研究和实践才能学会。 对于高效的软件工程,良好的设计是关键,一个设计得好的软件系统应该是可直接实现和易于维护、易懂和可靠的。 设计得不好的系统,尽管可以工作,但很可能维护起来费用昂贵、测试困难和不可靠,因此,设计阶段是软件开发过程中最重要的阶段。 直到最近,软件设计在很大程度上仍是一个特定过程。 一般用自然语言给定一个需求集,预先作非正式设计,常常 用流程图的形式说明,接着开始编码,当系统实现时设计还需修改。 当实现阶段完成后,设计往往已与起初形式相去甚远以至于设计的原始文档完全不适合对系统的描述。 软件设计任务 软件设计主要是针对硬件设计里面的控制部分的,这里指 AT89C51 单片机,一般的单片机均可用汇编语言和 C 语言进行编程。 C 语言直观,相对比较的简单,但占用的程序存储器的内存比较大,汇编语言是针对硬件设计的语言,如果想用汇编语言设计的话必须要对硬件有很大的了解,相对 C 语言就比较的复杂,但是比较的精简,占用的程序存储器的空间比较的 小。 作为还在学生阶段的我们,用汇编语言进行编程对我们理解单片机的内部结构、资源都有很好的帮助,但是 C语言编程在以后的实际工作中将会大大简化自己的工作。 因此本论文的程序都是基于 C 语言的。 要完成的任务是:初始化程序设计、按键程序设计、中断处理程序,计数器计数程序,显示程序设计等。 软件设计的工具 本次毕业设计所选用 Keil C51 中的编译 /连接器软件 Keil uVision2 作为编译器 /连接工具。 程序设计算法设计 整个程序设计过程中遇到的最大的问题的如何根据测量到 的方波的频率来计算所测量的电容的大小。 在前面的介绍中我们知道: 555 时基芯片的输出频率跟所使用的电阻 R 和电容 C 的关系是: 又因为,所以 7 即: 8 如果单片机采用 12M 的晶振,计数器 T0 的值增加 1,时间就增加 1μ S ,我们采用中断的方式来启动和停止计数器 T0,中断的触发方式为脉冲下降沿触发,第一次 中断到来启动 T0,计数器的值为,第二次中断到来停止 T0,计数器器的值为,则测量方波的周期为,如何开始时刻计数器的值,则。 简单时序图如下。 图 19 时序图 则: 9 单片机的计数器的值 N 065535,为了测量的精度, N 的取值一般在100~5000,当电阻 R 越大,电容 C 的值就越小。 我们取不同的电阻值,就得到不同的电容测量的量程。 第一档: 1~50uF 第二档: ~5 uF 第三档: ~ uF 第四档: ~ uF 为了编写程序的方便,我们只计算,后面的单位可以根据使用的量程自行添加。 测量范围的大小 ~。 软件设计流程 流程图是一种传统的算法表示法,它利用几何图形的框来代表各种不同性质的操作,用流程线来指示算法的执行方向。 由于它简单直观,所以应用广泛,特别是在早期语言阶段,只有通过流程图才能简明地表述算法,流程图成为程序员们交流的重要手段。 本次毕业设计在软件设计方面的难度是有点大。 图 20 为整个程序设计的流程。 图 20 程序设计流程图 编写程序 有了前面的对整个系统的分析后画出的流程图,下面的工作就是根据流程图编写程序。 编写程序是一个相当复杂的过程,要求编程人员具有很强逻辑思维,而且要在对整个系统工作原理相当熟悉的基础上面才能完成任务。 在编写程序的时候要养成作注释的习惯,这样既利于自己以后的修改,又利于以后程序的维护。 尤其是使用 C 语言编写程序的时候更是要注释,因为 C 语言是一门比较高级的语言, C 语言比较的烦琐。 当然编写程序遇到困难的时候还需要很大技巧。 根据上面的流程图,编写程序 : include include//库函数 define DATA P0 sbit RW P2^1。 //1602 写数据 sbit RS P2^0。 //1602 写地址 sbit EN P2^2。 //1602 工作使能 sbit b_test P3^7。 //开始测量电容的按键输入 sbit _reset P3^5。 //555 时基芯片工作控制信号 unsigned int T_flag,N,C,i,Dis1,Dis0。 unsigned int b[6] 0X13,0X0D,0X00,0X00,0X25,0X16。 //显示 C 00UF /***********延时 1MS******************/ void Delay1ms unsigned int mm unsigned int i。 for mm。 mm 0。 mm for i 100。 i 0。 i。 /***************检查忙否 *****************/ void Checkstates unsigned char dat。 RS 0。 RW 1。 do EN 1。 //下降沿 _nop_。 //保持一定间隔 _nop_。 dat DATA。 _nop_。 _nop_。 EN 0。 while datamp。 0x80 1。 /**************LCD 写命令函数 *********/ void wd unsigned char cmd Checkstates。 RS 0。 RW 0。 DATA cmd。 EN 1。 _nop_。 _nop_。 _nop_。 _nop_。 EN 0。 /**********LCD 写数据函数 **************/ void wdata unsigned char dat Checkstates。 RS 1。 RW 0。 DATA dat。 EN 1。 _nop_。 _nop_。 _nop_。 _nop_。 EN 0。 /*****************初始化 ********************/ void LCDINIT Delay1ms 15。 wd 0x38。 //功能设置 Delay1ms 5。 wd 0x38。 //功能设置 Delay1ms 5。 wd 0x01。 //清屏 Delay1ms。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。