2022年基于单片机温度控制系统设计的显示电路设计部分_课程设计任务书.docx
精品学习资源学 院同学姓名课程设计题目专 业班级学号基于单片机温度掌握系统设计- 显示电路设计实践教案要求与任务 :1)2)3)4)5)构成单片机温度掌握系统显示电路设计试验调试THFCS-1 现场总线掌握系统试验撰写试验报告工作方案与进度支配 :1) 第 1 2 天,查阅文献,构成单片机温度掌握系统2) 第 3 4 天,显示电路设计3) 第 5 6 天,试验调试4) 第 7 9 天, THFCS-1 现场总线掌握系统试验5) 第 10 天,撰写试验报告指导老师:专业负责人:学院教案副院长:201 年 月 日201年 月 日201年 月 日课程设计任务书摘 要欢迎下载精品学习资源本论文着重阐述了温度掌握系统地设计方法,以AT89C51 单片机作为主控核心,按键、数码管等较少地帮助硬件电路相结合,采纳模块设计,利用软件实现对温度进行掌握. 本系统具有体积小、硬件少、电路结构简洁、软件功能完善,掌握系统牢靠,性价比较高等优点 .论文主要论述了基于单片机地温度掌握系统地设计过程.主要工作如下:重点论证了系统方案地挑选及其实现方法;全文具体论述了系统地软、硬件电路,其中硬件部分重点介绍了单片机地基本结构和各引脚以及晶振电路、复位电路地工作原理,软件部分重点表达主程序和子程序地 C 语言实现;硬件、软件电路调试过程;全部源程序均采纳 C 语言编译,并在 Keil uVision2 软件里编译、调试;在 Proteus 环境下实现软、硬件电路仿真 .试验结果证明白设计方案地正确性与可行性,以此为理论基础,对我们设计彩灯电路具有很强地使用和参考价值 .关键词:温度掌握系统; AT89C51 单片机;模块设计目录欢迎下载精品学习资源1 绪论32 系统概述42.1 设计思路 -42.2 原理分析 -43. 系统软件设计53.1 软件设计主要思路53.2 显示程序流程图及其源代码64. 系统调试94.1 软件调试 -94.2 软件仿真结果及分析9终止语10附录11欢迎下载精品学习资源1 绪论在工业自动化高度发达地今日,对一些过程掌握要求很高.传统地度监控一般都采纳模拟电路设计 .其缺点是:转换速率低,实时性差.抗干扰才能弱,特殊是在高频电路中, 很简洁产生自激 .而采纳单片机掌握能很好补偿以上缺点.a) 精度高,实时性强,能准时发觉问题.b) 采纳数字电路,抗干扰才能强.单片微型运算机简称单片机,又称为微掌握器(MCU ),它地显现是运算机进展史上地一个重要里程碑,它以体积小、功能全、性价比高等诸多优点而独具特色.随着社会地进展、科技地进步,各种便利于生活地自动掌握系统开头进入了人们地生活,以单片机为核心地掌握系统就是其中之一.本温控系统主要以AT89C51 单片机作为主控核心,18B20 温度传感器和 MAX7219驱动芯片为辅以及按键、数码管等较少地其它帮助硬件电路相结合,采纳模块设计,利用软件实现对温度进行掌握.本系统具有体积小、硬件少、电路结构简洁、软件功能完善,掌握系统牢靠,性价比较高等优点.欢迎下载精品学习资源2 系统概述2.1 设计思路运用单片机 AT89C2051 对可编程数字温度传感器DS18B20 进行编程掌握,采集实时温度 .通过数码管显示该温度.并设置相应地默认工作温度,当实际温度小于默认工作温度,启动加热装置 .另外,通过一些按键,可以调剂工作温度,以便适合不同地场所需求.2.2 原理分析数码掌握信号管显示AT89C2051温度传感器温度值继电器按键欢迎下载精品学习资源图 2-2-1 温度监控器结构如图 1 所示,第一,由单片机送出温度传感器地初始化掌握信号,温度传感器进行复位操作 .接着发出读温度命令,温度传感器开头工作.并将采集到地温度信号以十六进制代 码形式通过AT89C2051 引脚送到单片机内部 .经过软件将温度信号送到MAX7219 ,并在数码管上显示 .同时,将采集地温度与设定默认温度比较,并通过AT89C2051 地 P1.4 端口掌握继电器是否工作 .此外,通过外部中断程序调剂默认设定温度.3. 系统软件设计3.1 软件设计主要思路本系统主要有四部分组成,即温度采集环节,显示环节,继电器掌握环节以及调剂环节.因此程序也主要由以上四部分组成.程序第一开外中断1,并设置相关参数,其次,测试数码管显示.然后进入一个死循环,即每个三秒用18B20 采集一次温度,然后用MAX7219驱动数码管显示采集温度地温度.与此同时,每次采集得到地温度都要与已设定温度进行比较,假如温度小于设定温度,那么接通继电器,是加热装置工作,否就不工作.为了保证调剂地灵敏度,故把调剂部分放到中断之中.当程序进入中断,那么就可以通过按键增加或减小设定地默认温度,即继电器工作地零界温度.由此完成了整个温度掌握系统地设计 .欢迎下载精品学习资源3.2 显示程序流程图及其源代码3.2.1 显示程序流程图本子程序主要通过 MAX7219 驱动数码管显示温度地 .第一猎取要现实地数据,判定数据是否大于零,假如大于 0,就 symbol=0 ;否就 symbol=1 ,并取反且在第一位数码管中显示负号 .然后,所得到地数据进行处理,并得到个位,十位及小数点后一位,将这些数据送开头猎取要显示数据该数据小于 0数据取反并在第一位显示负号N数据处理并在后三位显示终止入 MAX7219 中在后三位显示 .如图 5:Y图 3-2-1 显示程序流程图3.2.2 显示程序部分源代码欢迎下载精品学习资源/* 向 MAX7219写入一个字节数据*/void Sendcharuchar chuchar i,code1;_nop_ ;_nop_ ;_nop_ ;fori=0 ; i<8 ;i+code1=ch&0x80 ;ch=ch<<1 ;ifcode1DIN=1 ;CLK=0 ;CLK=1 ;elseDIN=0 ;CLK=0 ;CLK=1 ;/* 向 MAX7219写入一个字( 16 位) */欢迎下载精品学习资源void Sendworduchar addr,uchar numberLOAD=0 ;_nop_ ;_nop_ ;_nop_ ;Sendcharaddr;_nop_ ;_nop_ ;_nop_ ;Sendcharnumber;_nop_ ;_nop_ ;_nop_ ;LOAD=1 ;/*MAX7219初始化 */ void StartSendwordScanbit,Scannum ;SendwordDecode,Demode ;SendwordLight,Lightgrade ;SendwordLowpower,Norpw ;具体程序见附录欢迎下载精品学习资源4. 系统调试4.1 软件调试4.1.1 单片机 C 语言单片机 C 语言程序设计不同于通用运算机应用程序设计,它必需针对具体地微掌握器及外围电路来完成,为了便于学习单片机应用程序设计和系统开发,很多公司退出了单 片机试验箱、仿真器和开发板等,这些硬件设备可用于验证单片机程序,开发和调试单片机应用系统 .开发 8051 单片机系统时,使用C 语言会使开发周期大为缩短,开发效率大幅提高,程序可读性好且易于移植,所以使用C 语言开发单片机系统已经成为必定趋势17.C 语言在单片机系统开发中地优势: 用 C 语言编写地程序可读性强; 在不明白单片机指令系统而仅熟识8051 单片机储备结构时就可以开发单片机程序; 寄存器安排和不同储备器寻址及数据类型等细节可由编译器治理; 程序可分为多个不同地函数,这使程序设计结构化; 函数库丰富,数据处理才能强; 程序编写及调试时间大大缩短,开发效率远高于汇编语言; C 语言具有模块化编程技术,已编写好地通用程序模块很简洁植入新程序,这进一步提高了程序开发效率.4.1.2 Keil uVision4C51 单片机支持 HEX文件,我采纳地编译器是KeiluVision2 软件,该软件是美国Keil Software公司开发地,关于8051 系列 MCU 地开发工具,是目前世界上最好地51 单片机开发工具之一 .软件本身支持数百种51 系列单片机芯片,可以用来编译C 源码,汇编源程序以及两者地混合编程代码,连接重定位目标文件和库文件,创建HEX 文件,调试目标程序等,是一种集成化地文件治理编译环境.4.2 软件仿真结果及分析完成单片机系统仿真电路图设计后,即可开头仿真运行单片机绑定地程序文件,双击单片机,打开单片机属性窗口(也可以先在单片机上单击右键,再单击左键,或者选中单片机后按下( Ctrl+E 组合键),在 “Program Files项”中挑选对应地 HEX 文件 .在仿真电路和程序都没有问题时,直接单击Proteus 主窗口下地 “运行 ”( Play)按钮,即可仿真运行单片机系统,在运行过程中假如期望观看内存、24C0X 、温度寄存器、欢迎下载精品学习资源时钟芯片等内部数据可在运行时单击“单步 ”( Step)或 “暂停 ”( Pause)按钮,然后再 “调试”( Debug)菜单中打开相应设备.假如要观看仿真电路中某些位置地电压或波形等,可向电路中添加相应地虚拟仪器,例如,电压表、示波器等.终止语通过本次地设计,使我明白了51 系列单片机地基本工作原理.以及对其编程地技巧和留意事项等 .对自动掌握原理有了一个新地熟识,学到很多书本上没有地学问.特殊是实际动手方面地才能 .在此过程中也遇到很多地困难,经过自己地摸索,翻阅资料及老师耐心地讲解问题都 得到明白决 .并且把这些经受作为珍贵地体会记录了下来.以便以后查阅 .使我学以至用,把书本与实际联系起来.为我们今后地进展打下了坚实地基础.欢迎下载精品学习资源附录一 基于单片机地温控系统完整程序代码/规定默认设定温度为T0=50 度, K0 键为开头设置键, K1 键为加一度键, K2 键为减一度键#include<reg51.h>/MAX7219端口定义#include<intrins.h>#define uchar unsigned char #define uint unsigned intsbit DIN=P10 ;sbit CLK=P11 ;sbit LOAD=P12 ;sbit JIDIANQI=P27;/ 继电器接口sbit K0=P32 ;sbit K1=P15 ;sbit K2=P16 ;欢迎下载精品学习资源sbit K3=P17 ;sbit DQ =P33 ; /DS18B20 定义单片机数据引脚#define Noop 0x00 #define reg0 0x01 #define reg1 0x02 #define reg2 0x03 #define reg3 0x04 #define Decode0x09 #define Light0x0a #define Scanbit0x0b #define Lowpower0x0c #define DisplayTest 0x0f #define Lowpw 0x00 #define Norpw 0x01 #define Scannum 0x03 #define Demode 0xff #define Lightgrade 0x0a #define Teststart 0x01 #define Testend0x00uchar DisBuffer4=0,0,0,0;unsigned int temperature ;uchar symbol ;unsigned int T_MOREN=0x28;/ 规定默认设定温度为T0=40 度unsigned int T_time ;unsigned char key_s, key_v ;void delayunsigned int i / 延时程序whilei- ;Init_DS18B20void /DS18B20复位初始化unsigned char x=0 ;DQ = 1 ;delay8 ;DQ = 0 ;delay80 ;DQ = 1 ;delay14 ;x=DQ ;delay20 ;欢迎下载精品学习资源ReadOneCharvoid / 读 DS18B20 地程序unsigned char i=0 ;unsigned char dat = 0;for i=8 ;i>0 ; i-DQ = 0 ;dat>>=1 ;DQ = 1 ;ifDQ dat|=0x80;delay4 ;returndat ;WriteOneCharunsigned char dat / 写 DS18B20 地子程序unsigned char i=0 ;for i=8 ; i>0 ; i-DQ = 0 ;DQ = dat&0x01 ;delay5 ;DQ = 1 ;dat>>=1 ;ReadTemperaturevoid / 从 DS18B20 中读出两个字节地温度数据unsigned char a=0;unsigned char b=0;unsigned int t=0 ;Init_DS18B20 ;WriteOneChar0xCC ;WriteOneChar0x44 ;Init_DS18B20 ;WriteOneChar0xCC ;WriteOneChar0xBE ;a=ReadOneChar;b=ReadOneChar; t=b;t<<=8 ; / 进行精度转换t=t|a;ift<0x0fffsymbol=0;欢迎下载精品学习资源elset=t+1 ;symbol=1 ;欢迎下载精品学习资源temperature=t*0.625 ;returntemperature ;/* 向 MAX7219写入一个字节数据*/void Sendcharuchar chuchar i,code1;_nop_ ;fori=0 ; i<8 ;i+code1=ch&0x80 ;ch=ch<<1 ;ifcode1欢迎下载精品学习资源elseDIN=1 ;CLK=0 ;CLK=1 ;DIN=0 ;CLK=0 ;CLK=1 ;欢迎下载精品学习资源/* 向 MAX7219写入一个字( 16 位) */ void Sendworduchar addr,uchar numberLOAD=0 ;_nop_ ;Sendcharaddr;_nop_ ;Sendcharnumber;_nop_ ;欢迎下载精品学习资源LOAD=1 ;/*MAX7219初始化 */ void StartSendwordScanbit,Scannum ;SendwordDecode,Demode ;SendwordLight,Lightgrade ;SendwordLowpower,Norpw ;/温度显示void text_start/第一次使用数码管测试Start;SendwordDisplayTest,Teststart ;delay3000000 ;SendwordDisplayTest,Testend ;temperature_viewuint temperature_xDisBuffer1=temperature_x/100;DisBuffer2=temperature_x%100/10;DisBuffer3=temperature_x%10 ;ifsymbol=0DisBuffer0=0x0f;else DisBuffer0=0x0a ;ifDisBuffer1=0x00DisBuffer0=0x0f;ifDisBuffer1=0x00DisBuffer1=0x0f;Sendwordreg0,DisBuffer0 ;Sendwordreg1,DisBuffer1 ;Sendwordreg2,DisBuffer2 ;Sendwordreg3,DisBuffer3 ;void delaymsuint ms/延时子程序 ,单位为 msunsigned char i;whilems-欢迎下载精品学习资源fori = 0 ; i < 120 ; i+ ;bit scan_keykey_s = 0x00 ;key_s |= K3 ;key_s <<= 1 ;key_s |= K2 ;key_s <<= 1 ;key_s |= K1 ;returnkey_s key_v ;/INT0 中断服务程序int0 interrupt 0 using 0temperature_viewT_MOREN ;key_v = 0x07 ;for ; ifscan_keydelayms10 ;ifscan_keykey_v = key_s ;ifkey_v & 0x01 = 0/ K1 加一T_MOREN=1+T_MOREN;temperature_viewT_MOREN ;else ifkey_v & 0x02 = 0/ K2 减一T_MOREN=T_MOREN-1;temperature_viewT_MOREN ;else ifkey_v & 0x04 = 0/K3 退出goto EXIT ;欢迎下载精品学习资源EXIT:temperature_viewT_time;void mainvoidEA=1 ; / 开中断总开关EX0=1 ; / 答应 INT0 中断IT0=1 ; / 下降沿产生中断/延时 3 秒,重新测定一次温度,并用数码管显示,同时掌握继电器地开关text_start;/第一次使用数码管测试欢迎下载精品学习资源while1导通T_time=ReadTemperature ; / 温度值传给 T_time temperature_viewT_time ;/显示温度ifT_time<T_MOREN/ 判定继电器是否工作,当温度小于T0 时,继电器JIDIANQI=1 ;elseJIDIANQI=0 ;delayms30 ; / 延时三秒,即每三秒扫描一次,显示一次欢迎下载精品学习资源二 基于单片机地温控系统仿真图如下图为基于单片机地温控系统部分仿真图欢迎下载精品学习资源图基于单片机地温控系统仿真图欢迎下载