1、利用51单片机 linux系统在arm板上显示的温度测量仪表毕业设计论文绍 兴 文 理 学 院数 理 信 息 学 院课 程 设 计 报 告 书题目 温度测量仪表 课程设计任务书班 级电信101姓 名姚丽平题 目温度测量仪表技术参数、设计要求、检测数据1、 能完成温度的数据传输2、 完成串口通信3、 在ARM开发板上显示出温度设计进度安排或工作计划2013.7.3 2013.7.5: 教师布置课题,学生查询相关资料,完成方案选择、确定验证方案。2013.7.62013.7.8: 设计模块划分、实现及各模块仿真图设计。2013.7.82013.7.11:设计整体实现、调试及验证,并开始撰写报告。2
2、012.7.12:课程设计报告撰写并定稿,上交。其 它认真阅读智能仪器仪表课程设计报告撰写规范;课题小组经协商好要指定组长并明确分工,形成良好团队工作氛围;基于课题基本要求,各小组与指导老师讨论,再将课题细化、增加要求;课题小组每成员均需各自撰写一份课程设计报告。温度测量仪表摘 要随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术,本文主要介绍了一个基于 89S51 单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感器DS
3、18B20数据采集过程。对各部分的电路也一一进行了介绍,该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。嵌入式系统采用的是微处理器,实现相对单一的功能,采用独立的操作系统,往往不需要大量的外围器件。因而在体积上功耗上有其自身的优势,相比之下,一个使用Win
4、dows CE的PDA,仅靠机内电源使用几天,而一台笔记本仅仅能够支持三小时左右。其实一个软硬件高度结合的产物,能提高执行速度和系统的可靠性。关键词 单片机 ;DS18B20 ;温度传感器 ;数字温度计; AT89S51;嵌入式系统1. 设计概述温度控制系统广泛应用于社会生活的各个领域,如家电、汽车、材料、电力电子等 ,常用的控制电路根据应用场合和所要求的性能指标有所不同 , 在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、
5、失控现象。传统的继电器调温电路简单实用 ,但由于继电器动作频繁 ,可能会因触点不良而影响正常工作。控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并且当扰动因素不明确时,参数调整不便仍是普遍存在的问题。而采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探头,
6、探入到狭小的地方,增加了实用性。更能串接多个数字温度传感器DS18B20进行范围的温度检测。2. 设计方案我们选取的方案主要实现温度的检测以及通过ARM板显示这两个大功能,以及读取这个相对较为容易的功能。因此在温度检测这一模块上,利用DS18B20这一目前比较先进的温度传感器,可以很精确地感测实时温度,对于DS18B20的通讯协议的控制,读取测量的温度值,经过一定的算法,可以把温度转化为十进制,先暂存起来。经显示模块调用,通过ARM,最终在电脑上显示。图 2-1硬件总框图3. 设计实现3.1系统设计原理3.1.1温度测量模块图 3- 1 DS18B20图例DS18B20温度传感器是美国DALL
7、AS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出北侧温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5V;零待机功能;温度以9或12位数字量读出;用户可定义的非易失性温度报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20采用3脚PR-35封装或8
8、脚SOIC封装,其内部结构框图如图2所示。 图 3- 2 DS18B20内部结构图64位ROM的位结构如图3所示。开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。非易失性温度报警器触发器TH和TL,可通过软件写入户报警上下限。图 3- 3 64位ROM结构图DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图4所示。头2个字节包含测得的温度信息,第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位
9、时被刷新。第5个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。 DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义热图5所示。低5位一直为1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要改动,R1和R0决定温度转换得精度位数,即用来设置分辨率,定义方法见表1。图 3- 4高速暂存RAM结构图图 3- 5配置寄存器表3- 1 DS18B20分辨率的定义规定由表3-1可见,DS18B20温度转换的时间比较长,而且设定的分辨率越高,所需要的温度转换时间越长。因此,在实际应用中要将分辨率和
10、转换时间权衡考虑。高速暂存RAM的第6,7,8字节保存未用,表现为逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。单片机可以通过单线接口读出数据,读数据时低位在先,高位在后,数据格式以0.0625/LSB形式表示。温度值格式如图3-6所示。 图 3- 6温度数据值格式当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码转换为原码,再计算十进制。
11、表3-2是一部分温度值对应的二进制温度数据。表3- 2 DS18B20温度与测得值对应表DS18B20完成温度转换后,就把测得的温度值与RAM中的TH,TL字节内容作比较。若TTH或T1000次)Flash ROM9)256x8 bit内部RAM10)时钟频率0-24MHz11)可编程UART串行通道12)共6个中断源,3级加密位13)软件设置睡眠和唤醒功能3.1.3 ARM核心控制模块 ARM Cortex-A8处理器基于 ARMv7 体系结构,能够将速度从 600MHz 提高到 1GHz 以上。Cortex-A8 处理器可以满足需要在 300mW 以下运行的移动设备的功率优化要求;以及需要
12、 2000 Dhrystone MIPS 的消费类应用领域的性能优化要求。图 3-10 ARM Cortex-A8Tiny210核心板介绍:Tiny210 核心板主要采用了2.0mm间距的双排针,引出 CPU大部分常用功能引脚,并力求和Tiny6410 核心板大小一致(64x50mm),引脚兼容(P1,P2,CON2);另外还根据 S5PV210 芯片的性,分别引出了标准的 miniHDMI 接口,和 1.0mm间距的贴片 CON1 座(51Pin),以作用户扩之用,Tiny210 标配512M 内存和 512M 闪存(SLC),并可选配 256M/1GB闪存(SLC)。串口介绍:S5PV21
13、0 本身总共有 4 个串口,其中 UART1 为四线的功能串口,UART0、2、3 为两线串口。 在本开发板上,UART0 和 UART1 已经经过 RS232 电平转换,它们分别对应于 COM0 和COM1,你可以通过附带的交叉串口线和 PC 互相通讯。 图 3- 11引脚定义图图 3- 12 引脚定义图 ARM微控制器是整个系统的核心部件,主要功能为控制各个功能模块正常的工作。在系统初始化完毕后,ARM-CORTEXA8启动温度传感器,然后对所采集的数据进行处理,将需要备份的数据存储到FLASH当中。同时通过PS232将数据送到上位机进行处理显示。3.2系统设计程序流程框图图 3- 13
14、主函数流程图对DS18B20温度模块进行初始化,利用51单片机调用DS18B20头文件读取温度数据,并进行数据处理。编写串口通信程序利用串口向ARM发送数据,最后在ARM端读取串口数据获取温度值,并显示在LCD上。4. 设计验证图 4- 1串口助手接收到的数据图4-1中,数据按5个字节发送,首先发送01,再将转化成十进制的数据按百位、十位、个位的顺序分别加上0x30,最后按和校验方式发送第五个数据,即将前四个数据的高位和低位相加所得。所以图中标识数据所得的温度为33.5度。图 4- 2 linux显示的数据 图中第二行与第三行为正常的数据发送,以01为首数据,按8个字节发送,即图中数据分别为3
15、4.5度和34.4度,校验正确。5. 总结在做课程设计的过程中,通过理论联系实际,不断的学习和总结经验,巩固了所学的知识,提高了处理实际问题的能力。我的理论和实践水平都有了较大的提高。在本设计中,我熟练掌握了单片机硬件设计和接口技术,对温度传感器的原理及应用有了一定的了解,同时,我对linux系统有了一定的了解,掌握了各种控制电路及其相关元器件的使用。这次课程设计过程中也让我认识到了团队合作的重要性。通过这次课程设计,我不仅学会如何将所学专业知识运用到实际生活中,还学会如何克服未知的困难,解决难题的方法,为将来毕业设计的顺利进行打下了基础。这次设计过程中也让我认识到了很多不足,在今后的学习过程
16、中我一定努力补缺补漏,多实践,将理论知识更好地应用于实践。最后感谢各位指导老师的指导。参考文献1 童诗白,华成英.模拟电子技术基础M. 北京:高等教育出版社,20062 张齐,杜群贵.单片机应用系统设计技术M.北京:电子工业出版社,20073 中国机械工业教育协会组编.单片机原理与应用.机械工业出版社.20014 求是科技单片机通信技术与工程实践M.北京:人民邮电出版社,20055 张洪润电子线路与电子技术M.清华大学出版社M,20056 郭永贞主编数字电子技术M.西安电子科技大学出版社 20007 李广弟单片机基础M,北京:北京航空航天大学出版社,20018 杨金岩等.8051单片机数据传输
17、接口扩展技术与应用实例M北京:人民邮电出版社,2005附录实物图主程序源代码51单片机代码:主函数:#include #include #include #include #include /*#define HD7279_RESET 0xa4#define HD7279_TEST 0xbf#define HD7279_RLC 0xa3#define HD7279_RRC 0xa2#define HD7279_RL 0xa1#define HD7279_RR 0xa0#define HD7279_DECODE0 0x80 /0x80代表数码管1 10进制#define HD7279_DECOD
18、E1 0xc8 /0xC8代表数码管1 16进制#define HD7279_UNDECODE 0x90 /0x90代表数码管1 直接显示#define HD7279_HIDE 0x98#define HD7279_FLASH 0x88#define HD7279_SEGON 0xe0#define HD7279_SEGOFF 0xc0#define HD7279_READ 0x151、下载数据并按方式0译码 数据格式 1 0 0 0 0 a2 a1 a0 dp x x x d3 d2 d1 d02、下载数据并按方式1译码 数据格式 1 1 0 0 1 a2 a1 a0 dp x x x d3
19、 d2 d1 d03、下载数据但不译码 数据格式 1 0 0 1 0 a2 a1 a0 dp a b c d e f g4、闪烁控制 数据格式 1 0 0 0 1 0 0 0 d7 d6 d5 d4 d3 d2 d1 d05、消隐控制 数据格式 1 0 0 1 1 0 0 0 d7 d6 d5 d4 d3 d2 d1 d06、段点亮控制 数据格式 1 1 1 0 0 0 0 0 X X d5 d4 d3 d2 d1 d07、段关闭控制 数据格式 1 1 0 0 0 0 0 0 X X d5 d4 d3 d2 d1 d0读键盘指令: 数据格式 0 0 0 1 0 1 0 1 d7 d6 d5 d
20、4 d3 d2 d1 d0*/*延时函数, 延时单位1ms*/unsigned char rev=0xaa;unsigned char flag=0x00;unsigned int temp5;unsigned int num;void Delay_ms(unsigned int Ms) int us,usn; while(Ms!=0) usn = 4; while(usn!=0) us=0xfa; while (us!=0)us-; usn-; Ms-; void send_int(void) TMOD = 0x20; / 定时器1工作于8位自动重载模式, 用于产生波特率 / 定时器0工作在
21、16位方式 TH1 = 0xFD; / 波特率9600 TL1 = 0xFD; SCON = 0x50; / 设定串行口工作方式 PCON= 0x00; / 波特率倍增 TR1 = 1;void send_char(unsigned char txd)/ 传送一个字符 SBUF = txd; while(!TI); / 等特数据传送 TI = 0; / 清除数据传送标志void main() unsigned int t0,i; char t1; send_byte(HD7279_RESET);/注意:HD7279复位后,必须经过大概25MS,才会正常工作! Delay_ms(50); sen
22、d_int(); /串口初始化 while(1) t0=ReadTemperature(); temp0=t0%10; /个 temp1=t0%100/10; temp2=t0%1000/100;/百 temp3=t0/1000;/千 t1=0x01; send_char(t1); t1=temp2+0x30; send_char(t1); t1=temp1+0x30; send_char(t1); t1=temp0+0x30; send_char(t1); t1=0x91+temp0+temp1+temp2; send_char(t1); for(i=0;i+;i100) _nop_();
23、if(RI=1) rev=SBUF; RI=0; HD7279头文件:#include reg52.h#include #ifndef _HD7279A_H_#define _HD7279A_H_sbit HD7279A_CS=P22; /pin1sbit HD7279A_CLK=P11; /pin2sbit HD7279A_DATA=P12; /pin3sbit HD7279A_KEY=P13; /pin4/command define#define HD7279_RESET 0xa4#define HD7279_TEST 0xbf#define HD7279_RLC 0xa3#define
24、 HD7279_RRC 0xa2#define HD7279_RL 0xa1#define HD7279_RR 0xa0#define HD7279_DECODE0 0x80#define HD7279_DECODE1 0xc8#define HD7279_UNDECODE 0x90#define HD7279_HIDE 0x98#define HD7279_FLASH 0x88#define HD7279_SEGON 0xe0#define HD7279_SEGOFF 0xc0#define HD7279_READ 0x15void Delay_ms(unsigned int Ms);voi
25、d Delay_us(unsigned char Us);void send_byte(unsigned char c);unsigned char recv_byte(void);void write_hd7279(unsigned char cmd, unsigned char dat);unsigned char read_hd7279(unsigned char cmd);void send_byte(unsigned char c) unsigned char i,j,k; HD7279A_CS=0; HD7279A_DATA=1; for (i=0;i30;i+) / _nop_(); for(i=0;i8;i+) if(c&0x80) HD7279A_DATA=1; else HD7279A_DATA=0; HD7279A_CLK=1; for (j=0;j8;j+)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1