基于51单片机智能温控电扇设计内容摘要:

使能端,当 E端由高电平跳变成低电平时,液晶模块执行命令。 第 7~ 14脚: D0~ D7为 8位双向数据线。 第 15脚:背光源正极。 第 16脚:背光源负极。 图 6 对射式光电开关 光电开关 E18的技术参 数 : DSJKFHJKDH FJDHJKFH KDSJH JKDHF JKDS HKJ HGFDSJHF JHFJK HFKSD JKFJDSKJF DSJF。 DS 输出电流 DC/SCR/继电器 Control output: 100mA/5V供电 消耗电流 DC25mA 响应时间 2ms 指向角:≤ 15176。 ,有效距离 350CM可调 检测物体:透明或不透明体 工作环境温度: 25℃ ~+55℃ 标准检测物体:太阳光 10000LX以下 白炽灯 3000LX以下 外壳材料:塑料 电气特性: U:5VDC I:100mA Sn:350CM 各部分电路设计 开关复位与晶振电路 单片机系统中, 有两个非常重要的电路,一个是开关复位电路,用来对单片机本身和其外部扩展 I/O接口电路进行复位,还有一个是晶振电路,用于产生谐振,使单片机得以工作。 电路图如图 7所示: 图 7 晶振电路与复位电路 单片机的 XTAL1和 XTAL2用来外界石英晶体和微调电容,连接单片机内 OSC的定时反馈电路。 如图所示,当按下按键开关是,系统复位一次。 其中电容 C C2 为 20pF, C3为 10uF,电阻 R1 为 10k,晶振为12MHz。 独立控制键盘电路 本设计还有两个独立按键,分别连接单片机的 ,如图 8所示: DSJKFHJKDH FJDHJKFH KDSJH JKDHF JKDS HKJ HGFDSJHF JHFJK HFKSD JKFJDSKJF DSJF。 DS 图 8 按键电路 独立按键 S1和 S2一端与单片机相连,另一端接地,当按下时, P3口读取低电平有效。 系统上电进入工作后,扫描按键子程序,此时可以设定温度。 其中 S1 为加按键, S2 为减按键,每按下一次后,都会使对应的预设值加一或者减一。 LCD显示电路 本设计采用的是 LCD1602A 作为显示模块,它与单片机的连接如图 9 所示。 其中第一行显示温度与红外探测结果,温度显示到小数点后 2位。 第二行显示设定温度与风扇的风力等级。 图 9 LCD 连接电路 红外探测电路 红外光电开关一共有三个 接口,一个接 +5V,一个接地,还有一端与单片机相连,输出高电平或者低电平信号,在电路中直接用按键开关代替了,就是按键电路中的开关 S3。 DSJKFHJKDH FJDHJKFH KDSJH JKDHF JKDS HKJ HGFDSJHF JHFJK HFKSD JKFJDSKJF DSJF。 DS 温度采集电路 DS18B20 数字温度传感器通过其内部计数时钟周期来的作用,实现了特有的温度测量功能。 低温系数振荡器输出的时钟信号通过由高温度系数振荡器产生的门周期而被计数,计数器预先置有与 55℃相对应的一个基权值。 如果计数器计数到 0时,高温度系数振荡周期还未结束,则表示测量的温度值高于 55℃,被预置在 55℃的温度寄存器中的值就增加 1℃,然后这个过程不断重复 ,直到高温度系数振荡周期结束为止。 此时温度寄存器中的值即为被测温度值,这个值以 16 位二进制形式存放在存储器中,通过主机发送存储器读命令可读出此温度值,读取时低位在前,高位在后,依次进行。 由于温度振荡器的抛物线特性的影响,其内用斜率累加器进行补偿。 DS18B20 由于直接可以输出数字信号,所以可以直接输出给单片机,但是需要在输出口上接一个上拉电阻来确保工作,连接图如图 10 所示: 图 10 DS18B20 连接电路 风扇驱动电路 本设计采用单片机模拟 PWM波的方式通过 I/O口输出 TTL信号,再通过一个 电机驱动模块 L298N来驱动 12V直流无刷电机工作,从而实现电扇转速的调节。 红外探测控制电机开关,键盘改变设置的温度,然后和预设的温度进行比较,通过软件判断后由单片机的 口输出脉冲信号,经由 L298N 驱动风扇直流电机电路,实现电机的启动和转速的改变。 当环境温度改变时,电机的转速会按照设定的程序相对进行改变,温度升高转速变快,温度降低,转速变慢,温度过低时自动停止,无人状态下也会自动停止。 当有人出现后,并且温度高于预设温度,电机重新开始工作。 如图 12所示: 图 11 L298N 驱动电路 DSJKFHJKDH FJDHJKFH KDSJH JKDHF JKDS HKJ HGFDSJHF JHFJK HFKSD JKFJDSKJF DSJF。 DS 图 12 直流电机连接电路 4 软件设计 软件编写有 C语言和汇编语言两种,这两种语言我都有所了解,两种语言各有特点。 C 语言具有编写简单,容易上手的特点,而且看起来条理清晰,便于修改,能够快速准确的找到错误并进行改正。 相对于汇编语言,作为一种低级的机器语言,读程序相对繁琐,但程序写好后意思明了,效率也要高于 C语言编写的程序,具有很好的开发功能。 结合自身实际,我还是选择了 C语言,容易上手,可以更好的调试与编译程序。 主程序流程图 图 13 主程序流程图 主程序如下: 显示设定温度 程序初始化 调用键盘扫描函数 显示温度 读取预设温度值 与预设温度进行比较 读取 DS18B20 温度值 主程序开始 调用电机控制函数 判断是否有人 显示有人 /无人 显示风速等级 有人 无人 DSJKFHJKDH FJDHJKFH KDSJH JKDHF JKDS HKJ HGFDSJHF JHFJK HFKSD JKFJDSKJF DSJF。 DS void main(void) { //初始化 uint ltemp。 //初始化温度 dianji=0。 //初始化电机 int1=0。 int2=0。 init()。 //初始化液晶显示屏 read_temp()。 //读取测温子程序,读取温度数值 delay(1000)。 //延时 while(1) //循环开始 { delay(2)。 ltemp=read_temp()。 //温度赋值 write_(0x80+2)。 //将温度显示到液晶屏 write_data(0x30+ltemp%10000/1000)。 write_data(0x30+ltemp%1000/100)。 write_data(0x2e)。 write_data(0x30+ltemp%100/10)。 write_data(0x30+ltemp%10)。 write_data(0xdf)。 keyscan()。 //读取键盘子程序 delay(2)。 write_(0x80+0x40+4)。 //将设定温度显示到液晶屏 write_data(0x30+set%100/10)。 write_data(0x30+set%10)。 write_data(0xdf)。 deal(ltemp/100)。 //运行温度判断子程序 dianjik()。 //运行电 机控制子程序 write_(0x80+0x40+15)。 //将风扇转速显示到液晶屏 write_data(0x30+h)。 write_(0x80+15)。 //将红外探测结果显示到液晶屏 write_data(0x30+r)。 } DSJKFHJKDH FJDHJKFH KDSJH JKDHF JKDS HKJ HGFDSJHF JHFJK HFKSD JKFJDSKJF DSJF。 DS } 液晶显示子程序 液晶 LCD1602的子程序要按照说明上的时序图来完成。 要想让 LCD显示的话,首先要对 LCD进行初始化。 在完成 LCD 的初始化后,还需要定义字符的位置,并且定 义写数据的函数。 其第一行的地址是 40H~4FH,第二行的地址是从 80H~ 8FH,然后才能根据要显示字符的 ASCⅡ码对该字符进行显示。 其流程图 14所示: 图 14 液晶显示程序流程图 子程序如下: //*******初始化函数 *************** void init(void) { uint i。 E=0。 RW=0。 RS=0。 delay(10)。 //延时 10ms write_(0x01)。 //清屏 delay(5)。 write_(0x38)。 //设显示模式 delay(5)。 write_(0x0c)。 //开显示不显光标 光标不闪 delay(5)。 write_(0x06)。 //地址自动加一 光标自动加一 delay(5)。 write_(0x80)。 for(i=0。 i16。 i++) write_data(table2[i])。 write_(0x80+0x40)。 for(i=0。 i16。 i++) write_data(table1[i])。 初始化函数 写指令函数(位置) 写数据函数(数字和字符) DSJKFHJKDH FJDHJKFH KDSJH JKDHF JKDS HKJ HGFDSJHF JHFJK HFKSD JKFJDSKJF DSJF。 DS } //********写指令函数 ************ void write_(uchar mand) { RS=0。 //指令 RW=0。 //写入 P0=mand。 delay(5)。 E=1。 //允许 delay(10)。 E=0。 } //********写数据函数 ************* void write_data(uchar dat) { RS=1。 //数据 P0=dat。 delay(5)。 E=1。 //允许 delay(10)。 E=0。 } DS18B20 温度传感器子程序 温度读取程序 DS18B20温度读取程序负责把 DS18B20测得的外界数据经过 AD转化为数字,然后将数据存入寄存器中,供温度处理程序进行下一步操作。 其流程图 15所示: DSJKFHJKDH FJDHJKFH KDSJH JKDHF JKDS HKJ HGFDSJHF JHF。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。