智能家具设计与总结报告.docx

上传人:牧羊曲112 文档编号:5333382 上传时间:2023-06-27 格式:DOCX 页数:27 大小:416.57KB
返回 下载 相关 举报
智能家具设计与总结报告.docx_第1页
第1页 / 共27页
智能家具设计与总结报告.docx_第2页
第2页 / 共27页
智能家具设计与总结报告.docx_第3页
第3页 / 共27页
智能家具设计与总结报告.docx_第4页
第4页 / 共27页
智能家具设计与总结报告.docx_第5页
第5页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《智能家具设计与总结报告.docx》由会员分享,可在线阅读,更多相关《智能家具设计与总结报告.docx(27页珍藏版)》请在三一办公上搜索。

1、目录一. 摘要二. 引言要求难点重点指导思想三. 设计方案与论证单片机芯片的选择方案与论证显示的选择方案与论证时钟芯片的选择方案与论证温度传感器的选择方案与论证四. 硬件电路设计五. 系统原理六. 系统流程七. 软件测试测试元件测试内容八. 心得体会九. 参考文献十.附录智能家居设计与总结报告一. 摘要随着社会生产力的不断提高,单片机技术已广泛应用于各种领域,成为一种比较成熟的技术。 本设计基于AT89S52单片机设计了集万年历、温度传感器与烟雾传感器为一起的小型小型 室内环境检测系统。电路分为LM016 LCD显示、DS1302时钟芯片,DS18B20温度传感器、 湿度传感器和MAX232。

2、该设计主要通过数个按键、一个LCD1602、一个DS1302时钟芯 片、一个DS18B20温度模块等器件完成时间、日期的显示、声音提示、液晶显示、灯光警 告、复位等功能。关键词:单片机、LCD1602、DS1302、DS18B20、MAX232二. 引言要求:使用单片机设计一个简易的室内监测环境系统,实现下述功能:(1) 自动更新时间与日期及温度,且能够显示在LCD液晶屏上。(2) 烟雾报警,并且使用发光二极管、蜂鸣器等进行警告提示、正确提示的声光报警功能。 统的主要控制芯片(3) 光控开关,通过光敏二极管实现。重点:对各主要模块进行讲解及对程序的论述,了解全局电路原理图及显示原 理。难点:具

3、有万年历功能,能够调节时间及日期;(2)在超过温度范围时,发出温度报警提示。本论文的指导思想本论文先对系统指定的主要芯片进行选择和论证,确定了选定AT89S52作为系统的主 要控制芯片,时钟芯片DS1302提供时钟,数字时温度传感器实现温度显示,显示部分采用 LCD显示屏。三、方案设计与论证(1) 单片机芯片的选择方案与论证方案1:采用89S52作为主要的核心芯片,采用flashROM,内部具有4KB的存储空间,能 在3V的超低压工作,而且与MCS-51单片机完全兼容。但是运用于电路设计中不具有ISP 在线编程功能,当对电路进行调试时,由于程序的错误修改或新增功能需要烧入程序时,对 芯片的多次

4、拔插可能对芯片造成一定的损坏。方案2:采用89S52,片内ROM全部采用FlashROM能在3V的超低压下工作,同时也与 MCS-51单片机兼容,该芯片内部为8KB ROM的存储空间,也具有89C51的功能,切具有 在线编程可擦除技术,当对电路进行调试时,由于程序的错误修改或新增功能需要烧入程序 时,不需对芯片的进行多次拔插,所以不会对芯片造成损坏。(2) 显示模块选择方案与论证方案1:采用LED数码管进行动态扫描,虽然LED数码管价格适中,对于显示数字也较合 适,然而在需要多为狮子与字幕显示时编程较复杂,占用单片机口线多。方案2:采用点阵式数码管显示,点正事数码管由四行四列发光二极管组成,对

5、于显示文字 比较适合,但用在显示数字时比较浪费,而且价格也较高,所以不采用此方式作为显示。方案3:采用LCD液晶屏显示,LCD液晶屏显示虽然价格较高,但其显示功能强大,可以 显示字符,且需要的接口线少。所以采用LCD液晶屏作为显示。(3)时钟芯片的选择方案与论证方案1:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、 秒的计数,采用此种方案虽然可以减少芯片的使用,节约成本,但是实现时间误差较大。方案2:采用DS1302作为时钟芯片,DS1302是一种高性能时钟芯片,可自动对时间日期 进行计数,且精度高,位的RAM作为数据暂存区,工作电压在2.5V-5.5V ,2.5V

6、时耗电小于300mA。因而采用DS1302提供时钟。(4)温度传感器的选择方案与论证方案1:使用热敏电阻作为传感器,并与一相应电阻进行串联分压,利用热敏电阻的温度特 性,采集量电阻变化的分压值,进行A/D转换。此设计方案需用A/D转换电路,增加硬件 成本,而且热敏电阻的温度特性曲线并不是严格线性的,会产生较大误差。方案2:采用数字时温度传感器DS18B20,此类传感器位数字传感器,而且仅需要一条数据 线进行传输,易于与单片机进行连接,可以去除A/D转换模块,降低硬件成本,简化系统 模型。且数字时温度传感器还具有测量精度高,范围广等优点。所以采用数字式温度传感器DS18B20测量温度。电路设计最

7、终方案综上各方案论证,对此次作品的方案决定:采用AT89S52作为主控制系统,DS1302提供时 钟,DS18B20数字温度传感器测量温度,LCD液晶屏作为显示模块。四、硬件电路设计系统总体框图如下:蜂鸣器主” 控模DS1302块时钟模块*键盘输入电路DS18B20模块*显示电路图1.1系统硬件模块图模块说明:DS1302时钟模块可以显示当前时间、日期及星期;键盘输入电路可以调整日期及时间;DS18B20温度模块可以测量当前室内温度;蜂鸣器模块可以提供烟雾警示;显示电路显示当前系统运行情况。DS1302时钟电路的设计单片机必须在时钟的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一

8、个振 荡源就能产生一定的时钟信号送到单片机内部的各个单元决定单片机的工作速度。图1.2外部振荡源电路一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生 幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值 为 30PF。单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的 周期称为时钟周期。其大小是时钟信号频率的倒数常用fosc表示。如时钟频率为12MHz, 即fosc=12MHz,则时钟周期为1/123。2、

9、复位电路的设计单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位, 复位后单片机的各状态都恢复到初始化状态,其电路图如图1.3所示:Ci 22+57 A631J Q1 C2丁知12MHz20uF SW4R1.图1.3复位电路XTAL1XTAL2RST值得注意的是,在设计当中使用到了硬件复位和软件复位两种功能,由上面的硬件复位后的各 状态可知寄存器及存储器的值都恢复到了初始值,而前面的功能介绍中提到了倒计时时间的 记忆功能,该功能的实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功 能。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳

10、转到程序 执行的起始地址。3、显示电路的设计显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰 富的信息,全靠软件来解决。4、键盘扫描电路的设计键盘是人与微机系统打交道的主要设备。关于键盘硬件电路的设计方法也可以在文献和书籍 中找到,配合各种不同的硬件电路,这些书籍中一般也提供了相应的键盘扫描程序。站在系 统监控软件设计的立场上来看,仅仅完成键盘扫描,读取当前时刻的键盘状态是不够的,还 有不少问题需要妥善解决,否则,人们在操作键盘就容易引起误操作和操作失控现象。在单 片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。如图1.4开关电路。图1.4开关电路一般用在对硬

11、件电路要求不高的简单电路中;矩阵键盘更适合于多按键电路。关于消除在按 键过程中产生的“毛刺”现象。这里采用最常用的方法,即延时重复扫描法,延时法的原理 为:因为“毛刺”脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个 时间,所以当单片机检测到有按键动静后再延时一段时间(这里我们取10ms)后再判断此电平 是否保持原状态,如果是则为有效按键,否则无效。液晶显示屏电路五. 系统原理本系统是由AT89S52单片机为控制核心,时钟电路由DS1302提供,它可以对年、月、 日、星期、时、分、秒进行计时,温度的采集由DS18B20构成,用LCD1602来显示数据, 键盘输入电路可以调整时间

12、及日期,通过C语言编程,从DS1302寄存器中读取数据信息, 从DS18B20中读取温度信息数据,再编程将以上信息送入LCD1602显示出来,同时通过键 盘扫描来调整日期。t:X-lXTNL2r 口 Em rc.ir-i rQjAiZ FQIQ FD.-hXr-i EWE am FD7MF?心口IAS ?2 1LAfl P23TAID P27AH PWm# PHS 口 A2tfAid ygrzLonvp F3.IHKD ramirm raoflirri r3.nn raarri paawn ra.iflD-302/04/26 THU8:24:512nCKI iresn岷HwSrKinciTZ

13、n irrzEc r i zPITi8J.W-LMn& 自#! mJ.-nE-LE: .QJ.图1.5系统总原理框图六.系统流程初始化读、写时间、日期、温度结束图1.6主程序流程图时间调整流程图图1.7时间调整程序流程图七.软件测试1.测试元件序号名称型号1PC机HP-4416S2Keil3数字万用表DT92084Proteus2、测试内容:蜂鸣器不报警,原因:蜂鸣器前置放大器放大倍数不够。解决办法:更改蜂鸣器前置放大器,以达到放大倍数要求。(2) LCD不显示字符,原因:LCD的电位器设置的阻值过高,导致字符显示亮度过低,字 符显示而人眼无法察觉。解决办法:调整电位器阻值,直至屏幕亮度适中,

14、可以正常显示字符为止。(3) LCD显示闪烁且亮度不均匀,原因:硬件电路电压不稳,导致芯片无法正常工作。 解决办法:对调用的延时进行逐渐修改,可解决闪烁问题;其次本作品是动态扫描方式显示 的数字,动态扫描很快,人眼无法识别,但在调用显示程序时,如不在返回时屏蔽掉最后的 附值,会出现很亮的现象,因而在现显示后面加了屏闭指令。加入温度程序后进行修改时间日期未按要求值变化。解决办法:由于DS18B20是串行通信数据,只用一个口线传输,在处理采集模拟信号时需 要一定的时间,当把万年历的程序接入后,会对延时有很大的影响。因而在调用温度子程序 时,先关闭定时器1中断允许,再介入温度子程序后再打开定时器1中

15、断允许,从而解决此 问题。八. 心得体会在整个设计过程中,发挥团队精神,分工合作,充分发挥人的主观能动性,自主学习,学到 了许多没学到的知识。较好的完成了作品。达到了预期的目的,在最初的设计中,发挥“三 个臭皮匠,顶个诸葛亮”的作用。相互学习、相互讨论、研究。完了最初的设想。在电路焊 接时虽然没什么大问题,但从中也知道了焊接在整个作品中的重要性,电路工程量大,不能 心急,一个个慢慢来不能急于求成。反而达到事半功倍的效果。对电路的设计、布局要先有 一个好的构思,才显得电路板美观、大方。程序编写中,由于思路不清晰,开始时遇到了很 多的问题,经过静下心来思考,和同组员的讨论,理清了思路,反而得心应手

16、。在此次设计 中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一个脚印。也练就了我们的耐 心,做什么事都在有耐心。此次比赛中学到了很多很多东西,这是最重要的。总之,参加电 子竞赛我们的能力得到了全方位的提高。九. 参考文献(1) 谭浩强.C程序设计【M】.清华大学出版社,2005: 1-300(2) 阎石.数字电子技术基础【M】.北京:等教育出版社,1995.4(3) 化成英.模拟电子技术基础【M】.北京:等教育出版社社.2001.12(4) 万福君、潘松等.单片微机原理系统设计与应用【M】.北京:中国科学技术出版社,2005: 1-357(5) 李权利,迟荣强等.单片机原理及接口技术【

17、M】.北京:高等教育出版社,2004.1十.附录#include #include /#include LCD1602.h”/#include DS1302.h” uchar tempkk; uchar tempkl;#define uint unsigned int #define uchar unsigned char sbit sbit sbit sbit sbit sbit sbit sbit sbit sbit sbit sbit sbit sbit sbit sbit sbitDS1302_CLK = P1A7; DS1302_IO = P1A6; DS1302_RST = P1A

18、5; wireless_1 = P3A4; wireless_2 = P3A5; wireless_3 = P3A6; wireless_4 = P3A7;ACC0 = ACCA0; ACC7 = ACCA7; lightk=P1A2; lightled=P3A7; lightld=P3A2; yanwu=P1A1; ldk=P3A3;beep=P2A4; tempk1=P1A3; tempk2=P1A4;实时时钟时钟线引脚实时时钟数据线引脚实时时钟复位线引脚char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_

19、year; /秒,分,时到 日, 月,年位闪的计数sbit Set = P2A0;/模式切换键sbit Up = P2A1;加法按钮sbit Down = P2A2;减法按钮sbit out = P2A3;/立刻跳出调整模式按钮-sbit DQ = P1A0;温度传送数据IO 口char done,count,temp,flag,up_flag,down_flag;uchar temp_value;/温度值uchar TempBuffer5,week_value2;void show_time();/液晶显示程序/ /1 1 1 、 /* * J *1* *1* *1* *1* *1* *1*

20、 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*/Port Definitions*sbit LcdRs= P2A5;sbit LcdRw= P2A6;sbit LcdEn = P2A7;sfr DBPort = 0x80;/P0=

21、0x80,P1=0x90,P2=0xA0,P3=0xB0数 据端口/内部等待函数“ 个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个unsigned char LCD_Wait(void) LcdRs=0;LcdRw=1; _nop_();LcdEn=1; _nop_();LcdEn=0;return DBPort;/ 向 LCD 写 入 命 令 或 数 据“个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个#define L

22、CD_COMMAND#define LCD_DATA#define LCD_CLEAR_SCREEN#define LCD_HOMING0/ Command1/ Data0x01/清屏0x02/光标返回原点0x04显示开0x00显示关0x02/显示光标0x00/无光标0x01/光标闪动void LCD_Write(bit style, unsigned char input) LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();/注 意顺序LcdEn=1;_nop_();/注 意顺序LcdEn=0;_nop_();LCD_Wait(

23、);“ 个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个设置显示模式#define LCD_SHOW#define LCD_HIDE#define LCD_CURSOR#define LCD_NO_CURSOR#define LCD_FLASH#define LCD_NO_FLASH 0x00/光标不闪动 void LCD_SetDisplay(unsigned char DisplayMode)LCD_Write(LCD_COMMAND, 0x08|DisplayMode);#define LCD_MOVE#define

24、 LCD_NO_MOVE0x01/画面可平移0x00 /default#define LCD_AC_UP0x02#define LCD_AC_DOWN0x00/ default设置输入模式“ 个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个void LCD_SetInput(unsigned char InputMode)LCD_Write(LCD_COMMAND, 0x04|InputMode);初始化 LCD* void LCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0x38);

25、/8 位数据端口,2 行显示,5*7 点阵LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);开启显示,无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); 清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC 递增,画面不动/液晶字符输入的位置“ 个个个个个个个个个个个个个个个个个个个个个个个个void GotoXY(unsigned char x, unsigned char y)if(y=0)LCD_Write(LCD_COMMAND,0x8

26、0|x);if(y=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);/将字符输出到液晶显示 void Print(unsigned char *str) while(*str!=0) LCD_Write(LCD_DATA,*str); str+;/*DS1302 时钟部分子程序*/typedef struct _SYSTEMTIME_unsigned char Second;unsigned char Minute;unsigned char Hour;unsigned char Week;unsigned char Day;unsigned char Month;

27、unsigned char Year;unsigned char DateString11;unsigned char TimeString9;SYSTEMTIME; 定义的时间类型 SYSTEMTIME CurrentTime;#define AM(X) X#define PM(X) (X+12)0x80/转成24小时制时钟芯片的寄存器位置,存放时间#define DS1302 MINUTE0x82#define DS1302 HOUR0x84#define DS1302 WEEK0x8A#define DS1302 DAY0x86#define DS1302 MONTH0x88#defin

28、e DS1302 YEAR0x8C#define DS1302 SECOND实时时钟写入一字节(内部函数)/相当于汇编中的RRCvoid DS1302InputByte(unsigned char d) unsigned char i;ACC = d;for(i=8; i0; i-)DS1302_IO = ACC0;DS1302_CLK = 1;DS1302_CLK = 0;ACC = ACC 1;unsigned char DS1302OutputByte(void)实时时钟读取一字节(内部函数)unsigned char i;for(i=8; i0; i-)ACC = ACC 1;/相当于

29、汇编中的RRCACC7 = DS1302_IO;DS1302_CLK = 1;DS1302_CLK = 0;return(ACC);void Write1302(unsigned char ucAddr, unsigned char ucDa) /ucAddr: DS1302 地址,ucData: 要写的数据 DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr);/ 地址,命令DS1302InputByte(ucDa); / 写 1Byte 数据DS1302_CLK = 1;DS1302_RST = 0;uns

30、igned char Read1302(unsigned char ucAddr) 读取 DS1302 某地址的数据unsigned char ucData;DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr|0x01);/ 地址,命令ucData = DS1302OutputByte();/ 读 1Byte 数据DS1302_CLK = 1;DS1302_RST = 0;return(ucData);void DS1302_GetTime(SYSTEMTIME *Time) 获取时钟芯片的时钟数据到自定义的结

31、构 型数组 unsigned char ReadValue;ReadValue = Read1302(DS1302_SECOND);Time-Second = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_MINUTE);Time-Minute = (ReadVilue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_HOUR);Time-Hour = (ReadVilue&0x70)4)*10 + (ReadVilue&0x0F);R

32、eadValue = Read1302(DS1302_DAY);Time-Day = (ReadVilue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_WEEK);Time-Week = (ReadValue&0x70)4)*10 + (ReadVlue&0x0F);ReadValue = Read1302(DS1302_MONTH);Time-Month = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_YEAR);Time-Ye

33、ar = (ReadValue&0x70)4)*10 + (ReadVlue&0x0F);void DateToStr(SYSTEMTIME *Time)/将时间年,月,日,星期数据转换成液晶显示字符串,放到数组里DateString if(hide_year2)这里的if,else语句都是判断位闪烁,2就不显示,输出字符串为2007/07/22Time-DateString0 = 2;Time-DateString1 = 0;Time-DateString2 = Time-Year/10 + 0;Time-DateString3 = Time-Year%10 + 0;elseTime-Dat

34、eString0=;Time-DateString1=;Time-DateString =;Time-DateString3=;Time-DateString4 = /;if(hide_monthDateString5 = Time-Month/10 + 0;Time-DateString6 = Time-Month%10 + 0;elseTime-DateString5=;Time-DateString6=;Time-DateString7 = /;if(hide_dayDateString8 = Time-Day/10 + 0;Time-DateString9 = Time-Day%10

35、+ 0;elseTime-DateString8=;Time-DateString9=;if(hide_weekWeek%10 + 0-1; /星期的数据另外放到 week_value数组 里,跟年,月,日的分开存放,因为等一下要在最后显示elseweek_value0=;week_value1 = 0;Time-DateString10 = 0; /字符串末尾加0,判断结束字符void TimeToStr(SYSTEMTIME *Time) /将时,分,秒数据转换成液晶显示字符放到数组 TimeString; if(hide_hourTimeString0 = Time-Hour/10 +

36、0;Time-TimeString1 = Time-Hour%10 + 0;elseTime-TimeString0=;Time-TimeString1=;Time-TimeString2=:;if(hide_minTimeString3 = Time-Minute/10 + 0;Time-TimeString4 = Time-Minute%10 + 0;elseTime-TimeString3=;Time-TimeString4=;Time-TimeString5=:;if(hide_secTimeString6 = Time-Second/10 + 0;Time-TimeString7 =

37、 Time-Second%10 + 0;elseTime-TimeString6=;Time-TimeString7=;Time-DateString8 = 0;void Initial_DS1302(void)时钟芯片初始化unsigned char Second=Read1302(DS1302_SECOND);if(Second&0x80)/判断时钟芯片是否关闭 Write1302(0x8e,0x00); /写入允许 Write1302(0x8c,0x07); 以下写入初始化时间 日期:07/07/25.星期:3,时间:23:59:55 Write1302(0x88,0x07);Write

38、1302(0x86,0x25);Write1302(0x8a,0x07);Write1302(0x84,0x23);Write1302(0x82,0x59);Write1302(0x80,0x55);Write1302(0x8e,0x80); /禁止写入 /*ds18b20 子程序 */*ds18b20 延迟子函数(晶振 12MHz ) */ void delay_18B20(unsigned int i) while(i-); /*ds18b20 初始化函数 */ void Init_DS18B20(void) unsigned char x=0;DQ = 1;/DQ 复位delay_18B

39、20(8); /稍做延时DQ = 0;单片机将DQ拉低delay_18B20(80); /精确延时大于 480usDQ = 1;拉高总线delay_18B20(14);x=DQ;稍做延时后如果x=0则初始化成功x=1则初始化失败delay_18B20(20);/*ds18b20 读一个字节 */ unsigned char ReadOneChar(void) uchar i=0;uchar dat = 0;for (i=8;i0;i-)DQ = 0; /给脉冲信号 dat=1;DQ = 1; /给脉冲信号 if(DQ) dat|=0x80;delay_18B20(4); return(dat)

40、;/*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); / 启动温

41、度转换delay_18B20(100);/ this message is very importantInit_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); 读取温度寄存器等(共可读9个寄存器)前两个就是温度delay_18B20(100);a=ReadOneChar();读取温度值低位b=ReadOneChar();读取温度值高位temp_value=b4;void temp_to_str()/温度数据转换成液晶字符显示TempBuffer0=temp_value/10+0; 十位TempBuffer1=temp_value%10+0; /个位TempBuffe r=0xdf;/温度符号TempBuffer3=C;TempBuffer4=0;void Delay1ms(unsigned int count)unsigned int i,j;for(i=0;icount;i+)for(j=0;j120;j+);/*延时子程序*/void mdelay(uint delay) uin

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号