欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    恒温控制系统的程序.docx

    • 资源ID:17184683       资源大小:18.80KB        全文页数:22页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    恒温控制系统的程序.docx

    1、恒温控制系统的程序2.1 DS18B20模块程序#include Includes.h /文件包含/* 模块级变量申明 */static void OneWire_Rst(void);static void OneWire_Init(void);static void OneWire_WriteByte(int8u cmd);static int8u OneWire_ReadByte(void);static void OneWire_Idle(void);/* 子函数定义 */* 函 数 名: static void OneWire_Init(void)* 功能描述: * 全局变量: * 输

    2、 入: NO !* 输 出: NO !/* 创 建 人: 日期: */* 修 改 人: 日期: */ /* 其他说明: * 函数说明: 单总线数据传输初始化;/*/static void OneWire_Init(void) DQ = 1; NOP(); DQ = 0; /拉低数据线,准备Reset OneWire Bus; Delay_Xus(125); /延时510us,Reset One-Wire Bus. Delay_Xus(125); DQ = 1; /提升数据线; Delay_Xus(15); /延时35us; while(DQ) /等待Slave 器件Ack 信号; NOP();

    3、 Delay_Xus(60); /延时125us; DQ = 1; /提升数据线,准备数据传输; /* 函 数 名: static void OneWire_Rst(void)* 功能描述: * 全局变量: No !* 输 入: NO !* 输 出: NO !/* 创 建 人: 日期: */* 修 改 人: 日期: */ /* 其他说明: : 日期:* 函数说明: 单总线Reset pulse;/*/static void OneWire_Rst(void) DQ = 0; /拉低数据线,准备Reset OneWire Bus; Delay_Xus(125); /延时511us,Reset O

    4、ne-Wire Bus. DQ = 0; Delay_Xus(125); /* 函 数 名: static void OneWire_WriteByte(int8u cmd)* 功能描述: 写一个字节;* 全局变量: NO !* 输 入: cmd:8bit;* 输 出: NO !/* 创 建 人: 日期: */* 修 改 人: 日期: */ /* 其他说明: * 函数说明: cmd主要有Rom操作指令和E2Ram操作指令两种;/*/static void OneWire_WriteByte(int8u cmd) int8u i; for(i=0;i= 1; /* 函 数 名: static i

    5、nt8u OneWire_ReadByte(void)* 功能描述: 读取一个字节;* 全局变量: NO !* 输 入: NO !* 输 出: 8bit data;/* 创 建 人: 日期: */* 修 改 人: 日期: */ /* 其他说明: * 函数说明: 读之前必须首先写1;/*/static int8u OneWire_ReadByte(void) int8u i; int8u tmp = 0; DQ = 1; /准备读; NOP(); for(i=0;i= 1; /低位先发; DQ = 0; /Read init; _nop_(); /2ms; DQ = 1; /必须写1,否则读出来

    6、的将是不预期的数据; Delay_Xus(2); /延时9us; _nop_(); if(DQ) /在12us处读取数据; tmp |= 0x80; Delay_Xus(30); /延时55us; DQ = 1; /恢复One Wire Bus; NOP(); return tmp; /* 函 数 名: static void OneWire_Idle(void)* 功能描述: 总线空闲模式;* 全局变量: NO !* 输 入: NO !* 输 出: NO !/* 创 建 人: 日期: */* 修 改 人: 日期: */ /* 其他说明: * 函数说明: /*/static void OneW

    7、ire_Idle(void) DQ = 1; NOP(); /* 函 数 名: extern void DS18B20_Init(void)* 功能描述: 器件DS18B20初始化;* 全局变量: NO !* 输 入: NO !* 输 出: NO !/* 创 建 人: 日期: */* 修 改 人: 日期: */ /* 其他说明: /*/extern void DS18B20_Init(void) OneWire_Init(); /* 函 数 名: extern void DS18B20_RomCmd(int8u romCmd)* 功能描述: DS18B20Rom操作命令写;* 全局变量: NO

    8、 !* 输 入: romCmd;* 输 出: NO !/* 创 建 人: 日期: */* 修 改 人: 日期: */ /* 其他说明: * 函数说明: 0x33:Read Rom; 0x55:Match Rom; 0xcc:Skip rom; 0xf0: Search rom; 0xec:Alarm Search./*/extern void DS18B20_RomCmd(int8u romCmd) /仅写了SkipRom例程; switch(romCmd) case 0xcc: /Skip Rom command; OneWire_WriteByte(0xcc); break; defaul

    9、t: break; /* 函 数 名: extern void DS18B20_MemCmd(int8u memCmd)* 功能描述: DS18B20Memory 操作命令;* 全局变量: NO !* 输 入: NO !* 输 出: NO !/* 创 建 人:xilu 日期: */* 修 改 人: 日期: */ /* 其他说明: * 函数说明: 仅写了ConvertT(0x44) 和0xBE命令; 0x44:Convert T; 0xbe:Read Scratch-pad;/*/extern void DS18B20_MemCmd(int8u memCmd) switch(memCmd) ca

    10、se 0x44: /Start to Convert temperature; OneWire_WriteByte(0x44); NOP(); DS18B20_Busy(); Delay_Xms(250); /延时750ms; Delay_Xms(250); Delay_Xms(250); break; case 0xbe: /Read scratchpad; OneWire_WriteByte(0xbe); break; default: break; /* 函 数 名: extern void DS18B20_ReadDat(int8u len,int8u *buf)* 功能描述: 读取D

    11、S18B20内部的Scratchpad内容;* 全局变量: NO !* 输 入: len:将要读取的数据长度;* 输 出: buf:数据缓存;/* 创 建 人: 日期: */* 修 改 人: 日期: */ /* 其他说明: * 函数说明: /*/extern void DS18B20_ReadDat(int8u len,int8u *buf) int8u i; for(i=0;ilen;i+) bufi = OneWire_ReadByte(); OneWire_Rst(); OneWire_Idle(); /* 函 数 名: extern void DS18B20_Busy(void)* 功

    12、能描述: 内部模数转换中,忙* 全局变量: NO !* 输 入: NO !* 输 出: NO !/* 创 建 人: 日期: */* 修 改 人: 日期: */ /* 其他说明: * 函数说明: /*/extern void DS18B20_Busy(void) OneWire_Idle(); /* End Of File*/2.2 LCD1602模块程序#include Includes.h/* 模块级变量申明 */static void LCD_WriteDat(int8u lcd_dat);static void LCD_WriteCmd(int8u lcd_cmd);static int

    13、8u LCD_ReadStatus(void);static void LCD_Goto(int8u x,int8u y);/* 函 数 名: void main(void)* 功能描述: * 全局变量: * 输 入: * 输 出: /* 创 建 人: 日期: */* 修 改 人: 日期: */ /* 其他说明: /*/extern void LCD_Init(void) Delay20ms(); LCD_WriteCmd(0x38); /功能设置:8位机接口、双行显示、57字符点阵; LCD_WriteCmd(0x0c); /显示控制:光标开启、字符不闪烁; LCD_WriteCmd(0x0

    14、1); /清屏; LCD_WriteCmd(0x06); /访问模式:光标右移一位、整屏不移动; LCD_Goto(0,0); static void LCD_WriteDat(int8u lcd_dat) int8u tmp; tmp = LCD_ReadStatus(); /读状态; while(tmp & 0x80) /是否忙 ? tmp = LCD_ReadStatus(); #if 0 LCD_RS = 1; LCD_RW = 0; LCD_EN = 1; _nop_(); _nop_(); LCD_DATA = lcd_dat; _nop_(); _nop_(); LCD_EN =

    15、 0; #endif LCD_RS = 1; LCD_RW = 0; LCD_DATA = lcd_dat; _nop_(); LCD_EN = 0; _nop_(); _nop_(); LCD_EN = 1; static void LCD_WriteCmd(int8u lcd_cmd) int8u tmp; tmp = LCD_ReadStatus(); while(tmp & 0x80) tmp = LCD_ReadStatus(); #if 0 LCD_RS = 0; LCD_RW = 0; LCD_EN = 1; _nop_(); _nop_(); LCD_DATA = lcd_cm

    16、d; _nop_(); _nop_(); LCD_EN = 0; #endif LCD_RS = 0; LCD_RW = 0; LCD_DATA = lcd_cmd; _nop_(); LCD_EN = 0; _nop_(); _nop_(); LCD_EN = 1; static int8u LCD_ReadStatus(void) int8u tmp; #if 0 LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; tmp = LCD_DATA; LCD_EN = 0; #endif LCD_DATA = 0xff; LCD_RS = 0; LCD_RW = 1; LC

    17、D_EN = 0; _nop_(); _nop_(); LCD_EN = 1; tmp = LCD_DATA; return tmp; static void LCD_Goto(int8u x,int8u y) int8u tmp; if(y) /若是第二行; tmp = 0xc0 + x; LCD_WriteCmd(tmp); else tmp = 0x80 + x; LCD_WriteCmd(tmp); #if 0extern void LCD_DisplayShiftR(void) /整屏右移; LCD_WriteCmd(0x1f); extern void LCD_DisplayShi

    18、ftL(void) /整屏左移; LCD_WriteCmd(0x18); #endif extern void LCD_Display(int8u row,int8u *str) if(row) LCD_Goto(0,1); else LCD_Goto(0,0); while(*str != 0) LCD_WriteDat(*str+); #if 0extern void LCD_Display(int8u x,int8u y,int8u disp_dat) LCD_Goto(x,y); LCD_WriteDat(disp_dat); #endif#if 0 extern void LCD_D

    19、isplay(int8u disp_dat) int8u tmp; tmp = LCD_ReadStatus(); tmp &= 0x7f; if(tmp = 0x10) /第一行显示满则转向第二行; LCD_Goto(0,1); if(tmp = 0x50) /全屏显示满则清屏; LCD_WriteCmd(0x01); LCD_WriteDat(disp_dat); /将接收字符显示在LCD屏上; #endifextern void Delay20ms() /粗略延时; int16u tmp = 50000; while(tmp-); /* End Of File*/2.3延时函数模块程序#include Includes.h/*延时计算式:2 x+5;Step:2us;*/extern void Delay_Xus(int8u x) /x取值1255; while(-x);/ int8u i;/ x /=


    注意事项

    本文(恒温控制系统的程序.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开