大创项目分享-基于单片机的智能窗帘的研究与设计
基于单片机的智能窗帘的研究与设计 这是一个很老也很简单的项目了,当时大二寻找题目申请大创的时候,
还是个连 51 单片机都才学一般的菜鸟,总怕自己最后做不出来,大创结题不了(事实证明,想要结题还
是很容易的,毕竟学校也不想让你毕不了业),所以一直在找哪种名字听起来比较高级,实际比较简单的
题目,于是就找到了这个题目。
一开始是想用 51 单片机做的,毕竟网上资料也比较多,但是很快就发现,其实 51 单片机的市场
应用已经太久了,比较老了,既然学校有经费资助,于是我就想从头开始学性能更好,资源更加多的 STM32
单片机了,因为之前学过 51 了,所以在学习 32 时概念理解上会比较快,比较容易上手,其实去学后会发
现在库函数的帮助下,32 用起来不会比 51 难很多,我当时也是直接买了正点的 mini 板开始自学,后来
参加电设也用上了,所以还是比较值的,不过我觉得学任何东西还是要有目标的去学,比如说要完成一个
什么功能,一个什么项目这种,不能拿来视频就开始看,虽然随便一个视频可能都是你没学过的,但是没
有项目来督促或则说激励你,要么就会学不下去,要么学完很快就忘了,我学习 51 就是这样,自己买了
开发板开始学,看完视频感觉自己开发板已经掌握的差不多了就搁那不管了,到申请大创项目时,我脑子
里也没有一个基本的程序思路。以后想深入学习下 matlab,也是想先找几个项目开始学,目标是完成项目,
所以就要先学项目所需要的一些功能。
下面开始说这个项目把。这个智能窗帘要完成的功能也比较简单,就是有手动控制模式和自动控制
模式,手动通过红外遥控器实现,自动就是通过光敏电阻测光强度来自动调整窗帘位置,这个项目比较适
合用上下升降的窗帘。在手动模式下,只能通过红外遥控控制,但是光强等其它一些参数还是会测量显示;
自动模式下,就是先测光强,然后更设定阈值进行比较,然后调整窗帘升降,阈值可以通过按键或者遥控
器设置。TFT-LCD 屏幕的显示界面如下,界面其实是可以优化一下的,比较懒就没去弄。
然后验证功能我用的是28BYJ-48步进电机,但是单片机直接驱动不了,需要一个驱动,我用的是ULN2003,
演示的时候还是搭了一个模型的,不过已经被我拆了,没有照片了。
贴个主函数吧,完整的工程我用百度云分享。
我 MDK 里是有打注释的,不过一复制到外面就乱码了,变量含义我截图放一下,其他不清楚就下载工程
看一下吧
主函数代码如下:
顺便说一下我编整个程序的思路,可以看到我设置了很多标志位或者变量,因为我从显示界面开
始编写的,有时候也会从按键开始,然后期间每用到一个参数或需要判断的标志就定义一个变量,然后显
示界面跟按键写完后,然后根据设置的需要的变量去编写这些参数来源的代码,如光强度通过 ADC 读取光
敏电阻两端电压换算而来,然后再慢慢把用到的变量的来源补充完整,整个程序就慢慢成形了,其他再修
修补补就好了。先写显示的代码其实是为了后面写代码过程中可以将一些参数暂时显示出来,这样方便找