电子装置课程设计报告---温度检测系统设计.doc_第1页
电子装置课程设计报告---温度检测系统设计.doc_第2页
电子装置课程设计报告---温度检测系统设计.doc_第3页
电子装置课程设计报告---温度检测系统设计.doc_第4页
电子装置课程设计报告---温度检测系统设计.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

设计题目:温度检测系统设计一、实验内容1、 利用板载模拟温度传感器tc1047a实现一温度采集系统;2、 间隔1-5s采集一次(步进1 s,可以预设),在液晶屏第一行显示连续的3个采集温度值;3、 当最新采集的温度大于这三个温度的平均值温度1时,蜂鸣器报警,当温度降低后,解除报警;4、 记录报警次数,在lcd上显示,,并将结果存入24lc024。二、 电路原理图以及各功能模块的工作原理1、驱动蜂鸣器app001开发板上的buzzer是由rc2控制一个三极管来驱动的,当jp4的跳线开关短路时,rc2管脚输出高电平便会使蜂鸣器发出声音,rc2管脚输出低电平便禁止蜂鸣器发声。2.字符lcdapp001开发板配置了一个2*16的字符lcd,它和pic18f452的接口是rd0-rd3连接到lcd模块的db4-db7,用来向lcd模块写入命令和数据,其中db7可以用来作为lcd模块控制器的忙标志位;rd5是读写控制位;rd4是命令和数据标志位。rd=0时,rd0-rd3是读取和写入数据到lcd的命令寄存器;rd=1时,rd0-rd3读取和写入的是要显示的数据。3.温度测量使用模拟温度传感器tc1047a,利用模数转换,将模拟电压转换为数字电压。对应于相应的温度。4.键盘使用开发板上的2组按键sw2和sw35. rtc采用timer 1外接32.768khz的晶振可以产生精确的1秒计时,从而实现rtc。6.24lc0247lcd、led&adc按键读取三、主要函数程序流程图1.main函数流程图2.lcd_eeprom 更新3.温度比较和蜂鸣器四、实验主要源码(1)main函数:void main(void)int alarmnum;/*首先初始化*/ initializeport( );initializeints( );initializead( ); initializetmr1( ); initialize_i2c_master( );/*lcd初始化*/ openlcd( );while(1) key_press_check();if (flagbits.timer1_flag)/ update temperature on lcd every 1 secflagbits.timer1_flag=0;get_key_flag+;if(get_key_flag=time_count)get_key_flag=0;lcd_temp_update() ;/ update temperaturetemp_compare(); (2)读取温度:int read_tc1047_temperature(void)intad_temp;adcon0bits.chs0=1;for (ad_temp=0;ad_temp5;ad_temp+);adcon0bits.go=1;/ start to convert the a/dwhile(adcon0bits.go);/ waiting a/d until donead_temp = readadc( );/ get 10 bits a/d resultreturn ad_temp;(3)lcd_eeprom 更新void lcd_temp_update (void)int i;lcd_set_cursor(0,0);/ 清理lcd for (i=0;i16;i+)putclcd( );/*显示第一个温度值*/lcd_set_cursor(0,0);/定位光标t2_buffer0=t2_buffer1;/从后面向前传递温度参数 if(t2_buffer0!=0)/如果是零,不要显示 buffer_lcd(t2_buffer0);lcd_set_cursor(0,4);/定位光标 putclcd(0xdf);/显示 ”度 “ 这个标志 /*显示第二个温度值*/lcd_set_cursor(0,5); if(t2_buffer1!=0)buffer_lcd(t2_buffer1);lcd_set_cursor(0,9);putclcd(0xdf);/*显示第三个温度值*/lcd_set_cursor(0,10);t2_buffer2=t2_buffer3;if(t2_buffer2!=0)buffer_lcd(t2_buffer2);lcd_set_cursor(0,14);putclcd(0xdf);t2_buffer=read_tc1047_temperature( );/ get current temperature from tc1047at2_buffer3=t2_buffer; eeprom.word=eerandomread(0xa0,0x30);/显示累积温度报警次数 lcd_set_cursor(1,13);num=eeprom.byte0;itoa(eeprom.byte0,ascii_string);putslcd(ascii_string);/显示当次温度报警次数lcd_set_cursor(1,11);itoa(alarm_count,ascii_string);putslcd(ascii_string);eebytewrite(0xa0, 0x30, (num+numn);eeackpolling(0xa0);numn=0;(4) 温度比较和蜂鸣器void temp_compare(void)int i,range;unsigned int alarm_value=0;/当所有的温度采集完毕之后 才能正常比较 if(t2_buffer0!=0)for(i=0;i(range+0x000a)/温度值超过告警值时报警portcbits.rc2=1;/开蜂鸣器portdbits.rd7=1;/点led d8alarm_count+;numn+;else portcbits.rc2=0;/观蜂鸣器portdbits.rd7=0;/关 led d8/t2_buffer_flag=1;(5) 按键查询void key_press_check(void)if(!sw2)pie1bits.tmr1ie=0;delay10ktcyx(100);if(time_count4)time_count=1;elsetime_count+;pie1bits.tmr1ie=1;if(!sw3)eebytewrite(0xa0, 0x30, 0);eeackpolling(0xa0);lcd_set_cursor(1,13);putclcd( ) ;lcd_set_cursor(1,14);putclcd( ) ;lcd_set_cursor(1,15);putclcd( ) ;lcd_set_cursor(1,6);writedatalcd(t);lcd_set_cursor(1,7);writedatalcd(=);lcd_set_cursor(1,8);itoa(time_count,ascii_string);putslcd(ascii_string);lcd_set_cursor(1,9);writedatalcd(s);五、心得体会 通过本次实验,我学会了温度检测系统,整个过程如下:首先利用传感器去采集温度,接着将采集过来的温度通过一定的公式转化成电压,然后又通过一定的公式将其转化成电路板上合适的电压值,用ad将其进行编码,最后将其转化成温度显示出来。 接着讲讲主程序的编写主要包括以下部分:首先是程序的初始化,接着跳入循环while(1)中,接着调用key_press_check()对按键进行判断,如果有按

温馨提示

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

评论

0/150

提交评论