欢迎来到天天文库
浏览记录
ID:16494821
大小:834.50 KB
页数:15页
时间:2018-08-10
《智能仪器实验999999》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、智能仪器课程设计实验室所用实验箱已经作了重新设计,故下面的设计仅供参考,实际应用必须作相应的修改!!!一.带温度计的电子钟设计1.设计任务用温度传感器和4个按键、4个数码管设计带温度计的电子时钟程序,要求:(1)用单线数字温度传感器DS18B20按键检测当前环境温度,温度精度0.1。(2)用定时器/计数器显示电子走时(时、分),用2个按键(k1、k2)调整修改时钟,用4位数码管显示时钟。(3)用2个按键(k3、k4)控制显示:按下k3选择电子时钟显示;按下k4选择温度测量显示。2.电路设计根据设计要求,温度检测选用DS18B20,显示采用
2、4位串行静态数码显示,数码管是共阳极,电路如图16-1所示。图16-1带温度计的电子时钟电路原理图3.算法思路和程序流程图DS18B20是11位数字温度传感器,最小分辨率为0.125℃,采用单总线方式访问,时钟和数据共用一根线,这种单总线方式对读写时序有非常严格的要求,一旦时序上有偏差就会得不到正确的结果。DS18B20进行温度转换时需要500ms~800ms的转换时间,主程序负责温度测量,每秒调用一次温度测量子程序。按键检测与处理放在10ms定时器0中断程序中,这样时钟显示、修改和温度测量就会互不影响。硬件配置:CPU选择AT89C51
3、,晶振时钟为12MHz;SW1、SW2用于调整修改时钟;SW3、SW4选择时钟、温度显示切换;RXD、TXD用作串行静态显示。程序流程如图16-2所示。程序规划:1、功能规划本设计软件的功能函数模块包括:定时器0中断函数、串行静态数码管显示函数、DS18B20操作函数、延时函数。其中定时器0中断函数主要用于按键检测与处理,判读是显示时钟还是显示温度,判读是否要修改时钟等功能。串行静态数码管显示函数主要用来显示温度和时钟信息,根据显示缓冲区的内容来查笔形码表后显示相对应的信息。DS18B20操作函数主要包括DS18B20的复位、初始化、读取
4、转换温度等操作。由于DS18B20对读写时序有非常严格的要求,因此对DS18B20的时序延时操作采用汇编程序编写,以达到精确的时序控制要求。2、层次规划软件的层次规划也即是通常所说的软件架构,即软件设计的总体思想、功能模块的划分、各模块间的通讯方式定义等。一般如果采用自顶向下的软件设计方法都要先确定软件的架构,分配好任务后再进行编程。本软件的层次规划为:主程序主要完成系统各项状态、信息等的初始化,包括串行口初始化、定时器初始化、DS18B20初始化等。然后控制每秒采集1次温度,并将采集的数字量标度变换成温度值。同时等待定时器0中断程序中通
5、过按键的操作来判断是显示时钟还是温度、是否要修改时钟、是修改时还是修改分等。图16-2带温度计的电子时钟程序流程图4.参考程序(资源分配、加注释的程序清单)(1)常数定义与资源分配#include#include#defineucharunsignedcharsbitKEY1=P1^7;//时钟修改选择键sbitKEY2=P1^6;//时钟修改加1键sbitKEY3=P1^5;//按下此键显示时钟sbitKEY4=P1^4;//按下此键显示温度sbitDQ=P1^3;//数字温度传感器DS18B20
6、接口ucharHour;//小时存放单元ucharMin;//分钟存放单元ucharSec;//秒钟存放单元intTempValue;//存放温度值ucharTempH;//温度高值存放单元ucharTempL;//温度低值存放单元ucharTimCnt05S;//0.5秒计数单元,用于修改时闪烁显示ucharTimCnt1S;//1秒计数单元,用于秒加1ucharModifyBuf[2];//小时,分钟修改缓冲区ucharDispBuf[4];//显示缓冲区存放单元首址ucharModifyStat;//时钟修改状态,1,修改时;2,修
7、改分bitTim1SFlag;//1秒时间到标志位bitKey1Old;//按键SW1旧值,用于延时去抖bitKey2Old;//按键SW2旧值,用于延时去抖bitKey3Old;//按键SW3旧值,用于延时去抖bitKey4Old;//按键SW3旧值,用于延时去抖bitKeyOK;//按键响应标志,防止连击bitModifyFlag;//时钟是否处于修改状态(1为修改状态)bitFlashFlag;//时钟修改闪烁单元bitDispClk_T;//是处于时钟显示还是温度显示状态(1为时钟显示,0为温度显示)bitSign;//温度正负标
8、志位,正为0,负为1//***温度传感器DS18B20#defineCONFIG0x5f//11位温度转换(此时传感器最小分辨率为0.125摄氏度)#defineTHIGH30#defineT
此文档下载收益归作者所有