LCD时钟温度计的设计.doc

上传人:仙人指路1688 文档编号:4146606 上传时间:2023-04-07 格式:DOC 页数:27 大小:2.77MB
返回 下载 相关 举报
LCD时钟温度计的设计.doc_第1页
第1页 / 共27页
LCD时钟温度计的设计.doc_第2页
第2页 / 共27页
LCD时钟温度计的设计.doc_第3页
第3页 / 共27页
LCD时钟温度计的设计.doc_第4页
第4页 / 共27页
LCD时钟温度计的设计.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《LCD时钟温度计的设计.doc》由会员分享,可在线阅读,更多相关《LCD时钟温度计的设计.doc(27页珍藏版)》请在三一办公上搜索。

1、LCD时钟温度计的设计摘 要LCD时钟温度计是由中央控制器、温度检测器、时钟系统、存储器、显示器及键盘部分组成。控制器采用单片机AT89C51,温度检测部分采用DS18B20温度传感器,时钟系统用时钟芯片DS1302,用LCD液晶12232F作为显示器,用AT24C16作为存储器件。单片机通过时钟芯片DS1302获取时间数据,对数据处理后显示时间;温度传感器DS18B20采集温度信号送该给单片机处理,存储器通过单片机对某些时间点的数据进行存储;单片机再把时间数据和温度数据送液晶显示器12232F显示,12232F还可以显示汉字;键盘是用来调时和温度查询的。关键字: 单片机 汇编语言 查表 LC

2、D液晶 DS18B20 AT24C16LCD clock thermometer design Abstract: We designed the temperature of the LCD clock system is provided by the central controller, temperature detectors, clock system, memory, display and keyboard parts. Single-chip computer controller W78E516B, temperature detection part of the us

3、e of DS18B20 temperature sensor, clock system clock chip with DS1302, with LCD LCD 12232F as a display, using AT24C16 as a memory. Single-chip through the clock chip DS1302 time access to data, data-processing time after the show; temperature sensor DS18B20 collecting temperature signal sent to the

4、treatment to the single-chip, memory through the single-chip for certain time points of data storage; Singlechip then the time to send data and temperature data 12232F LCD display, 12232F can also display Chinese characters; keyboard is used to tune the query time and temperature. Keywords: Single-c

5、hip LCD look-up table DS18B20 AT24C16 LCD assembly language 目 录一、前言1二、总体方案设计1(一)方案设计与论证1(二)电路设计最终方案决定3三、单元模块设计3(一)各单元模块功能介绍及电路设计3(二)电路原理及说明6四、软件设计9(一)主程序9(二)时间显示程序9(三)时间调整程序设计10(四)读取温度子程序10(五)温度转换命令子程序11(六)计算温度子程序12(七)显示数据刷新子程序12(八)温度数据的计算处理方法13(九)温度值存储子程序13(十)查询子程序13五、测试方法13(一)测试仪器13(二)硬件调试13(三)软件调

6、试14(四)测试结果分析14(五)测试结论15六、总结与体会15七、致谢辞15附 录16附录一 系统原理图:16附录二 查询子程序流程图17附录三 温度值存储程序流程图18附录四 设计部分源程序19参考文献23一、前言开发时钟温度计就必须要了解单片机和LCD夜晶显示器的原理和功能等,下面一节我们将简单介绍一下单片机和液晶显示器。在学习了数字电子技术和单片机原理及接口技术课程后,为了加深对理论知识的理解,学习理论知识在实际中的运用,培养动手能力和解决实际问题的经验让我亲自接触专用时钟芯片DS1302,并会用DS1302芯片开发时钟模块,应用到其他系统中去。熟悉WAVE软件调试程序和仿真.通过实验

7、提高对单片机的认识;通过实验提高焊接、布局、电路检查能力;通过实验提高软件调试能力;进一步熟悉和掌握单片机的结构及工作原理。通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。通过完成一个包括电路设计和程序开发的完整过程,使我了解开发一单片机应用系统的全过程,为今后从事相应打下基础。1、基本要求(1)具有年、月、日、星期、时、分、秒等功能;(2)有温度计功能; (3)可显示温度计。二、总体方案设计 (一)方案设计与论证按照系统的设计功能要求,本时钟温度系统的设计必须采用单片机软件系统实现,用单片机的

8、自动控制能力配合按键控制,来控制时钟、温度的存储和查询及显示。初步确定设计系统由单片机主控模块、时钟模块、测温模块、存储模块、显示模块、键盘接口模块共6个模块组成,电路系统框图如图1所示。主控器件AT89C51温度检测DS18B20时钟DS1302存储器AT24C16LCD显示器12232F键盘部分图1电路系统框图1 单片机芯片的选择方案和论证方案一:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C51是一种带2K字

9、节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。方案二:如果用8031系列,由于它没有内部RAM,系统又需要大量内存存储数据,因而不可用;51系列单片机的ROM为4K,对于我们设计的系统可能有点小。方案三:用W78E516B,有8K字节在系统可编程Flas

10、h存储器W78E516B是一种低功耗、高性能CMOS8位微控制器。W78E516B 是Winbond 生产的与Intel 的8052 指令集兼容的8 位微控制器,内部含有两部分可在线更新的Flash EPROM,64K 的主Flash EPROM 和4K 的辅Flash EPROM,用于在系统编程。主Flash 里的程序可被辅Flash 里的加载程序更新,辅Flash 里的程序也可被主Flash 里的加载程序更新。2时钟芯片的选择方案和论证方案一:直接用单片机的定时器编程以实现时钟,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大

11、。所以不采用此方案。方案二:用专门的时钟芯片实现时钟的记时,再把时间数据送入单片机,由单片机控制显示。比较两种方案,用软件实现时钟固然可以,但是程序运行的每一步都需要时间,多一步或少一步程序都会影响记时的准确度,用专用时钟芯片可以实现准确记时。选二方案。3显示模块选择方案和论证方案一:时钟和温度的显示可以用数码管,但是数码管的只能显示简单的数字,我们设计的系统有很多东西需要显示,所以不采用一方案。方案二:用显示功能更好的液晶显示器,它能显示更多的数据,用可以显示汉字的液晶显示器还可以增加显示信息的可读性,让人看起来会很方便。(二)电路设计最终方案决定综上各方案所述,对此次作品的方案选定:控制器

12、采用单片机AT89C51,温度检测部分采用DS18B20温度传感器,时钟系统用时钟芯片DS1302,用LCD液晶12232F作为显示器,用AT24C16作为存储器件。三、单元模块设计(一)各单元模块功能介绍及电路设计根据方案的选择,系统由AT89C51、时钟芯片DS1302、AT24C16存储电路、液晶显示电路、键扫描电路组成。其各功能模块如下:复位电路上电复位采用电平方式开关复位。如图2所示。 上电复位用RC电路,电容用20F,电阻用10K。晶振电路单片机的晶振频率采用12MHZ,加两个30pF电容。图3所示。 图2 复位电路 图3 晶振电路液晶显示电路设计显示电路采用12232F液晶显示器

13、。12232F是一种内置8192个16*16点汉字库和128个16*8点ASCII字符集图形点阵液晶显示器,它主要由行驱动器/ 列驱动器及12832全点阵液晶显示器组成。可完成图形显示,也可以显示7.5*2个(16*16点阵)汉字.与外部CPU接口采用串行方式控制。主要技术参数和性能:电源:VDD:+3.0+5.5V。(电源低于4.0伏LED背光需另外供电);显示内容:122(列)32(行)点;全屏幕点阵;2M ROM(CGROM)总共提供8192个汉字(1616点阵);16K ROM(HCGROM)总共提供128个字符(168点阵);2MHZ频率;工作温度: 0+60 ,存储温度: -20+

14、70。温度传感器设计由于传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度,需要比较多的外部元件支持,且硬件电路复杂,制作成本相对较高。而DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式,电路图如图4所示。图4 温度传感器图DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5V;零待机功耗;温度以9或12位数字量读书;用户可定义的

15、非易失性温度报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8个字节的存储器,结构如表2所示。头两个字节包含测得的温度信息,第三和第四字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。第五个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如表1所示。低5位一直为1,TM是测试模式位,用于

16、设置DS18B20在工作模式还是在测试模式。表1 配置寄存器表表2 高速暂存RAM结构表5存储电路 存储电路采用ATMEL公司生产的AT24C16(图5所示),具有16KB的存储空间。其管脚接法是1、2、3、4接地,5、6分别接单片机的端口,7、8接5V电源。 图5 AT24C16 引脚图 图6 时钟模块图6时钟模块的设计我们采用DS1302作为主要计时芯片,主要为了提高计时精度,更重要的就是DS1302可以在很小的后备电源下继续计时,并可编程选择充电电流来对后备电源进行充电,可以保证后备电源基本不耗电。电路图如图6所示。7键盘接口的设计由于按键只有4个,分别实现为时间调整、时间的加减、查询温

17、度。用查询法完成读键功能。(二)电路原理及说明1.时钟芯片DS1302介绍及其工作原理:现在流行的串行时钟电路很多,如DS1302、 DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。DS1302 是DALLAS 公司推出的涓细流充电时钟芯片内含有一个实时时钟/日历和31 字节静态RAM 通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期

18、月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM 指示决定采用24 或12 小时格式DS1302 与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1.RES复位;2.I/O数据线;3.SCLK串行时钟时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式通信DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mW。DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc

19、2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向)。SCLK始

20、终是输入端。如图7所示。图7 DS1302引脚图DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲。DS1302的控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。 “CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何

21、的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。2 DS1302的控制字节DS1302的控制字如表3所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出表3 DS1302的控制字格式表 3. 数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控

22、制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7,如下图8所示。图8 DS1302读/写时序图4. DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表4。表4 DS1302的日历、时间寄存器表此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令

23、控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。四、软件设计(一)主程序系统主程序首先对系统进行初始化,包括设置定时器、中断和端口;然后显示开机画面。由于单片机没有停止指令,所以可以设计系统程序不断地循环执行上述显示效果。见图9。图9系统流程图(二)时间显示程序 我们采用了时钟芯片DS1302,所以只需从DS1302各寄存器中读出小时、分钟、秒,再处理即可。在首次对DS1302进行操作之前,必须对它进行初始化,然后从DS1302中读取数据,过处理后,送给显示缓冲单元如图

24、10。图10 时间显示程序图(三)时间调整程序设计调整时间用3个调整按钮,1个做为移位控制用,另外两个做为加减用,分别定义控制按钮、加按钮、减按钮。在调整时间过程中,要调整的那位与别的位应该有区别,所以增加了闪烁功能,即调整的那位一直在闪烁直到调整下一位。闪烁原理就是让要调整的那一位,每隔一定时间熄灭一次,比如说50MS。利用定时器计时,当达到50MS溢出时, 就送给该位熄灭符,在下一次溢出时,再送正常显示的值,不断交替,直到调整该位结束,此时送正常显示值给该位,再进入下一位调整闪烁程序,时间调整程序程序流程图如图11。图11时间调整程序程序流程图(四)读取温度子程序主程序的主要功能是负责温度

25、的实时显示、读出并处理DS18B20的测量温度值,温度测量每1s进行一次,流程图如图12。图12 DS18B20温度计主程序流程图读出温度子程序的主要功能是读出RAM中的9个字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图13。 图13 读出温度子程序流程图(五)温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750毫秒,在本程序设计中采用1秒显示程序延时法等待转换的完成。(六)计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图14。图14计算温度子程序流程图

26、(七)显示数据刷新子程序显示数据刷新子程序主要时对显示缓冲器中的显示数据进行刷新操作,当最高显示位为零时将符号显示位移入下一位。程序流程图如图15。NOYESNOYES结束温度数据移入显示寄存器十位数显示符号百位数不显示十位数零?百位数零?图15 显示数据刷新子程序流程图百位数显示数据(不显示符号)(八)温度数据的计算处理方法从DS18B20读取出的二进制值必须先转换成十进制值,才能用于字符的显示。因为DS18B20的转换精度为9-12位可选的,为了提高精度采用12位。在采用12位转换精度时,温度寄存器里的值是以0.0625为步进的,即温度值为温度寄存器里的二进制值乘以0.0625,就是实际的

27、十进制温度值。下表就是二进制和十进制的近似对应关系表。表5 小数部分二进制和十进制的近似对应关系表小数部分二进制值0123456789ABCDEF十进制值0011233455667889(九)温度值存储子程序根据要求,系统要存储某几个时间点的温度,在时钟到达这几个时间点时,通过软件判断,把此时的温度数据读到单片机内存,再通过24C16的读写程序把温度数据存储到24C16对应地址单元,这样温度数据就储存起来了。程序流程图见附录二。(十)查询子程序根据实际要求将某一天某一个时间的具体温度值可进行查看,以及当天温度的最高、最低温度(可查询10天)。通过按钮确定要显示第几天的温度值,把温度值读到单片机

28、内存,发命令给24C16的读写程序,查找对应的地址单元,把地址单元内容读取出来。程序流程图见附录二查询子程序流程图。五、测试方法(一)测试仪器 万用表、温度计、51系列仿真器(二)硬件调试时钟温度计的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺被带有包皮的导线,则会对电路造成短路现象。1. 硬件调试时,可先检查印制板及焊接的质量是否符合要求,有无虚焊点及线路间有无短路、断路。然后用万用表测试或通电检测,检查无误后,可通电检查LCD液晶显示器亮度情况,一般情况下取背光电压为45.5

29、V即可得到满意的效果。2. DS1302与单片机相连的只有3根线,很容易检查,主要检查DS1302管脚与晶振、电源是否连接好。3. DS18B20在测温程序设计中,向DS18B20发温度命令转换后,程序要等待DS18B20的返回信号,一旦线路不好或断线,将陷入死循环,所以线路一定要检查清楚。(三)软件调试LCD时钟温度计是多功能的数字型,可以看当前日期,时间,还有温度的仪器。电子成年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下:烧入程序后,LED数码管显示

30、闪动,而且亮度不均匀。解决:首先对调用的延时进行逐渐修改,可以解决显示闪动问题。其次,由于本作品使作动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在反回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。 加入温度的程序后,进行修改时间、日期时相应的数码管位没有按要求闪动。 解决:由于DS18B20是串行通信数据,只用一个口线传输,在处理采集的模拟信号时需要一定的时间,当把万年历的程序相接入时,会对延时有很大的影响。所以在调用温度子程序时,先关闭定时器1中断允许,在温度子程序反回时再打开定时器1中断允许。最终解决了此问

31、题。软件调试是在MedWin编译器下进行,源程序编译及仿真调试应分段或以子程序为单位逐个进行,最后结合硬件实时调试。子程序调试包括:DS1302的计时和读写程序、显示程序;AT24C16读写程序;DS18B20读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新子程序。 本系统需用微机的“超级终端”进行控制。调试单片机系统前,先将微机的超级终端的波特率设为19200,通信口设在COM1,数据位设在8,奇偶校验位设为无,停止位设为1,流量控制设为无。然后进行烧入单片机。(四)测试结果分析1由于采用了DS1302作为计时器使用,其计时精度相对来说比较高。用制作的成品与万年历计时比较,基

32、本没有误差。2由于DS18B20的误差指标在0.1oC以内,在一般场合完全适用。3根据实验要求记录并显示某些时间的温度值及一天当中的最高、最低温度。经测试,AT24C16能存储十天内的所有要求的数据。(五)测试结论经过多次的反复测试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力.同时在软件的编程方面得到更到的提高,对编程能力得到加强.同时对所学的知识得到很大的提高与巩固,对自己的动手能力有了极大的帮助。六、总结与体会在整个设计过程中,发挥团队精神,分工合作,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。较好的完成了作品。达到了预期的目的,在最初的设计

33、中,发挥“三个臭皮匠,顶个诸葛亮”的作用。相互学习、相互讨论、研究。完了最初的设想。在电路焊接时虽然没什么大问题,但从中也知道了焊接在整个作品中的重要性,电路工程量大,不能心急,一个个慢慢来不能急于求成。反而达到事半功倍的效果。对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,和同组员的讨论,理清了思路,反而得心应手。在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。也练就了我们的耐心,做什么事都在有耐心。此次比赛中学到了很多很多东西,这是最重要的。总之,参加电子竞赛我们的能力得到了全方位的

34、提高。通过完成一个包括电路设计和程序开发的完整过程,使我了解开发一单片机应用系统的全过程,为今后从事相应打下基础。七、致谢辞感谢学院给我们提供了一个展现自己的舞台,给我们一次难得煅炼的机会,使得我们的动手能力和专业技能都有了很大的提高。在做作品的日子里得到了指导教师的悉心指导,在此向我们的指导教师致以诚挚的谢意。感谢提供相关技术帮助的老师和同学,你们的支持和鼓励使我们对这次的作品完成有了信心和动力,也给了我们很多无私的帮助和支持,我们在此深表谢意。在这段设计时间里,我的朋友以及同学也给了我很大的帮助,他们不仅热心地帮助我查找资料,而且指出我在设计中所存在的问题,并给出了很好的建议。我顺利的完成

35、设计,他们也功不可没。在此,我向我的朋友及同学致以我最深的谢意,感谢你们对我的帮助。附 录附录一 系统原理图:单片机AT89C51是本系统的核心部分,它控制着数据显示、温度检测存储数据等功能。根据以上各功能模块得到应用电路总原理图。 附录二 查询子程序流程图附录三 温度值存储程序流程图存储时间对应的温度数据开始是否为6点?是否为9点?是否为12点?是否为15点?是否为00点?是否为18点?存储最高最低温度温度结束NNY图1NYNYYNNYY附录四 设计部分源程序#define DQ P2_4 uchar tpl;uchar tph;void delay_b(uint t) uint i; wh

36、ile(t-) for(i=0;i0) i-; DQ=1; i=4; while(i0) i-;void rxwait(void) uint i; while(DQ); while(!DQ); i=4; while(i0) i-;bit rdbit(void) uint i;bit b; DQ=0;i+; DQ=1;i+;i+; b=DQ; i=8;while(i0) i-;return (b); uchar rdbyte(void) uchar i,j,b;for(i=1;i=8;i+) j=rdbit(); b=(j1); return (b); void wrbyte(uchar b)

37、uint i; uchar j, btm; for(j=1; j1; if(btm=1) DQ=0;i+;i+;DQ=1; i=8; while(i0) i-; else DQ=0; i=8;while(i0) i-;DQ=1;i+; i+; void convert(void)txreset();rxwait();delay_b(1);wrbyte(0xcc);wrbyte(0x44);void rdtemp(void)txreset(); rxwait(); delay_b(1); wrbyte(0xcc); wrbyte(0xbe); tpl=rdbyte();tph=rdbyte();

38、 void delay_2(uchar a) uchar b,c; for(b=0;ba;b+) for(c=0;c225;c+); void xianshi_ds18b20() delay_2(1); convert(); delay_2(1000); rdtemp(); x1=(tpl&0xf0)/16+(tph&0x07)*16;y1=x1/10; y2=x1%10; x2=(tpl&0x0f)*(100/16);y3=x2/10; y4=x2%10; #define XS P0#define RS P2_5 #define RW P2_6#define E P2_7 void dela

39、y(uchar a) uchar b,c; for(b=0;ba;b+) for(c=0;c225;c+);void busy(void) _nop_(); do XS=0xff; RS=0; RW=1; E=0; _nop_(); E=1; while(P0_7); void inorder(uchar order) XS=order; RS=0; RW=0; E=0; busy(); E=1; void indata(uchar datar) XS=datar; RS=1; RW=0; E=0; busy(); E=1;void LCD_write_string(uchar *s) whi

40、le (*s) XS=*s; indata(*s); s +; void LCD1602_init( ) inorder(0X38); inorder(0X0f); inorder(0X06); inorder(0x01);参考文献1 刘勇. 数字电路. 电子工业出版社 20042 陈正振. 电子电路设计与制作. 广西交通职业技术学院信息工程系 20073 杨子文. 单片机原理及应用. 西安电子科技大学出版社 20064 王法能. 单片机原理及应用. 科学出版社 20045李强. 数字电子技术基础教程M. 电子工业出版社,2002.66梁恩主,梁思维. Prote199se电路设计与仿真应用M清华大学出版社,20007马忠梅等. 单片机与汇编语言应用程序设计M北京航空航天大学出版社,20038赵建领. protel电路设计与制版M. 电子工业出版社,20079高有堂,电子设计与实战指导M. 电子工业出版社,2007

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号