第34节:在数码管中实现iphone4S开机密码锁的程序
时间:11-22
来源:互联网
点击:
- 显示输入的密码
- ucDigShow2=ucInputPassword[2];//第2位数码管显示输入的密码
- ucDigShow1=ucInputPassword[3];//第1位数码管显示输入的密码
- }
- break;
- }
- }
- void key_scan()//按键扫描函数 放在定时中断里
- {
- switch(ucKeyStep)
- {
- case 1: //按键扫描输出第ucRowRecord列低电平
- if(ucRowRecord==1)//第一列输出低电平
- {
- key_dr1=0;
- key_dr2=1;
- key_dr3=1;
- key_dr4=1;
- }
- else if(ucRowRecord==2)//第二列输出低电平
- {
- key_dr1=1;
- key_dr2=0;
- key_dr3=1;
- key_dr4=1;
- }
- else if(ucRowRecord==3)//第三列输出低电平
- {
- key_dr1=1;
- key_dr2=1;
- key_dr3=0;
- key_dr4=1;
- }
- else //第四列输出低电平
- {
- key_dr1=1;
- key_dr2=1;
- key_dr3=1;
- key_dr4=0;
- }
- uiKeyTimeCnt=0;//延时计数器清零
- ucKeyStep++; //切换到下一个运行步骤
- break;
- case 2: //此处的小延时用来等待刚才列输出信号稳定,再判断输入信号。不是去抖动延时。
- uiKeyTimeCnt++;
- if(uiKeyTimeCnt>1)
- {
- uiKeyTimeCnt=0;
- ucKeyStep++; //切换到下一个运行步骤
- }
- break;
- case 3:
- if(key_sr1==1&&key_sr2==1&&key_sr3==1&&key_sr4==1)
- {
- ucKeyStep=1;//如果没有按键按下,返回到第一个运行步骤重新开始扫描
- ucKeyLock=0;//按键自锁标志清零
- uiKeyTimeCnt=0; //按键去抖动延时计数器清零,此行非常巧妙
- ucRowRecord++;//输出下一列
- if(ucRowRecord>4)
- {
- ucRowRecord=1; //依次输出完四列之后,继续从第一列开始输出低电平
- }
- }
- else if(ucKeyLock==0)//有按键按下,且是第一次触发
- {
- if(key_sr1==0&&key_sr2==1&&key_sr3==1&&key_sr4==1)
- {
- uiKeyTimeCnt++;//去抖动延时计数器
- if(uiKeyTimeCnt>const_key_time)
- {
- uiKeyTimeCnt=0;
- ucKeyLock=1;//自锁按键置位,避免一直触发,只有松开按键,此标志位才会被清零
- if(ucRowRecord==1)//第一列输出低电平
- {
- ucKeySec=1;//触发1号键 对应朱兆祺学习板的S1键
- }
- else if(ucRowRecord==2)//第二列输出低电平
- {
- ucKeySec=2;//触发2号键 对应朱兆祺学习板的S2键
- }
- else if(ucRowRecord==3)//第三列输出低电平
- {
- ucKeySec=3;//触发3号键 对应朱兆祺学习板的S3键
- }
- else //第四列输出低电平
- {
- ucKeySec=4;//触发4号键 对应朱兆祺学习板的S4键
- }
- }
- }
- else if(key_sr1==1&&key_sr2==0&&key_sr3==1&&key_sr4==1)
- {
- uiKeyTimeCnt++;//去抖动延时计数器
- if(uiKeyTimeCnt>const_key_time)
- {
- uiKeyTimeCnt=0;
- ucKeyLock=1;//自锁按键置位,避免一直触发,只有松开按键,此标志位才会被清零
- if(ucRowRecord==1)//第一列输出低电平
- {
- ucKeySec=5;//触发5号键 对应朱兆祺学习板的S5键
- }
- else if(ucRowRecord==2)//第二列输出低电平
- {
- ucKeySec=6;//触发6号键 对应朱兆祺学习板的S6键
- }
- else if(ucRowRecord==3)//第三列输出低电平
- {
- ucKeySec=7;//触发7号键 对应朱兆祺学习板的S7键
- }
- else //第四列输出低电平
- {
- ucKeySec=8;//触发8号键 对应朱兆祺学习板的S8键
- }
- }
- }
- else if(key_sr1==1&&key_sr2==1&&key_sr3==0&&key_sr4==1)
- {
- uiKeyTimeCnt++;//去抖动延时计数器
- if(uiKeyTimeCnt>const_key_time)
- {
- uiKeyTimeCnt=0;
- ucKeyLock=1;//自锁按键置位,避免一直触发,只有松开按键,此标志位才会被清零
- if(ucRowRecord==1)//第一列输出低电平
- {
- ucKeySec=9;//触发9号键 对应朱兆祺学习板的S9键
- }
- else if(ucRowRecord==2)//第二列输出低电平
- {
- ucKeySec=10;//触发10号键 对应朱兆祺学习板的S10键
- }
- else if(ucRowRecord==3
数码管开机密码 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)