2.11 大型综合实战--深大课程设计:时钟+数码管+矩阵按键+蜂鸣器发声
2.11.1 实验介绍
1、熟悉矩阵式按键扫描方法 2、了解使用74HC595控制LED数码管 3、软件模拟RTC,实现RTC的时、分、秒控制和设置 4、I/O控制无源蜂鸣器发声,Key0 ~ Key7按键按下,会发出对应的Do/Re/Mi/Fa/So/La/Si/Do音符 5、扩展部分:如何实现长按键 6、熟悉Ai8051U实验箱 7、熟练使用AIapp-ISP系统软件 8、本项目主要熟悉如何管理多文件项目
2.11.1.1 按键扫描说明
如按键要判断为正常按下,而不是抖动,需要该按键保持按下持续保持为低状态时间是20ms ~ 50ms; 主循环中有个1ms的时间基准,将按键扫描程序作为1ms事件,按键状态维持20ms不变,即可对按键去抖动,得到稳定的键码。
2.11.1.2 实验现象和操作说明
将本项目的HEX文件下载到Ai8051U的实验箱后 1、在LED数码管上面低6位会动态显示当前的RTC时间
2、按下两行4列的8个矩阵按键后: Ø 在LED数码管的最高位会显示当前的按键键码 Ø 同时会根据不同的按键发出不同按键音 (特别注意:需要将实验箱上“跳线3:蜂鸣器 / 原理图标号是J1C”的跳线连上,蜂鸣器才会发声)
3、矩阵按键中的按键0,是RTC模式设置键 Ø 上电后RTC为正常工作模式,此时数码管动态显示RTC时间 Ø 按一次按键0,RTC会切换为小时设置模式,此时RTC的小时值会0.5秒闪烁一次 Ø 再按一次按键0,RTC会切换为分钟设置模式,此时RTC的分钟值会0.5秒闪烁一次 Ø 再按一次按键0,RTC会切换为秒钟设置模式,此时RTC的秒钟值会0.5秒闪烁一次 Ø 在按一次按键0,恢复为RTC正常工作模式
4、矩阵按键中的按键4和5分别是上调键和下调键 Ø 只有在RTC的时/分/秒设置模式时,上调键和下调键才有效
5、时钟设置模式时,长按按键4和5,可实现快速设置功能
2.11.1.3 Keil环境下多文件项目管理说明
当项目的功能比较复杂时,就需要在Keil中建立多文件项目,以方便分工合作、代码复用、模块化管理、增强可读性和可维护性。 Ø 比较好的建议是将项目功能模块化,不同模块的实现代码放在不同的.c文件中。 Ø 一般建议是一个模块对应一个.c程序文件和一个.h头文件 Ø 模块的初始化函数以及相关的数据处理函数都在.c文件中实现 Ø 与模块相关的全局变量也必须在.c文件中进行定义,一定不能在.h文件中定义变量 Ø 如果有其他模块需要使用本模块定义的变量或函数,则这些函数和变量都需要在.h文件中声明。 Ø 特别提醒:在.h文件中声明外部变量必须使用extern关键字,否则就变成变量定义了,这样会出现变量重复定义的错误 Ø 为防止头文件被多次包含而产生错误或者警告,在头文件中使用类似如下的条件编译组合语句,可避免在同一个.c文件中对同一个.h头文件进行多次包含: #ifndef XXXX #define XXXX ... #endif
|