ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:225.60KB ,
资源ID:14365200      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/14365200.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(空调遥控器设计Word下载.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

空调遥控器设计Word下载.docx

1、设计思路: 数字显示器使用LCD1602显示时间和温度值,其中时间的切换利用AT89C51内部自带的定时器0,定时初值为3cb0,定时器工作模式为0116位定时器,工作状态利用LED灯的亮灭来指示,其中LED亮代表相对应的工作模式被选中,各种工作状态的切换使用8个独立按键来实现,分别位工作状态设定键、延时状态设定键、风速选定键、温度+键、温度-键、延时时间位选定键、延时时间设置键、发送键;按下发送键后信息的发送使用串行口的方式发送给上位机并显现出来,当延时时间到启动空调。具体实现:经分析将该设计划分为如下4个模块:按键模块,LED状态显示模块,LCD1602显示模块,双机串口通信模块按键模块:

2、仿真原理图: 详细描述:8个按键的功能如下表:按键功能K1工作状态设定键(常态、除湿、通风)K2延时状态设定键(延时开、延时关、取消)K3风速选定键(慢、中、快)K4温度设定键(增加+)K5温度设定键(减少-)K6延时时间位选定键(XXXXXX)K7延时时间设置键(默认为循环增加)K8发送键当K1按下时,保持P0高5位状态,按下第一次最后一位置0,倒数第二、三位置1按下第二次时到数第二位置0,倒数第一、三位置1,按下第三次时倒数第三位置0,倒数第一、二位置1,依次循环,代码实现:P0=(states1i&(P0|0x07);当K2按下时,保持P0倒数第1、2、3位和正数第1、2、3状态按下第一

3、次时倒数第一位亮表示延时开,按下第二次时倒数第五位亮表示延时关,按下第三次时倒数第3、4位皆灭表示取消延时,依次循环,代码实现: P0=(states2j&(P0|0x18);当K3按下时,保持P0低5位不变,按下最高两位置1,第三位置0,表示慢速,按下第二次时第二位置0,第一、三位置1,表示中速,按下第三次时第一位置0,第一、二位置1,依次循环,代码实现:P0=(states3k&(P0|0xe0);LED状态显示模块:LED状态指示D1正常D2除湿D3通风D4延时开(如果D4/D5两灯全灭则取消延时)D5延时关D6慢D7中D8高LCD1602显示模块:LCD1602一共可以显示16x2个字

4、符,其中数据线为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,ucha

5、r 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=sendercounter-1; while(TI=0); TI=0; while(RI=0); RI=0; 从机接

6、收:counter+; RI=0; /接受中断标志清零,可以接收新的数据 receive=SBUF; /开始接收新的数据 ADDRRcounter-1=receive;/把接受的数据存入字符串数组ADDRR中 delay_LCM(100); SBUF=ADDRRcounter-1;/由单片机2向单片机1发送数据 while(TI=0); /循环等待直到发送数据完毕 TI=0;设计过程中遇到的问题及解决过程:问题1、LCD1602不能够显示最终解决方案:经查阅相关资料与书上LCD1602电路连线图相对照发现未接排阻。仿真电路中排阻是必要的它的功能是电阻作为有功原件串联在电路中能消除振荡,目的是得

7、到更好的EMC性能。经加入排阻后能够正常显示。问题2、通过串口线两片单片机不能正常的通信原因是在主机中由于我既用到了定时器来作为计时中断,有用到了定时器为串口提供波提率,我误把定时器0来为串口提供波特率,定时器1来为做计时时钟,后查阅书籍在单片机原理及控制技术P161、L17中提到方式1和方式3的波特率“与定时器T1的溢出率有关。”也就是说串口通信方式1的波特率不能由定时器0来提供后经改变两定时器的功能后串口通信正常。问题3、编译程序代码时总会出现“ERROR L107:ADDRESS SPACE OVERFLOW”.AT89C51有三种存储器模式:“SMALL模式,COMPACT模式,LAR

8、GE模式。不同的存储模式对变量的默认的存储器类型不一样。”程序在编译时默认为小编译模式,此时数据的存储容量为128B当我定义的数据变量所占据的地址空间超过128B时,编译器就会报错。我首先尝试将编译器的模式设置为CMOPACT模式,但发现编译器虽无报错但仿真的结果并不是我所期望的结果,最终我在SMALL模式下,将我所定义的数据变量尽量缩减,例如用10个字符“0123456789”来表示21个温度数据,这样的缺点是给软件的编写带来了较大的复杂度,优点是可以节省内存空间,最终将所用字节缩减至97远小于128B,编译无错误,且仿真成功。课程设计收获与心得:本次课程设计从审题、模块的划分、各个模块的实

9、现和各个模块之间的连接均为自己独立完成,无抄袭借鉴他人的现象发生,通过本次课程设计自己几乎将单片机教材又细致的看了一遍尤其是中断一章看了不下3遍其中串口一节更是把每个字都仔细研究一番,最终完成了课程设计题目的要求。通过此次课程设计增强了我对学习单片机的信心,也激发了我对单片机设计的热情。成为我大学生涯中的一次难忘的经历,我会在今后生活中更加深入学习单片机知识,争取设计出更多自己喜欢的又实用价值的作品。附录:软件仿真图:源代码:第一部分:LCD显示文件#include intrins.hstring.habsacc.h#define uchar unsigned char#define uint

10、 unsigned int#define BUSY 0x80 #define DATAPORT P2 sbit LCM_RS=P33;sbit LCM_RW=P34; sbit LCM_EN=P35;void delay_LCM(uint); void lcd_wait(void); void WriteCommandLCM(uchar WCLCM,uchar BusyC);void WriteDataLCM(uchar WDLCM);void DisplayListChar(uchar X,uchar Y, unsigned char *DData);void delay_LCM(uint

11、k) uint i,j; for(i=0;ik;i+) for(j=0;j60;j+) ; void WriteCommandLCM(uchar WCLCM,uchar BusyC) if(BusyC)lcd_wait(); DATAPORT=WCLCM;LCM_RS=0; LCM_RW=0; LCM_EN=1; _nop_(); LCM_EN=0;void WriteDataLCM(uchar WDLCM) lcd_wait( ); DATAPORT=WDLCM; LCM_RS=1;void lcd_wait(void) DATAPORT=0xff; LCM_RS=0; LCM_RW=1; while(DATAPORT&BUSY) LCM_EN=0; LCM_EN=0;void initLCM( ) DATAPORT=0; delay_LCM(15); WriteCommandLCM(0x38,0); delay_LCM(5); WriteCommandLCM(0x38,1); WriteCommandLCM(0x08,1); WriteCommandLCM(0x01,1); WriteCommandLCM(0x06,1); WriteCommandLCM(0x0c,1);void DisplayOneChar(uchar X,uchar Y,uchar DData)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1