查看: 141|回复: 2

[活动] 【赚周年币】技术帖_基于LPC824 开发板的触摸式门禁控制

[复制链接]

81

主题

2

好友

1679

积分

进士

Rank: 5Rank: 5

  • TA的每日心情
    奋斗
    4 小时前
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    爱板会员勋章 活跃会员勋章

    发表于 2016-12-4 20:58:13 |显示全部楼层
    [size=18.018px]新得到了一个触摸传感器模块,欣喜之余决定将其用在门禁上。那这个模块有何特点呢?
    [size=18.018px]该模块的外观如图1所示,其共有3个引脚,其中2个是电源引脚,另一个则是信号输出端。该模块的供电范围为3-5V,加电后绿色LED灯就被点亮以指示电源的存在,当用手触摸时,SIG输出一个高电平;当手离开时,则输出低电平。
    [size=18.018px]
    [size=18.018px]1 触摸传感器模块

    [size=18.018px]根据上述特点,可替代开关或按键的,其不但手感好,也有利于延长输入器件的寿命,过很适合用来作门禁的信号输入。
    [size=18.018px]该触摸式门禁装置以LPC824开发板为核心,并配以OLED屏来显示门控状态,由外接的门磁来控制门的开合。
    [size=18.018px]门控状态如图2所示,所涉及的显示函数如下:
    1. void cd1()
    2. {   // 触摸式门禁
    3.         OLED_ShowCHinese(18,0,13);  
    4.         OLED_ShowCHinese(36,0,14);
    5.         OLED_ShowCHinese(54,0,15);  
    6.         OLED_ShowCHinese(72,0,16);  
    7.         OLED_ShowCHinese(90,0,17);   
    8. }
    9. void cd2()
    10. {   // 有人到访!
    11.         OLED_Clear();
    12.         cd1();
    13.         OLED_ShowCHinese(0,2,3);  
    14.         OLED_ShowCHinese(18,2,4);  
    15.         OLED_ShowCHinese(36,2,5);  
    16.         OLED_ShowCHinese(54,2,6);         
    17.         OLED_ShowCHinese(72,2,7);  
    18. }
    19. void cd3()
    20. {   // 朋友请进。
    21.         OLED_Clear();
    22.         cd1();
    23.         OLED_ShowCHinese(0,4,8);  
    24.         OLED_ShowCHinese(18,4,9);  
    25.         OLED_ShowCHinese(36,4,10);  
    26.         OLED_ShowCHinese(54,4,11);         
    27.         OLED_ShowCHinese(72,4,12);  
    28. }
    复制代码
    snap.jpg

    snap1.jpg

    2门控状态指示

    主函数的内容为:
    1. int main(void)
    2. {
    3.     uint32_t num=0;
    4.     GPIOInit();
    5.     GPIOSetDir(LPC_GPIO_PORT->PIN0, 6, 0);    // CM
    6.         GPIOSetDir(LPC_GPIO_PORT->PIN0, 16, 1);   // LED
    7.         OLED_Init();                         
    8.         OLED_Clear();
    9.         cd1();
    10.         GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 16, 0 );
    11.     while(1)
    12.         {
    13.             if(GPIOGetPinValue(LPC_GPIO_PORT->PIN0,6))
    14.         {
    15.                    GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 16,1 );
    16.             if(num%2==0) cd2();
    17.                     else  cd3();
    18.                     num++;
    19.         }
    20.                 else GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 16,0 );
    21.                 Delay_1ms(1000);       
    22.         }
    23. }
    复制代码
    回复

    使用道具 举报

    5

    主题

    1

    好友

    1209

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情

    4 天前
  • 签到天数: 157 天

    连续签到: 5 天

    [LV.7]常住居民III

    发表于 2016-12-4 23:34:30 |显示全部楼层
    谢谢分享                        
    回复

    使用道具 举报

    81

    主题

    2

    好友

    1679

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    奋斗
    4 小时前
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    爱板会员勋章 活跃会员勋章

    发表于 2016-12-6 09:20:13 |显示全部楼层
    多谢支持!
    回复

    使用道具 举报

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

    关闭

    站长推荐上一条 /5 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-5-30 15:25 , Processed in 0.330371 second(s), 12 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部