基于单片机的智能触摸开关的设计与实现.docx

上传人:b****5 文档编号:8423220 上传时间:2023-01-31 格式:DOCX 页数:21 大小:1.52MB
下载 相关 举报
基于单片机的智能触摸开关的设计与实现.docx_第1页
第1页 / 共21页
基于单片机的智能触摸开关的设计与实现.docx_第2页
第2页 / 共21页
基于单片机的智能触摸开关的设计与实现.docx_第3页
第3页 / 共21页
基于单片机的智能触摸开关的设计与实现.docx_第4页
第4页 / 共21页
基于单片机的智能触摸开关的设计与实现.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

基于单片机的智能触摸开关的设计与实现.docx

《基于单片机的智能触摸开关的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于单片机的智能触摸开关的设计与实现.docx(21页珍藏版)》请在冰豆网上搜索。

基于单片机的智能触摸开关的设计与实现.docx

基于单片机的智能触摸开关的设计与实现

本科毕业论文(设计)论文

姓名:

学号:

学院:

专业:

班级:

指导师:

开题期:

 

摘要

随着电子技术的高速发展,电子技术领域里的新概念、新器件和新方法不断涌现,大众对电子产品的需求量和要求的质量和品牌的不断更新,促使了电子技术的快速发展。

为了方便快捷广大居民,本次设计选择了触摸开关为研究课题。

触摸开关,是科技发展进步的一种新兴产品。

一般是指应用触摸感应芯片原理设计的一种墙壁开关,是传统机械按键式墙壁开关的换代产品。

能实现更智能化、操作更方便的触摸开关有传统开关不可比拟的优势,是目前家居产品的非常流行的一种装饰性开关。

触摸开关是一种智能控制的墙壁开关,本身需要消耗一定的电能,在待机时,智能开关待机取电是通过流过电子镇流器的电流给智能墙壁开关控制电路供电;在工作时,智能开关工作时取电是通过开关断开时的两端压差来取电。

触摸开关没有金属触点,不放电不打火,大量的节约铜合金材料,同时对于机械结构的要求大大减少。

它直接取代传统开关,操作舒适、手感极佳、控制精准且没有机械磨损。

通过AT89C51单片机采集触摸开关模块的输出高低电平,和串口无线模块,完成主机与从机的通信工作,实现触控、远距离传输控制继电器的功能。

关键词:

AT89C51单片机;触摸开关;无线传输模块;继电器;

 

第一章绪论

1.1研究背景

传统的开关元件开关属于有触点开关元件,但由于它有接触不良、故障率高、使用不便等缺点,在某些要求较高的输入电路中不能很好使用,促使设计师寻求更为理想的开关替代元件,随着信息技术的发展日新月异,一个以信息资源的采集、开发、利用为特征的信息技术革命正席卷全球,信息技术已广泛的渗透到社会各个领域,在世界经济和社会发展中发挥着越来越重要的作用。

日前各个发达国家都在致力于信息化建设,以此来加速本国经济的发展。

发展信息产业有许多关键的要素,如计算机、通信、集成电路、软件和信息服务业的建设等。

但是如何将人类的社会活动和生产活动与现代化的信息传输和处理手段联系在一起也是一个重要的课题,只有解决了这个实际要求,才能使人类享受到信息技术带来的高度的物质文明和精神文明。

触摸开关正是解决这一课题的重要研究方向之一。

例如,很多汽车里的多媒体系统已经取消了机械按键,取而代之的是电容式触摸按键系统,方便了司机的使用,提高了汽车驾乘感受等,可见,触摸按键技术是解决机械按键缺陷的新趋势。

1.2本设计现状

单片机是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。

计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。

微计算机(单片机)在这种情况下诞生了。

纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。

以前没有单片机时,这些东西也能做,但是只能使用复杂的模拟电路,然而这样做出来的产品不仅体积大,而且成本高,并且由于长期使用,元器件不断老化,控制的精度自然也会达不到标准。

在单片机产生后,我们就将控制这些东西变为智能化了,我们只需要在单片机外围接一点简单的接口电路,核心部分只是由人为的写入程序来完成。

这样产品的体积变小了,成本也降低了,长期使用也不会担心精度达不到了,且容易升级改善。

触摸开关按开关原理分类有电阻式触摸开关和电容式触摸开关,在多种技术中,电容式触摸感应技术已经成为触摸感应技术的主流,在按键方案上,能为产品带来整体的外观档次提升

第二章方案论证

2.1控制芯片选择

方案一:

采用Atmel公司生产的AT89C518位单片机。

该单片机与MCS-51

单片机产品兼容,内部具有32个可编程I/O口线、3个16位定时器/计数器、八

个中断源、全双工UART串行通道。

但是其内部模块较少、功能局限性大,并且

内部没有集成模/数转换模块、脉冲宽度调制模块,使用时需要在外围电路中额外

设计A/D转换模块和D/A转换模块,增加硬件成本的同时增加了硬件故障点,并

且增加了飞机的质量。

方案二:

采用公司生产的MSP430系列十六位单片机。

该单片机内部具有16K的RAM和16K的ROM、8K可编程Flash存储器、16路精度为8bit/10bit/12bit的模数转换模块、8路脉冲宽度调制(PWM)通道、若干定时器/计数器、1个全双工UART串行通道、看门狗定时器、51个可编程I/O口、10个外部事件触发中断引脚、超过一百个中断源。

是一款功能十分强大的单片机,并且内部自带PLL模块,总线频率最高可以设置成128MHz,运算速度快并稳定。

在本次设计中,因为并不需要模拟量的采集,且不涉及PWM等功能,且从成本角度出发,本次设计使用性能适中的AT89C51单片机。

2.2系统总体结构框图

本次设计的触摸开关系统以模块化方式分块设计,通过将设计分成主控制模块,被控制模块和无线传输模块,分步完成相应模块,最终将各个模块整合到一起,完成设计,最终进行总体调试。

从控制芯片和硬件电路的综合角度确立了系统结构框图,其中主控模块包括触摸开关模块,单片机控制模块,继电器控制灯光的执行模块,电源模块以及无线发射模块等部分,如图2.1所示:

 

 

 

图2.1主控模块系统总设计结构图

被控制模块主要是对无线接收装置收到主控模块的指令进行处理解析,从而控制继电器灯光模块,因此被控制模块不必使用触摸开关模块,所以被控模块主要包括触无线接收模块,单片机控制模块,继电器控制灯光的执行模块以及电源模块等部分,如图2.2所示:

 

图2.2被控模块系统总设计结构图

2.3本章小结

本章在对触摸开关系统的控制方案选择进行了分析、对比,确定了单片机的类型、控制核心方案。

本章所确定的各个模块为后续章节的硬件设计提供了研究的对象和模型。

第三章硬件电路设计

3.1智能触摸开关控制系统硬件组成

系统主要由AT89C51单片机控制芯片,12M晶振和30p电容电路、阻容复位电路,触摸开关模块电路、三极管和继电器组成的执行电路以及无线收发模块电路。

3.2单片机系统介绍

AT89C51为ATMEL所生产的可电气烧录清洗的8051相容单芯片,其内部程序代码容量为4KB。

AT89C51主要功能列举如下:

1、为一般控制应用的8位单芯片2、晶片内部具时钟振荡器(传统最高工作频率可至12MHz)3、内部程式存储器(ROM)为4KB4、内部数据存储器(RAM)为128B5、外部程序存储器可扩充至64KB6、外部数据存储器可扩充至64KB7、32条双向输入输出线,且每条均可以单独做I/O的控制8、5个中断向量源9、2组独立的16位定时器10、1个全多工串行通信端口11、8751及8752单芯片具有数据保密的功能12、单芯片提供位逻辑运算指令实物如图3.1所示:

图3.1单片机实物图

3.2.1复位方式

单片机复位方式有两种

1)手动按键复位:

单片机RESET引脚得到两个时钟周期的高电平后进行复位,及手动操作复位,

2)2.上电复位:

单片机上电压从无到有在RESET处会先处于高电平一段时间,然后由于该点通过电阻接地则RESET该点的电平会逐渐的改变为低电平,从而使得单片机复位口电平从1到0,达到给单片机复位的功能。

这样一种复位方式就是所谓上电复位。

3)复位电路如图3.2示:

图3.2位电路图

3.2.2时钟电路

单片机的运行离不开时钟电路,通过始终电路给单片机提供脉冲信号,俗称“拍”来保证单片机按照时序工作,时钟电路由晶振,电阻,和电容组成,为了保证单片机抗干扰功能更好,使用22PF的电容对脉冲信号进行过滤,同时采用16M晶振保证晶振的可靠起振,保证单片机上电后起振顺利。

本次设计始终电路如图3.3示:

图3.3钟电路图

3.2.3最小系统电路

单片机最小系统由单片机芯片,时钟电路以及复位电路所组成,本次设计最小系统电路图如图3.4示:

图3.4小系统电路图

3.3触摸开关电路

本次采用的触摸开关为基于TTP224触控芯片的触摸模块,如图3.5示

图3.5TP224触控开关模块实物图

TTP224触控开关模块提供4个触摸输入端口及4个直接输出端口,提供直接输出模式,触发模式,开漏输出,CMOS高电平有效或低电平有效输出,便于单片机的IO口进行采集,处理。

模块电路图如图3.6示:

图3.6TP224触控开关模块原理图

 

3.4CC1101无线传输模块

本次设计装置使用的无线传输模块为CC1101无线传输模块,如图3.7示:

图3.7CC1101无线传输模块实物图

该模块通信频率为434MHz,采用半双工工作方式,并且不限制单词发送的字节数,具有待机空闲工作方式,工作电流仅3.5mA,且传输速度快,该模块具有4种串口透传方式,各个模式都是只管收发串口数据即可,且工作距离远,空旷地带可达200米以上,便于系统后期整体调制,

CC1101无线模块原理图如图3.7所示:

图3.8C1101无线传输模块电路图

3.5继电器执行模块

本次系统设计的最终表现方式为通过单片机控制继电器,从而控制灯光的开闭,单片机的IO口输出功率为电压型信号,驱动能力及其微弱,因此需要使用一个S8050三极管来作为继电器的驱动电路,从而控制LED灯光电路。

继电器执行模块电路如图3.9示:

图3.9电器执行模块电路图

第四章软件设计

4.1主机程序流程图

系统初始化后等待按键按键按下,单片机自动读取按键的信息识别是哪个按键给的操作,然后根据设定程序将数据送给发送函数,将数据从无限模块发送出去,系统的软件整体流程图如图4.1所示:

图4.1主程序流程图

 

4.2从机程序流程图

从机系统接收来自主机的数据好解码对应按键继电器动作基本流程图如图4.1所示:

第五章设计总结

本设计基于89C51单片机,实现了触摸开关的设计。

功能实践是检验真理的唯一标准,当然也是检验学习成果的标准。

在经过一段时间的学习之后,我们需要了解自己的所学应该如何应用在实践中,因为任何知识都源于实践,归于实践,所以要将所学的知识在实践中来检验。

在做毕业设计期间,在老师的指导下,通过自身的不断努力,无论是思想上,学习上,都取得了长足的发展和巨大的收获,学会用科学的精神去解决问题。

很多事情看起来是很简单的问题,但实际做起来就不简单了。

运用科学的方法去解决问题,这是我这次实训给我带来的思想上的改变。

学习上,使自已在大学所以的知识在这次得到实践,学到一些书本上无法学到的经验,对单片机有了进一步的认识。

触摸开关是信息化时代发展的产物,应时而生,我相信随着科技的不断发展,将来的触摸开关一定更加完美,更加人性化,更加便宜,更加安全。

参考文献

[1]李朝青.单片机原理及接口技术(简明修订版)[M].北京:

北京航空航天大学出版社,1998

[2]李全利.单片机原理及接口技术[M].高等教育出版社,2003

[3]]PROTEL99SE电路设计与制板[M].机械工业出版社,2007

[4]杨将新,李华军,刘到骏等.单片机程序设计及应用(从基础到实践)[J].电子工业出版社,2006

[5]StevenF.Barrett.DaneilJ.Pack.EmbeddedSystem[M].北京:

电子工业出版社,2006

[6]周立功.LPC900系列Flash单片机应用技术[J].北京航空航天大学出版社,2004

[7]黄智伟.全国大学生电子设计竞赛训练教程[M].北京:

电子工业出版社,2005

[8]杨欣.电子设计从零开始(第二版).北京:

清华大学出版社,2010

[9]梅丽凤.单片机原理及接口技术(第三版)[M].北京:

清华大学出版社,2010

[10]李鸿.用单片机控制手机收发短信息[J].电子技术应用.2003:

(8):

24-27.

[11]张毅刚.单片机原理及应用[M].北京:

高等教育出版社,2007:

64-67.

[12]邹伯敏.自动控制理论[M].2.版.北京:

机械工业出版社,2002:

100-105.

[13]刘守义.单片机应用技术[M].西安:

西安电子科技大学出版社,2002:

68-69.

[14]谭浩强.C语言程序设计[M].3.版.北京:

清华大学出版社,2005:

54-80.

 

附录1

主机电路图

附录2

从机电路图

附录3

主机程序代码

内容:

连接好串口或者usb转串口至电脑,下载该程序,打开电源

打开串口调试程序,将波特率设置为9600,无奇偶校验

晶振11.0592MHz,发送和接收使用的格式相同,如都使用

字符型格式,设置正确后接受框可以看到UARTtest,

#include//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#include"delay.h"

sbitS1=P2^0;

sbitS2=P2^1;

sbitS3=P2^2;

sbitS4=P2^3;

sbitJ=P2^7;

/*------------------------------------------------

函数声明

------------------------------------------------*/

voidSendStr(unsignedchar*s);

voidSendByte(unsignedchardat);

/*------------------------------------------------

串口初始化

------------------------------------------------*/

voidInitUART(void)

{

SCON=0x50;//SCON:

模式1,8-bitUART,使能接收

TMOD|=0x20;//TMOD:

timer1,mode2,8-bit重装

TH1=0xFD;//TH1:

重装值9600波特率晶振11.0592MHz

TR1=1;//TR1:

timer1打开

EA=1;//打开总中断

//ES=1;//打开串口中断

}

/*------------------------------------------------

主函数

------------------------------------------------*/

voidmain(void)

{

InitUART();

J=1;

 

while

(1)

{

if(S1==1)

{

DelayMs(50);

if(S1==1)

{

while(S1==1);

J=~J;

SendByte

(1);

}

}

if(S2==1)

{

DelayMs(50);

if(S2==1)

{

while(S2==1);

SendByte

(2);

}

}

if(S3==1)

{

DelayMs(50);

if(S3==1)

{

while(S3==1);

SendByte(3);

}

}

if(S4==1)

{

DelayMs(50);

if(S4==1)

{

while(S4==1);

SendByte(4);

J=~J;

}

}

}

}

/*------------------------------------------------

发送一个字节

------------------------------------------------*/

voidSendByte(unsignedchardat)

{

SBUF=dat;

while(!

TI);

TI=0;

}

/*------------------------------------------------

发送一个字符串

------------------------------------------------*/

voidSendStr(unsignedchar*s)

{

while(*s!

='\0')//\0表示字符串结束标志,

//通过检测是否字符串末尾

{

SendByte(*s);

s++;

}

}

 

从机程序代码

#include//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbitJ1=P2^7;

sbitJ2=P2^6;

sbitJ0=P2^5;

/*------------------------------------------------

函数声明

------------------------------------------------*/

voidSendStr(unsignedchar*s);

voidDelayUs2x(unsignedchart)

{

while(--t);

}

voidDelayMs(unsignedchart)

{

while(t--)

{

//大致延时1mS

DelayUs2x(245);

DelayUs2x(245);

}

}

/*------------------------------------------------

串口初始化

------------------------------------------------*/

voidInitUART(void)

{

SCON=0x50;//SCON:

模式1,8-bitUART,使能接收

TMOD|=0x20;//TMOD:

timer1,mode2,8-bit重装

TH1=0xFD;//TH1:

重装值9600波特率晶振11.0592MHz

TR1=1;//TR1:

timer1打开

EA=1;//打开总中断

//ES=1;//打开串口中断

}

/*------------------------------------------------

主函数

------------------------------------------------*/

voidmain(void)

{

J1=1;

J2=1;

InitUART();

 

ES=1;//打开串口中断

while

(1)

{

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

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

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