炉温控制课程设计报告.doc
《炉温控制课程设计报告.doc》由会员分享,可在线阅读,更多相关《炉温控制课程设计报告.doc(44页珍藏版)》请在沃文网上搜索。
1、 目 录目 录1引言3第1章 技术指标41.1基本功能要求:41.2 提高功能要求:41.3设计条件4第2章 系统设计方案62.1原理图设计62.2硬件设计672.3软件设计72.3.1软件设计方案72.3.2程序清单(含必要的注释)8第3章 单元电路设计263.1控制部分电路设计2632矩阵键盘电路设计263.3显示部分电路设计283.3.1数码管内部原理图293.4温度采集模块电路设计313.4.1 DS18B20通信程序373.5继电器电路设计39第4章 测试与调整404.1电源电路检测404.2显示电路测试404.3单片机控制电路测试404.4矩阵键盘电路检测404.5 控制信号输出电
2、路检测404.6温度采集电路检测404.7控制电路检测414.7总体电路测试41第5章 加热炉温控系统使用方法425.1系统连接方法425.2系统使用方法42第6章 设计小节436.1 设计任务完成情况436.2 问题及改进436.3 心得体会43参考文献44引言随着计算机技术的发展和普及,以单片机为核心的小型嵌入式设备,已经在工业自动化、办公自动化等领域得到了日益广泛的应用 本课题对工业对象中主要的被控参数电阻炉炉温进行研究,设计了硬件电路和软件程序。硬件电路选用STC12C5A60S2单片机及DS18B20, 以STC12C5A60S2单片机为主体,构成一个能进行较复杂的数据处理和复杂控制
3、功能的智能控制器,使其既可与微机配合构成两级控制系统,又可作为一个独立的单片机控制系统,具有较高的灵活性和可靠性。单片机根据输入的各种命令,进行智能算法得到控制值,输出控制和脉冲信号,从而加热电阻炉。软件程序脉冲采用中断方式。关键词单片机;温度控制;计算机仿真;第1章 技术指标1.1基本功能要求:内容:应用计算机的实时监控和温度测量技术,采用单片机、温度检测电路、温度控制电路等,实现电阻炉炉温的实时监控。要求: 1.1.1采用单片机及相应的组成部件完成电阻炉温度控制系统设计,包括硬件电路和软件程序设计; 1.1.2测温范围0100,使其系统控制的温度保温值的变化范围为3060; 1.1.3可根
4、据按键设定目标温度,能够显示控温时的实际炉温和恒温时间等信息。 1.2 提高功能要求:1.2.1 对其主电路和控制电路设计相应的保护电路,使其安全可靠地工作;1.2.2对影响温度控制时间和精度的因素进行分析,改进相应的计算机控制算法,完成计算机控制高效的算法设计。1.3设计条件1.3.1电源条件:稳压电源5V可调,220V直流电源1.3.2测试条件:万用表1.3.2元件清单:如表1.1示。元件清单元件名称数量电热杯1个SL1型51单片机综合试验箱1个DS18B20温度传感器1片STC12C5A60S2单片机1片USB下载线1条单线固态继电器1个导线若干另有剪刀、镊子等工具表1-1第2章 系统设
5、计方案2.1原理图设计根据设计要求设计原理图如2-1所示。图2-1原理图图2-12.2硬件设计该设计本系统由STC12C5A60S 单片机最小系统及其外围电路组成,单片机系统有自己的电源模块、显示模块、温度采集模块,如图2-1所示。根据实验箱设计电路图如图2-2所示。单片机最小系统显示按键控制信号输出驱动电路外围电路固态继电器温控炉温度采集电源模块图2-2硬件电路方框图2.3软件设计2.3.1软件设计方案为了更简单的完成温度控制的任务,采用如下算法控制继电器,程序的软件流程图如下:图2-3软件流程图首先在程序的开头先读取用户的按键命令,当没有按键时,数码管仅显示实际温度;若按下“b”键,则数码
6、管显示用户的设定温度;按下“c”键,则进入设置温度子程序,用户通过19数字键就可以设置用户所需温度,这样就完成了用户的操作。接下来读取DS18B20的数据,并按格式装配成数码管可以显示的类型。最后根据当前的温度值控制继电器的通断。主程序就是以上述流程往复运行。2.3.2程序清单(含必要的注释)#include#include#define uchar unsigned char#define DELAY_TIME1 8#define uint unsigned intextern unsigned char KeyCounter;extern bit KeyFlag;extern bit Se
7、tFlag;extern bit DisFlag;extern bit ShowTimeFlag;unsigned char data DisData2; /温度显示值unsigned char data SetData2; /温度设定值unsigned char KeyCounter; /设置温度位数计数器float RTValue; /实际温度值unsigned char STValue=50; /设置温度值unsigned char ShowTime3=0;/恒温时间值 unsigned int m;/定义粗略延迟变量unsigned int cc;/计数次数unsigned int C
8、ountFlag;unsigned int TimeCounter=0;/设置恒温时间计数器unsigned char code keycode16=0x77,0x7b,0x7d,0x7e, /1,2,3,A0xb7,0xbb,0xbd,0xbe, /4,5,6,B0xd7,0xdb,0xdd,0xde, /7,8,9,C0xe7,0xeb,0xed,0xee, /*,0,#,D;unsigned char code Seg_Table13 = 0xC0,/*0*/ 0xF9,/*1*/ 0xA4,/*2*/ 0xB0,/*3*/ 0x99,/*4*/ 0x92,/*5*/ 0x82,/*6*
9、/ 0xF8,/*7*/ 0x80,/*8*/ 0x90,/*9*/0x9c,/*10*/ /上框 代表实际温度 0xa3,/*11*/ /下框 代表设定温度 0xff/all off;unsigned char code Pos_Dis_Buf5 = 0xef,0xdf,0xbf,0x7f,0xff;unsigned char Digit3 = 0;bit ShowTimeFlag=0;/是否显示恒温时间bit KeyFlag=0;/是否接收到有用键值 1有bit SetFlag=0;/是否设定键按下 1按下bit DisFlag=0; /1显示设定值 0显示实际值sbit Beep = P
10、35;sbit Heat = P30;sbit DQ=P31; /改成P30sbit SegDin=P36; /显示数据高地位sbit SegClk=P37; /数据显示时钟void InitSys()TMOD=0X01;/MODE 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1; /开中断ET0=1;/开定时器0中断P4SW=0xf0; /*函数:Delay()功能:不精确延时参数:延时参数返回值:无*/void Delay(unsigned int n)while(-n);void ds18b20_delay(int time)/延时时间
11、为(time * 6 us) int i,temp;temp=time; for(i=0;i0;i-) DQ = 0; /拉低总线 _nop_(); /至少维持了1us,表示写时序(包括写0时序或写1时序)开始 DQ = dat&0x01; /从字节的最低位开始传输 /指令dat的最低位赋予给总线,必须在拉低总线后的15us内, /因为15us后DS18B20会对总线采样。 ds18b20_delay(10); /必须让写时序持续至少60us DQ = 1; /写完后,必须释放总线, dat = 1; ds18b20_delay(1); /18B20读1个字节函数uchar ReadOneCh
12、ar(void)uchar i = 0;uchar dat = 0;for(i=8;i0;i-) DQ = 0; /将总线拉低,要在1us之后释放总线 /单片机要在此下降沿后的15us内读数据才会有效。 _nop_(); /至少维持了1us,表示读时序开始 _nop_(); dat = 1; /让从总线上读到的位数据,依次从高位移动到低位。 DQ = 1; /释放总线,此后DS18B20会控制总线,把数据传输到总线上 ds18b20_delay(1); /延时7us,此处参照推荐的读时序图,尽量把控制器采样时间放到读时序后的15us内的最后部分 if(DQ) /控制器进行采样 dat |= 0
13、x80; /若总线为1,即DQ为1,那就把dat的最高位置1;若为0,则不进行处理,保持为0 ds18b20_delay(8); /此延时不能少,确保读时序的长度60us。return (dat);float ReadTemperature(void)uchar n = 0; /存储符号unsigned int t;uchar a,b; /读出温度函 Init_DS18B20(); /总线复位 WriteOneChar(0xCC); / 发Skip ROM命令 WriteOneChar(0xBE); / 发读命令a = ReadOneChar(); /温度低8位b = ReadOneChar(
14、); /温度高8位Init_DS18B20();WriteOneChar(0xCC); / Skip ROMWriteOneChar(0x44); / 发转换命令 t = (b 8) + a;return (t*0.0625);unsigned char Key_Scan() /返回的是keycode数组的位数unsigned char i,X,Y;unsigned char KeyCode;P2 = 0x0f;if(P2 != 0x0f)Delay(500);if(P2 != 0x0f)X = P2;P2 = 0xf0;if(P2 != 0xf0)Y = P2;while(P2!=0xf0)
15、; /如果不松键 则一直停在这边KeyCode = X|Y;elseKeyCode = 0xff; for(i=0;i16;i+)if(KeyCode=keycodei)return i;return 255; unsigned char Get_Code()unsigned char i=0xff,j=0xff;i=Key_Scan();switch(i)case 0:j=1;KeyFlag=1;break;case 1:j=2;KeyFlag=1;break;case 2:j=3;KeyFlag=1;break;case 3:break; /Acase 4:j=4;KeyFlag=1;br
16、eak;case 5:j=5;KeyFlag=1;break;case 6:j=6;KeyFlag=1;break;case 7:break; /Bcase 8:j=7;KeyFlag=1;break;case 9:j=8;KeyFlag=1;break;case 10:j=9;KeyFlag=1;break;case 11:break; /Ccase 12:j=a;KeyFlag=1;SetFlag=1;KeyCounter=0;break;case 13:j=0;KeyFlag=1;break;case 14:j=b;KeyFlag=1;DisFlag=DisFlag;break;case
17、 15:j=c;KeyFlag=1;ShowTimeFlag=ShowTimeFlag;break; /D /Ddefault:KeyFlag=0;break;return j;/*函数:Seg_Display()功能:数码管在指定位置显示指定的数参数:Pos 显示位置(0 1 2 3) ucDATA (09)待显示的数字 Point 为1则显示小数点,否则不显示返回值:无*/void Bit_Display(unsigned char Pos, unsigned char ucDATA, bit Point)unsigned char i;unsigned char ucTemp;ucTem
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 炉温 控制 课程设计 报告