先放一张高清图
2.0更新说明:
修正LCD1602固定孔距为3.1MM,1.0版本为2.5MM导致M3螺丝很难穿进去。
在CH340与51单片机之间的TX-RX增加一个二极管,1.0版本未加,导致CH340倒
灌电流,使得MCU无法断电切一直处于复位状态,无法烧录程序。
修正矩阵键盘印丝,1.0版本在按矩阵键盘时会挡住此时的按键值,容易按错。
修正印丝错误、修正封装错误、微调布线。
以下带括号部分截取自实验报告
(一、课程设计内容
2.利用矩阵键盘和存储芯片 24c02 实现密码锁功能,包括正确密码进入欢迎界面、
修改密码、输入错误密码 3 次锁死 15 秒、密码掉电存储;
3.利用温度传感器和蜂鸣器实现超温报警功能,包括温度数据读取与显示、温度
阈值设置、超温蜂鸣器报警;
4.正常状态时利用 LCD1602 显示温度数据,激活键盘后进入密码锁,退出密码锁
后返回正常状态
5.未解锁状态下有人靠近时触发报警器
二、目的
1、增进对单片机的感性认识,加深对单片机理论方面的理解;
2、掌握单片机的内部功能模块的应用,如定时器/计数器、中断、存贮器、I/O
、A/D 转换等;
3、了解和掌握单片机应用系统的软硬件设计过程及实现方法。
设计方案:
STC89C51 单片机控制系统的主要功能包括:实现密码锁门 、温度监控、万
年历显示功能、靠近警报。
主体电路:STC89C51、LCD1602 液晶显示模块、DS18B20 温度传感器模块、
24c02 模块、人体红外传感模块、矩阵键盘模块,通过矩阵键盘输入,实现对各
个模块的智能控制,实现现智能家居警报系统的一部分功能。
设计输入部分:这一模块主要是以 STC89C1 单片机 P2、P1 I/O 扩展独立键盘
和矩阵键盘实现对机的输入,实现对各个模块的输入。
设计输出部分:这一模块主要是以 LCD1602 液晶显示模块实现单片机控制过
程的信息显示。
设计控制部分:主要由 STC89C51 单片机的外部中断扩展电路和 I/O 口扩展
电路组成。)
各模块说明:
焊接好初次烧录程序时,需初始化密码,因此需要将程序中初始化密码的函数取消注释,然后烧录到单片机中,然后再将初始化密码的函数注释掉,再烧录一次到单片机中即可正常使用。初始化函数说明:初始化函数的作用是预先写入一组密码到24C02芯片中,方便后续对密码的操作,由于此函数每次使用时都会将密码设置为预定的值,所以该函数只需烧录一次就可在24C02中设置好密码。如果每次上电都启用这个函数,就会导致每次上电都将密码初始化,导致修改密码失效,即无法保存修改的密码。
矩阵键盘:各个按键的键值已用印丝注明,如果输错数字可使用左移按键回到上一位,右移选择下一位(主要是修改日历和时间用),输入完成后按确认键即可保存。
独立按键:当按下一个按键时,对应功能的指示灯会亮起,如果想退出该功能只需再按一次即可,可以在一个功能启动时,按另一个按键进入另一个功能。
蜂鸣器:用于报警和简单指示(修改密码时会发出不同声调的声音提示)。
DS18B20:用于读取环境温度,设置报警温度最高为99.
红外接收管:用于接收红外遥控器的控制,遥控器能完全控制该系统。(这个课设里没要求,但是有这个稍微比键盘上的按键要方便一点)
门锁指示灯:亮起时表明已已解锁,熄灭表示上锁。
24C02:用于保存密码、温限、日期和时间(由于不是时钟芯片,因此只能在使用功能保存时间时才能存入,即如果系统时间过了五分钟,但未按修改时间进行存入,则下次上电时显示的时间还是五分钟前)
LCD1602:显示所有信息,旁边有背光调节电阻,如果看不清或者没有数值,则需要手动调整背光。
热释电模块预留插座:可以用杜邦线插入热释电人体感应模块,但是精度不怎么样,容易失灵或者乱报警。
CH340:用于烧录程序,下载程序时需重新上电单片机,即按两下电源按键。
功能说明:
解锁上锁键:输入密码,正确时门锁指示灯亮起表示解锁,再次输入密码则指示灯熄灭,表示已上锁。输入错误密码3次会锁机15S,蜂鸣器短暂报警,锁机结束时蜂鸣器同样短暂提示,然后显示输入密码。
改密码:输入6位密码,正确时会进入输入新密码界面,并且有短暂蜂鸣器提示,新密码需输入两次才能完成修改密码。输入错误密码3次会锁机15S,蜂鸣器短暂报警,锁机结束时蜂鸣器同样短暂提示,然后显示输入旧密码。
改温限:输入两位数目标报警温度,最高99,当传感器温度超过设定值时,蜂鸣器将持续报警,直至温度低于设定温度。此时系统响应时间会变慢,因为蜂鸣器发声占用了系统资源,因为没有剩余定时器可用,所以会略微影响其他功能使用。
改时间:依次输入四位数年份、月份、日、小时、分钟,改到任意位置可按确认键保存。左移无法跳跃分隔符号“-” ,数据存入24C02中,每次修改密码时会写入24C02,以便下次上电读取,无法实时保存时间,因为每次保存都要写入24c02中,如每秒都写入一次,24c02很容易写报废。
第一次烧录程序,需要在源文件中的lock.c里面取消注释初始密码,然后第二次烧录时再将此部分注释。主文件名称为ks.c,要用keil4打开
遥控器说明:
数字键是完全对应的,+是解锁/上锁,EQ是改密码,100+是改温限,200+是改时间,-是确认,NEXT是左移,PLAY是右移
我这个遥控器是这样的,但是其他遥控器可能对应的功能按键不一样,数字按键是一样的。
复用接口说明:
P2^0、P2^1:大部分情况为解锁功能标志灯和改密码功能标志灯,但同时也用于模拟IIC给24c02读写数据,所以每次保存或读取数据时,这两个灯都会短暂闪烁。
P3^0、P3^1:作为独立按键,但在下载程序时作为串口使用。
P3^2:通常作为独立按键使用,但也作为外部中断输入,连接红外接收管,当遥控器发出指令时,用于接收数据。
P3^4空着的原因,当时我用开发板调试的时候试着将P3^2的按键功能移过来,然后系统就卡死了,于是就放弃了使用这个IO口,不过好像是我开发板的问题,
如果需要添加什么功能,这个IO就当做预留,或者也可以试试将P3^2的按键自己移过来,我就不移了。
按键是手焊的,风枪吹的话会吹熔化,所以有点歪歪扭扭的,本来有一瓶洗板水的,但是全部挥发了,所以板子也没洗
板载的按键需要按的时间长一点,大概0.5秒,按快了可能刚好没扫描到键值。遥控器反应就相对快一点。LCD显示更新速度略微慢一点,大概指示灯亮了半秒后才会完全刷新,89C51就这样了。
以下是1.0实物图:(焊了个直插的二极管是因为1.0版本设计失误,导致电流倒灌,2.0已更正)
空板↓
焊接后↓
视频演示(这个人体感应模块灵敏度太差,老是误触发)