




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PIC单片机课程设计报告 题 目: 温度监测与控制 学生姓名: 学 号: 指导教师: 年 月 日目 录一.课程设计性质与目的02二.课程设计任务和要求02三.课程设计具体步骤3.1 总体方案设计说明 033.2 硬件设计说明 033.3 软件设计说明 06四.设计总结与体会 4.1设计结果 084.2问题及解决方法 084.2感想及体会 08五参考文献 09六附录 101. 课程设计性质和目的: PIC单片机课程设计是电气工程与自动化专业及相近专业的一门重要的专业实践课,本课程在PIC单片机课程的基础上,通过硬件设计与软件编程与实际实验板调试的实践,进一步掌握PIC单片机的C程序语言的编写与调试,是毕业设计前的一次重要的实践,为今后走上工作岗位打下坚实的单片机应用基础。具体来说,这次课程设计能让我 扩展、加深对PIC单片机应用的了解,包括中断、定时器、PWM、显示等功能模块的应用;接触项目中C语言编程的逻辑,如何一步一步实现所想要的功能;通过分析选择元件,学着查找相关元件资料;在后期,优化程序,使之能满足实际运行要求;最终完成该课程设计。二.课程设计任务和要求:我的课程设计题目是温度监测与控制,要求当温度T超过电机启动设定值(START_T)时,为了防止在临界温度值时的风扇频繁启/停,控制风扇的启/停要有一定的回差值(DELTA_T),即当T=START_T时启动风扇,当T(START_T-DELTA_T)时关闭风扇,并要求START_T和DELTA_T能由用户设定。具体来说:1)利用LCD,显示实时温度,电机启动温度值及温度控制回差值;2)能够通过按键的设置增大或减小转启动温度及回差温度;3)通过LED亮灭实现预警;4)通过风扇(直流电机)实现散热。三课程设计具体步骤:3.1 总体方案设计说明在实验板上调试程序在PROTEUS上绘制硬件仿真图编写C程序,利用MPLAB经行调试了解课设所需元件、模块,实现功能流程 本课程设计利用TC74温度传感器采用温度数据,通过PIC16F877芯片IIC通信模块传送温度数据,经BCD转换,在LCD上显示出来。并且该温度值将与电机启动设定值对比,与电机启动设定值和回差值的差进行对比,调控风扇的转停,LED的闪灭。为了防止电机旋转转速过高,根据脉宽调制原理编写相应程序,利用单片机调整输出PWM的高电平时间控制直流电机的转速。3.2硬件设计说明整个系统硬件电路包括四个主要模块:LCD显示模块、按键输入模块、微型直流电机PWM控制模块。3.2.1LCD显示模块图3.2.1课设板所用的 LCD 型号为YB1602A,接线如图3.2.1 所示。图中采用4 位数据线接线方式,是为了节省单片机的IO 口。从图中可以知道,要使用该LCD 时,短路插P38、P22 的短路插(除RD7 外)均要插上。如要使用背光控制,可将P22 的短路插8 插短接,如不用背光,该短路插不接。表1 为LCD YB1602A 的引脚功能说明。引脚名功能RS命令/数据选择:1:数据,0:命令R/W 读/写选择:1:读,0:写E 数据使能:下降沿送入有效DB7DB0数据线,如用4位数据,使用高4位表 1 LCD YB1602A 引脚功能表上电后要延时15ms 后,才能进行初始化,LCD 初始化过程详见附录。3.2.2按键输入模块采用课设板上44按键中的三个普通按键S1、S5、S9即可,三个按键对应的功能见表2,接线如图3.2.2所示,其中P45 须短接到地,P20 的13 短路插短接,用到RB0RB2共3个引脚,编程时利用RB0/INT 中断与RB电平变化中断进行按键处理。图3.2.2按键功能S1(SET)进入调整模式,或者退出调整模式S5(INC)每按一次,则数值增1S6(DEC)每按一次,则数值减1表 2 按键功能表3.2.3微型直流电机PWM控制模块图3.3.3本模块的接线图如图3.3.3所示,利用单片机输出的PWM波形控制T3的通断,对VCC电压进行斩波,通过改变PWM占空比从而改变直流电机的电枢电压,从而改变电机转速。为了防止T3断开时电机产生的过电流使板上器件烧毁,在电机两端反并联了二极管D4。本设计采用CCP1模块即通过RC2输出1kHz的PWM波控制电机转速,P26需将2用短路插短接。3.2.4 TC74温度传感器模块温度传感器TC74是Microchip公司的一款IIC接口的数字式温度传感器。其测温范围为-40125,在2585之间的误差为-2+2,在0125之间的误差为-3+3。它有两种分装,如下图: 220V电源单片机PIC16F877 pwmRBIICLED灯变压器硬件框图:直流电机 按键中断温度检测TC74液晶显示控制3.3 软件设计说明3.3.1主程序框图开始:初始化温度的读取显示 进入修改设置状态KEY.FLAG=1? y5秒内有操作? n y n 电机运转、LED闪亮温度值超过电机启动值? n y 温度值超过电机启动值与回差值的差? nLED灯灭,电机不启动 y 是 LED长亮 n 3.3.2各部分功能实现 3.3.2.1按键功能程序流程图本设计用了3个按键,一个是接于RB0/INT的按键,它利用INT中断功能,为功能设置键;另两个是接与RB1、RB2的按键,它们利用RB电平变化中断,为+1和-1键。因此程序要用到INT中断与RB电平变化中断。为了方便编程,定义了结构体类型STRU变量KEY:l KEY的成员SET为3位,保存按键SET的次数,次数只能在02间循环,但结构体预留了3位,最大可至7,便于程序功能扩展;l 成员INC=1表明有INC按键按下,但未处理,处理后令其等于0,就不会重复处理了;l 成员DEC=1表明有DEC按键按下,其他操作与成员INC相同;l 成员FLAG=1表明有按键需要处理,成员CHANGE=1表明显示需要刷新。在按键的处理中,中断程序中只是设置了标志位,处理按键均在主程序中进行,一旦有有效按键按下(先按SET后按INC或DEC),启动TMR1进行延时计时时,超过5秒内无按键,程序自动退出按键状态,因此每次有效按键时,TMR1的中断次数计数值T1N均清零。 3.3.2.2PWM输出程序设计本设计采用CCP1模块从RC2引脚输出1kHz(即周期为1000)的PWM波,预分频比用1:16,晶振为8MHz,则 1000=(PR2+1)40.12516 PR2=124 假设高电平时间为则由CCPR1L及CCP1CON的5、4两位共10位的X值为,时间单位为。而占空比 改变PWM的高电平时间,只需对CCPR1L和CCP1CON的5、4两位重新赋值即可。 3.3.2.3 温度采样显示程序设计LCD液晶显示及IIC初始化,单片机通过IIC通信向TC74发送地址,地址在字节的高7位,最低位为0表示为写,接着单片机向TC74发送第二个数据,即读温度命令字RTR(0b00000000);然后再重新开始,单片机再向TC74发送地址,但此时最低位为1,表示接下来要读TC74的温度值。最后单片机接受TC74发出的温度值。经过BCD转码后,将该温度值显示在LCD液晶屏上。4、结论4.1 设计结果本次课程设计能够满足题目要求,实现温度监测与控制,能够根据用户设置的设定值启动风扇降温,并通过灯光信号变化预警。4.2 问题及解决方法1) 第一个碰到的问题编译是有不少错误,只能一个一个解决,不仅需要看书,还需要和同学多交流,比如,书上IIC_SEND程序中STAT_RW在MPLAB里一直报错,后来改成RW就可以了;2) 是LCD液晶屏无法显示数据。有PROTEUS上接线的错误,线脚直接接在LCD的针脚上,程序中初始化定义出错,未能理解LCD_WRITE及LCD_WRITE_4的不同,后来通过在项目中设置LED检测,从主程序开头逐句排查,了解程序运行卡在哪里,逐一解决,实现正常显示;3) 温度显示T=000,先排除显示模块出现问题的可能,屏蔽按键中断功能,反复检查IIC初始化,及IIC主动接收、主动发送程序,发现在IIC端口加IIC调试器观察IIC通信是否正常工作;4) 按键失灵,按键没有反应,解决办法是检查相关程序,着重检查端口设置;5) 刚开始对电机何时运行,LED的闪灭情况有些混乱,解决办法是,把功能设定用文字写下来,再根据文字编写程序;6) 实际烧写发现LCD显示异常,按键没有反应,又重新梳理程序,更改了按键程序逻辑;7) 实际电机运转时,电机转速忽大忽小,无法稳定。这种情况可能是由于程序里对PWM的高电平时间调整得过于频繁,或者是由于调整的幅度过大,可在相应程序段插入一段延时,或者将PWM高电平时间调整的幅度减小。4.3 感想及体会1) 确定课题后,就确定了要用到哪些元件、芯片及PIC16F887的哪几个功能模块,所以,必须对这些有个比较深的了解和认识,这样在编写程序时能减少错误,构思出程序流程图,再根据流程图写确定主函数框架,确定子程序,这样程序编写起来才不会乱,也有助于检查时迅速找到相应的程序段;2) 观察实验板实际电路,根据实验板确定使用哪些端口,之后再进行相应程序编写;3) 程序的编写,需分模块写,子程序化设计做到细致认真,特别是端口地址设置,编译出现错误耐心解决,在编译成功后,而仿真运行发生故障时,一个一个检查相应模块程序运行是否正常,并且对硬件设计也要多加留心,有时是硬件接线的问题;4) 实时保存,留有备份,以防万一,对出现问题的程序段可反复推敲;5) 程序基本构架完毕和调试成功后,对程序可进行必要的删减和优化,使其更加简练。还可以添加一些附加功能,使系统设计更完善和人性化。 通过这次课程设计使我对PIC单片机有了更深的了解,积累了一些设计经验,懂得了理论与实际相结合是很重要的,严谨和细心才能把程序做好做漂亮。不同的课题使我在做课设的过程中更加独立,掌握到更多知识。虽然只是一个小小的题目,但是却有很丰富的内容,比如还可以加入电机测试模块,对电机进行调速,这都是我接下来要实现的目标。参考书目:1 PIC16系列单片机C程序设计与PROTEUS仿真江和,北京航空航天大学出版社,20102 福州大学PIC单片机课程设计指导书江和,鲍光海,2012年3月附录#include_CONFIG(0x3771);/引脚定义#define LCD_RS RD4 /LCD寄存器选择 数据H/指令L#define LCD_RW RD5 /LCD读H/L写控制线#define LCD_E RD6 /LCD E 时钟#define LED RA5 /LED#define FS RC2 /电机#define KEY_DEC RB2#define KEY_INC RB1/常数定义#define TC74_ADD 0b1001101#define COM 0#define DAT 1#define LINE1 0b10000000#define LINE2 0b11000000#define RTR 0b00000000#define ST_POSITION LINE2+5#define DT_POSITION LINE2+13/函数声明void CSH();void LCD_CSH(void);void LCD_WRITE(char,char);void LCD_WRITE_4(char,char);void DISP_MENU(void);void DISP_T(signed char);void DISP_ST_DT(void);void BCD(unsigned int);void DELAY_I(unsigned int);void DELAY_US(char);void DELAY(unsigned int);void IIC_SEND(char);void IIC_CSH(void);signed char READ_T(void);void interrupt ISR(void);char AA17= WKDJ 011000643 ;_EEPROM_DATA(50,3,255,255,255,255,255,255);char BW,SW,GW;char T1N,START_T,DELTA_T;/定义结构体类型STRU的变量KEYstruct STRUunsigned SET:3;unsigned INC:1;unsigned DEC:1;unsigned FLAG:1;unsigned CHANGE:1;KEY;void main(void)char ST_OLD,DT_OLD;signed char R5;unsigned int i;CSH();LCD_WRITE(0b00000001,COM);DELAY(2);DISP_MENU();DELAY(50);LCD_WRITE(0b00000001,COM);DELAY(2);DISP_T(R5);DISP_ST_DT();while(1)R5=READ_T();/读温度传感器的温度值 DISP_T(R5);/显示温度值 LED=1; if (R5=(START_T-DELTA_T) LED=0; if (R5=START_T) TRISC2=0;PR2=124;CCPR1L=0x32;CCP1CON=0b00001100;T2CON=0b00000110;LED=1;i=0;while(KEY.FLAG=0)DELAY(1);i+;if(i100)LED=0;if(i200)break; ST_OLD=START_T;DT_OLD=DELTA_T;while (KEY.FLAG=1)LED=0;NOP();CCP1CON=0b00000000;FS=0;if (KEY.SET=1)/进入修改LCD_WRITE(ST_POSITION,COM);else if (KEY.SET=2)LCD_WRITE(DT_POSITION,COM);LCD_WRITE(0b00001111,COM);/字符闪if (KEY.SET=1)if (KEY.INC=1)KEY.INC=0;DELAY(3);START_T+;if (START_T=100)START_T=100;else if (KEY.DEC=1)KEY.DEC=0;DELAY(3);START_T-;if (START_T=20)DELTA_T=20;else if(KEY.DEC=1)KEY.DEC=0;DELAY(3);DELTA_T-;if (DELTA_T4;LCD_WRITE_4(R2,FLAG);R2=R1&0x0F;LCD_WRITE_4(R2,FLAG);DELAY_US(10);/IIC发送数R并等待发送完成,收到从机的应答信号void IIC_SEND(char R)SSPBUF=R;/发送while(RW=1);/在主控模式下判断发送是否完成while(SSPIF=0);/等待发送完成while(ACKSTAT=1);/等待从机发送信号应答/IIC初始化void IIC_CSH(void)TRISC&=0b00011100;SSPCON=0b00101000;/同步串口使能,主控方式SMP=0;/使能告诉模式(400kHz)的压摆率控制SSPADD=4;/主控模式为波特率值,每位时间T=(SSPADD+1)/Tcy=5uS/读TC74的温度值signed char READ_T(void)signed char R1;/INTCON=0b00000000;/关闭GIE、PEIE中断SEN=1;/开始条件while(SEN=1);/检测开始条件是否完成IIC_SEND(TC74_ADD1);/送地址(写)IIC_SEND(RTR);/写RTR指令(写)RSEN=1;/重新开始条件while(RSEN=1);/等待IIC_SEND(TC74_ADD1)+1);/发送TC74地址(读)RCEN=1;/接收使能while(RCEN=1);/等待R1=SSPBUF;/接收数据PEN=1;/停止位while(PEN=1);return(R1);/void DISP_MENU(void)char i;LCD_WRITE(0b00000001,COM);LCD_WRITE(LINE1,COM); /回到行首for(i=0;i=0)BCD(R1);else R2=(R1)+1;BCD(R2);LCD_WRITE(LINE1+5,COM);LCD_WRITE(T,DAT);LCD_WRITE(=,DAT);if(R1=0)LCD_WRITE(BW+0x30,DAT);LCD_WRITE(SW+0x30,DAT);LCD_WRITE(GW+0x30,DAT);LCD_WRITE(0xDF,DAT);LCD_WRITE(C,DAT);/延时(n)msvoid DELAY(unsigned int n)unsigned int j;char k;for(j=0;j0;k-) NOP();/延时(n)ms,中断专用void DELAY_I(unsigned int n)unsigned int j;char k;for(j=0;j0;k-)NOP();/延时(n10)s+12svoid DELAY_US(char n)char j;j=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医卫类外科主治医师-相关专业知识参考题库含答案解析(5套试卷)
- 财务考试题及答案
- 中级英语写作知到智慧树答案
- 汽车维修工中级模拟习题(附参考答案)
- 成人护理学皮肤、运动、神经系统测试题(附答案)
- 药品注册管理办法试题(附答案)
- 化工总控工职业技能鉴定模拟练习题含答案
- 中学化学习题研究知到智慧树答案
- 2025年外墙清洗与外墙玻璃清洁服务合同范本
- 2025年二手车出口业务代理合同样本
- 初中化学课程标准(2022年版)考试题库(含答案)
- 部编人教版六年级上册语文全册教学课件+单元复习课件
- 酒店消防安全管理制度(2022版)
- 人教部编七年级语文全册专项知识点梳理归纳字词、文言文、古诗词
- 国家基本公共卫生服务规范第三版测试
- 2024年保定交通建设投资集团有限公司招聘笔试冲刺题(带答案解析)
- 人教版六年级上册数学全册教案教学设计含教学反思
- 返工、返修作业指导书全套
- 《数学新课标》课件
- 跨文化商务交际导论 课件 Unit 1 Culture
- 2024年度企业预算表(制造企业)
评论
0/150
提交评论