ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:73.71KB ,
资源ID:6359916      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6359916.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多功能数显温度计的设计设计图和程序.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

多功能数显温度计的设计设计图和程序.docx

1、多功能数显温度计的设计设计图和程序设计图程序#include #include /#include LCD1602.h/#include DS1302.h#define uint unsigned int#define uchar unsigned char sbit Data=P35; /DHT11定义数据线uchar rec_dat9; /用于显示的接收数据组uchar a2=RH;/sbit DS1302_CLK = P17; /实时时钟时钟线引脚/sbit DS1302_IO = P16; /实时时钟数据线引脚/sbit DS1302_RST = P15; /实时时钟复位线引脚sbit

2、 DS1302_CLK = P14; /实时时钟时钟线引脚sbit DS1302_IO = P15; /实时时钟数据线引脚 sbit DS1302_RST = P16; /实时时钟复位线引脚sbit wireless_1 = P30;sbit wireless_2 = P31;sbit wireless_3 = P32;sbit wireless_4 = P33;sbit ACC0 = ACC0;sbit ACC7 = ACC7;char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; /sbit Set

3、 = P20; /模式切换键sbit Up = P21; /加法按键sbit Down = P22; /减法按键sbit out = P23; /跳出调整模式按键/sbit DQ = P10; /温度传输数据I/O口sbit DQ = P13; /温度传输数据I/O口char done,count,temp,flag,up_flag,down_flag; /uchar temp_value; /温度值uchar TempBuffer5,week_value2; /void DHT11_delay_us(uchar n) while(-n);void DHT11_delay_ms(uint z)

4、 uint i,j; for(i=z;i0;i-) for(j=110;j0;j-);void DHT11_start() Data=1; DHT11_delay_us(2); Data=0; DHT11_delay_ms(30); /延时18ms Data=1; DHT11_delay_us(30);uchar DHT11_rec_byte() /接收一个字节 uchar i,dat=0; for(i=0;i8;i+) /从高到低依次接受8位数据 while(!Data); /等待50us 低电平 DHT11_delay_us(8); /延时60us dat0; i-) DS1302_IO

5、= ACC0; /相当于汇编中的RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC 1; unsigned char DS1302OutputByte(void) /实际时钟读取一字节(内部函数) unsigned char i; for(i=8; i0; i-) ACC = ACC 1; /相当于汇编中的RRC ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; return(ACC); void Write1302(unsigned char ucAddr, unsigned char ucDa) DS

6、1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); / 地址、命令 DS1302InputByte(ucDa); / 写1Byte命令 DS1302_CLK = 1; DS1302_RST = 0; unsigned char Read1302(unsigned char ucAddr) /读取DS1302数据 unsigned char ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr|0x01)

7、; /地址、命令 ucData = DS1302OutputByte(); /写1Byte数据 DS1302_CLK = 1; DS1302_CLK = 1; DS1302_RST = 0; return(ucData);void DS1302_GetTime(SYSTEMTIME *Time) /获取时钟芯片数据到自定义结构型数组 unsigned char ReadValue; ReadValue = Read1302(DS1302_SECOND); Time-Second = (ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue = Re

8、ad1302(DS1302_MINUTE); Time-Minute = (ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_HOUR); Time-Hour = (ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_DAY); Time-Day = (ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_WEEK); Time-Week

9、= (ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_MONTH); Time-Month = (ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_YEAR); Time-Year = (ReadValue&0x70)4)*10 + (ReadValue&0x0F); void DateToStr(SYSTEMTIME *Time) /将数据转换LCD字符串放在DateString if(hide_yearDateSt

10、ring0 = 2; Time-DateString1 = 0; Time-DateString2 = Time-Year/10 + 0; Time-DateString3 = Time-Year%10 + 0; else Time-DateString0 = ; Time-DateString1 = ; Time-DateString2 = ; Time-DateString3 = ; Time-DateString4 = /; if(hide_monthDateString5 = Time-Month/10 + 0; Time-DateString6 = Time-Month%10 + 0

11、; else Time-DateString5 = ; Time-DateString6 = ; Time-DateString7 = /; if(hide_dayDateString8 = Time-Day/10 + 0; Time-DateString9 = Time-Day%10 + 0; else Time-DateString8 = ; Time-DateString9 = ; if(hide_weekWeek%10 + 0; /星期另存不跟年月日一起放 else week_value0 = ; week_value1 = 0; Time-DateString10 = 0; /字符串

12、末尾 加结束字符void TimeToStr(SYSTEMTIME *Time) /时分秒放入LCD字符串TimeString内; if(hide_hourTimeString0 = Time-Hour/10 + 0; Time-TimeString1 = Time-Hour%10 + 0; else Time-TimeString0 = ; Time-TimeString1 = ; Time-TimeString2 = :; if(hide_minTimeString3 = Time-Minute/10 + 0; Time-TimeString4 = Time-Minute%10 + 0;

13、else Time-TimeString3 = ; Time-TimeString4 = ; Time-TimeString5 = :; if(hide_secTimeString6 = Time-Second/10 + 0; Time-TimeString7 = Time-Second%10 + 0; else Time-TimeString6 = ; Time-TimeString7 = ; Time-DateString8 = 0;void Initial_DS1302(void) /时钟芯片初始化 unsigned char Second=Read1302(DS1302_SECOND)

14、; if(Second&0x80) /判断是否关闭 Write1302(0x8e,0x00); /写入允许 Write1302(0x8c,0x07); /写入时间07/07/25星期3时间23:59:55 Write1302(0x88,0x07); Write1302(0x86,0x25); Write1302(0x8a,0x07); /xingqi Write1302(0x84,0x23); Write1302(0x82,0x59); Write1302(0x80,0x55); Write1302(0x8e,0x80); /关闭写入 /*ds18b20子程序*/*ds18b20延时子程序12

15、MHz*/ void delay_18B20(unsigned int i) while(i-);/*ds18b20初始化*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; delay_18B20(8); DQ = 0; delay_18B20(80); DQ = 1; delay_18B20(14); x=DQ; delay_18B20(20);/*ds18b20读数据程序如下*/ unsigned char ReadOneChar(void) uchar i=0; uchar dat = 0; for (i=8;i0;i-) DQ =

16、0; / 给脉冲信号 dat=1; / 数据右移 DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; / 按位或取最高位 delay_18B20(4); return(dat);/*ds18b20写数据程序如下*/ void WriteOneChar(uchar dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; /取最低位 delay_18B20(5); DQ = 1; /上升沿将数据送入 dat=1; /*ds18b20读取当前温度*/void ReadTemp(void) unsigned char a=0; unsigned char b=0; unsigned char t=0; Init_DS18B20(); WriteOneChar(0xCC); / 跳过读序列号操作 WriteOneChar(0x44); / 启动温度转换 delay_18B20(100); / this message is wery important Init_DS18B20(); WriteOneChar(0xCC); /跳过读序列号操作

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1