找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2123|回复: 0
打印 上一主题 下一主题
收起左侧

基于HC32F460开发板的秘密锁功能实现

[复制链接]
跳转到指定楼层
楼主
本帖最后由 jinglixixi 于 2020-10-2 13:41 编辑

HC32F460的开发板上,提供了一个I2C接口的AT24C02存储芯片,通过它可进行关键参数的读写。
由于其存储容量相对较小,故不适宜做字库或图库来使用。
AT24C02的接口原理图如图1所示,其占用的MCU引脚如下:
SCL---PC4
SDA--- PC4

   
1 AT24C02接口


在结合OLED 屏及阵列按键的情况下,我们可以将其设计为一个秘密锁。
OLED 屏的接口原理图如图2所示,其占用的MCU引脚如下:
SCL---PD0
SDA--- PD1

                  
2  OLED 屏接口


阵列按键的接口原理图如图3所示,其占用的MCU引脚如下:
KEYOUT0---PD12
KEYOUT1---PD13
KEYOUT2---PD14
KEYIN0---PA4
KEYIN1---PA5
KEYIN2---PA6


3  阵列按键接口


实现秘密门锁的主要程序如下:
  1. OLED_ShowString(0,0,"AT24C02  OK !",16);
  2. OLED_ShowString(88,2,"CLOSE",16);      
  3. i=0;
  4. n=0;
  5. m=0;
  6. OLED_ShowString(0,2,"KEY=",16);
  7. while(1)
  8. {
  9. if(n==0)
  10. {
  11. PORT_ResetBits(PortD, Pin12);
  12. PORT_SetBits(PortD, Pin14);
  13. PORT_SetBits(PortD, Pin13);
  14. m=0;
  15. }
  16. keycan();
  17. if(n==0)
  18. {
  19. PORT_SetBits(PortD, Pin12);
  20. PORT_ResetBits(PortD, Pin13);
  21. PORT_SetBits(PortD, Pin14);
  22. m=3;
  23. }
  24. keycan();
  25. if(n==0)
  26. {
  27. PORT_SetBits(PortD, Pin12);
  28. PORT_SetBits(PortD, Pin13);
  29. PORT_ResetBits(PortD, Pin14);
  30. m=6;
  31. }
  32. keycan();
  33. if(n>0)
  34. {
  35. OLED_ShowNum(40+8*i,2,n+m,1,16);      
  36. key[i]=n+m;
  37. i++;
  38. n=0;
  39. }

  40. if(i==5)
  41. {
  42. for(i=0ul; i<5; i++)
  43. {
  44. if(key[i] != u8RxBuf[i]) // 13528-741
  45. {
  46. OLED_ShowString(0,2,"KEY=    ",16);
  47. i=0;
  48. n=0;
  49. }
  50. else
  51. {
  52. OLED_ShowString(88,2,"OPEN ",16);
  53. while(1);
  54. }
  55. }
  56. }
  57. Ddl_Delay1ms(200ul);
  58. }
复制代码

编译下载程序后,相关的运行效果如图4~6所示。

4 初始界面



5 提示界面



6 解锁界面


感兴趣的话还可以在此基础上添加密码的修改功能,其处理方式为按功能键激活密码修改功能,然后先输入原密码并与AT24C02中的钥匙比较,若正确再输入新密码并存入AT24C02中作为钥匙保存。由于密码的存放位置不变,故程序无需进行变更。若是密码存放在程序中,则要想修改密码,就只能修改程序并重新下载了!


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表