




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include / 51系类单片机头文件#include LCD1602.h /包含对1602读写操作的头文件#include Delay.h /延时操作头文件#include 18B20.h /包含对18B20操作的头文件#include sbit beep = P30; /定义蜂鸣器信号线sbit led0=P10;/定义发光二极管端口sbit led1=P11;sbit led2=P12; sbit led3=P13; uint warn_l1=270; /定义温度下限值温度*10 uint warn_l2=250; uint warn_h1=320; uint warn_h2=300; /* 函数名称:deal(uint t) * 函数功能:对18B20获取的温度进行相应的处理 * 入口参数:temp * 出口参数:无 * */ void deal(uint t) if(twarn_l2)&(t=warn_l1) /2527 度 led0=0; /第一个闪烁Delayms(20); led0=1; mdi(); /蜂鸣器慢“滴” /模拟开启制热else if(t=warn_l2) / warn_h2)&(t=warn_h1) / 32度 led2=0; /第三四个灯闪烁 led3=0; Delayms(10); led2=1; led3=1; kdi(); /蜂鸣器快“滴” /模拟加大制冷功率else beep=1; /温度正常 /* 函数名称:display(uint t); * 函数功能:显示温度 * 入口参数:t *出口参数:无 * */ void display(uint t) write_com(0x80+12); / 第一行第13列 write_data(t/100+0x30); / 十位+0X30转换为字符显示 write_com(0x80+14); write_data(t%100/10+0x30); write_com(0x80+15); write_data(t%10+0x30); /* 函数名称:main(void); * * 函数功能:主函数 * 入口参数:无 * * 出口参数:无 * */ void main(void) uchar i = 0; uint temp = 0; while(1) init(); /LCD 初始化 tempchange(); /温度转换 _nop_(); /稍作延时 temp = get_temp(); deal(temp); /温度处理 _nop_(); for(i=10;i0;i-) display(temp(); /温度处理 18B20.H 头文件#ifndef _18B20_h_ /防止重复定义#define _18B20_h_ #include #include#include18B20.h #includeDelay.h extern void dsreset(void); /函数声明 外部可见extern void tempwritebyte(uchar dat); extern bit tempreadbit(void); extern uchar tempreadbyte(void); extern void tempchange(void); extern uint get_temp(void); #endif 18B20.C 文件#include18B20.h sbit beep = P30; /定义蜂鸣器信号线sbit ds = P27; /定义18B20信号线static uint temp = 0; static float f_temp = 0.0; /* * 函数名称:dsreset(void) * * 函数功能:18B20 初始化 * * 入口参数:无 * * 出口参数:无 * */ void dsreset(void) ds = 1; /将数据线置高电平 _nop_(); /稍作延时,要尽可能短 ds = 0; / 拉低数据线 Delayus(40); /延时 _nop_(); ds = 1; /将数据线拉高 Delayus(14); /延时 ds = 1;/拉高数据线 /* * 函数名称:temwritebyte(uchar dat) * * 函数功能:向18B20写一个字节 * 入口参数:dat * * 出口参数:无 * */ void tempwritebyte(uchar dat) uint i; for(i=0;i=1; /左移一位,继续发送下一位 /* * 函数名称:tempreadbit(void) * * 函数功能:读一位数据 * * 入口参数:无 * * 出口参数:dat * */ bit tempreadbit(void) uint i = 0; /定义,做延时用 bit dat; /义一位数据 ds = 0;i+; ds = 1;i+;i+; dat = ds; i = 8;while(i0)i-; return(dat); /返回一位数据 /* * 函数名称:tempreadbyte(void) * * 函数功能:读一个字节 * * 入口参数:无 * * 出口参数:dat * */ uchar tempreadbyte(void) uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tempreadbit(); dat=(j1); /读出的数据低位在前,刚好在一个字节dat里 return(dat); /* * 函数名称:tempchange(void) * * 函数功能:获取18B20温度转换 * * 入口参数:无 * * 出口参数:无 */ void tempchange(void) dsreset(); /18B20复位Delayms(1); /稍作延时tempwritebyte(0xcc);/跳过读ROM指令tempwritebyte(0x44);/写温度转换指令/* * * * 函数名称:get_temp(void) * * 函数功能:获取18B20寄存器中的数据 * 入口参数:无 * * 出口参数:temp * */uint get_temp(void) uchar a,b; dsreset(); Delayms(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论