序
🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是:基于51单片机智能窗帘控制系统
1 硬件设计
1.1 AT89C51单片机
本设计采用的是生活中最常用的单片机AT89C51。单片机允许用编程器编程。单片机的主要的参数如表1所示:
表1 单片机的参数表
单片机的参数 | |
A四个8位可编程I/O线 B五个中断源 C单片机内的时钟电路与振荡器 D两个16位的定时器 | E片内振荡器和时钟电路 F4k字节可编程闪烁储器 G一个UART串行通信口 |
在AT89C51单片机最小系统中包含复位电路和时钟电路[3]。其中复位电路是由三个器件组成,它们分别为开关、电容、电阻,当开关断开时,电流无法经过整个电路,复位电路则无法工作;当开关闭合时,电流经过开关和电阻,作用在管脚9上,复位电路开始工作,程序被重置。
单片机最小系统电路如图2所示。
图2 单片机最小系统电路图
本设计中使用石英振荡器来产生基准频率,主要的原因是它能够抵抗外界对它的干扰,石英振荡器震荡产生振 荡电流,同时对单片机传输时钟信号[4]。
1.2 传感器模块
光敏传感器是比较常用的一种传感器,它的工作原理是随着光的强度增高,其内的电阻减小,反之增大。然后 传感器将光信号转换为电信号传给转换器[5]。
窗帘运用光线控制原理,在黎明时自动开启,在黄昏时自动关闭。该电路是由一个放大器、两个电阻和光敏电 阻组成,5V电压为输入电压,光敏电阻通过收集外界的光线来决定自身的电阻,如果光线强则电阻低,光线弱则电 阻高,而且光敏电阻的电压要与R18、R19的电压进行比较[6]。经过比较后,信号发送到AT89C51的P00端口,由单片机控制电机的正反转[7] 。
光敏传感器如图3所示。
图3 光敏传感器
1.3 预处理模块
预处理模块中最主要的是放大滤波器,共模电压一般是传感器的信号带来的,想要消除或者减轻电压,我们一般选用常微分输入运算放大器来消除它,但其会产生一个外部的阻力,可以用对称运算来平衡阻力。通用运算放大器的共模抑制比(CMR)可以高达80dB,而包含多个集成运算放大器的测量放大器电路的CMR可以达到100至120dB。
放大滤波器电路图如图4所示。
从Ui输入信号经过放大器调理后的信号在Uo输出,但滤波器有一个额定的频率,当信号频率高于额定值则无法被传输,而当信号小于额定值时则信号会被赋值为零,快速通过滤波器,并被传输出去。
图4 放大滤波器电路
1.4 A/D转换模块
ADC0809与AT89C51连接如图5所示
A/D转换器的作用是信号转换,将接收到的模拟信号转换成数字信号输出[8]。在本设计中转换器是将信号调理电路中放大的模拟信号转换成数字信号,然后传输给单片机。
ADC0809通过一个非门将EOC与MCU上的INT1相连,当A/D转换器转换结束时,就可发出信号,单片机便响应中断。
图5 ADC0809与AT89C51的接口电路
1.5 显示模块
显示模块主要的作用是为了显示时间,所以采用LED数码管进行显示,LED数码管拥有以下特点:(1)体积小,稳定性好(2)发光相应时间短、高频特性好,单色性好,亮度高。(3)能够在低压,小电流的驱动下发光。
显示电路如图6所示。
图6 显示模块电路
本设计采用共阴极接法,将四个数码管连接在一起,通过键盘电路的S3、S4输出信号,将信号传输给显示电路,并通过数码管显示出来,直接看到设置的时间。
当有电流通过时,数码管会根据以编写的程序进行闪烁,这样时间就会在显示电路中展现出来。
1.6键盘电路模块
整个系统的运行是由单片机控制的,键盘模块主要通过按键向单片机传送信号,主要包括设置时间和控制窗帘开关功能[9]。窗帘控制系统设计中的6个设置按键,分别为:S1键是电机正向旋转键,主要用于设置自动窗帘开启;S2键是电机反转键,主要是用来设定自动窗帘闭合;S3、S4键主要是设置时间,S3、S4可以上下翻找数字来确定自己要设置的时间,当时间与设置的时间相同时,若此时窗帘为打开状态,窗帘关闭,若窗帘为关闭状态,窗帘打开;S5是取消键;S6是确定键。
键盘接口电路如图7所示。
图7 键盘接口电路
为了防止抖动而出现失误,使用软件延迟来避免抖动。判断电路是否通电,延迟时间为5ms,按下键后,延迟时间为10ms,以避免键盘抖动。然后进行关键代码分析,对应模板执行命令,以实现显示以及返回功能。
3.7 步进电机模块
在人们的生活中许多产品都用到了步进电机,比如自动门的开合、机器人关节的转动、空调的百叶以及智能窗帘,本设计使用的是三相步进电机,通过控制换相来实现电机的转动,如果换相顺序是A-AB-B-BC-C-CA-A则步进电机正向转动,A-AC-C-CB-B-BA-A则步进电机反向转动。
步进电机是一种数字伺服致动器。不仅结构简单操作方便,还具有控制效果极好的特点。在步进电机模块中,通过控制器改变换相顺序,以控制步进电机的转向[10]。因为步进控制器价格比较贵,所以采用软件来替代,而且线路简单,价格便宜。三相步进电机电路如图8所示。
图8 步进电机电路图
三相步进电机的转速是可以控制的,给步进电机5V供电启动,单片机开始给步进电机传输信号,信号经过optoisolator后,电路中的绕组开始通断切换,实现电机转动,当给电机传输的信号经过optoisolator变化过快,则绕组通断切换也开始变快,从而使步进电机转动的越快[11]。
在这次设计中MCU通过控制电机的正转、反转、转角的方法,来实现窗帘的开关。
步进电机转动的测试程序见附录二。
1.8 蜂鸣器模块
蜂鸣器是一种声音发生装置,蜂鸣器电路如图9所示,这种装置经常适用于防盗,报警等电子设备中作为发声装置,而在智能窗帘中它是和时钟模块一起使用的,比如早上时间一到,蜂鸣器开始发出声音,人们便开始起床。当电流经过蜂鸣器时,电磁圈产生磁场,从而使磁片发生震动,发出蜂鸣声。
它由一个蜂鸣器和三极管组成,该电路中的开关由三极管充当。
图9 蜂鸣器电路图
当基极端输入的电压为低压时,三极管没有被导通,蜂鸣器就没有电流经过,没有声音产生,但基极端输入的电压为高压时,三极管被导通,电流经过蜂鸣器,发出声音来提醒人们起床。
1.9 电源电路模块
电源电路图如图10所示。
电源是每一个系统的重要组成部分,在这个设计中,MCU、传感器电路模块、显示模块、步进电机等等器件的正常工作都需要一个稳定的5V电源电压来维持。人们的家庭用电都是220V的交流电,所以使用变压器将220V的高电压降成低电压,但这个电压还是高于我们所需要的5V,后面在经过LM7805芯片进行降压,输出的即为所需电压。
图10 电源电路图
2 系统软件设计
2.1 光控电机程序设计
光控电机程序设计流程图如图11所示。
图11 光控电机程序设计流程图
光控电机程序的设计随着光的不断变化,控制着电机的转动,使窗帘开关[12]。当执行子例程序的时候,先进行初始化,观察光的强度是否大于800LX。如果条件不成立,请返回以重新初始化[13]。如果满足此条件,则电动机正在前进,并且帘幕被打开。如果接触开关,电机停止,反之继续正转。在窗帘打开的前提下,而当光度强度小于400的时候,窗帘关闭[14]。
2.2 DS1302程序设计
子程序流程图如图12所示。
SCLK生成边界,DS1302写地址,将写的地址写入数据。如果数据没有完成,它将返回,等待SCLK生成边界。如果数据已经完成,删除后来SCLK。并在产生下降沿时读取数据,并确定读取了哪些数据[15]。如果数据不完整,请返回以等待SCLK上的下一个数据。如果读取,则处理数据并返回。
根据本设计,决定采用DS1302芯片来进行时间的计时,DS1302有许多优点,比如能够切换电池,还有检查掉电的情况。
图12 子程序流程图
DS1302的控制字如图13所示。
图13 DS1302的控制字
当输入一个命令后sclk就会上升,产生的数据就会被写入芯片中,其数据的输入是从0开始,然而,在8位控制指令后的下一个sclk的下降时,会读取到芯片的数据,数据是从0-7被读取,数据读取和写入的时序图如图14,15所示。
图14 单字节读
图15 单字节写
进行数据传输时,RST必须设置高电平,每个SCLK为上升沿时数据被输入,下降沿时数据被输出。先把RST设置为低电平,禁止数据传输,SCLK置低,清零时钟总线,RST再设置高电平,允许数据传输。传送完成后,RST设置低电平,禁止字节的传输。
如果学弟学妹们在毕设方面有任何问题,随时可以私信我咨询哦,有问必答!学长专注于单片机相关的知识,可以解决单片机设计、嵌入式系统、编程和硬件等方面的难题。
愿毕业生有力,陪迷茫着前行!