基于普中开发版的多功能闹钟

多功能闹钟软件设计

目前,在市场上流行着很多编程软件,种类繁多,功能五花八门,但是在选择时需多进行比较,选择最合理的,使之能够完成设计所要求的目的。所以在结合设计特点和本科阶段所学的相关知识后,设计最终选择Keil Vision4软件,并用C语言进行程序编写。   

1 总体设计

软件设计主要由主程序、键盘输入、遥控输入、AD转换、LCD显示、数码显示、时钟读取、epprom数据保存组成。各个程序的主要功能如下:

1. 主程序:定义变量,开启各设备初始化,统筹各程序处理时间和顺序。

2. 矩阵键盘程序:定义每个按键被按下时所进行的操作,并扫描键盘,确定哪个按键被按下,然后实现相应操作。

3. 红外遥控程序:利用中断的方式开启红外遥控,利用外部中断0的电平读取红外信号。

4. LCD显示程序:显示当前各按键代表的是什么意思,配合键盘和遥控相应控制。

5. epprom储存程序:利用iic通信读取和写入要保存的信息。

6. 显示子程序:对固定字符和用户输入的密码进行显示。

7.时钟程序:对芯片直接读取获取时间信号。

8.AD程序:对传感器输入的模拟信号转化为的数字信号(这是24C02做的),利用51单片机和24C02通信获得测量结果。

2 功能设计

2.1 主程序

主程序设计流程图如图2.1所示。主函数完成的事情是读取各模块的信息,编写LCD显示的内容,采集传感器信号。

 

图2.1 主程序设计流程图

2.2 矩阵键盘程序

矩阵键盘部分程序的程序流程如图22所示。

图2.2 键盘扫描设计流程图

  这里矩阵键盘使用51单片机一组寄存器高四位做行,第四位做列,每次改变高低四位电平,判断该电平是否改变,若改变就代表按键被按下。按键值key按要求改变,测量五次取测得最多次数的key,这样可以降低干扰,且十分有效。

2.3 红外遥控程序

红外遥控是将红外信号转化为流程图如图2.3所示从这里面也可以看出,红外遥控首先要有一个9ms低电平,4.5ms高电平的重传引导信号,这里时间太长就直接判断为干扰,而后进入读取过程后,逻辑1为0.56ms低电平,1.25ms高电平,逻辑0位0.56ms低电平,0.56ms高电平。

图2.3 修改密码设计流程图

2.4 AD转换

这里是传感器采集信号的输入识别过程,由于外界环境比较复杂,所以传感器输入信号波动很正常,但是我们的显示不能这样,所以这里利用对比采集来减少误差,让传感器显示结果不那么波动,其流程图如下。

图2.4 开锁设计流程图

2.5 显示

显示过程由于既要显示数码管来验证,按键和红外传感器的准确性,又要显示LCD,所以寻找一个方法让显示不混乱,可以清晰舒服的看到显示结果是很重要的,其流程图如图2.5所示。

图2.5 显示设计流程图

  这里是利用定时器,严格控制显示时间。并将定时器中的内容做到尽可能少,能放到主函数中的事情决不放到定时器中。

2.6 epprom读取

epprom的读写是依靠读写标志位来确定的,这里单独说一下读操作,写入与这个类似就不多叙述了。这里的流程图如下:

图2.6 读取epprom设计流程图

  这里每次读取内容都要寻求地址,地址最高为255,这里采取多次读取,若不相等就更新一次,将第一次读取数据忽略。这样可以降低干扰,保证读写准确。

3 小结

根据多功能闹钟的功能要求,概括了功能的总体设计,再分别对每一个功能实现进行具体的展开,通过流程图对各个功能的实现进行了详细的阐述。

多功能闹钟功能测试

针对多功能闹钟的软硬件设计以及功能要求,提出了电子密码锁功能测试的要求,并对其各个功能进行了详细的测试,验证了每个功能的有效性和可靠性。

1. 测试要求

多功能闹钟的主要功能测试要求如下:  

1. 按键准确;

2. 能够实现遥控;

3. 时钟运行准确;

4. 通过epprom保存信息,并可以在下次启动时准确读取;

5. 传感器采集信号正常。

6. 电机和蜂鸣器响应正常

7. 闹钟设置正常

2. 功能测试

2.1 闹钟测试

1. 测试步骤

(1) 设置闹钟;

(2) 调节当前时间靠近设定时间;

(3) 看蜂鸣器是否响。

2. 测试结果

执行步骤(1)后,显示屏上的内容如下图所示,这里面的第一个0为星期一不设置闹钟,第二个1是星期二设置闹钟,一共7个数字,第二张图片是显示闹钟设置的时间,可以按7或8切换页面来调节小时和秒。

设置工作日

设置时间

图2.1 闹钟设置图

执行完上面过程后,可以查看现在时间,这里显示精度虽然是1秒,但是实际上其误差小于1us。

图2.2 当前时间显示图

这里设置星期,小时,分钟到相应位置就可以了,月份和年份按正常来就可以了,调节完成后可以正常听到蜂鸣器。

图2.2 当前时间修改示意图

2.2 传感器调节

1. 测试步骤

(1) 查看传感器当前值;

(2) 修改当前传感器值,直到超过报警值;

(3) 看光照超过120后蜂鸣器是否响;

(4) 看温度超过30度后,电机是否转动。

2. 测试结果

运行(1)后查看传感器当前值:

图2.3 传感器测量值图

  修改传感器值的情况如下,明显可以看到电机可以正常转动:

图2.4 调节温度

图2.5 光敏传感器调整

明显调整后蜂鸣器可以发出叫声。

2.3 遥控控制

1. 测试步骤

(1) 用遥控器强制开启蜂鸣器,电机;

(2) 手动关闭遥控;

(3) 看关闭遥控后是否还可以遥控设备;

2. 测试结果

运行完1后结果如下,根据LCD上面的提示开启电机和蜂鸣器,红外遥控:

图2.6 强制电机开启

图2.4 关闭红外遥控图

关闭和打开红外遥控只能靠矩阵键盘控制,关闭后直接关闭外部中断0,成功拒绝红外信号输入。

2.4 数据保存

1. 测试步骤

(1) 查看时间

(2) 重启后查看当前闹钟时间,对比看时钟是否重新开启过;

2. 测试结果

重置前时间

重置后时间

从时间上来看,我们重启并没有让ds1302时钟重启,这确定了我们的epprom存储与读取是正确的。

3. 小结

经过对各项功能的测试,以及对测试结果的分析,可以总结出,最终的多功能闹钟够正常实现所有设计的功能。

注意工程里面直接把u8,u16的定义放reg52.h里面了

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值