基于51单片机的温度控制系统的设计_第1页
基于51单片机的温度控制系统的设计_第2页
基于51单片机的温度控制系统的设计_第3页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、基于单片机的温度控制系统设计1. 设计要求要求设计一个温度测量系统, 在超过限制值的时候能进行声光报警。 具体设 计要求如下: 数码管或液晶显示屏显示室内当前的温度; 在不超过最高温度的情况下, 能够通过按键设置想要的温度并显示; 设有四个 按键,分别是设置键、加 1 键、减 1 键和启动 /复位键; DS18B20温度采集; 超过设置值的C时发出超限报警,采用声光报警,上限报警用红灯指示,下 限报警用黄灯指示,正常用绿灯指示。2. 方案论证根据设计要求,本次设计是基于单片机的课程设计, 由于实现功能比拟简单, 我们学习中接触到的 51 系列单片机完全可以实现上述功能,因此可以选用 AT89C

2、51单片机。温度采集直接可以用设计要求中所要求的DS18B20。报警和指示模块中,可以选用 3 种不同颜色的 LED 灯作为指示灯,报警鸣笛采用蜂鸣 器。显示模块有两种方案可供选择。方案一:使用 LED 数码管显示采集温度和设定温度;方案二:使用 LCD 液晶显示屏来显示采集温度和设定温度。LED 数码管结构简单,使用方便,但在使用时,假设用动态显示那么需要不断 更改位选和段选信号, 且显示时数码管不断闪动, 使人眼容易疲劳; 假设采用静态 显示那么又需要更多硬件支持。 LCD 显示屏可识别性较好,背光亮度可调,而且 比 LED 数码管显示更多字符, 但是编程要求比 LED 数码管要高。综合考

3、虑之后, 我选用了 LCD 显示屏作为温度显示器件,由于显示字符多,在进行上下限警戒 值设定时同样可以采集并显示当前温度, 可以直观的看到实际温度与警戒温度的 比照。 LCD 显示模块可以选用 RT1602C。3. 硬件设计根据设计要求,硬件系统主要包含6个局部,即单片机时钟电路、复位电路、 键盘接口模块、温度采集模块、LCD显示模块、报警与指示模块。其相互联系 如下列图1所示:图2单片机内部时钟方式电路图1硬件电路设计框图3.1单片机时钟电路形成单片机时钟信号的方式有内部 时钟方式和外部时钟方式。本次设计米用 内部时钟方式,如图2所示。单片机内部有一个用于构成振荡器 的高增益反相放大器,引脚

4、XTAL1和图3单片机按键复位电路XTAL2分别为此放大器的输入端和输出 端,其频率X围为1.212MHz,经由片 外晶体振荡器或陶瓷振荡器与两个匹配 电容一起形成了一个自激振荡电路,为单片机提供时钟源。时也为了系统调试方便,需要设计一个复位电路单片机的复位电路有上电复位和按键复位两种形式, 因为本次设计要求需要 有启动/复位键,因此本次设计采用按键复位,如图3。复位电路主要完成系统的 上电复位和系统在运行时用户的按键复位功能。3.3键盘接口模块本次设计需要的按键有4个,除去 一个复位按键外,还有3个功能按键, 因此选择独立式键盘。如图 4,将键盘 直接与单片机P1 口的P1.0、P1.1、P

5、1.2 相连。3个键设计思路如下:当按下S1 键时,系统进入上下限警戒值调整状 态;当第一次按下S1键时,进行上限 警戒值设定,当第二次按下 S1键时, 进行下限警戒值设定,当第三次按下 S1键时,回到正常工作状态。在警戒值调 整状态下,按下S2键,上下限警戒值加1,按下S3键,上下限警戒值减1,正 常工作状态下,按下S2和S3键无作用。GND三1o aS2oS33457P10 P11P12卩口P14图4键盘接口模块3.4温度采集模块本次设计中的温度传感器使用的是 DALLAS公司的单总线数字温度传感器DS18B20,这是一种常用的温度传感器,具有体积小、硬件开销低、抗干扰能力 强、精度高的特

6、点。DS18B20采用独特的一线接口,具有只需要一条口线通信多点的能力,简化了分布式温度传感应用,无需外部元件。可用数据总线供电,电压X围为3.0V至5.5V,测量温度的X围为-55C至+125 C,在-10C至+85CX围内精度为 )5C。温度传感器可编程的分辨率为912位,温度转换为12位数字格式最大值为 750毫秒,用户可定义的非易失性温度报警设置,应用X围包括恒温控制、工业系统、消费电子产品温度计、或任何热敏感系统。由于DS18B20是一条口线通信,所以中央微处理器与DS18B20只有一个一条口线连接。因为每一个DS18B20 的包含一个独特的序号,多个 DS18B20可以同时存在于一

7、条总线,这使得温度传感器放置在许多不同的地方。它的用途很多,包括空调环境控制,感测建筑物 内温设备或机器,并进行过程监测和控制。DALLAS DSW20DS IKB20 To-yiNC LU NG ! vM czn dq m功能GND接地数將输入/输出,对于单线操 作:漏极开路。当工作在寄生 电源模式时用来提供电源。VDD可选的VDD弓IH1。工作于寄 生电源按式时VDD必须接地心B NC 7 II NC6 | I NC 5 hl 1 GhlD图6 DS18B20外部电源连接方式图5 DS18B20封装与引脚DS18B20的核心功能是它的直接读数字的温度传感器。温度传感器的精度为用户可编程的9

8、、10、11或12位,分别以05C, 0.25C, 0.125C和0.0625C 增量递增。在上电状态下默认的精度为 12位。DS18B20启动后保持低功耗等待 状态;当需要执行温度测量和 AD转换时,总线控制器必须发出44h命令。在 那之后,产生的温度数据以两个字节的形式被存储到高速暂存器的温度存放器 中,DS18B20继续保持等待状态。当DS18B20由外部电源供电时,总线控制器 在温度转换指令之后发起“读时序 ,DS18B20正在温度转换中返回0,转换结 束返回1。如果DS18B20由寄生电源供电,除非在进入温度转换时总线被一个 强上拉拉高,否那么将不会由返回值。在硬件上,DS18B20

9、与单片机的连接有两种方法:一种是VDD接外部电源, GND接地,DQ与单片机的I/O 口相连;另一种是用寄生电源供电,此时,VDD、 GND接地,DQ接单片机的I/O 口。无论 是接外部电源还是用内部寄生电源,I/O口线要接5kQ左右的上拉电阻。本次设计中,采用外部电源方式,其连接方式如图6所示。单总线DQ端接单 片机的P1.7 口,DQ端接一个4.7k Q的上 拉电阻,这样单总线DQ在闲置状态时为 高电平。3.5LCD显示模块在本次设计中,使用 RT1602C字符型液晶显示模块(LCM)来设计当前温度 和上下限警戒值的显示电路。RT1602C字符型液晶显示模块是16字X 2行的采用5X 7点

10、阵图形来显示字 符的液晶显示器,采用标准的16脚接口,其引脚定义如图7所示。引脚号引脚名说明引脚号引脚名说明1GND/V ss电源地7D08位双向数据线2Vdd+5V电源8D13Vl液晶显示偏压信号9D24RS数据/命令控制,H/L10D35R/W读/写控制,H/L11D46E使能端12D515BLA背光源正极13D616BLK背光源负极14D7图7 RT1602C的引脚定义RT1602C的内部结构可以分为3个局部:LCD控制器、LCD驱动器、LCD显示器,其中LCD控制器采用的是HD44780。RT1602C与单片机的连线如图8所示。图8RT1602C与单片机连线LCM的数据总线与单片机的P

11、0 口通过一个上拉电阻排相连,LCM的三条 控制线RS、RW、EN分别与单片机的I/O 口 P2.0 P2.1、P2.2相连,第1、2引 脚分别与地、电源相连,第3引脚使用一个10kQ的可调电阻对显示屏的明亮进 行调整。3.6报警与指示模块在本次设计中,采用 LED发光二极管作为系统指 示灯,采用蜂鸣器作为报警 鸣笛。当温度高于上限警戒 值时,点亮红色发光二极管, 蜂鸣器发出响声;当温度低 于下限警戒值时,点亮黄色 发光二极管,蜂鸣器发出响声;温度在正常X围内时,图9报警与指示模块点亮黄色发光二极管。整个报警与指示电路如图 9所示,其中绿、红、黄色指示 灯分别接单片机P2.0、P2.1、P2.

12、2 口,电平拉低时点亮 LED,蜂鸣器电路接单 片机的P2.7 口,电平拉高时蜂鸣器响。至此便完成了整个硬件电路的设计工作,整个系统的原理图见附录二,系统I/O分配表如下:I/O 口功能说明I/O 口功能说明P0.0P0.7LCM数据口P2.1LCM读/写控制P1.0P1.3键盘输入P2.2LCM使能P1.7DS18B20温度米集P2.4P2.6LED信号输出P2.0LCM数据/命令控制P2.7报警信号输出4软件设计单片机应用系统的设计中,软件设计占有重要的位置。在本次设计中,根据 功能要求,可以把系统程序划分为5个模块,即主程序模块、显示模块、温度测 量模块、键盘扫描模块、其它子程序模块,如

13、图 10所示。图10软件设计框图4.1主程序设计主程序的内容包括单片机初始化、相关部件初始化和一些其它子程序的调用等。主程序清单如下,程序流程图如图11所示主程序开始初始化单片机/LCD初始化初始化显示模块1r键盘扫描读取温度J1显示字形转换显示初始化温度传感器图11主程序流程图void ma in (void)P仁 Oxff;P2|=0x70;P2&=0x7f;Temp_set 仁90;Temp_set2=10;Delay(500); ini t_LCD();in it_18B20();Display_str(0,0,str2);Display_str(0,1,str2);Delay(200

14、0);/初始化P1 口以便读入/上限报警温度初值90/下限报警温度初值10/延时500ms启动/DS18B20初始化/开机界面/开机界面Display_str(0,0,str0);Display_str(0,1,str1);while(1)Key_sca n();/扫描键盘Read_temp();读取温度Cha nge();Display();/显示Alarm();/指示灯与报警程序Delay(1000);4.2显示模块显示程序主要完成的功能是模式、上下限警戒值和测量温度值的显示,模块 中包含LCD初始化、显示单个字符子函数、显示一个字符串子函数。程序流程 图如图12所示,LCD初始化程序如下

15、,其它子函数程序详见附录一。*LCD初始化void ini t_LCD(void)P0=0;Delay(15);LCD_Comma nd(0x38,0);Delay(5);LCD_Comma nd(0x38,0);Delay(5);LCD_Comma nd(0x38,0);图12显示程序流程图Delay(5);LCD_Command(0x38,1); 8位数据传送,2行显示,5*7字形LCD_Comma nd(0x08,1); / 关闭显示LCD_Comma nd(OxO1,1); / 清屏LCD_Comma nd(0x06,1); /显示光标右移设置LCD_Comma nd(0x0c,1);

16、 /显示屏翻开,光标不显示不闪烁 4.3温度测量模块温度测量程序主要功能是读出数字温度传感器的温度值。要正确地读出温度值必须严格遵守单总线器件的命令序列,否那么单总线器件不会响应主机。单总线器件 的命令序列如图13所示。温度测量模块程序流程图如图14所示,DS18B20初始化程序如下,其它子程序详见附录DS18B20初始化*/图14温度测量程序流程图图13单总线命令序列void in it_18B20(void) uchar x=0;DQ=1;/DQ 复位Delay_us(4);延时DQ=0;/将DQ拉低Delay_us(250);精确延时大于 480usDQ=1;/拉高总线Delay_us(

17、40);x=DQ;Delay_us(20);4.4键盘扫描模块本次设计中使用了 4个按键,除了 1个复位键还有3个功能键,具体功能前 面已介绍。键盘扫描程序如下,其它子程序详见附录一,相关流程图如图 15所 示。键盘扫描void Key_sca n(v oid)uchar temp;P仁 Oxff;if(P1!=Oxff)Delay(20); /延时消抖if(P1!=0xff)temp=P1;switch(temp) case 0xfe:Key_set();break;/P1.0按下,功能选择case 0xfd:Key_i nc();break;/P1.1按下,数字加一case 0xfb:Ke

18、y_dec();break;图15键盘扫描程序流程图default:break;/P1.2按下,数字减一4.5其它子程序程序中使用的其它子程序,包括延时子程序、显示字符转换子程序等,具体 详见附录一。5. 仿真分析在本次的设计中,使用了 Proteus仿真软件进行了功能测试,具体仿真步骤 与分析如下。(1)按照原理图,从Proteus元件库中找出对应元件,搭建硬件仿真电路,将程序 烧写到单片机中,仿真图见附录三。(2)点击运行按钮开始仿真,初始上下限值为90C和10C,当前温度为25C,当前模式为N正常工作,绿灯亮,蜂鸣器不响,如图 16iPbrn * 谒lPl j!ku WAl rn su-

19、nr l-l鼻卄pg* 肝“A#中眸“曲砂ra fst 冲鼻ThFi tJJTT hfc w Ml 內 rgviri z、Hihr$0C LOWT IOC nodfreh D:25CRF1图16正常模式下仿真图也色邨H按下S1键,进入上限警戒值设置模式 H,此时按S2、S3键可以进行上限值图17上限值设定仿真图设定,同时温度正常显示,设置上限值 80C,如图17(4)再次按下S1键,进入下限警戒值设置模式 L,此时按S2、S3键可以进行下限值设定,同时温度正常显示,设置下限值20C,如图18J 1 - 1 J S-T.p d H “口气 X* T 夢需帮 :f;smDiLEEELLOW图18下

20、限值设定仿真图(5)再次按下S1键,返回正常模式N,调节DS18B20温度,测量温度随之改变,降低温度,超过下限值5C以下时,黄灯亮,蜂鸣器报警,如图 19。巧F 3 J JFTI d J mlr7 ! 宀 III id* PS rj iri图19下限报警仿真图(6)升高温度,超过上限值5C以上时,黄灯亮,蜂鸣器报警,如图20。图20上限报警仿真图(7)按下 S4 键,单片机复位。在本次仿真中, 可以看出, 本次设计的硬件电路和软件程序均能成功仿真出 来,设计要求的各种功能均已到达。6. 总结本次课程设计为期一周, 到此已全部结束。 回想一周中的设计过程, 我深深 感觉收获良多。 由于从前只是

21、在理论上学习了单片机以与各种其它知识, 即使是 实验也只是按照实验指导书进行操作, 并没有实际的独立设计一个系统, 因此在 刚开始接触本次课程设计时,有一点无从下手的感觉。后来通过查阅相关资料, 渐渐开始了解课程设计的一般过程, 开始明白一些元器件的相关作用与编程实现 方法,并在此期间通过不断深入的学习和锻炼, 开始渐渐能熟练运用和熟练编程 起来。通过本次计算机控制技术的课程设计, 我更深层次的把理论知识和实际设计 结合在一起,锻炼了我的综合运用所学的专业根底知识和解决实际工程问题的能 力。同时也提升了我查阅文献资料、设计手册、设计规 X 以与电脑制图等其他 知识能力水平。 对各种系统的适用条

22、件, 各种设备的选用标准, 各种管道的安装 方式,我都是随着设计的不断深入而逐渐熟悉并学会应用的。 并且,通过对整体 的掌控,对局部的取舍, 对细节的斟酌处理, 以与绘图的技巧都使我在设计领域 的能力得到了锻炼,得到了较丰富经验。 最后,通过这次的课程设计,我也深 刻地认识到, 只有将书本与具体的实践相结合, 才会有真正的收获, 才能稳固自 己的所学, 认识到自己的缺乏, 同时我们也要有一种积极学习的态度, 时代在进 步我们也要跟着时代前进, 要不断学习, 不断创新, 用自己的知识与行动来证明 自己的价值。本次课程设计以单片机为核心,介绍了用 DS18B20 温度传感器进行温度采 集,并将其传

23、输给AT89C51单片机进行处理再送到LCD显示屏显示。在此期间 可以通过按键进行上下限警戒值设置,通过 LED 和蜂鸣器进行指示和报警。本 文是采用模块化的方式进行表达, 对各模块的设计进行了比拟详细地阐述, 并着 重分析硬件搭建过程和系统软件的设计过程,使用单片机 C 语言进行程序没计。 本次设计的基于 DS18B20 的温度测量系统是一个分布式的温度测量系统,它可 以远程对温度实现测量和监控,广泛应用于电力工业、煤矿、森林、火灾、高层 建筑等场合。本设计应用性比拟强,可以应用在仓库温度、大棚温度、机房温度、水池等 的监控。当然,本次设计还存在一些缺乏,例如在本次设计中,由于时间较短, 警

24、戒值只是在199C之间,没有能够扩展到负温度和100C以上;在本次设计中 只是用了 4 个独立按键, 实现简单的上下限警戒值设定, 操作较麻烦, 如果能够 设计出多按键的矩阵式键盘, 那么能够对温度进行很方便的设定。 此外如果把本设 计方案扩展为多点温度控制, 加上上位机, 那么可以实现远程温度监控系统, 将具 有更大的应用价值。7. 参考文献1 潘新民,王燕芳 . 微型计算机控制技术 M. :电子工业, 20212 王迎旭 . 单片机原理与应用 M. :机械工业, 20213 康华光 . 电子技术根底 M. :高等教育, 20214 周正华,唐宁 RT1602C 与 FPGA 接口技术 J.

25、 中国科技信息, 2021(10) 廖琪梅,韩彬等基于DS18B20的温度测量仪J.国外电子元器件,2021(2)附录一:程序清单 #include #include #include #define uchar unsigned char #define uint unsigned int #define BUSY 0x80 void Delay(uint); void init_LCD(void); void LCD_Command(uchar,uchar); void LCD_Data(uchar); void ReadyLCD(void); void Display_char(ucha

26、r,uchar,uchar); void Display_str(uchar,uchar,uchar code *Data); void Change(void); void Display(void); void init_18B20(void); uchar Read_18B20(void); void Write_18B20(uchar); void Read_temp(void); void Delay_us(uchar i); void Key_scan(void); void Key_set(void); void Key_inc(void); void Key_dec(void)

27、; void Alarm(void);sbit LCD_RS=P2P;sbit LCD_RW=P2M;sbit LCD_EN=P2A2;sbit DQ=P1A7;sbit Normal=P2A4;sbit Alarm_H=P2A5;sbit Alarm_L=P2A6;sbit Alarm_BEEP=P2A7;uchar Set_flag=0;uchar Temp_mea,Temp_set1,Temp_set2;uchar Temp_high_1,Temp_high_2;uchar Temp_low_1,Temp_low_2;uchar Temp_true_1,Temp_true_2;exter

28、n uchar code str0=High: C Low: C; extern uchar code str1=Mode:Deg: C;extern uchar code str2= Hellow! ; extern uchar code str3=0123456789; extern uchar code mode=NHL;主程序/ 上限报警温度初值 90/ 下限报警温度初值 10/ 延时 500ms 启动void main(void)P1=0xff;P2|=0x70;P2&=0x7f;Temp_set1=90;Temp_set2=10;Delay(500);init_LCD();/LCD

29、 初始化init_18B20();/DS18B20 初始化Display_str(0,0,str2);/ 开机界面Display_str(0,1,str2);/ 开机界面Delay(2000);Display_str(0,0,str0);Display_str(0,1,str1);while(1)延时 kmsKey_scan();/ 扫描键盘Read_temp();/ 读取温度Change();Display();/ 显示Alarm();/ 指示灯与报警程序Delay(1000);void Delay(uint k)uint i,j;for(i=0;ik;i+)for(j=0;j60;j+)*

30、显示模块*LCD初始化void init_LCD(void)P0=0;Delay(15);LCD_Command(0x38,0);Delay(5);LCD_Command(0x38,0);Delay(5);LCD_Command(0x38,0);Delay(5);LCD_Command(0x38,1); /8 位数据传送, 2 行显示, 5*7 字形LCD_Command(0x08,1); / 关闭显示LCD_Command(0x01,1); / 清屏LCD_Command(0x06,1); / 显示光标右移设置LCD_Command(0x0c,1); / 显示屏翻开,光标不显示不闪烁写指令数

31、据到 LCD*/void LCD_Command(uchar LC,uchar BC) if(BC) ReadyLCD();P0=LC;LCD_RS=0; / 选中指令存放器LCD_RW=0; / 写模式LCD_EN=1;_nop_();_nop_();_nop_();LCD_EN=0;写显示数据到 LCD*/void LCD_Data(uchar LD)ReadyLCD();P0=LD;LCD_RS=1; / 选中数据存放器LCD_RW=0; / 写模式LCD_EN=1;_nop_();_nop_();_nop_();LCD_EN=0;检测LCD忙状态*/void ReadyLCD(void

32、)P0=0xff;LCD_EN=1;LCD_RS=0;LCD_RW=1;_nop_();while(P0&BUSY)LCD_EN=0;_nop_();_nop_();LCD_EN=1;_nop_(); _nop_();LCD_EN=0;显示个字符*/void Display_char(uchar X,uchar Y,uchar Data) Y&=0x01;X&=0x0f;if(Y) X|=0x40;X|=0x80;LCD_Command(X,0); LCD_Data(Data);显示一串字符 */void Display_str(uchar X,uchar Y,uchar code *Data) uchar List=0;Y&=0x01;X&=0x0f; while(X0;i-)DQ=0;_nop_();dat=1;DQ=1;Delay_us(1);if(DQ) dat|=0x80;Delay_us(10);return(dat);/*

温馨提示

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

评论

0/150

提交评论