理论教育 零点起步-PIC单片机常用模块与实例,软件设计

零点起步-PIC单片机常用模块与实例,软件设计

时间:2023-10-19 理论教育 版权反馈
【摘要】:在软件设计上,由于前文已经完成了矩阵键盘和字符式液晶模块的驱动模块,直接放到本项目中调用即可。根据前文介绍过的软件功能设计流程,完成电子密码锁控制器的逻辑控制程序。图13-25 电子密码锁控制器硬件原理图题意分析●根据软件功能流程图13-24可知,程序的主循环应该是等待用户的按键输入。图13-26 电子密码锁控制器项目文件列表5)把项目保存后成功编译出目标文件。

零点起步-PIC单片机常用模块与实例,软件设计

软件设计上,由于前文已经完成了矩阵键盘和字符式液晶模块的驱动模块,直接放到本项目中调用即可。蜂鸣器和锁控制信号都是简单的逻辑信号,处理也不难。但是,此系统的难点在于密码式控制系统需要与用户做大量的交流功能,必须保证任何功能下的逻辑正确性。这就要工程师具有清晰的功能设计思路。为了便于工程师理清密码键盘的工作流程,建议绘制流程图来明确系统工作流程。对于密码式控制系统而言,一个参考的功能流程图如图13-24所示。

通过图13-24可以看出键盘处理占据了主要的软件功能流程,所以键盘的功能处理必须严谨、准确,不能有遗漏,避免出现逻辑错误。这就需要工程师在编程时要小心谨慎,充分考虑不同步骤时用户可能输入的按键是否有效。一般情况下建议特殊功能键在特定条件下才判断,如修改密码按键只有密码正确后才需要判断,而在正常密码输入阶段应该忽略修改密码按键并通过蜂鸣器报警防止用户输入错误。多说无益,还是建议看程序。初学者只有多看他人代码、多动手自己编写程序才能有本质提高。

978-7-111-33274-9-Chapter13-50.jpg

图13-24 电子密码锁控制器的软件功能流程图

【例13-5】电路如图13-25所示。根据前文介绍过的软件功能设计流程,完成电子密码锁控制器的逻辑控制程序。

电路图在光盘位置:“\Example\Chapter13\S134\LOCK_CTRL.DSN”。

978-7-111-33274-9-Chapter13-51.jpg

图13-25 电子密码锁控制器硬件原理图

题意分析

●根据软件功能流程图13-24可知,程序的主循环应该是等待用户的按键输入。为了简单方便,设定密码为6位数字。使用前文完成的GetKeyValue函数即可获得输入的键值。然后根据键值来决定下一步的动作。输入的按键有5种情况。

●第一种是0~9之间的数字,应将其按顺序作为密码的一部分并在液晶模块上显示“*”号。

●第二种是退格键,在密码内容中应删除上次输入的数字,显示上也应退一格并删除一个“*”号。

●第三种是确定键,表示密码输入完毕,进入密码比较流程;当密码匹配时则发出开锁信号,否则显示错误信息并用声音提示,当连续输入3次密码不对,则长时间发声报警。过一段时间后方能继续重试密码。

●第四种是修改密码键,只有密码输入正确开锁后才有效,其他状态时无效按键,无效时按下应通过声音提示用户输入错误。修改密码过程与输入密码过程类似。

●第五种是C、D和E键,本系统中未用到这几个键,应提示用户输入错误。

●为了防止系统掉电,用户的密码应该保存在非易失性存储器中。本例直接保存在PIC单片机内部的EEPROM中。HT-PIC有专用的内部EEPROM读/写函数eeprom_read和eeprom_write,很容易实现EEPROM的存取。在系统初始化时需要从EEPROM读取掉电前的用户密码,用于与开锁者输入的密码作比较。密码修改成功后,新密码应该写入EEPROM。

●本设计中采用字符式液晶模块作为显示界面,应该通过液晶模块显示每一次操作的提示语,便于用户理解。

●在发声功能上,警告声音为蜂鸣器发一短声音,报警声音为一长声音即可。(www.daowen.com)

设计过程

1)用MPLAB新建项目S134,语言工具选择为“HI-TECH Universal Toolsuite”,保存在“C:\S134”文件夹下。

2)新建main.c文件并加入项目中,其内容如下所示(本项目所有源码内容参考光盘“\Example\Chapter13\S134”文件夹内容)。

978-7-111-33274-9-Chapter13-52.jpg

978-7-111-33274-9-Chapter13-53.jpg

978-7-111-33274-9-Chapter13-54.jpg

978-7-111-33274-9-Chapter13-55.jpg

978-7-111-33274-9-Chapter13-56.jpg

978-7-111-33274-9-Chapter13-57.jpg

978-7-111-33274-9-Chapter13-58.jpg

3)本项目还需要LCD1602.H、LCD1602.C、delay.h、delay.c、keyboard.c、keyboard.h。从前文完成的项目中找到并复制到当前项目所在文件,并在MPLAB中将这些文件加入项目。所有文件列表如图13-26所示。

4)由于本系统中除了0~9数字之外,还有其他按键,所以把keyboard.c中的键值与扫描码对应关系的数组进行如下修改。

978-7-111-33274-9-Chapter13-59.jpg

图13-26 电子密码锁控制器项目文件列表

978-7-111-33274-9-Chapter13-60.jpg

5)把项目保存后成功编译出目标文件。然后用调试工具Proteus VSM加载本例电路图。启动VSM后运行程序。程序运行效果是液晶屏显示“Input Password:”,读者可以根据图13-24的功能流程来测试系统逻辑功能。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈