【新提醒】基于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中作为钥匙保存。由于密码的存放位置不变,故程序无需进行变更。若是密码存放在程序中,则要想修改密码,就只能修改程序并重新下载了!
(0)

相关推荐

  • 三家大厂同时聚焦USB type C,你更看好哪一家?

    在前面此间少年写过几篇帖子,简略地介绍了一下USB type C这个神奇的接口,下面有两篇文章 仅供大家参考:小观一下 USB Type CUSB Type C 缺点目前,据我所知,有三家厂商发布了 ...

  • I2C模拟

    * Function Name  : I2C_GPIO_Config * Description    : Configration Simulation IIC GPIO * Input       ...

  • HC-05模组HC-05蓝牙模组HC-05蓝牙双模

    hc05蓝牙模块 pin脚对pin脚,FSC-BT826是一款蓝牙4.2双模数传模块,可以同时支持SPP, GATT, HID协议.模块集成蓝牙基带芯片,Cortex M3 CPU及4M flash, ...

  • 【新提醒】HC32F460开发板OLED屏显示驱动

    与其他的开发板不同,在HC32F460开发板上配置了小巧别致的I2C接口OLED屏. 有了它,我们需要显示的数据和信息就不必完全借助于串口通信了! 好像是华大要测试测评者的水平,尽管开发板配置了OLE ...

  • 【新提醒】HC32F460开发板数据采样及显示

    HC32F460内置有2个独立的12位ADC,并在开发板上配有10K的电位器以模拟电位高低,见图1所示. 由原理图可知该电位器的引脚被连到MCU的PC0上,即ADC12_IN10. 图1 电位器连接 ...

  • 【新提醒】HC32F460开发板的程序下载及LED控制

    我使用的HC32F460开发板是基于HC32F460JETA,共有48个引脚.所使用的开发工具,则是第三方的雅特力调试下载器AT_LINK. 该开发板有别于原厂的HC32F460开发板,其LED灯的原 ...

  • 【新提醒】基于HC32F460开发板的RTC电子时钟

    在HC32F460内部配有RTC功能,这里我们为它配上OLED屏显示,这样它就构成一个RTC电子时钟. 所用的OLED屏就是随板子自带的,该OLED屏的原理图见图1所示. 图1  OLED屏原理图 本 ...

  • 【新提醒】基于HC32F460开发板的FLASH读写及字库构建测试

    本帖最后由 jinglixixi 于 2020-10-3 00:30 编辑 在HC32F460的开发板上,提供了一个SPI接口的W25Q64存储芯片,由于其存储容量较大,故适宜做字库或图库来使用. W ...

  • 【新提醒】基于HC32F460开发板的电机驱动及调速控制

    步进电机是一种常用的执行器件,使用它能进行精准的定位及转速调节等工作.一个简单的步进电机驱动要由步进电机.驱动电路及微控制器构成,见图1所示. 图1 步进电机驱动构成 在HC32F460开发板上,提供 ...

  • 【新提醒】HC32L072开发板之 KEY控制LED

    开发板上LED与KEY的原理图如图1所示,可以用SW1和SW2分别控制DS1和DS2.其程序如下: 图1  LED与KEY原理图 实现控制功能的程序如下: /********************* ...

  • 【新提醒】HC32L072开发板驱动 I2C接口光照传感器

    单有了显示单元还只是解决了人机交互的部分问题,要让机器具备感知能力就离不开传感器.传感器的种类有许多种,BH1750光照传感器就是其中的一种,它是一种基于I2C接口的数字式传感器,因此无需对获取的数据 ...

  • 【新提醒】HC32L136开发板的OLED驱动及应用

    在HC32L136开发板上配有一个笔段式的液晶屏,但无奈的是厂家却没提供一个能直接调用的显示函数. 在没解决该显示屏的显示函数前,先以轻车熟路的OLED屏来实现显示的问题. 由于手头的OLED屏是一款 ...