计算机课程设计.doc

上传人:牧羊曲112 文档编号:4297081 上传时间:2023-04-14 格式:DOC 页数:16 大小:261KB
返回 下载 相关 举报
计算机课程设计.doc_第1页
第1页 / 共16页
计算机课程设计.doc_第2页
第2页 / 共16页
计算机课程设计.doc_第3页
第3页 / 共16页
计算机课程设计.doc_第4页
第4页 / 共16页
计算机课程设计.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《计算机课程设计.doc》由会员分享,可在线阅读,更多相关《计算机课程设计.doc(16页珍藏版)》请在三一办公上搜索。

1、 计算机控制技术 课程设计报告 题 目 电加热炉计算机温度控制系统设计 学院(部) 电子信息工程学院 专 业 自动化 学生姓名 王 斌 学 号 200810311226 年级 2008级 指导教师 喻晓红 职称 讲师 2011年 7月 2日 目录 引言21 设计方案概述22 硬件的设计部分22.1 主要硬件介绍22.1.1 单片机32.1.2 温度传感器32.1.3 开关器件32.2 硬件的设计与实现32.2.1 显示部分电路42.2.2 温度检查电路42.2.3 键盘电路42.2.4 电气开关及工作电路53 软件设计部分63.1绘制流程图63.2 程序设计73.3调试与仿真74 设计工作总结

2、及心得体会8参考文献10附录11引言在现实生活当中,很多场合需要对温度进行智能控制,日常生活中最常见的要算空调和冰箱了,他们都能根据环境实时情况,结合人为的设定,对温度进行智能控制。工业生产中的电加热炉温度监控系统和培养基的温度监控系统都是计算机控制系统的典型应用。通过这次课程设计,我们将自己动手设计一个小型的计算机控制系统,目的在于将理论结合实践以加深我们对课本知识的理解。 1设计方案概述要想达到技术要求的内容,少不了以下几种器件:单片机、温度传感器、LCD显示屏、直流电动机等。其中单片机用作主控制器,控制其他器件的工作和处理数据;温度传感器用来检测环境中的实时温度,并将检测值送到单片机中进

3、行数值对比;LCD显示屏用来显示温度、时间的数字值;直流电动机用来表示电加热炉的工作情况,转动表示电加热炉通电加热,停止转动表示电加热炉断电停止加热。整体思路是这样的:首先我们通过按键设定所需要的温度值,然后利用温度传感器检测电加热炉的实时加热温度,并送至单片机与设定值进行比较。若检测值小于设定值,则无任何动作,电加热炉继续导通加热;若检测值大于设定值,则单片机控制光电耦合器导通,继电器动作,电加热炉断电停止加热。一旦炉温低于设定值,单片机又控制光电耦合器断开,继电器开关分离,电加热炉开始导通加热。这个过程中所设定的温度值和传感器检测到得温度值都要在LCD显示屏上显示出来,以方便操作人员观察。

4、另外,还可以加上时钟模块,以方便计时。这个设计思路相对比较简单,利用所学过的知识容易实现,加上光电耦合器用于隔离强电和弱电,比较安全,正好符合我们自动化专业用弱电控制强电的目的,正所谓学以致用。2硬件的设计部分2.1 主要硬件介绍2.1.1单片机这里选用AT89C51单片机作为控制系统的处理器。AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器。2.1.2温度传感器温度传感器有很多种型号,这里我选用DS18B20温度传感器。数字温度传感器DS18B20具有独特的单总线接口方式,支持多节点,使分布式温度传感器设计大为简化。测温时无需任何外围原件,可以通

5、过数据线直接供电,具有超低功耗工作方式。测温范围为-55到+125摄氏度,可直接将温度转换值以16位二进制数字码的方式串行输出,因此特别适合单线多点温度测量系统。由于传输的是串行数据,可以不需要放大器和A/D转换器,因而这种测温方式大大提高了各种温度测控系统的可靠性,降低了成本,缩小了体积。2.1.3开关器件由于单片机与电动机之间需要用开关器件连接,并且前者用弱电控制,后者由强电控制,这就尤其需要注意安全问题。于是我想到了在课本中学过的高性能安全开关器件光电耦合器。光电耦合器是由一个发光器件和和一个光电转换器件组成,这里所用的光电耦合器OPTOCOUPLER-NPN是由一个发光二极管和一个光敏

6、晶体管所组成。当发光二极管发光,就会使得光敏晶体管导通,继电器通电动作,将开关吸合,电动机回路断开。2.2硬件的设计与实现2.2.1显示部分电路图2.1 显示部分电路图这里我选用LCDLM016L液晶显示屏作为系统的显示器件,如图所示,LCDLM016L采用标准的16脚接口,仿真时隐藏了背光正极和背光负极两个引脚。它通过D0-D78位数据端来与单片机进行数据和指令传输,这里我们将它与单片机的P0口连接。在显示屏上显示的内容包括设定的温度值SET、传感器检测到的环境温度SA以及时钟,这个时钟是可以调整的,这样方便工作人员在对系统进行操作时有一个时间概念。2.2.2温度检测电路温度传感器与单片机的

7、连接情况如下图所示。图2.2 温度检测电路图温度传感器18B20将检测到的环境实时温度进行A/D转换和放大,然后串行送入单片机P1.7口,便于单片机将此数值与设定的温度值进行比较,然后先做出相应反应。在仿真时,我们只能通过按18B20上的加减按钮来调节实时温度,是一个模拟的过程。2.2.3键盘电路键盘电路如图所示。 图2.3 键盘电路图这里减排设计得比较简单,“MS”键是切换调整对象的,调整对象包括时、分、温度设定值三项,“+”键是向上加调整对象的值,“”键是向下减调整对象的值,“ON/OFF”键是打开和关闭系统自动调节功能的开关键。2.3.4电气开关及工作电路电器开关及工作电路如下图所示。图

8、2.4 电气开关及工作电路图如图所示,光电耦合器1脚接电源,2脚接单片机P3.7脚。工作过程用以下三个阶段来描述:(1)单片机将温度传感器送入的值与设定值进行比较,若送入值小于设定值,则P3.7脚保持高电平,这样发光二极管不发光,光敏晶体管保持高阻态,继电器也不会工作,电动机和灯泡维持导通,相当于电炉继续加热,指示灯亮;(2)一旦送入值比设定值大,单片机将会控制P3.7脚变为低电平,发光二极管导通发光,光敏晶体管受光照影响导通,继而继电器工作,电磁铁将单刀双掷开关吸向左端,使电动机和灯泡同时停止工作,这就相当于电炉断电,停止加热;(3)电炉短路一段时间后,必然导致炉温降低,而温度传感器DS18

9、B20在不间断地检测炉温,当检测值低于设定值后,单片机又控制P3.7脚恢复高电平,光电耦合器恢复高阻态,继电器断电,单刀双掷开关被弹回右端,电动机和灯泡又开始工作,这相当于电炉从新开始加热。 3软件设计部分3.1 绘制流程图初始化P1口,初始化24C02读出24C02保存的数据赋于K开始LCD初始化延时500ms启动时钟定时器0初始化,DS18B20初始化按键扫描、温度采集送入单片机进行温度值比较Y设定值=采集值?N将P3.7口置0Y设定值采集值?N将P3.7口置1图2.5电加热炉计算机温度控制流程图3.2 程序设计由于整个程序工程量比较大,我采用模块化设计方法来设计这个程序。首先定义在后面将

10、会用到的变量,不可能一次定义准确,所以边定义边补充。然后编写子函数,包括LCM初始化子函数、显示指定坐标的一个字符子函数、ds18b20初始化函数、ds18b20延迟子函数、读取ds18b20当前温度子函数、液晶显示子函数、键盘扫描子函数、设定工作模式子函数、按键加法子函数、按键减法子函数、24C02读写驱动程序、定时器t0中断子函数等子程序,最后是主函数。3.3 调试和仿真在Keil软件中编写完程序后,编译生成.Hex文件,单片机可以执行.Hex文件。在Protues软件中,给单片机加载所生成的.Hex文件,按下运行按钮,系统开始仿真。系统仿真截图如下图所示。图2.6系统仿真图(一)上一张是

11、当温度采样值小于设定值,电热炉处于工作状态时的仿真截图。以下这张是当温度采样值高于设定值后,系统自动做出反应,使电热炉断电停止工作的仿真截图。图2.7系统仿真图(二)4 设计工作总结及心得体会一个星期很快就过去了,计算机控制技术课程设计也告一段落。本次课程设计,我的题目是电加热炉温度控制系统。说到电加热炉,我们都比较熟悉,在日常生活中我们经常用到,特别是冬天用它来煮火锅。我们也会发现这样一个问题,一般的电加热炉是没有温度自动控制的,当温度上升到我们需要的程度时,它仍然继续加热,这不仅会影响到加热效果,还会造成电能的浪费。那么就有必要设计一种能自动调节炉温的系统,把它应用到日常生活中,将会给人们

12、带来极大的方便。在设计的过程中,我也遇到一些麻烦,比如说怎样来实现电动机回路的自动通断调节、怎样来实现时钟的调整等等,这些问题都令我十分棘手。通过去图书馆查阅相关资料和上网搜索各硬件的原理以及应用,我最终都一一解决了这些问题。在设计过程中,我遇到困难的时候也经常请教,最终解决问题。总的来说,从拿到问题到彻底解决问题,这是一个令人振奋并享受的过程。经过去图书馆和上网大量的查阅书籍,我也学到了很多在课本上没有的知识,收获颇丰。这段过程让我懂得了一个道理,那就是学生要学的绝对不该仅仅是课本上的东西,有些东西只有自己动手钻研,你才可能学习到。也只有这样,我们才能成为一个见多识广、渊博的人。 参考文献1

13、 于海生微型计算机控制技术清华大学出版社,20042 谭浩强C程序设计(第三版). 清华大学出版社,20063 戴焯. 传感与检测技术. 武汉理工大学出版社,20064 张毅刚. 单片机原理及应用. 高等教育出版社,20035 柯节成. 简明电子元件器件手册. 高等教育出版社,2005附录系统的完整程序如下:/*电加热炉温度控制系统问题描述:当温控开关打开时,若测得环境温度大于设定温度,则继电器吸合,电加热炉停止工作;若测得环境温度小于设定温度,则继电器释放,电加热炉继续工作。*/#include#include#include #define uchar unsigned char#defi

14、ne uint unsigned int#define BUSY 0x80 /lcd忙检测标志 #define DATAPORT P0 /定义P0口为LCD通讯端口 #define PLAYE_ADDR XBYTE0XBFFF /语音报警地址 sbit RED_ALARM=P10; /红色指示灯sbit WRITE_ALARM=P11; /白色指示灯sbit GREEN_ALARM=P12; /绿色指示灯sbit BLUE_ALARM=P13;sbit P1_4=P14; /时钟调整sbit P1_5=P15; /时钟加sbit P1_6=P16; /时钟减sbit DQ = P17; /定义

15、ds18b20通信端口 sbit LCM_RS=P20; /数据/命令端sbit LCM_RW=P21; /读/写选择端sbit LCM_EN=P22;sbit sda=P23; /IO口定义sbit scl=P24; /LCD使能信号sbit ad_busy=P32; /adc中断方式接口sbit RECLED_EOC=P35; /ISD1420放音结束查询标志sbit OUT=P37;uchar ad_data; /ad采样值存储uchar seconde; /定义并初始化时钟变量uchar minite;uchar hour;uchar mstcnt=0;uchar temp1,temp

16、2,temp; /温度显示变量uchar t,set;uchar K;bit ON_OFF=0;bit outflag;bit write=0;uchar code str0=- : : - ;uchar code str1=SET: C SA: . C;void delay_LCM(uint); /LCD延时子程序void initLCM( void); /LCD初始化子程序void lcd_wait(void); /LCD检测忙子程序void WriteCommandLCM(uchar WCLCM,uchar BusyC); /写指令到ICM子函数void WriteDataLCM(uch

17、ar WDLCM); /写数据到LCM子函数void DisplayOneChar(uchar X,uchar Y,uchar DData) /显示指定坐标的一个字符子函数void DisplayListChar(uchar X,uchar Y,uchar code *DData);/显示指定坐标的一串字符子函数void init_timer0(void); /定时器初始化void displayfun1(void);void displayfun2(void);void displayfun3(void);void displayfun4(void);void keyscan(void );

18、 /键盘扫描子程序void set_adj(void);void inc_key(void);void dec_key(void);void delay_18B20(unsigned int i);void Init_DS18B20(void) ;uchar ReadOneChar(void);void WriteOneChar(unsigned char dat);void ReadTemperature(void);void ad0809(void);void playalarm(void); /*延时K*1ms,12.000mhz*/void delay_LCM(uint k) uint

19、 i,j; for(i=0;ik;i+) for(j=0;j60;j+) ; /*写指令到LCM子函数*/void WriteCommandLCM(uchar WCLCM,uchar BusyC) if(BusyC)lcd_wait();DATAPORT=WCLCM; LCM_RS=0; / 选中指令寄存器 LCM_RW=0; / 写模式 LCM_EN=1; _nop_(); _nop_();_nop_(); LCM_EN=0; /*写数据到LCM子函数*/void WriteDataLCM(uchar WDLCM) lcd_wait( ); /检测忙信号 DATAPORT=WDLCM; LC

20、M_RS=1; / 选中数据寄存器 LCM_RW=0; / 写模式 LCM_EN=1; _nop_();_nop_();_nop_(); LCM_EN=0;/*lcm内部等待函数*/void lcd_wait(void) DATAPORT=0xff; LCM_EN=1; LCM_RS=0; LCM_RW=1; _nop_(); while(DATAPORT&BUSY) LCM_EN=0; _nop_(); _nop_(); LCM_EN=1; _nop_(); _nop_(); LCM_EN=0;/*LCM初始化子函数*/void initLCM( ) DATAPORT=0;delay_LCM

21、(15);WriteCommandLCM(0x38,0); /三次显示模式设置,不检测忙信号 delay_LCM(5); WriteCommandLCM(0x38,0); delay_LCM(5); WriteCommandLCM(0x38,0); delay_LCM(5); WriteCommandLCM(0x38,1);/8bit数据传送,2行显示,5*7字型,检测忙信号 WriteCommandLCM(0x08,1); /关闭显示,检测忙信号 WriteCommandLCM(0x01,1); /清屏,检测忙信号 WriteCommandLCM(0x06,1); /显示光标右移设置,检测忙

22、信号 WriteCommandLCM(0x0c,1); /显示屏打开,光标不显示,不闪烁,检测忙信号/*显示指定坐标的一个字符子函数*/void DisplayOneChar(uchar X,uchar Y,uchar DData) Y&=1; X&=15; if(Y)X|=0x40; /若y为1(显示第二行),地址码+0X40 X|=0x80; /指令码为地址码+0X80 WriteCommandLCM(X,0); WriteDataLCM(DData);/*显示指定坐标的一串字符子函数*/void DisplayListChar(uchar X,uchar Y,uchar code *DData) uchar ListLength=0; Y&=0x01; X&=0x0f; while(X16) DisplayOneChar(X,Y,DDataListLength); ListLength+; X+;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号