收藏 分销(赏)

电子装置课程设计报告.doc

上传人:快乐****生活 文档编号:4458920 上传时间:2024-09-23 格式:DOC 页数:19 大小:704KB 下载积分:8 金币
下载 相关 举报
电子装置课程设计报告.doc_第1页
第1页 / 共19页
电子装置课程设计报告.doc_第2页
第2页 / 共19页


点击查看更多>>
资源描述
电子装置课程设计报告 19 2020年4月19日 文档仅供参考,不当之处,请联系改正。 浙江理工大学 班级:08电子信息实验班 学号:Q08610110 姓名:周慧 指导老师:陈科 ~ 第二学期 设计题目:温度检测系统设计 一、实验内容 1、 利用板载模拟温度传感器TC1047A实现一温度采集系统; 2、 间隔1--5s采集一次(步进1 s,能够预设),在液晶屏第一行显示连续的3个采集温度值; 3、 当最新采集的温度大于这三个温度的平均值温度1℃时,蜂鸣器报警,当温度降低后,解除报警; 4、 记录报警次数,在LCD上显示,,并将结果存入24LC024。 二、 电路原理图以及各功能模块的工作原理 1、驱动蜂鸣器 APP001开发板上的BUZZER是由RC2控制一个三极管来驱动的,当JP4的跳线开关短路时,RC2管脚输出高电平便会使蜂鸣器发出声音,RC2管脚输出低电平便禁止蜂鸣器发声。 2.字符LCD APP001开发板配置了一个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和SW3 5. RTC 采用Timer 1外接32.768kHz的晶振能够产生精确的1秒计时,从而实现RTC。 6.24LC024 7.LCD、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 Sec { Flagbits.Timer1_Flag=0; get_key_flag++; if(get_key_flag>=Time_count) { get_key_flag=0; LCD_Temp_Update() ; // update Temperature Temp_Compare(); } } } } (2)读取温度: int Read_TC1047_Temperature(void) { int AD_Temp; ADCON0bits.CHS0=1; for (AD_Temp=0;AD_Temp<5;AD_Temp++); ADCON0bits.GO=1; // Start to convert the A/D while(ADCON0bits.GO); // Waiting A/D until done AD_Temp = ReadADC( ); // Get 10 bits A/D result return AD_Temp; } (3)LCD__EEPROM 更新 void LCD_Temp_Update (void) { int i; LCD_Set_Cursor(0,0); // 清理lcd for (i=0;i<16;i++)putcLCD(' '); /****显示第一个温度值******/ LCD_Set_Cursor(0,0);//定位光标 T2_buffer[0]=T2_buffer[1];//从后面向前传递温度参数 if(T2_buffer[0]!=0)//如果是零,不要显示 { Buffer_LCD(T2_buffer[0]); LCD_Set_Cursor(0,4);//定位光标 putcLCD(0xDF);//显示 ”度 “ 这个标志 } /****显示第二个温度值******/ LCD_Set_Cursor(0,5); if(T2_buffer[1]!=0) { Buffer_LCD(T2_buffer[1]); LCD_Set_Cursor(0,9); putcLCD(0xDF); } /****显示第三个温度值******/ LCD_Set_Cursor(0,10); T2_buffer[2]=T2_buffer[3]; if(T2_buffer[2]!=0) { Buffer_LCD(T2_buffer[2]); LCD_Set_Cursor(0,14); putcLCD(0xDF); } T2_Buffer=Read_TC1047_Temperature( );// Get Current Temperature from TC1047A T2_buffer[3]=T2_Buffer; EEPROM.Word=EERandomRead(0xA0,0x30); //显示累积温度报警次数 LCD_Set_Cursor(1,13); NUM=EEPROM.Byte[0]; itoa(EEPROM.Byte[0],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_buffer[0]!=0) { for(i=0;i<=2;i++) { alarm_value+=T2_buffer[i]; } range=alarm_value/3.0; LCD_Set_Cursor(1,0); Buffer_LCD(range); LCD_Set_Cursor(1,4); putcLCD(0xDF); if ((T2_Buffer)>(range+0x000A)) //温度值超过告警值时报警 { PORTCbits.RC2=1; //开蜂鸣器 PORTDbits.RD7=1; //点LED D8 alarm_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_count>4) { Time_count=1; } else Time_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()对按键进行判断,如果有按键按下则处理按键,然后判断中断,若达到所规定的时间,则更新温度,并将中断次数写入EPROM中,最后在采集完三次温度之后,能够用Temp_Compare()函数进行温度比较,如果温度高于三次温度的平均值,则进行报警。整个过程是采用模块编程、分块调试、之后系统联调的原则。 经过本次实验,我觉得.自己学到了很多东西,以后应该会进一步去学习。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服