现代电子设计手段的发展,已由传统的手工设计阶段发展到了EDA阶段,再到虚拟设计阶段,Proteus软件就是在这大背景下应运而生的。Proteus软件是英国Labcenterelectronics公司研发的EDA工具软件,是目前最流行的嵌入式系统设计与仿真平台,它能完全脱离硬件平台进行嵌入式虚拟开发,通过各虚拟仪器构建硬件电路,调试Keil、ADS等集成开发环境中生成的软件程序,达到虚拟硬件调试系统程序的目的,为后续实际软硬件系统的设计提供实践理论依据。
1 硬件电路设计
液晶温度显示器的硬件主要有以下部分:温度检测部分、单片机最小系统、显示电路和键盘电路,如图1所示。
单片机采用美国ATMEL公司生产的低电压、高性能CMOS的MCS-51系列单片机AT89C52,它片内含8 K字节可重复擦写Flash闪速存储器和256字节的RAM,片内程序存储器空间能满足本系统程序存储之需要,可省去片外EPROM程序存储器,简化系统的设计,使电路结构简洁。时钟电路中的晶振频率采用12 MHz,系统复位采用上电复位方式。系统的硬件电路如图2所示。
温度传感器采用美国Dallas公司生产的单总线(1-wire)数字温度传感器DS18B20。它的测量温度范围为-55~+125℃,在-10~+85℃范围内,精度可达±0.5℃,通过编程可以选择9~12位A/D转换精度,测温分辨率可达0.062 5℃。DS18B20耐磨耐碰,体积小,使用方便,适用于各种狭小空间。它只有3个引脚,2脚DQ是数字信息输入/输出端,3脚VCC是外部电源输入端,1脚GND是电源地。现场温度直接以“一线总线”的数字方式传输,可以提高系统的抗干扰性。DS18B20的电源供电方式有2种:外部供电方式和寄生电源方式。工作于寄生电源方式时,VDD和GND均接地,它在需要远程温度检测和空间受限的场合特别有用,但是需要强上拉电路,软件控制变得复杂,同时芯片的性能也有所降低。因此,在本设计中,采用外接电源供方式,将DQ与P3.2相连接。[page]
LM016L是16x2数码液晶显示器,每行可显示16个字符,共2行。LM016L的控制器为HD44780,与液晶屏集成在一起。HD44780的控制端有3个,分别是RS、读写控制端RW和使能信号E。RS=0时,配合RW实现命令读写;RS=1时,配合RW实现显示数据的读写。本系统中,单片机的P0口作为数据口,与LM016L的D0~D7连接,为保证电路能正常显示,在P0口与D0~D7之间分别连接8个上拉电阻。P2口作为LCD的控制线,P2.0~P2.2分别连接LM016L的RS、RW和E,VDD、VSS和VEE分别接电源和地。
本显示器设置了一个检测控制开关SW1,它的高低电平信息通过P2.3传递给单片机。当单片机复位后,若SW1为ON,DS18B20检测温度信息,经过单片机处理后送LM016L显示,工作指示灯LED1亮;若SW1为OFF,则系统暂停工作,工作指示灯LED1灭。当温度传感器DS18B20有故障无法复位时,工作指示灯LED1闪烁。
2 软件设计
系统在Keil uVision3集成开发环境编写C51程序进行软件开发,采用模块化编程方式。在硬件设计的基础上,根据DS18B20和LM016L的工作原理,软件设计主要完成以下任务:初始化DS18B20,读/写DS18B20,读取DS18B20转换后的温度值并转换,初始化LMOl6L,LM016L显示温度值等。以上各个子任务分别用相应的子程序来实现,在主程序中有序的调用各个子程序模块,程序流程图如图3所示。
系统软件设计的重点和难点之一是传感器输出信号的读取和转换。单片机从DS18B20中读到的温度值是16位的数字信息,其中高5位是表示温度正负的符号位。数字温度值的读取并转换成实际温度十进制值的子程序流程图如图4所示。
温度转换子程序设计如下:
在软件设计时,应严格按照DS18B20和LM016L的工作时序,设置好延时时间,否则会影响系统的实时性,即出现温度显示输出变化滞后温度输入的变化。
3 系统仿真
在Keil uVision3中,采用C51编写源程序,在新建项目中选择AT89C52单片机作为CPU,再将编写好的C语言源程序加载到新建项目中。在“Project”下拉菜单中,选择“Options forTarget”对话框,在对话框中选中“Output”选项卡的“Create HEX File”选项,最后点击“Itebuild all Target Files”,编译成功后生成的“*.Hex”文件。在Proteus ISIS7.5中,双击AT89C52,将可执行程序装载到单片机中,如图5所示。
程序导入Proteus后,点击仿真运行控制按钮后,进入仿真调试状态,点击中的Play键,进行软、硬件交互仿真,如图6所示。图6(a)表明,假如DS18B20检测到的当前温度是123.9℃,则经过单片机处理后,LM016L显示出当前的温度值123.9℃,工作指示灯亮。通过调节DS18B20模型上的上下标,可设定低于零度的温度输入,仿真显示结果如图6(b)所示。在Proteus仿真状态下,调节DS18B20模块的上下标改变温度的输入值(-55.0~+125.0 ℃),LM016L的输出温度值实时跟随变化。仿真结果表明,该温度显示器能准确的测量并显示温度,测量精度到0.1℃,仿真效果与系统预期要实现的一致。
4 结束语
利用功能强大的Proteus软件提供的元件库设计硬件电路及软硬件仿真,实现了液晶温度显示器的仿真设计。该显示器电路结构简洁,可靠性高,成本低。通过Proteus的前期仿真提高了液晶温度显示器的设计效率,缩短了开发周期,降低了设计成本,保证了设计的合理性和可靠性。
上一篇:LED智能驱动系统设计与实现
下一篇:基于超声波传感器的测距系统设计
推荐阅读最新更新时间:2024-03-16 13:29