基于单片机的数字式温度计设计课程设计.docx
- 文档编号:11808581
- 上传时间:2023-04-02
- 格式:DOCX
- 页数:34
- 大小:302.87KB
基于单片机的数字式温度计设计课程设计.docx
《基于单片机的数字式温度计设计课程设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字式温度计设计课程设计.docx(34页珍藏版)》请在冰豆网上搜索。
基于单片机的数字式温度计设计课程设计
单片机课程设计
题目数字式温度计设计
摘要
随着单片机技术的不断发展,单片机在电子产品中的应用越来越广泛。
单片机具有集成度高,处理能力强,可靠性高,系统结构简单,价格低廉的优点,因此被广泛应用。
温度检测则是单片机在工业生产中的一个典型的应用。
随着电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么单片机技术的出现则是给现代工业控制测控领域带来了一次新的革命。
目前,单片机在工业控制系统诸多领域得到了极为广泛的应用。
特别是其中的C51、52系列的单片机的出现,具有更好的稳定性,更快和更准确的运算精度,推动了工业生产,影响着人们的生活。
而本次设计就是要通过以52系列单片机为核心,以开发板为平台,设计一个数字式温度计,要求使用温度传感器(
DS18B20)测量温度,经单片机处理用液晶显示温度值。
第一章前言
1.1单片机简介
当今在全世界范围内,已经形成了以计算机(Computer)通信(Communication)和消费类电子(ConsumptiveElectron)三足鼎立的发展新格局,而作为做21世纪的电子专业工科大学生,无论是从事科学研究工作,还是开办电子电器制造企业,抑或是经营电子元器件贸易,不仅要熟练地使用通用微机进行各种数据处理,还要把计算机技术运用到本专业领域或相关领域,即具有“开发”能力。
所以新世纪的工科大学生既要掌握通用微机,又要掌握“单片机”。
单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),可能还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),模拟多路转换器及A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统。
这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。
由此来看,单片机有着微处理器所不具备的功能,它可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。
正是因为单片机功能之强大,应用范围之广,我们要努力掌握它。
我们虽然在校学习了一些很基础的知识,但只有通过虽然不断的学习和实践才能成长,这回的毕业设计,让我好好地重新认识了单片机重要性,让我的单片机知识有了新的飞跃!
1.2单片机的产生与发展
1974年,美国仙童(Firchild)公司研制的世界第一台单片微型机F8.该机有两块集成电路芯片组成,结构奇特,具有与众不同的指令系统,深受民用电器和仪器仪表领域的欢迎和重视.从此,单片机开始迅速发展,应用领域也在不断扩大.现已成为微型计算机的重要分支,单片机的发展过程通常可以分为一下几个发展过程.
(1) 第一代单片机(1974-1976):
这是单片机发展的起步阶段.在这个时期生产的单片机特点是,制造工艺落后和集成度低,而且采用了双片形式.典型的代表产品有Fairchild公司的F8和Mostek387公司的3870等.
(2) 第二代单片机(1976-1978):
这是单片机的第二发展阶段.这个时代生产的单片机随眼已能在单块芯片内集成CPU,并行口,定时器,RAM和ROM等功能部件,但性能低,品种少,应用范围也不是很广,典型的产品有Inrel公司的MCS-48系列机.
(3) 第三代单片机(1979-1982):
这是八位单片机成熟的阶段.这一代单片机和前两代相比,不仅存储容量和寻址范围大,而且中断源,并行I/O口和定时器/计数器个数都有了不同程度的增加,更有甚者是新集成了全双工穿行通信接口电路.在指令系统方面,普遍增设了惩处法和比较指令.这一时期生产的单片机品种齐全,可以满足各种不同领域的需要.代表产品有Intel公司的MCS-51系列机,Motorola公司的MC6801系列机,TI公司的TMS7000系列机,此外,Rockwell,NS,GI和日本松下等公司也先后生产了自己的单片机系列。
(4) 第四代单片机(1983年以后):
这是十六位单片机和八位高性能单片机并行发展的时代,十六位机的特点是,工艺先进,集成度高和内部功能强,加法运算速度可达到1us以上,而且允许用户采用面向工业控制的专用语言,如PL/MPLUSC和Forth语言等.代便产品有intel公司的MCS-96系列,TI公司的TMS9900,NEC公司的783××系列和NS公司的HPC16040等。
然而,由于十六位单片机价格比较贵,销售量不大,大量应用领域需要的是高性能,大容量和多功能新型八位单片机.这些单片机有Intel公司的88044(双CPU工作),Zilog公司的Super8(含DMA通道),Motorola公司的MC68CH11(内含E2prom及A/D电路)和WDC公司的65C124(内含网络接口电路),等等。
1.3单片机的运用
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:
1.在智能仪器仪表上的应用
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
例如精密的测量设备(功率计,示波器,各种分析仪)。
2.在工业控制中的应用
用单片机可以构成形式多样的控制系统、数据采集系统。
例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
3.在家用电器中的应用
可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。
4.在计算机网络和通信领域中的应用
现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
5.单片机在医用设备领域中的应用
单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。
此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。
1.4LED显示控制技术
LED的控制系统包括输入接口电路、信号控制、转换和数字化处理电路及输出接口电路等,涉及的具体技术很多,其关键技术包括串行传输与并行传输技术、动态扫描与静态锁存技术等。
1.4.1串行传输与并行传输技术
LED的数据传输方式主要有串行和并行两种。
日前普遍采用串行控制技术,显示屏每个单元内部的不同驱动电路和各级联单元之间,每个时钟仅传送一位数据。
采用这种方式的驱动IC种类较多,不同显示单元之间的联线较少,可减少显示单元的数据传输驱动元件,从而提高整个系统的可靠性和性价比,具体工程实现也较为容易。
1.4.2动态扫描与静态锁存技术
LED控制系统实现显示信息的刷新技术有动态扫描和静态锁存两种方式。
一般室内显示屏多采用动态扫描技术,即一行发光二极管共用一行驱动寄存器,根据共用一行驱动寄存器的发光二极管像素数目,分为1/4,1/16扫描等。
室外显示屏基本上采用静态锁存技术,即每一个发光二极管都对应有一个驱动寄存器,无需时分工作,从而保证了每一个发光二极管的亮度占空比为100%。
动态扫描法可以大大减少控制器的I/O口,因此应用较广。
二、总体设计方案
2.1数字温度计设计方案论证
2.1.1方案一
由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
2.1.2方案二
进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。
2.2方案二的总体设计框图
温度计电路设计总体设计框图如图2.1所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,用1602液晶显示实现温度显示。
图2.1 总体设计方框图
2.2.1主控制器
单片机AT89S52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
2.2.2显示电路
1602液晶功耗较小,可直接与单片机接口相接。
电源直接与电源电路相接,使用单片机的P0口和P1口与1602进行通信。
2.2.3温度传感器
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5V;
●零待机功耗;
●温度以9或12位数字;
●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2.2所示。
第三章系统硬件电路设计
3.1STC89C51的介绍
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
其管脚结构如图所示
3.2时钟振荡电路
采用12M晶振外接电容构成,用来提供单片机运行的脉冲时序。
最常用的是在XTAL1和XTAL2之间接晶体振荡器与电路构成稳定的自激振荡器,如图所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为12MHz的石英晶体,电容器一般选择30PF左右。
3.3复位电路
本设计中AT89C52是采用上电自动复位和按键复位两种方式。
最简单的复位电路如图所示。
上电瞬间,RC电路充电,RST引线端出现正脉冲,只要RST端保持10ms以上的高电平,就能使单片机有效地复位。
其中R1选择1KΩ的电阻,电容器一般选10μF。
3.4LED液晶显示电路
液晶显示器(LiquidCrystalDisplay,LCD)的主要原理是以电流刺激液晶分子产生点、线、面并配合背部灯管构成画面。
该设计中用到的1602应用比较常见,1602液晶以并行操作方式居多。
显示电路是采用P2口输出段码至LED,此种显示方式的优点是显示清晰,软件设计简单,连线较少。
3.5传感器采集电路
DS18B20是美国DALLAS半导体公司推出的第一片支持“一线总线”接口的温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配位处理器等优点,可直接将温度转化成串行数字信号供处理器处理。
它采用单条信号线,既可传输时钟,又可传输数据,而且数据传输是双向的,因而这种单总线技术具有线路简单,硬件开销小,成本低廉便于总线扩展和维护等优点。
第四章系统程序设计
4.1主程序设计
↓
4.2LCD液晶显示程序设计
4.3温度采集程序设计
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图
第五章调试及性能分析
5.1原材料的选择与采购
本次设计在原材料的选择与采购上做到了设计最优化,即用最小的开支,获得性价比较高的元器件和材料。
设计中,印刷电路板可采用单面板或是采用双面板。
选元器件时,尽量选择能使电路简化的器件。
例如,为了不增大电路板的体积及减小功耗,本设计采用89C52单片机,体积小,工作电压低。
5.2印刷电路板的设计与制作
在PCB图的设计中,对DXP其中的很多功能是不熟练,画出来的图不仅不美观而且很多地方的布线不符合实际的要求。
PCB图画好以后,就是布局,然后最重要的就是安装和焊接元件了。
安装和焊接其实是并行的。
在这个过程中,各类元件一定要按顺序进行,即要先焊跳线,再个小的元件,接着就是那些中等一些的,然后就是那些大的元件。
这样会使所制的板更加容易,板面完善。
5.3整机的调试与测试过程
此次设计硬件需自行制作并焊接元件。
在做好硬件电路以后,进入软件调试阶段首先是测试显示电路的正确性,根据硬件写好一段显示程序,写入单片机中。
安装好硬件,上电,显示正常,达到预期效果。
证明显示电路正常。
然后测试得到温度程序,将初始化程序,DS18B20正常工作的初始化程序、写DS18B20程序、读DS18B20程序,得到温度子程序,温度转换子程序,数据转换子程序,显示子程序正确编排后写入单片机中,上电后,显示当前温度。
证明温度传感器DS18B20工作正常,各部分子程序运行正常。
程序的烧写没有出现问题,在程序中通过可以改写一些数字来设置不同的最低测量温度以及最高温度,前提在温度计的测量量程之内。
以上调试结果显示各功能均能正常工作!
第六章参考文献
[1]马潮詹卫前耿德跟·ATMEGA8原理及应用手册·清华大学出版社,2003年
[2]何立民·单片机中级教程——原理与应用·北京航空航天大学出版社,2000年
[3]何立民·MCS-51单片机应用系统设计·北京航空航天大学出版社,2000年
[4]王嘉陵·毕业论文写作与答辩·四川大学出版社,2003年
[5]赵润林张迎辉·单片机原理与应用教程·北京大学出版社,2005
[6]周立功·单片机原理及接口技术·机械工业出版社,2002年
附件
原理图
系统程序
//DS18B20温度检测及其液晶显示
#include
#include
unsignedcharcodedigit[11]={"0123456789-"};//定义字符数组显示数字
unsignedcharcodeStr[]={"DS18B20"};//说明显示的是温度
unsignedcharcodeError[]={"DS18B20ERROR"};//说明没有检测到DS18B20
unsignedcharcodeError1[]={"PLEASECHECK"};//说明没有检测到DS18B20
unsignedcharcodeTemp[]={"WENDU:
"};//说明显示的是温度
unsignedcharcodeCent[]={"Cent"};//温度单位
unsignedcharflag,tltemp;//负温度标志和临时暂存变量
/*******************************************************************************
以下是对液晶模块的操作程序
*******************************************************************************/
sbitRS=P0^0;//寄存器选择位,将RS位定义为P2.0引脚
sbitRW=P0^1;//读写选择位,将RW位定义为P2.1引脚
sbitE=P0^2;//使能信号位,将E位定义为P2.2引脚
sbitBF=P2^7;//忙碌标志位,,将BF位定义为P0.7引脚
sbitP34=P3^4;
/*****************************************************
函数功能:
延时1ms
(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒
***************************************************/
voiddelay1ms()
{
unsignedchari,j;
for(i=0;i<4;i++)
for(j=0;j<33;j++)
;
}
/*****************************************************
函数功能:
延时若干毫秒
入口参数:
n
***************************************************/
voiddelaynms(unsignedcharn)
{
unsignedchari;
for(i=0;i delay1ms(); } /***************************************************** 函数功能: 判断液晶模块的忙碌状态 返回值: result。 result=1,忙碌;result=0,不忙 ***************************************************/ bitBusyTest(void) { bitresult; RS=0;//根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1;//E=1,才允许读写 _nop_();//空操作 _nop_(); _nop_(); _nop_();//空操作四个机器周期,给硬件反应时间 result=BF;//将忙碌标志电平赋给result E=0;//将E恢复低电平 returnresult; } /***************************************************** 函数功能: 将模式设置指令或显示地址写入液晶模块 入口参数: dictate ***************************************************/ voidWriteInstruction(unsignedchardictate) { while(BusyTest()==1);//如果忙就等待 RS=0;//根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0; E=0;//E置低电平(根据表8-6,写指令时,E为高脉冲, //就是让E从0到1发生正跳变,所以应先置"0" _nop_(); _nop_();//空操作两个机器周期,给硬件反应时间 P2=dictate;//将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_(); _nop_();//空操作四个机器周期,给硬件反应时间 E=1;//E置高电平 _nop_(); _nop_(); _nop_(); _nop_();//空操作四个机器周期,给硬件反应时间 E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令 } /***************************************************** 函数功能: 指定字符显示的实际地址 入口参数: x ***************************************************/ voidWriteAddress(unsignedcharx) { WriteInstruction(x|0x80);//显示位置的确定方法规定为"80H+地址码x" } /***************************************************** 函数功能: 将数据(字符的标准ASCII码)写入液晶模块 入口参数: y(为字符常量) ***************************************************/ voidWriteData(unsignedchary) { while(BusyTest()==1); RS=1;//RS为高电平,RW为低电平时,可以写入数据 RW=0; E=0;//E置低电平(根据表8-6,写指令时,E为高脉冲, //就是让E从0到1发生正跳变,所以应先置"0" P2=y;//将数据送入P0口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_(); _nop_();//空操作四个机器周期,给硬件反应时间 E=1;//E置高电平 _nop_(); _nop_(); _nop_(); _nop_();//空操作四个机器周期,给硬件反应时间 E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令 } /***************************************************** 函数功能: 对LCD的显示模式进行初始化设置 ***************************************************/ voidLcdInitiate(void) { delaynms(15);//延时15ms,首次写指令时应给LCD一段较长的反应时间 WriteInstruction(0x38);//显示模式设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字式 温度计 设计 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)