《机电系统综合课程设计》

上传人:痛*** 文档编号:171161086 上传时间:2022-11-24 格式:DOC 页数:29 大小:454.50KB
收藏 版权申诉 举报 下载
《机电系统综合课程设计》_第1页
第1页 / 共29页
《机电系统综合课程设计》_第2页
第2页 / 共29页
《机电系统综合课程设计》_第3页
第3页 / 共29页
资源描述:

《《机电系统综合课程设计》》由会员分享,可在线阅读,更多相关《《机电系统综合课程设计》(29页珍藏版)》请在装配图网上搜索。

1、中原工学院机电学院机电系统综合课程设计说明书(2014-2015学年第 1 学期)专 业: 机械电子工程 课设题目: 大气温度检测系统 姓 名: 学 号: 班 级 所在小组: 大气温度检测组 小组分工: 软件的编程和调试 指导教师: 完成日期: 2015 年 1 月 14 日机械电子工程教研室目 录设计任务书11.设计目的与意义22.设计内容和要求22.1方案确定22.2设计内容42.3设计要求43.设计进度安排44.机电系统设计的分析和说明5 4.1控制设计54.2机电系统的调试165.机电综合课设结论176.机电综合课设的收获、体会和建议187.参考文献188.附录19设计任务书题 目设计

2、大气温度检测系统设计任务要求设计合理可行的方案来实时准确的检测大气的温度,可以采用数字显示,也可采用模拟信号进行指针显示等,只要设计符合要求即可。时间进度1月1日决定方案采用数字显示;1月2日进行硬件的选取;1月3日进行原理图的绘;1月4日进行PROTUESE的绘制;1月5日1月7日进行写编程;1月8日1月9日进行编程的调试和仿真;1月10日1月11日进行硬件的焊接;1月12日到1月14日进行设计说明书的书写;1月15日进行课设答辩;主要参考书籍和资料1张俊.匠人手记M. 北京航空航天大学出版社,2014.12刘海威.单片机及应用系统设计原理与实践M.北京航空航天大学出版社,2009.73王守

3、中.DIY玩转51单片机M. 电子工业出版社,2013.24张越,张炎,赵延军.微电子学J.2007,37(5)任务分工备 注 大气温度检测课程设计说明书1.设计目的与意义微机测量和控制技术在经济迅速发展的今天,已被广泛应用于人类生活中,如工业控制、自动检测、智能仪器仪表、家用电器、等各个方面。而主控制器是每个控制系统不可或缺的部分,正因为单片机有体积小,重量轻,抗干扰能力强,环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易等优点,所以它是很多设计人员的首选控制器。而在人们的日常生活或工业生产中,经常要对温度进行检测及控制。在许多场合器材设备对温度的要求非常高,而传统的温度计反应速度慢

4、、读数麻烦、测量精度不高、误差大,所以需要设计一种高精度的温度计。为了在很大程度上提高对温度的控制水平,因此以单片机为核心的温度采集与控制系统很有用研发和应用意义。本文设计一个可以实时检测并显示当前的温度数据的系统,文章以AT89C51单片机, DS18B20温度传感器为硬件基础,主要介绍了相关的硬件电路的连接和相关应用程序。硬件电路主要包括ATC89C51单片机最小系统,测温电路、LCD显示电路等。系统程序主要包括主程序、读出温度子程序、计算温度子程序、LCD显示模块的显示程序等。2. 设计内容和要求 2.1方案确定方案一基于热敏电阻的温度计设计方案一主要由热敏电阻、电桥电路,指针仪器组成。

5、热敏电阻的电阻值随温度升高而迅速下降,因为热敏电阻由半导体制成,在半导体内部,自由电子数目随温度的升高增加,导电能力增强,虽然原子振动会加剧并阻碍电子的运动。但作用对导电性能影响很小,温度上升会使电阻下降。其原理图如图1所示。 方案二基于DS18B20的数字温度计设计方案二主要也由数字温度传感器、单片机控制电路、LCD显示电路组成。DS18B20测量温度采用了特有的温度测量技术。它是通过计数时钟周期来实现的。低温度系数振荡器输出的时钟信号通过由高温度系数振荡器产生的门周期而被计数。计数器被预置在与-55相对应的一个基权值。如果计数器在高温度系数振荡周期结束前计数到零,表示测量的温度值高于-55

6、,被预置在-55的温度寄存器的值就增加1,然后重复这个过程,直到高温度系数振荡周期结为止这时温度寄存器中的值就是被测温度值,这个值以16位形式存放在便笺式存贮器中,此温度值可由主机通过发存贮器读命令而读出,读取时低位在前,高位在后。斜率累加器用于补偿温度振荡器的抛物线特性。读出的二进制数可以直接转换为十进制由单片机驱动数LCD显示输出。其结构框图如图2所示。图2方案选择方案的选择即是传感器的选择。对比二种方案可以得知,方案一是采用模拟式温度传感器并且采用指针输出,热敏电阻精度低,其中各种转换电路、放大电路的使用连接电路比较复杂,同时指针式仪表读数存在误差没有数字式更为直观。方案二采用数字式温度

7、传感器。数字式温度传感器输出的是随温度变化的数字量,更直观,与模拟输出相比,它输出速度响应较慢,但容易与MPU接口。其还能输出温度数据及相关的温度控制量;能以最简方式构成高性价比、多功能的智能化温度控制系统,并且DS18B20价格相对便宜,益于买到。更重要的是该控制系统采用单片机控制,而单片机具有灵敏度高、运算速度快、稳定等优点,所以我们选择方案二以DS18B20数字温度传感器进行后续设计。其原理图如图3所示。图3 2.2设计内容本程序的设计的内容主要包括3大模块,主程序模块、DS18b20的温度转换模块、AT89C51温度计算程序模块、LCD显示器的显示程序模块。首先,DS18B20进行初始

8、化程序,采集大气的温度信号启动转换模块进行数据转换,然后将转换后的数据传入单片机进行数据的处理程序。待处理完成后送入显示器。然后显示器进行初始化设置,读取数据并启动其显示程序进行温度的显示。2.3设计要求1) DS18B20传感器,LCD显示器的初始化设置; 2)DS18B20传感器的温度转化模块;3) 单片机的读取,写入和处理程序;4) LCD的显示程序;5) 各个程序模块之间的协调;6) 仿真调试程序;7)写说明书;3.设计进度安排1月5日通过查阅各种资料确定系统程序的整体思路和规划。1月6日进行DS18B20,LCD的初始化程序、延时程序、温度转换程序的编写。1月7日进行单片机数据处理程

9、序、显示程序的编写,并进行整体的协调工作。1月8日进行程序的写入,并编译改正错误。1月9日进行仿真调试程序。 1月10日进行硬件的调试。1月12日-1月14日进行设计说明书的书写。1月15日进行课设答辩。4.机电系统设计的分析与说明 4.1控制设计整个系统是由硬件配合软件来实现的,在硬件确定后,编写的软件的功能也就基本定型了。所以软件的功能大致可分为两个部分:一是监控,这也是系统的核心部分,二是执行部分,完成各个具体的功能。 (1)程序的整体方法DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25

10、进行比较,若低于0.25,温度寄存器的最低位就置0;若高于0.25,最低位就置1;若高于0.75时,温度寄存器的最低位就进位然后置0。这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最后位代表0.5,四舍五入最大量化误差为1/2LSB,即0.25。DS18B20温度采集转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于或等于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。其温度转换计算方法有正负之分:例如当DS18

11、B20采集到+125的实际温度后,输出为07D0H,则:实际温度=07D0H0.0625=20000.0625=1250C。例如当DS18B20采集到-55的实际温度后,输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作为计算),则:实际温度=370H0.0625=8800.0625=550C。经过DS18B20处理过的0、1数据送入单片机后,单片机将其转化成对应的字符。然后送入LCD假如数据为t,则t/100得到十位数进行显示,t%100/10得到各位数,t%10得到小数点的后一位。如果得到的温度在零下,则在前面加“”号,并计算小数部分和整数部分的值。 (2) 主程

12、序本系统的主程序的主要功能是负责温度的读取并进行实时显示,当其读出并处理DS18B20的测量的当前温度值时,然后延时一定的时间后再次读取温度进行显示【9】。其程序流程见图4-7所示。本系统主程序如下,它包含和编程的准备工作和调用子程序功能。这种模块化编成结构,对于程序的移植再用提供了很大的方便,而且条理清晰,仿真出现错误时便于修改。其主程序流程图如4所示。图4 (3) 子程序流程图 数字温度计系统子程序主要包含:读温度子程序、转换温度子程序、计算温度子程序。 (a)读温度子程序流程读出温度子程序的主要功能是读出RAM中的9字节,在读出时需要进行CRC校验,校验有错时不进行温度数据的改写。则读温

13、度子程序流程图如图5所示。图5(b)转换温度子程序流程图 转换温度子程序流程图如图6所示。图6(c)计算温度子程序流程图 计算温度子程序流程图如7、8图所示。 图7 图8 (4) 各个模块的程序(a) LCD显示模块程序,调试如图9。#include #include #define uchar unsigned char#define uint unsigned intsbit LCD_RS = P25;sbit LCD_RW = P26;sbit LCD_EN = P27;#define LCD_Data P0 #define delayNOP() _nop_();_nop_();_nop

14、_();_nop_();float M;uchar Min_Flag=0;uchar code Temp_Disp_Title=temperture : ;uchar Current_Temp_Display_Buffer=TEMP: ;uchar Temp_Value=0x00,0x00;uchar Display_Digit=0,0,0;void Delay(uint t) while(-t);/*延时20us*/ void Delay_20us(void) _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /*延时 time20u

15、s* */ void delay_20us(uint time) uint i; for (i=0;itime;i+); void DelayXus(uint t) uchar i;while(t-) for(i=0;i200;i+);bit LCD_Busy_Check() bit result;LCD_RS = 0; LCD_RW = 1; LCD_EN = 1;delayNOP();result = (bit)(LCD_Data&0x80);LCD_EN=0;return result;void Write_LCD_Command(uchar CMD)while(LCD_Busy_Che

16、ck();LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();LCD_Data = CMD;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0;void Write_LCD_Data(uchar DAT)while(LCD_Busy_Check();LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;LCD_Data = DAT;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0;void LCD_Initialise() Write_LCD_Command(0x

17、01); /清屏DelayXus(5); Write_LCD_Command(0x38); /设置16*2显示,5*7点阵,8位数据接口 DelayXus(5);Write_LCD_Command(0x0c); /画面开,禁止光标显示闪烁DelayXus(5);Write_LCD_Command(0x06); /当读写一个字节后,光标自动加1 DelayXus(5);void Set_LCD_POS(uchar p) Write_LCD_Command(p|0x80); void Display_Temperature(uint num)uchar m,n,q,i; m=num/100; /得

18、到十位 n=num%100/10; /得到个位 q=num%10; /对上述整数求余得到小数点后第一位 Display_Digit2 = m;Display_Digit1 = n;Display_Digit0 = q; if(Min_Flag) Current_Temp_Display_Buffer7 =-; else Current_Temp_Display_Buffer7 = ;Current_Temp_Display_Buffer11 = Display_Digit0 + 0;Current_Temp_Display_Buffer10 = .;Current_Temp_Display_B

19、uffer9 = Display_Digit1 + 0;Current_Temp_Display_Buffer8 = Display_Digit2 + 0;if(Display_Digit2 = 0)Current_Temp_Display_Buffer8 = ;Set_LCD_POS(0x00);for(i=0;i16;i+) Write_LCD_Data(Temp_Disp_Titlei); Set_LCD_POS(0x40);for(i=0;i16;i+)Write_LCD_Data(Current_Temp_Display_Bufferi); Set_LCD_POS(0x4d);Wri

20、te_LCD_Data(C); void main() uint Temperature; LCD_Initialise();Delay(40000);while(1)Temperature=TempValue();Display_Temperature(Temperature);DelayXus(100);(b)DS18B20的采集模块程序,调试图如10.#include #include #define uchar unsigned char#define uint unsigned intsbit ds18B20_data = P20;#define ds18B20_READ_ROM 0

21、x33 / 读 ROM 指令#define ds18B20_MATCH_ROM 0x55 / 匹配 ROM 指令#define ds18B20_SKIP_ROM 0xCC / 跳过 ROM 指令 #define ds18B20_SEARCH_ROM 0xF0 / 搜索 ROM 指令#define ds18B20_ALARM_SEARCH 0xEC / 报警搜索指令 #define ds18B20_WRITE_SCRATCHPAD 0x4E / 写暂存寄存器指令 #define ds18B20_READ_SCRATCHPAD 0xBE / 读暂存寄存器指令#define ds18B20_COPY

22、_SCRATCHPAD 0x48 / 复制暂存寄存器指令#define ds18B20_CONVERT_T 0x44 / 启动温度转换指令#define ds18B20_RECALL_E2 0xB8 / 重新调出 E2PROM 的数据 #define ds18B20_READ_POWER_SUPPLY 0xB4 / 读电源 #define delayNOP() _nop_();_nop_();_nop_();_nop_();float M;uchar Min_Flag=0;/*温度探头程序*/ bit Rstds18B20(void); / DS18B20 复位程序, 返回 0-有设备连接,1

23、-无设void Writeds18B20(uchar ); / 写一个字节 ds18B20 数据、命令子程序 uchar Readds18B20(void); / 读一个字节ds18B20 数据子程序uint TempValue(void); / 启动 ds18B20 温度转换程序 /*ds18B20 复位程序*/ bit Rstds18B20(void) / 返回,0-有设备连接;1-无设备连接 uchar i; bit RstFlag; RstFlag = 1; ds18B20_data = 1; _nop_(); ds18B20_data=0; / 发送复位脉冲,时间480us dela

24、y_20us(40); / 延时 480-960us ds18B20_data = 1; / 拉高总线,延时 15us-60us 后等待ds18B20 响应 delay_20us(2); / 15us-60us for (i=0;i6;i+) / 60us-240us delay_20us(1); if (ds18B20_data=0) RstFlag=0; / 接收 ds18B20 的存在信号 delay_20us(20); / 240us return RstFlag; /*写一个字节 ds18B20 数据、命令子程序*/ void Writeds18B20(uchar ch) uchar

25、 i; ds18B20_data = 1; / 拉高总线,延时 1us,准备启动 _nop_(); for (i=0;i1; _nop_(); /先写低位,后写高位 /*读一个字节 ds18B20 数据子程序*/ uchar Readds18B20(void) uchar i,ch; ch = 0; ds18B20_data = 1; / 拉高总线,延时 1us,准备启动 _nop_(); for (i=0;i1; if (ds18B20_data = 1) / 拉高总线,准备接收数据 ch = ch+0x80; delay_20us(2); return ch; /*启动 ds18B20 温

26、度转换程序* /uint TempValue(void) uchar temp1=0,temp2=0; uint T=0; if(!Rstds18B20() Rstds18B20(); Writeds18B20(ds18B20_SKIP_ROM); Writeds18B20(ds18B20_CONVERT_T); if(!Rstds18B20() Rstds18B20(); Writeds18B20(ds18B20_SKIP_ROM); / 跳过 ROM 操作 Writeds18B20(ds18B20_READ_SCRATCHPAD); /* 发读 ds18B20 数据, 前两位是温度值 */

27、 temp1 = Readds18B20(); / 温度值的低位数据 temp2 = Readds18B20(); / 温度值的高位数据 T = temp1+(temp28); if(temp2&0xfc)=0xfc) Min_Flag=1;M=T+1; else Min_Flag=0;M=T; return (M*0.625); /将测量的数据转换成实际温度 else return 0xffff; else return 0xffff; void main() uint Temperature;Delay(40000);while(1)Temperature=TempValue();Dela

28、yXus(100);(3) 主程序,调试图如11。void main() uint Temperature; LCD_Initialise();Delay(40000);while(1)Temperature=TempValue();Display_Temperature(Temperature);DelayXus(100);4.2机电系统的调试(1)LCD显示模块的调试如图9所示。图9(2)DS18B20采取模块的调试如图10所示。图10(3)整体系统的调试如图11所示。图11(4)将整体程序加载到AT89C51后,硬件显示图如图12所示。图125.机电综合课设结论本次课程设计是我所做的是大

29、气温度检测系统,总体上来讲它是偏电一方。但是主要用的芯片是单片机,这是在我们以后的工作中比较常用的。通过对它的了解和简单的运用,我知道了课本上学的知识远远不够。总体来讲这次课设是有一个系统的规划,检测系统的各个部分,比如控制部分,检测部分,显示部分等都要综合考虑。任何一个模块出现问题都是不行的,这就锻炼了我们的总体规划能力。从老师给定课题后,通过查阅资料方案的确定,元器件的选取,原理图的绘制,电路图的绘制,程序的编程的写入和仿真,还有调试等等,这都需要我们付出的努力。通过仿真和实物的制作还有最后的调试成功验证了我们方案的可行性,并且能够合理的检测大气的温度。并且采用的LCD显示器,其显示的内容

30、比较多,而且显示更为直观,更重要的是解决了传统的酒精温度计和水银温度计读数存在偏差的问题。如果我们采用4个DS18B20传感器进行同时扫描,可以进一步的提高其精确度。6.机电综合课设的收获、体会和建议通过这次的课程设计作品的制作让我电子温度检测、单片机、和一些常用传感器的理论有了更加深入的了解,同时在具体的制作过程中我们发现理论上的东西和真正做实物的东西确实有些不同。书上的很多是理想化后的结论,忽略了很多实际的因素,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。通过这次课设和实际的动手操作使我更深刻的体会

31、到了理论联系实际的重要性,我们在今后的学习工作中会更加的注重实际,避免只会纸上谈兵。每次课程设计是一次难得的锻炼机会,让我们能够充分利用所学过的理论知识还有自己的想象的能力,另外还让我们学习查找资料的方法,以及自己处理分析电路,设计电路的能力。我相信是对我的一个很好的提高。平时在学习理论知识的时候,我们应该更注重实践。这次的课程设计让我懂得了它们在实际中的用途,还有我们身边的很多数字钟电路,这些都是我们自己可以实现的,以前那些神秘的东西在不断的学习过程中变得不再那么神秘,我相信,以后还有更多的谜底被揭开。这次课程设计我觉得收获不少。当调试过程中出现问题时,应该从原理图开始一步一步检测,然后检查

32、器件有没有插反,每一步都要细心,要有耐心。当我们焊接电路板出现问题时,要用电表一点一点的排查。总而言之,这次的课程设计使我学会了做事要有耐心,明白了细节决定成败的道理,在平时的时候应该多动手勤思考问题。我相信只要我们认真努力了,什么事都可以做好的。以后也许我们会遇到更多问题,但只要我们不绝望,不放弃,我们一定会战胜困难的。当然其中的过程很辛苦,但看到自己的作品时却满是欢喜。同时也锻炼了自己的动手能力,希望在以后的学习中学院要多设置一些课题,让学生自己动手做一些东西。7.参考文献1张俊.匠人手记M. 北京航空航天大学出版社,2014.12刘海威.单片机及应用系统设计原理与实践M.北京航空航天大学

33、出版社,2009.73王守中.DIY玩转51单片机M. 电子工业出版社,2013.24张涵,任秀华,王全景,张超.基于PROTEUS的电路及单片机设计与仿真M.电子工业出版社,2012.75周景润,张丽娜,丁丽. 基于PROTEUS的电路及单片机设计与仿真M. 北京航空航天大学出版社,2009.126李学礼.基于Proteus的8051单片机教程实例M.电子工业出版社,2008.67金发庆.传感器技术与应用(第二版)M.机械工业出版社,2004.6-18张越,张炎,赵延军.微电子学J.2007,37(5)9王卫兵.传感器技术及其应用实例M.北京:机械工业出版社,2013.410刘鸣,车立新,陈

34、兴梧,赵煜.电测与仪表J.2001,38(10)11林伸茂.8051单片机彻底研究实习篇M.北京:人民邮电出版社,2004.58.附录大气测温系统的整体程序:#include #include #define uchar unsigned char#define uint unsigned intsbit LCD_RS = P25;sbit LCD_RW = P26;sbit LCD_EN = P27;sbit ds18B20_data = P20; /温度探头(DQ)数据端口对应的单片机引脚 #define LCD_Data P0 /定义数据指令端口#define ds18B20_READ_

35、ROM 0x33 / 读 ROM 指令#define ds18B20_MATCH_ROM 0x55 / 匹配 ROM 指令#define ds18B20_SKIP_ROM 0xCC / 跳过 ROM 指令 #define ds18B20_SEARCH_ROM 0xF0 / 搜索 ROM 指令#define ds18B20_ALARM_SEARCH 0xEC / 报警搜索指令 #define ds18B20_WRITE_SCRATCHPAD 0x4E / 写暂存寄存器指令 #define ds18B20_READ_SCRATCHPAD 0xBE / 读暂存寄存器指令#define ds18B20

36、_COPY_SCRATCHPAD 0x48 / 复制暂存寄存器指令#define ds18B20_CONVERT_T 0x44 / 启动温度转换指令#define ds18B20_RECALL_E2 0xB8 / 重新调出 E2PROM 的数据 #define ds18B20_READ_POWER_SUPPLY 0xB4 / 读电源 #define delayNOP() _nop_();_nop_();_nop_();_nop_();float M;uchar Min_Flag=0;uchar code Temp_Disp_Title=Current Temp : ;uchar Current

37、_Temp_Display_Buffer=TEMP: ;uchar Temp_Value=0x00,0x00;uchar Display_Digit=0,0,0;void Delay(uint t) while(-t);/*延时20us*/ void Delay_20us(void) _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /*延时 time20us*/ void delay_20us(uint time) uint i; for (i=0;itime;i+); void DelayXus(uint t) uchar i;wh

38、ile(t-) for(i=0;i480us delay_20us(40); / 延时 480-960us ds18B20_data = 1; / 拉高总线,延时 15us-60us 后等待ds18B20 响应 delay_20us(2); / 15us-60us for (i=0;i6;i+) / 60us-240us delay_20us(1); if (ds18B20_data=0) RstFlag=0; / 接收 ds18B20 的存在信号 delay_20us(20); / 240us return RstFlag; /*写一个字节 ds18B20 数据、命令子程序*/ void W

39、riteds18B20(uchar ch) uchar i; ds18B20_data = 1; / 拉高总线,延时 1us,准备启动 _nop_(); for (i=0;i1; _nop_(); /先写低位,后写高位 /*读一个字节 ds18B20 数据子程序*/ uchar Readds18B20(void) uchar i,ch; ch = 0; ds18B20_data = 1; / 拉高总线,延时 1us,准备启动 _nop_(); for (i=0;i1; if (ds18B20_data = 1) / 拉高总线,准备接收数据 ch = ch+0x80; delay_20us(2)

40、; return ch; /*启动 ds18B20 温度转换程序* /uint TempValue(void) uchar temp1=0,temp2=0; uint T=0; if(!Rstds18B20() Rstds18B20(); Writeds18B20(ds18B20_SKIP_ROM); Writeds18B20(ds18B20_CONVERT_T); if(!Rstds18B20() Rstds18B20(); Writeds18B20(ds18B20_SKIP_ROM); / 跳过 ROM 操作 Writeds18B20(ds18B20_READ_SCRATCHPAD); /

41、* 发读 ds18B20 数据, 前两位是温度值 */ temp1 = Readds18B20(); / 温度值的低位数据 temp2 = Readds18B20(); / 温度值的高位数据 T = temp1+(temp28); if(temp2&0xfc)=0xfc) Min_Flag=1;M=T+1; else Min_Flag=0;M=T; return (M*0.625); /将测量的数据转换成实际温度 else return 0xffff; else return 0xffff; void Display_Temperature(uint num)uchar m,n,q,i; m=

42、num/100; /得到十位 n=num%100/10; /得到个位 q=num%10; /对上述整数求余得到小数点后第一位 Display_Digit2 = m;Display_Digit1 = n;Display_Digit0 = q; if(Min_Flag) Current_Temp_Display_Buffer7 =-; else Current_Temp_Display_Buffer7 = ;Current_Temp_Display_Buffer11 = Display_Digit0 + 0;Current_Temp_Display_Buffer10 = .;Current_Tem

43、p_Display_Buffer9 = Display_Digit1 + 0;Current_Temp_Display_Buffer8 = Display_Digit2 + 0;if(Display_Digit2 = 0)Current_Temp_Display_Buffer8 = ;Set_LCD_POS(0x00);for(i=0;i16;i+) Write_LCD_Data(Temp_Disp_Titlei); Set_LCD_POS(0x40);for(i=0;i16;i+)Write_LCD_Data(Current_Temp_Display_Bufferi); Set_LCD_POS(0x4d);Write_LCD_Data(C); void main() uint Temperature; LCD_Initialise();Delay(40000);while(1)Temperature=TempValue();Display_Temperature(Temperature);DelayXus(100);

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!