已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中国地质大学(武汉)基于c51单片机的数字温度报警器的设计指导老师: 姓 名: 鹏 班 级: 学 号: 专 业: 机械设计制造及其自动化 院 系: 机电学院 日 期: 2016.01.10 基于单片机的数字温度报警器的设计摘要:随着现代信息化技术的飞速发展和传统工业改造的逐步实现,能独立工作的温度检测系统已广泛应用于各种不同的领域。本次课程设计是基于at89c51单片机进行温度传测定及报警等功能的设计,利用数字温度传感器ds18b20的测温系统,通过led数码管和lcd液晶显示屏同时显示实时温度和报警预设温度,报警指示通过蜂鸣器的声音和16x16点阵屏同时报警,并能采取降温措施(直流电动机启动)。同时本次设计的报警温度采用键盘输入的方式,确保各种报警温度可以方便的设定和调节。本次课程设计的系统电路简单、操作简便,能任意设定报警温度,系统具有可靠性高、成本低、功耗小等优点。关键词: 单片机、温度检测、at89c51、ds18b20 目录基于单片机的数字温度报警器的设计1一、引言:3二、设计方案31.基本要求32.扩展功能33.方案选定34.总体设计方案4三、功能模块分析41.复位电路42.键盘电路53.ds18b20温度检测电路64.显示电路75.报警电路106.降温风扇电路10四、软件设计分析111.主函数模块112.温度检测模块123.键盘扫描模块134.lcd液晶显示模块145.中断模块15五、课程设计体会15附录:1835 一、 引言:随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,各种数字系统的应用也使人们的生活更加舒适。数字化控制、智能控制为现代人的工作、生活、科研等方面带来方便。其中数字温度计就是一个典型的例子。数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温精确、功能多样话等优点。其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该设计使用stc89c51单片机作控制器,数字温度传感器ds18b20测量温度,单片机接受传感器输出,经处理用led数码管和lcd液晶屏实现温度值显示。二、 设计方案1. 基本要求实现实时温度显示,测温范围-55+125。报警通过扬声器和发光二极管显示。2. 扩展功能任意设定设置温度报警,通过键盘直接设定温度,设定报警温度通过lcd液晶屏显示。报警同时采取风扇降温措施。 3. 方案选定本次课程设计在实验室进行,基于现有的实验器材,本次选用ds18b20温度传感器作为温度测量传感器,此传感器为单总线数字温度传感器,起体积小、构成的系统结构简单,它可直接将温度转化成串行数字信号给单片机处理,即可实现温度显示。另外ds18b20具有3引脚的小体积封装,测温范围为-55+125摄氏度,测温分辨率可达0.0625摄氏度,其测量范围与精度都能符合设计要求。 4. 总体设计方案图:总体设计三、 功能模块分析1. 复位电路复位操作是为了完成单片机内部电路的初始化,使单片机从一种确定的状态开始运行。当at89c51单片机的复位引脚rst出现2个机器周期以上,单片机就完成了复位操作。如果rst持续为高电平,单片机就处于循环复位状态1。 复位通常有2种基本形式:上电复位和开关复位。上电复位要求要求接通电源后,自动实现复位操作。开关复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。本次采用的是常用的上电且开关复位电路,电路如下图所示:图:复位电路上电后,由于电容充电,使rst持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使rst持续一段时间的高电平,从而实现上电且开关复位的操作。通常选择c=1030f,r=101000。复位操作使单片机进入初始化过程,其中包括使程序计数器pc=0000h,p0p3=ffh,sp=07h,其它寄存器处于零。2. 键盘电路本次使用实验仪提供的一个64的小键盘,向列扫描码地址(0x002h)逐列输出低电平,然后从行码地址(0x001h)读回。如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。这样就可以通过输出的列码和读取的行码来判断按下的是什么键。在判断有键按下后,要有一定的延时,防止键盘抖动。地址中的x是由key/led cs 决定,参见地址译码。做键盘和led实验时,需将key/led cs 接到相应的地址译码上。以便用相应的地址来访问。例如将key/led cs信号接cs0上,则列扫描地址为08002h,行码地址为08001h。列扫描码还可以分时用作led的位选通信号。键盘在由单片机控制的温度报警器系统中的主要作用是通过按键向单片机输入指令,其中主要是输入控制温度的上下限,是人工控制单片机的主要手段。在此温度报警系统由于使用伟福试验箱进行设计,本次使用的伟福试验箱的键盘原理图如下所示:图:键盘扫描电路3. ds18b20温度检测电路使用美国dallas半导体公司的数字化温度传感器ds1820,支持 “一线总线”接口的温度传感器,在其内部使用了在板(on-b0ard)专利技术。全部传感元件及转换电路集成在形如一只三极管的集成电路内。“一线总线”独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的ds18b20体积更小、更经济、更灵活。使你可以充分发挥“一线总线”的优点。 同ds1820一样,ds18b20也支持“一线总线”接口,测量温度范围为-55c+125c,在-10+85c范围内,精度为0.5c。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3v5.5v的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小,ds18b20产品的特点 :(1) 只要求一个端口即可实现通信。 (2) 在ds18b20中的每个器件上都有独一无二的序列号。 (3) 实际应用中不需要外部任何元器件即可实现测温。 (4) 测量温度范围在55。c到125。c之间。 (5) 数字温度计的分辨率用户可以从9位到12位选择。 (6) 内部有温度上、下限告警设置。ds18b20内部结构如图所示:连线连接孔1连接孔22p1.0sd18b20端口图:ds18b20内部结构由于ds18b20单线通信功能是分时完成的,所以有严格的时隙概念,读写时序很重要。系统对ds18b20的各种操作必须按协议进行。操作协议为:初始化ds18b20(发复位脉冲)发rom功能命令发存储器操作命令处理数据。其电路简图如下图:图:温度检测电路4. 显示电路(1) led数码管显示电路显示电路主要是用于显示时间。采用led数码管进行显示是因为led数码管具有以下几个优点:(1)能在低电压、小电流条件下驱动发光,能与cmos、itl电路兼容。(2)发光响应时间极短(0.1s),高频特性好,单色性好,亮度高。(3)体积小,重量轻,抗冲击性能好。本次实验使用实验仪提供的6 位8段码led显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。8位段码、6位位码是由两片74ls374输出。位码经mc1413或uln2003倒相驱动后,选择相应显示位。当用pic5x驱动八段管时,是用i/o方式驱动,所以,驱动方式开关拨到“外驱”方式,pb0pb7接八段的ah段,pc0pc5接g0g5。当用lpc2103驱动时,用的是模拟总线方式,所以只需将八段管的key/led_cs 片选接到cs0即可。实验仪中 8位段码输出地址为0x004h,位码输出地址为 0x002h。此处x是由key/led cs 决定,参见地址译码。做键盘和led实验时,需将key/led cs 接到相应的地址译码上。以便用相应的地址来访问。例如,将key/led cs 接到cs0上,则段码地址为08004h,位码地址为08002h。led显示电路如图所示:连线连接孔1连接孔21led_cscs0图:led显示电路(2) lcd液晶显示电路本次实验使用实验仪提供的液晶显示屏内置控制器为sed1520,点阵为122x32,需要两片sed1520组成,由e1、e2分别选通,以控制显示屏的左右两半屏。图形液晶显示模块有两种连接方式。一种为直接访问方式,一种为间接控制方式。本实验仪采用直接控制方式。直接控制方式就是将液晶显示模块的接口作为存储器或io设备直接挂在计算机总线上。计算机通过地址译码控制 e1和 e2的选通;读写操作信号 rw由地址线 a1控制;命令/数据寄存器选择信号 ao由地址线 a0控制。实际电路如上图所示。地址映射如下(地址中的x由lcd cs决定,可参见地址译码部分说明)0x000h0x001h0x002h0x003h0x004h0x0050x006h0x007h写e1指令写e1数据读e1状态读e1数据写e2指令写e2数据读e2状态读e2数据间接控制方式是计算机通过自身的或系统的并行接口与液晶显示模块连接,如 mcs51的p1口和p3口, 8255等并行接口芯片。计算机通过对该并行接口输出状态的编程操作,完成对液晶显示模块所需时序的操作和数据的传输。这种间接控制方式的电路简单,控制时序通过编程来实现。lcd液晶显示电路如下图:连线连接孔1连接孔23lcd_cscs1图:lcd液晶显示电路(3) 16x16点阵显示16x16点阵需要32个驱动,分别为16个列驱动及16个行驱动。每个行与每个列可以选中一个发光管,共有256个发光管,采用动态驱动方式。每次显示一行,10ms后再显示下一行。实验电路图如下:连线连接孔1连接孔2416x16_cscs3图:16x16点阵显示电路(4) 二极管指示灯实验除采取上述三种显示方式外,还设置有二极管电路来显示程序运行状态和报警状态,其电路图比较简单,下表为二极管电路连接方式。连线连接孔1连接孔25二极管l0p1.26二极管l1p1.45. 报警电路本次试验采用的报警装置是比较简单的一种直接使用p16端口输出讲题变化的高低电平,端口输出的方波经放大滤波后,驱动扬声器发声。声音的频率由端口输出时延时控制。实验电路图如图所示:连线连接孔1连接孔27p1.6喇叭输入图:蜂鸣器电路图6. 降温风扇电路实验中用到的直流电动机无法通过单片机io口直接输出高电平控制,需要通过驱动电路将电压放大后才能驱动直流电动机运行。直流电动机与驱动电路如下图:连线连接孔1连接孔28p1.2驱动输入9驱动输出直流电机电压输入图:直流电动机及驱动电路四、 软件设计分析1. 主函数模块主程序模块主要负责将各个子程序调用并连接在一起,用过中断函数不断刷新读取温度并将数据送达显示模块进行显示,驱动数码管把实时温度值送出在led数码管显示查询记录温度值子程序,将当前设定温度实时显示在液晶显示屏,温度超过设定温度上限,单片机驱动蜂鸣器报警,同时驱动二极管发光、点阵屏显示、直流电动机转动。当温度再次低于设定温度上限,上述装置取消报警状态,程序恢复正常运行。 主函数部分程序框图如下:ny开始达到上限?ds18b20读取温度初始化检测按键是否按下?读取键值lcd显示设定温度转换温度小风扇转动显示实时温度ny蜂鸣器报警点阵屏显示指示灯显示图:主函数框图2. 温度检测模块dsl8b20必须严格按照单总线通信协议,以保证数据的完整性。该协议定义了几种时隙类型:初始化、应答、写1、写0、读1、读0。除了应答时隙所有这些时隙都是有主机发出。总线上所传输的所有命令和数据都是字节的低位在前。图:ds18b20温度检测框图3. 键盘扫描模块键盘扫描通过检测按键状态,当有按键按下时,键盘扫描程序将按键转换成键值,将键值返回到主函数,并记录按键的数值,转换成设定温度。键盘扫描按键为d时,进入温度设定状态,连续输入三个数字设定温度完成,通过这一程序实现报警温度的设定。键盘扫描程序框图如下:图:键盘扫描程序框图4. lcd液晶显示模块lcd液晶显示屏初始化时就开始在第一页显示初始设定的文字(“设定报警温度”),当检测到程序进入温度设定程序时,每当输入一个数据,液晶显示屏同步显示到相应的位置,输入三个数字后液晶屏显示设定温度如“36.5”,达到设计的目的。lcd液晶显示程序框图如下所示:图:lcd液晶屏显示程序框图5. 中断模块中断采用t0方式1,初始值定时为1.842ms。中断模块包含三部分内容,一是进行初始温度的转化,二是进行点阵屏的刷新,实时显示需要显示的内容,三是进行报警判断,根据需要使蜂鸣器报警或停止报警。把这三个程序放模块在中断的原因是,不会因为调整报警温度或进行点阵屏显示值而停止更新温度值,更能使蜂鸣器报警时不停止其他程序的运行。中断模块流程图:五、 课程设计体会本设计是以温度采集及控制过程设计为总目标,以89c51单片机最小应用系统为总控制中心,辅助设计有温度采样电路、led数码管动态串行显示、lcd液晶屏显示、16x16点阵屏显示,二极管发光显示,蜂鸣器报警等。本设计的重点、难点是:(1) 要掌握温度传感器的原理、结构、应用等;(2) 考虑从非电量信号到电量信号的电路实现原理以及与单片机的接口;(3) 熟悉mcs-51编程的技术,实现单片机对温度的调节控制;(4) 整体电路的仿真调试。经过十天的资料查找和设计,我已完成了计算机控制的课程设计。本文设计了温度报警系统,介绍了温度检测等控制器的硬件电路设计到软件设计的一系列步骤。本设计采用89c51单片机作为控制芯片,辅助键盘和显示,实现了温度检测和报警的功能。纵观整个设计系统,我更加熟悉了对89c51单片机的了解与认识,深切的将课堂中所学的理论知识运用到实践中,这是一个非常好的机会,我也很看重,如果没有这次的课程设计,我对单片机的学习还是一直是课堂中的认识,无法真真实实的了解一个单片机的运行状况,这次课程设计对我以后也有很大的影响。在论文完成之际,我要对各位老师和各位学长表示最真挚的谢意。老师工作认真、严谨治学,学长耐心指导,无私奉献,在老师和学长的带领下,我们圆满的完成了这次课程设计,参考文献:【1】钟晓伟,宋哲存,基于单片机的实验是温湿度控制系统设计 a 林业机械与木工设备【2】叶景,基于单片机的温度控制系统的设计 经验与交流,2008【3】李丹妮,单片机温度控制系统设计j九江学院报2005【4】刘笃仁,韩保君,传感器原理及应用技术 西安电子科技大学出版社,2008【5】李建民.单片机在温度控制系统中的应用n.湖北:江汉大学学报,1996:9.【6】胡汉才.单片机原理及接口技术m.北京:清华大学出版社,1996:5. 【7】邵敏权.单片机原理实验及应用m.吉林:吉林科学技术出版社,1995:3.【8】付家才.单片机控制工程实践技术m.北京:化学工业出版社,2004:12.【9】彭伟.单片机c语言程序设计实训100例m.北京:北京航空航天大学出版社,2010:5.附录:#include#include#include code unsigned char cod6=1,2,3,4,5,6;unsigned char cod16;unsigned char cod26=0,0,0,0,0,0;#define pd1 61 / 122/2 分成左右两半屏(122x32)unsigned char column;unsigned char page_ ; / 页地址寄存器 d1,do:页地址unsigned char code_ ; / 字符代码寄存器unsigned char command; / 指令寄存器unsigned char lcddata; / 数据寄存器xdata unsigned char cwadd1 _at_ 0x9000; / 写指令代码地址(e1)xdata unsigned char dwadd1 _at_ 0x9001; / 写显示数据地址(e1)xdata unsigned char cradd1 _at_ 0x9002; / 读状态字地址(e1)xdata unsigned char dradd1 _at_ 0x9003; / 读显示数据地址(e1)xdata unsigned char cwadd2 _at_ 0x9004; / 写指令代码地址(e2)xdata unsigned char dwadd2 _at_ 0x9005; / 写显示数进地址(e2)xdata unsigned char cradd2 _at_ 0x9006; / 读状态字地址(e2)xdata unsigned char dradd2 _at_ 0x9007; / 读显示数据地址(e2)xdata unsigned char rowlow _at_ 0xb002; /行低八位地址xdata unsigned char rowhigh _at_ 0xb003; /行高八位地址xdata unsigned char collow _at_ 0xb000; /列低八位地址xdata unsigned char colhigh _at_ 0xb001; /列高八位地址#define uchar unsigned char#define uint unsigned intunsigned int curtemp;sbit in=p10;sbit warled=p12;sbit run=p14;sbit war = p16;unsigned int b;unsigned int a;unsigned int c;unsigned char w=1;unsigned char v=1;unsigned int bitmask ;/*数码表*/unsigned char ledbuf6= 0x00,0x00,0x00,0x00,0x00,0x00;code unsigned int ledmap = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71;code uchar crystaltab32 = /*- 文字: 行 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x40,0x10,0xa0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0xfc,0x11,0x02,0x14,0xfe,0x17,0x00,0x90,0xf8,0x51,0x08,0x31,0xf8,0x11,0x00,0x10,0xfe,0x0b,0x20,0x0c,0x40,0x08,/*- 文字: 停 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x40,0x10,0xa0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x90,0x20,0x50,0x20,0x30,0xfe,0x1b,0x00,0x0c,0x00,0x88,0x00,0x40,0xfc,0x31,0x00,0x1c,0x00,0x08,;/数字字库code unsigned char numtab16=/*- 文字: 0 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0xe0,0x10,0x08,0x08,0x10,0xe0,0x00,0x00,0x0f,0x10,0x20,0x20,0x10,0x0f,0x00,/*- 文字: 1 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x10,0x10,0xf8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3f,0x20,0x20,0x00,0x00,/*- 文字: 2 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*- 文字: 3 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0e,0x00,/*- 文字: 4 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x00,0xc0,0x20,0x10,0xf8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3f,0x24,0x00,/*- 文字: 5 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0xf8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0e,0x00,/*- 文字: 6 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0xe0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0f,0x11,0x20,0x20,0x11,0x0e,0x00,/*- 文字: 7 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x38,0x08,0x08,0xc8,0x38,0x08,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,/*- 文字: 8 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1c,0x22,0x21,0x21,0x22,0x1c,0x00,/*- 文字: 9 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0xe0,0x10,0x08,0x08,0x10,0xe0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0f,0x00,/*- 文字: . -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,/*- 文字: c -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x60,0x60,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0e,0x11,0x20,0x20,0x20,0x11,0x00,;/ 中文字模库 16x16点阵code unsigned char charcctertab32 =/*- 文字: 设 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x40,0x41,0xce,0x04,0x00,0x80,0x40,0xbe,0x82,0x82,0x82,0xbe,0xc0,0x40,0x40,0x00,0x00,0x00,0x7f,0x20,0x90,0x80,0x40,0x43,0x2c,0x10,0x10,0x2c,0x43,0xc0,0x40,0x00,/*- 文字: 定 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x10,0x0c,0xa4,0x24,0x24,0x25,0xe6,0x24,0x24,0x24,0x24,0x14,0x0c,0x04,0x00,0x40,0x20,0x18,0x07,0x08,0x10,0x20,0x7f,0x42,0x42,0x42,0x42,0x40,0x40,0x00,0x00,/*- 文字: 报 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x08,0x08,0x88,0xff,0x48,0x28,0x00,0xff,0xc1,0x41,0x41,0x49,0x51,0xcf,0x00,0x00,0x01,0x41,0x80,0x7f,0x00,0x00,0x00,0xff,0x40,0x23,0x14,0x1c,0x33,0x60,0x20,0x00,/*- 文字: 警 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x20,0x1a,0xfa,0xaf,0xaa,0xef,0x0a,0xfa,0x10,0x8f,0x54,0x24,0x5c,0x84,0x04,0x00,0x02,0x02,0x02,0xea,0xaa,0xaa,0xab,0xaa,0xab,0xaa,0xaa,0xea,0x02,0x02,0x03,0x00,/*- 文字: 温 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x10,0x21,0x86,0x70,0x00,0x7e,0x4a,0x4a,0x4a,0x4a,0x4a,0x7e,0x00,0x00,0x00,0x00,0x02,0xfe,0x01,0x40,0x7f,0x41,0x41,0x7f,0x41,0x41,0x7f,0x41,0x41,0x7f,0x40,0x00,/*- 文字: 度 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0xfc,0x04,0x24,0x24,0xfc,0xa5,0xa6,0xa4,0xfc,0x24,0x24,0x24,0x04,0x00,0x80,0x60,0x1f,0x80,0x80,0x42,0x46,0x2a,0x12,0x12,0x2a,0x26,0x42,0xc0,0x40,0x00,;/*数码表*/*延时程序*/void delay(uchar cnt) uchar i; while (cnt- !=0) for (i=100; i !=0; i-);/*延时程序*/*ds18b20读取温度程序*/unsigned char ds18b20init()unsigned int i;in=0; /将总线拉低480us960usi=70;while(i-);/延时642usin=1;/然后拉高总线,如果ds18b20做出反应会将在15us60us后总线拉低i=0;while(in)/等待ds18b20拉低总线i+;if(i5000)/等待5msreturn 0;/初始化失败return 1;/初始化成功void ds18b20writebyte(unsigned char dat)unsigned int i,j;for(j=0;j=1;unsigned char ds18b20readbyte()unsigned char byte,bi;unsigned int i,j;for(j=8;j0;j-)in=0;/先将总线拉低1usi+;in=1;/然后释放总线i+;i+;/延时6us等待数据稳定bi=in; /读取数据,从最低位开始读取/*将byte左移一位,然后与上右移7位后的bi,注意移动之后移掉那位补0。*/byte=(byte1)|(bi7); i=4;/读取完之后等待48us再接着读取下一个数while(i-);return byte;void ds18b20changtemp()ds18b20init();delay(1);ds18b20writebyte(0xcc);/跳过rom操作命令 ds18b20writebyte(0x44); /温度转换命令 void ds18b20readtempcom()ds18b20init();delay(1);ds18b20writebyte(0xcc); /跳过rom操作命令ds18b20writebyte(0xbe); /发送读取温度命令int ds18b20readtemp()int temp=0;unsigned char tmh,tml;ds18b20changtemp();/先写入转换命令ds18b20readtempcom();/然后等待转换完后发送读取温度命令tml=ds18b20readbyte();/读取温度值共16位,先读低字节tmh=ds18b20readbyte();/再读高字节temp=tmh;temp= 1; k = xbyte0x8001 & 0x0f; while (-i != 0) & (k = 0);/ 键值 = 列 x 4 + 行 if (k != 0) i *= 4; if (k & 2) i += 1; else if (k & 4) i += 2; else if (k & 8) i += 3; xbyte0x8002 = 0; do delay(100); while (testkey(); / 等键释放 return(keytablei); / 取出键码 else return(0xff);/*键盘扫描程*/ /*lcd液晶屏显示程序*/ 1.写指令代码子程序(e1)void writecommande1() while(cradd1 & 0x80); cwadd1 = command;/ 2.写显示数据子程序(e1)void writedatae1() while(cradd1 & 0x80); dwadd1 = lcddata;/ 3.读显示数据子程序(e1)void readdatae1() while(cradd1 & 0x80); lcddata = dradd1;/ 4.写指令代码子程序(e2)void writecommande2() while(cradd2 & 0x80); cwadd2 = command;/ 5.写显示数据子程序(e2)void writedatae2() while(cradd2 & 0x80); dwadd2 = lcddata;/ 6.读显示数据子程序(e2)void readdatae2() while(cradd2 & 0x80); lcddata = dradd2;/ lcd液晶屏初始化程序void init() run=1; command = 0xe2; writecommande1(); writecommande2(); command = 0xa4; writecommande1(); writecommande2(); command = 0xa9; writecommande1(); writecommande2(); command = 0xa0; writecommande1(); writecommande2(); command = 0xc0; writecommande1(); writecommande2(); command = 0xaf; writecommande1(); writecommande2();/ lcd液晶屏清屏void clear() unsigned char i,j; i = 0; do command = (i + 0xb8); / 页地址设置 writecommande1(); writecommande2(); command = 0x00; / 列地址设置为0 writecommande1(); writecommande2(); j = 0x50; / 一页清 80个字节 do lcddata = 0x00; / 显示数据为0 wri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GBT 34141-2017 高速列车网络控制系统》专题研究报告
- 2025年大学二年级太空育种专业《太空育种技术》期末考试测验卷及答案
- 工程热处理工安全意识强化模拟考核试卷含答案
- 履带运输车司机创新实践考核试卷含答案
- 《GBT 20570-2015 玉米储存品质判定规则》专题研究报告
- 矿压观测工岗前诚信道德考核试卷含答案
- 硝酸生产工安全意识水平考核试卷含答案
- 加气混凝土大板拼装工复试测试考核试卷含答案
- 对二乙基苯装置操作工岗位设备安全技术规程
- 《GBT 3780.22-2016 炭黑 第 22 部分:用工艺控制数据计算过程能力指数》专题研究报告
- 07FK02防空地下室通风设备安装图集
- GB/T 34881-2017产品几何技术规范(GPS)坐标测量机的检测不确定度评估指南
- 2022年上海市精神卫生中心医护人员招聘笔试试题及答案解析
- 纳米材料的力学性能课件
- 台儿庄战役(近代史)-课件
- 抗滑桩专项专项施工方案
- 团支部工作手册
- 林业生态工程监理资料汇编
- 光伏支架项目可行性研究报告写作参考范文
- 烟花爆竹安全生产技术与管理PPT课件.ppt
- 《制作洋葱鳞片叶表皮细胞临时装片》教学设计
评论
0/150
提交评论