基于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。基于51单片机智能温控电扇设计
相关推荐
调时功能 、 闹铃功能。 其精确度完全可以满足日常生活显示时间的需要;调时功能,方便快捷;校时功能保证了时钟准确和可靠性。 硬件设施合乎要求,软件设计可以配合硬件实现要求的功能。 但是由于时间比较短,前期设计出现部分不足:如位选闪烁功能不能实现、闹钟的开启与关闭、间断蜂鸣声等。 这些只是软件设计时相应功能部分还不完善造成。 不过经仔细思考和程序的完善,最终将软件设计改进
CH0引脚的信号, LTC1865采样的范围为 Vref到 Vcc,其中 Vref的电压由引脚 Vref决定,可以通过硬件配置为 1V~Vcc。 表 32 通道配置字选择 引脚功能: CONV:转换开始输入端。 CH0: 模拟输入通道 0。 CH1: 模拟输入通道 1。 GND:接 地 端。 SDI:串行 数据输入。 SDO:串行 数据输出。 SCK 串行时钟输入端。 VCC: 电源输入 端。
计是基于 Keil C和 Proteus软件联合调试实现的。 首先在 Keil C 软件环境下写入源程序然后建立工程文件编译运行无误后使其生成相应的 .HEX 文件,接着在 Proteus 软件环境中将生成的 .HEX 文件加载进入 51单片机中 ,在电路连接无误的情况下进行调试运行即可 【 6】。 软件工具简介 Proteus 简介 英国 Labcenter 公司推出的 Proteus
43 DS1302 管脚图 如果在传送过程中置 RST 为低电平,则会终止本次数据传送,并且 I/O 引脚变为高阻态。 上电运行时,在 VCC = 之前, RST 脚必须保持低电平。 只有在SCLK 为低电平时,才能将 RST 置为高电平。 DS1302 的管脚图如图 43 所示,表42 为各引脚的功能。 表 42 DS1302 引脚功能表 引脚号 引脚名称 功能 1 VCC2 主电源 2, 3
灵活使用指令运算、存放数据,中断响应速度快。 AVR 像 8051 一样,有多个固定中断向量入口地址,可快速响应中断。 高级 C 语言编程效率高。 从高级语言 C 代码完成同一任务实例来比较, 8 MHz AVR 单片机的速度相当于 224 MHz 的 80C51 单片机, AVR 比 80C51 快 28 倍。 AVR 是低功耗单片机,具有休眠省电功能 (Power Down)及闲置
DHJKFH KDSJH JKDHF JKDS HKJ HGFDSJHF JHFJK HFKSD JKFJDSKJF DSJF。 DS 第三章 系统硬件电路设计 传感器的定义:能感受规定的被测量,并按照一定规律转换成可用输出信号的器件或装置。 通常传感器由敏感元件和转换元件组成。 其中敏感元件指传感器中能直接感受被测量的部分,转换部分指传感器中能将敏感元件输出量转换为适于传输和测量的电信号部分。