基于单片机的智能温度检测器设计毕业论文(编辑修改稿)内容摘要:

SS(20 脚):接电源地端。 本设计使用市电 220V 交流作为输入,通过一个变压器降压后再经过整流电桥整流变为直流,通过电容滤波等处理,最后经过降压芯片 7805 稳压到 5V,然后将输出的5V 接入到单片机端供电。 变压器是电源进行电源转换的,有升压变压器,也有降压变压 器,我们使用的是降压变压器,需要将市电 220V 降到 50V 左右,其中我们需要选择好变压器,变压器有前圈和后圈,其计算公式是 N1/N2=V1/V2,因此我们就可以计算出后半圈的电压输出大小。 如图: 王亮亮:基于单片机的智能温度检测器的设计 8 图 29 变压器 将变压器降压后的交流电我们还需要对其整流,使其交流变为直流,我们可以通过单相桥式整流电路,通过整流电路,我们就可以得到一个直流波动的电压。 正电压经过D3 进来然后经过 D4 出去,负电压经过 D5 进来,经过 D2 出去,因此也就将交流变化为直流。 图 210 单相桥式整流电路 输出电压经过整流电路整流为 直流后,其电压还是波动的,因此我们需要将其通过一个电源滤波电路滤波,我们使用的滤波电路时由电解电容及无极性电容组成,将整流电压经过一个 470uf 的电解电容,就可以使其波动滤除掉,因为我们需要得到一个 5V电压,所以我们还需要对其进行稳压处理,我们使用的稳压芯片是 7805,将其滤波后的电压通过 7805 输入端,输出端就可以得到一个 5V 电压,为了安全起见,我们还需要将其稳压后的电压进行滤波,使其稳压通过一个 470u 的电解电容和一个 1nf的无极性电容,最终我们就可以得到一个标准的 5V 直流电压了,将其电压供给整个系统作 为电源。 滤波电路如下: 铜陵学院毕业论文(设计) 9 图 211 滤波电路 总电源电路如下: 图 212 电源电路 LCD 显示电路 此设计中采用的是字符型 LCD1602,它只能显示数字及字符,可以显示 2 行,每一行可以显示 16 个字符,通过控制 LCD 的数据命令 RS 管脚和读写 RW 管脚还有使能E 管脚。 即可实现对 LCD1602 的读写了。 我们将 LCD1602 的数据脚通过单片机 P0 口控制,数据命令及使能管脚通过单片机的 P25 P26 P27 口控制,通过按照 LCD1602 通讯时序控制,我们即可将要显示的数据通过 P0 口发送到 LCD 上实 时显示。 具体电路如下: 王亮亮:基于单片机的智能温度检测器的设计 10 图 213 LCD 显示电路 按键电路 在本设计中我们使用了 4 个按键接到单片机管脚 P32,P33, P34,P35 上,另一端共地,如果有按键按下去了,单片机的对应管脚就会被拉为低电平,因此可以使用此方法来判断,按键是否按下,然后做出相应的动作。 其中我们将 2 个按键接在了单片机的 P32和 P33 管脚上,此管脚可以设定为单片机外部中断 0 和 1 模式,即当有按键按下时进入中断函数进行处理,处理结束后可以返回主函数继续运行。 按键 K1 是对温度上下限值设定的切换, K2 K3 是对温度数据的 加减, K4 是设定确认。 具体电路如下: 图 214 按键电路 铜陵学院毕业论文(设计) 11 声光报警电路 此设计中我们使用的是无源蜂鸣器,即只有触发一定频率的脉冲才能使蜂鸣器发声。 我们将单片机的 P37 管脚接在 PNP 型三极管上,当单片机 P37 口输出一定频率的脉冲即可触发蜂鸣器发声了。 同时设计中还使用了一个发光二极管进行温度报警指示,将其阳极接在单片机的 P31 管脚,单片机 P31 输出一个高电平的时候 LED 发光,反之熄灭。 具体电路如下: 图 215 声光报警电路 测温电路 此设计中我们使用数字温度传感器 DS18B20 的数据口接到单片机的 P36 管脚,通过此管脚模拟单总线时序与 DS18B20 进行通信。 管脚上拉一个电阻,使其通信更加稳定运行,具体电路如下: 图 216 测温电路 王亮亮:基于单片机的智能温度检测器的设计 12 用 Proteus仿真软件绘制的完整电路图如下: 图 217 总电路 第 3 章 软件设计 现在开发都是追求快速,尽最大的缩短开发周期,以前的汇编语言现在已经很少使用了,现在开发使用最多的是高级语言,然而 C 语言又是高级语言中的佼佼者。 本设计中我们使用的是 C 语言开发。 硬件电路中使用到了 LCD1602,如果要对 LCD 进行显示,首先就要对 LCD 进行初始化操作,我们参考 LCD1602 数据手册的初始化过程可知:首先进行一个短暂延时,然后写指令 38H,延时一段时间,然后写入指令 0CH,即显示开和光标设置,延时一段时间然后写入指令 06H 即显示光标功能设置,最后写入指令 01H,即清屏。 因此我们就对 LCD 进行初始化完成,就可以在 LCD 上面进行显示操作了。 具体程序如下: 铜陵学院毕业论文(设计) 13 void init() //LCD 初始化函数 { delay(1000)。 wrc(0x38)。 wrc(0x38)。 wrc(0x38)。 wrc(0x06)。 wrc(0x0c)。 wrc(0x01)。 } 根据上面 LCD 初始化过程的介绍,我们就可以将其过程通过流程图的形式展现出来, LCD1602 初始化程序流程图如下: 硬件设计中我们使用单片机的 P0 口控制 LCD1602 的数据口 D0D7,单片机的P25,P26,P27 分别控制单片机的 RS,RW, E。 因此如果我们要对 LCD 进行操作的话我们首先要明确 LCD1602 的读写函数的编写,我们参考 LCD1602 读写时序,如下: 延时 10ms 写入功能设定值 38H 写入模式功能设置,光标开启, 06H 写入开启开关控制命令 0CH 写入清屏指令 01H 结束 开始 王亮亮:基于单片机的智能温度检测器的设计 14 图 31 LCD1602 读写时序图 在编写写命令函数的时候,首先要将 RS=0,此是选择命令,在把写打开 RW=0,最后是触发一个低脉冲的使能信号 E,然后将命令发送给 P2 即可。 在编写写数据函数的时候和上面一样,只是将 RS=1 改变即可,其他的完全一样。 具体程序如下: void wrc(uint8 c) //LCD 写命令函数 { delay(1000)。 rs=0。 rw=0。 e=0。 P0=c。 e=1。 delay(10)。 e=0。 } void wrd(uint8 dat) //LCD 写数据函数 { delay(1000)。 rs=1。 rw=0。 e=0。 P0=dat。 e=1。 delay(10)。 e=0。 铜陵学院毕业论文(设计) 15 rs=0。 } 硬件中使用到了按键来设定温度的上下限值,由于按键 K1 和 K4 接在单片机的外部中断 0 和外部中断 1 管脚上,因此我们需要对外部中断 0 和 1 进行初始化及中断函数才能使用,具体初始化函数如下: void int0init() //外部中断 0 初始化 { EA=1。 EX0=1。 IT0=1。 //选择下降沿触发 } void int1init() //外部中断 1 初始化 { EA=1。 EX1=1。 IT1=1。 //选择下降沿触发 } void int0() interrupt 0 { delay(1000)。 //消抖处理 mode++。 sheding=0。 if(mode==3) { mode=1。 } } void int1() interrupt 2 { delay(1000)。 //消抖处理 mode=0。 sheding=1。 } 还有 2 个按键接在了单片机的 P34 和 P35 管脚上 ,我们知道按键按下后会有一个抖动的问题,因此我们需要在软件内进行消抖处理,一般是延时 10ms 进行滤波,具体操作如下: delay(1000)。 //消抖处理 按键处理后我们还需要对按键是否松开来判断,通过一个 while 来判别。 王亮亮:基于单片机的智能温度检测器的设计 16 硬件还使用到了 DS18B20 进行温度的检测,由于其是单总线通信,因此我们需要严格按照 DS18B20 时序图来进行编写。 初始化时序如下: 图 32 DS18B20 初始化时序图 针对初始化时序可以编写如下函数: void ds18b20init() //18b20 的初始化 { dq=1。 delay(1)。 dq=0。 delay(80)。 dq=1。 delay(5)。 dq=0。 delay(20)。 dq=1。 delay(35)。 } DS18B20 写时序如下: 图 32 DS18B20 写时序图 铜陵学院毕业论文(设计) 17 DS18B20 读时序: 图 32 DS18B20 读时序图 因此可以编写温度传感器读写函数: void ds18b20wr(u8 dat) //18b20 写数据 { u8 i。 for(i=0。 i8。 i++) { dq=0。 dq=datamp。 0x01。 dat=1。 delay(8)。 //在时序上只有这一块对时序要求最准确,他的时间必须大于 15us dq=1。 delay(1)。 } } u8 ds18b20rd() //18b20 读数据 { u8 value,i。 for(i=0。 i8。 i++) { dq=0。 value=1。 dq=1。 if(dq==1)value|=0x80。 delay(8)。 //在这一块也对时间要求特别准确,整段程序必须大于 60us } return value。 } 最后就是一些数据的处理及显示函数,具体可以参考附录。 王亮亮:基于单片机的智能温度检测器的设计 18 按照上面的程序方案即可画出如下流程图: 图 33 软件设计流程图 铜陵学院毕业论文(设计) 19 第 4 章 程序仿真调试 在 KEIL 中我们编写好程序,通过 KEIL 中的编译器编译,使程序确保语法是无错误的,在没有错误的情况下我们在使用 KEIL 中的软件仿真一步步仿真,通过查看相关寄存器的值确认程序无误。 或者通过编译生成的 HEX 文件烧写到仿真软件中,看具体的效果,直到效果无误即可。 在编 写程序我们使用的是 KEIL C51,在期内可以软件调试或者也可以使用仿真芯片来仿真测试。 KEIL C51简介 KEIL C51 是由 ARM 公司开发的,针对 51 单片机开发设计,内部具体编译调试软件仿真等等一系列功。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。