ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:306.08KB ,
资源ID:5605612      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5605612.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的温度检测报警与万年历系统.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的温度检测报警与万年历系统.docx

1、基于单片机的温度检测报警与万年历系统单片机课程设计基于单片机的温度检测报警与万年历系统摘要 1一、 设计要求与方案论证11设计要求 112系统方案选择和论证 113电路最终方案确定 1二、电子万年历与温度采集报警硬件设计和实现21系统设计 221.1系统设计框图 221.2系统硬件需求介绍 322系统硬件各模块作用 322.1单片机核心控制模块 422.2数字温度传感器模块422.3彩屏显示电路模块 522.4蜂鸣器电路模块 523系统电路图设计623.1系统电路原理框图和原理图7三、软件设计与分析31系统软件流程图831.1DS18B20程序流程图8四、系统测试41测试工具942软件测试94

2、3硬件测试10参考文献11附录一:程序清单12附录二:PCB电路图13基于单片机的温度检测报警与万年历系统摘要温度检测报警系统也是在日常生活和工业应用非常广泛的工具,能实时采集周围的温度信息进行显示,程序内部设定有报警上下限,根据应用环境不同可设定不同的报警上下限。此系统是基于STC89C52单片机设计的,包含液晶显示模块, DS18B20温度采集模块,键盘扫描模块,报警模块。STC89C52作为控制核心,具有功耗低,功能强等特点,电压可选3到5V电源供电。显示模块采用彩屏动态显示,对于显示数字、字母和汉字最为合适,而且与单片机连线简单,占用IO口相对较少。温度检测报警模块采用数字式温度传感器

3、DS18B20,该芯片具有精度高,测量范围广等优点,易与单片机连接,模块电路组成简单并同时具有温度报警功能。关键词:STC89C52, DS18B20,彩屏显示,采集周围设备温度、温度报警一、设计要求与方案论证11设计要求1.1.1 实时温度检测并显示1.1.2 具有时间调节设置功能,以及时间预设报警、温度报警等功能。1.1.3 可以保存上次设定的报警温度及报警方式。 12系统方案选择和论证STC89C52单片机作为核心控制体,该单片机具有高可靠,超低价,低功耗,无法解密等优点。该单片机属于双列直插式封装的PDI40口管脚。具有4个输入输出端口,分别为PORT0,PROT1,PROT2,PRO

4、T3,其中P0口是一组8位漏极开路型双向IO口,校验时,要求接上拉电阻。其他三个内部有30K的电阻,所以不用再外接电阻。此单片机具有6个中断,其中包括三个定时器中断,二个外部中断,一个串口中断,为全双工通信口。内部有静态非易失EEPROM和看门狗。片内含8Kbbytes的可反复檫写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),功能强大,适合许多较为复杂的控制应用场合。相比较其他芯片来说比较适合学生试验所用,故采用此单片机作为核心控制芯片。DS18B20是数字式温度传感器,采用单总线通信协议。DS18B20具有体积小,硬件开销低,抗干扰能力强,精度高附加功能强,

5、封装形式多样等特点。适合各种狭小空间内设备的数字测温和控制。同时单线可挂接多个元件,因为每个元件都有唯一的一个64位光刻ROM编码,家族码为28H,可以多个也可单个操作。电压测量范围是3.0V到5.5V。内部含有EEPROM,其报警上、下限温度值和设定的分辨率倍数在芯片掉电的情况不丢失。并且内部带有AD转换电路,技术较为成熟,所以采用此芯片最为合适。采用彩屏显示各种数字信息较为合适,通过对单片机的编程来控制DS18B20芯片的读写操作来获取相应的信息,通过对定时器T0的编程可以实现时钟的形成,再通过对彩屏的编程控制将获取到的信息通过一系列转换从而全部显示到彩屏上。最后达到有温度采集报警和电子万

6、年历等功能。13最终方案确定核心控制体:STC89C52单片机数字式温度传感器:DS18B20总共设有四个按键,为节约资源考虑,每个按键都有多种功能。每个按键分别标号为A,B,C,D.第一次按下B,C都没有反应,首先按下A键可选择指针位置,B,C键为加减键,D设置报警方式。操作简单,按键灵活。二、温度采集报警与电子万年历硬件设计和实现2. 1系统设计框图 图1 系统组成框图21.2系统硬件需求介绍STC89C52单片机一片,DS18B20数字式温度传感器一个,+5V无源蜂鸣器二个,12MHZ晶振一个,多个按键和开关,常用电容电阻,连接线,三极管,二极管若干,滑动变阻器一个。22系统硬件各模块作

7、用22.1单片机核心控制模块核心控制器件选用STC89C52单片机。STC89C52单片机为40管脚双列直插芯片,它是一种高性能,低功耗的8位CMOS微处理器芯片,市场应用最多。而且价格便宜,控制方便,便于应用有4个I/O口分别为P1,P2,P3,P4。其中每一个管脚都能做独立的输入输出管脚,它的第9脚位复位管脚,接上电容和上拉电阻再带个开关构成复位电路。18,19管脚接外部晶振和两个微调电容构成外部晶振电路。单片机,复位电路,晶振,5V电源构成单片机最小系统。其中与AT89S52单片机管脚容。图1 单片机最小电路图2为单片机最小电路,其中晶振频率可以根据自己需要进行选择,范围在0-24MHZ

8、,常用12MHZ。复位电路得电容一般用10UF,但并不唯一,只要RC所得时间大于两个机器周期即可。还有其P0内部无上拉电阻,所以在执行输出功能时,外部必须接上拉电阻(一般10K即可)。P0口有的作用,接上液晶的DB0-DB7(数据总线)控制着向液晶发送8位并行数据。P27接上DS18B20的单数据线,发送并接受数据,地址的操作。P30到P33作为独立按键口。P17口控制蜂鸣器的报警,当温度、到达限定值时会发出高低电平脉冲,以至发出报警声音。22.2数字温度传感器模块(1) 用Pt100外围电路接法麻烦,需要A/D转换,不好调试,计算量大,编程麻烦。(2)数字温度传感器选用DS18B20,采用单

9、总线通信协议,接法简单,精度高,容易编程。故选用DS18B20DS18B20主要特性有:1、适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电。2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温4、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。5、温范围55125,在-10+85时精度为0.5。6、可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、

10、0.125和0.0625,可实现高精度测温。7、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。8、测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。9、负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。DS1820的操作指令分为ROM操作命令和存储器操作命令:(1)、ROM操作命令及其含义Skip ROM指令代码(CCh):此命令执行后的存储器操作将针对在线的所有DS1820。Alarm Search指令代码(ECh):当温度值高于TH或低于TL中的数值

11、时,此命令可以读出报警的DS1820。(2)、存储器操作指令代码及其含义Read Scratchpad指令代码(BEh):读取温度寄存器的温度值。Copy Scratchpad指令代码(48h):将温度寄存器的数值拷贝到EERAM中,保证温度值不丢失。Convert T指令代码(44h):启动在线DS1280做温度A/D转换。Recall E2指令代码(B8h):将EERAM中的数值拷贝到温度寄存器中。温度测量步骤如下: (1).Read ROM(33h),每次对DS1820进行操作之前都要对它进行初始化,主要目的在于确定传感器已经连接到单总线上。(2).Search ROM(F0h),这条指

12、令使处理器用排除的方法去辨别总线上的DS1820。(3).Match ROM(55h),只有准确的符合64位ROM序列的DS1820才能响应其后的指令,当然,单点测温时可以使用SkipROM(CCh)指令来跳过这一步。(4).Convert T(44h),发完指令后应查询总线上的电平,当电平位高时温度转换完成。(5).Read Scratchpad(BEh),将读指令发出后,就可从总线上读得表示温度的2字节二进制数由于采用单总线数据传输方式,DS18B20的数据I/O均由同一条线完成,因此,对读写的操作时序要求严格。为了保证DS18B20的严格I/O时序。需要做较精确的延时。它的各种时序如下图

13、所示:DS18B20初始化时序 图2 DS18B20温度传感器 DS18B20采用+5V电源供电 图3 彩屏液晶部分电路连接图22.3蜂鸣器电路模块图4 温度报警蜂鸣器用CS9013三极管驱动,蜂鸣器用5V的无源蜂鸣器,同时在三极管基极串接个限流电阻,数据端口接P17(由单片机的P17直接输出驱动)。23系统电路图设计23.1系统原理框图和原理图图8 系统原理框图下面是系统硬件电路连线图(原理图)图4 总原理图 三、软件测试与分析 3. 1.1 主程序流程图 31.2 DS18B20程序流程图四、系统测试41测试工具Pcb电路板42软件测试数字式温度传感器功能强大,芯片简化了硬件电路设计的同时

14、也无形加大了软件编写的复杂程度,为方便程序的调试和提高效率,故将软件编写分模块进行,先将实时时钟模块一步步调试,按照时序图将读写函数写好后,会显示秒部分,并准时走,但液晶屏不稳定,有一些乱码和光标乱闪。经检查发现有些发生地址重叠的冲突,写按键部分程序是发现调节好后在最后刷新屏幕时调节好的时间没有读取到,不断调节,不断烧写进学习板,然后看结果,最终发现时没有将调节好的时间读取到寄存器中。加上温度传感器部分后发现在调节时间时出现乱码和不稳定现象,光标乱跳的现象。经过不断检查软件,发现在按键调节时软件读取温度值的标志位是允许的,也就是说它在调节时间时又在动态显示周围环境中的温度值,这样会导致光标不稳

15、定的现象。经过再添加keyxuan标志允许位时,这个问题得到很好的解决。在软件编写的过程中遇到非常多的问题,远远不止这些。43硬件测试首先单片机最小系统的设计几乎都是统一的, DS18B20接线灵活,IO口的设置具有多样性,用杜邦线将彩屏与单片机学习板按照电路原理图连接好,经过不断的软件,硬件的反复修改,最终实现了软件编写的目标功能!参考资料一、 例说51单片机(C语言版),人民邮电出版社。二、全国大学生电子设计竞赛单片机应用技能精解,电子工业出版社。三、快速精通Altium Designer6电路图和PCB设计,化学工业出版社。四、郭天祥视频讲解十天征服单片机,与配套资料。附录一:PCB电路

16、图:附录二: 部分程序主程序:void main(void) in=Byte_read(0x2000); delay_05ms(1); T1_init(); CS=1; delayms(5); RES=0; delayms(5); RES=1; delayms(5); ILI9325_Initial(); ClearScreen(0xf800); while(1) datachange(); /数据处理及及显示函数/ buttonscan(); select(); shanshuo(); DS18B20温度采集程序:/*/* 函数声明 */*/void delay1(uchar MS);uns

17、igned int ReadTemperature(void);void Init_DS18B20(void);unsigned char ReadOneChar(void);void WriteOneChar(unsigned char dat);void delay(unsigned int i);void timechuli();void T1_init() TMOD=0x11; TH0=0xef; TL0=0xf0; IE=0x82; TR0=1; TH1=0x3c; TL1=0xb0; ET1=1; EA=1; TR1=1; count=0;void zhongduan() inte

18、rrupt 3 TH1=0x3c; TL1=0xb0; count111+; shanjishu+;/ shanjishu1(); timechuli();/*/* 定时器中断 */*/void tim(void) interrupt 1 using 1/中断,用于数码管扫描和温度检测间隔TH0=0xef;/定时器重装值TL0=0xf0;num+;if (num=50) num=0; flag_get=1;/标志位有效 second+; if(second=60) second=0; minute+; /*/* 延时函数 */*/void delay(unsigned int i)/延时函数

19、while(i-);/*/* 初始化 */*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ复位 delay(8); /稍做延时 DQ = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us DQ = 1; /拉高总线 delay(10); x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(5);/*/* 读一个字节 */*/unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (

20、i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay(5); return(dat);/*/* 写一个字节 */*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat=1; delay(5);/*/* 读取温度 */*/unsigned int ReadTemperature(void)unsigned char a=0;unsigned int b=0;unsigned int t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换delay(200);Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar(); /低位b=ReadOneChar(); /高位b=8;t=a+b;return(t);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1