没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论














基于基于PROTUES与单片机的空调遥控器的实现与单片机的空调遥控器的实现-课程设计课程设计
空调遥控器可以用来庙宇空调机的控制温度(室内温度)、工作状态(常态、除湿、通 风)、风扇风速(强、
弱、中)以及定时时间(空调工作多少小时自动开机或延时多少小时自动开机)。使用者在遥控器上庙宇预期
的空调机工作状态、控制温度及 延时时间后,这些参数即送至空调机,空调机按要求开始工作。
该遥控器的要求如下:
(1) 数字显示器:第一组显示时间,发送前指示设定的延时时间:0——9 h,发送后指示剩余的延时时间;第二组显示控制
温度15——35℃。
(2) 工作状态指示器3组:第一组指示设定的工作状态:常态、除湿、通风;第二组指示延时开机、延时停机、取消等三种
延时要求;第三组指示空调机的三种工作速度:慢速、中速、高速。
(3)红外发射管,发射的调制频率是45 KHz。
(4)3节5号电供电。
(5)面板示意图见图。
设计以AT89C51为核心的遥控器电路,并编写相关的系统软件(汇编、C51程序均可)。
设计思路:
数字显示器使用LCD1602显示时间和温度值,其中时间的切换利用AT89C51内部自带的定时器0,定时初值为3cb0,定时器
工作模式为’01’16位定时器,工作状态利用LED灯的亮灭来指示,其中LED亮代表相对应的工作模式被选中,各种工作状态的
切换使用8个独立按键来实现,分别位‘工作状态设定键’、‘延时状态设定键’、‘风速选定键’、‘温度+键’、‘温度-键’、‘延时时间
位选定键’、‘延时时间设置键’、‘发送键’;按下‘发送键’后信息的发送使用串行口的方式发送给上位机并显现出来,当延时时间到
启动空调。
具体实现:
经分析将该设计划分为如下4个模块:按键模块,LED状态显示模块,LCD1602显示模块,双机串口通信模块
按键模块:
仿真原理图:

详细描述:8个按键的功能如下表:
按键
功能
K1
工作状态设定键(常态、除湿、通风)
K2
延时状态设定键(延时开、延时关、取消)
K3
风速选定键(慢、中、快)
K4
温度设定键(增加+)
K5
温度设定键(减少-)
K6
延时时间位选定键(XXXXXX)
K7
延时时间设置键(默认为循环增加)
K8
发送键
当K1按下时,保持P0高5位状态,按下第一次最后一位置0,倒数第二、三位置1按下第二次时到数第二位置0,倒数第一、三
位置1,按下第三次时倒数第三位置0,倒数第一、二位置1,依次循环,代码实现:P0=(states1[i]&(P0|0x07));
当K2按下时,保持P0倒数第1、2、3位和正数第1、2、3状态按下第一次时倒数第一位亮表示延时开,按下第二次时倒数第五
位亮表示延时关,按下第三次时倒数第3、4位皆灭表示取消延时,依次循环,代码实现: P0=(states2[j]&(P0|0x18));
当K3按下时,保持P0低5位不变,按下最高两位置1,第三位置0,表示慢速,按下第二次时第二位置0,第一、三位置1,表
示中速,按下第三次时第一位置0,第一、二位置1,依次循环,代码实现:P0=(states3[k]&(P0|0xe0));
LED状态显示模块:

仿真原理图:
详细描述:8个按键的功能如下表:
LED
状态指示
D1
正常
D2
除湿
D3
通风
D4
延时开(如果D4/D5两灯全灭则取消延时)
D5
延时关
D6
慢
D7
中
D8
高
LCD1602显示模块:
仿真原理图:

详细描述:LCD1602一共可以显示16x2个字符,其中数据线为8位分别接AT89C51的P2端口的8个管脚,控制线为RS、
RW、E分别接P3.3,P3.4,P3.5管脚,仿真电路中排阻是必要的它的功能是电阻作为有功原件串联在电路中能消除振荡,目
的是得到更好的EMC性能。
主要子函数包括:(详细代码见附录源程序LCD部分)
void initLCM( void); //LCD初始化子程序
void DisplayListChar(unsigned char X,unsigned char Y, unsigned char *DData); //显示指定坐标的一串字符子函数
void DisplayOneChar(uchar X,uchar Y,uchar DData);//显示单个字符
双机串口通信功能:
仿真原理图:
详细描述:
利用串口查询的方式实现两台单片机之间通信的功能:单片机1(模拟遥控器)作为发送机其P3.0/RXD、P3.1/TXD分别接从
机(模拟空调)的P3.1/TXD、P3.0/RXD引脚。发送机和接收机串口采用方式1,8位UART,波特率可变,其中T1的采用方式
3(8位自填装模式),计数初值为f4f4,因此串口的波特率为2400bits
主要实现代码如下:(详细代码见附录源代码部分:)
主机发送:
while(++counter<=8)
{SBUF=sender[counter-1];
剩余15页未读,继续阅读
资源评论


weixin_38728360
- 粉丝: 4
- 资源: 927
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
