第34节:在数码管中实现iphone4S开机密码锁的程序
时间:11-22
来源:互联网
点击:
- t6;//数码管6的小数点是否显示的标志
- unsigned char ucDigDot5;//数码管5的小数点是否显示的标志
- unsigned char ucDigDot4;//数码管4的小数点是否显示的标志
- unsigned char ucDigDot3;//数码管3的小数点是否显示的标志
- unsigned char ucDigDot2;//数码管2的小数点是否显示的标志
- unsigned char ucDigDot1;//数码管1的小数点是否显示的标志
- unsigned char ucDigShowTemp=0; //临时中间变量
- unsigned char ucDisplayDriveStep=1;//动态扫描数码管的步骤变量
- unsigned char ucWd1Update=1; //窗口1更新显示标志
- unsigned char ucWd2Update=0; //窗口2更新显示标志
- unsigned char ucWd3Update=0; //窗口3更新显示标志
- unsigned char ucWd=1;//本程序的核心变量,窗口显示变量。类似于一级菜单的变量。代表显示不同的窗口。
- unsigned char ucInputPassword[4];//在第1个窗口下,显示输入的4个密码
- unsigned char ucPasswordCnt=0; //记录当前已经输入到哪一位密码了
- unsigned char ucKeyNumber=1;//在第2个窗口下,显示当前被按下的按键
- unsigned intuiNoKeyPushTimer=const_no_key_push;//10秒内无按键按下的计时器
- unsigned intuiPasswordTimer=const_0_1s;//显示0.5秒钟全部密码的计时器,让窗口3停留显示0.5秒钟之后自动消失
- unsigned char ucTemp1=0;//中间过渡变量
- unsigned char ucTemp2=0;//中间过渡变量
- unsigned char ucTemp3=0;//中间过渡变量
- unsigned char ucTemp4=0;//中间过渡变量
- //根据原理图得出的共阴数码管字模表
- code unsigned char dig_table[]=
- {
- 0x3f,//0 序号0
- 0x06,//1 序号1
- 0x5b,//2 序号2
- 0x4f,//3 序号3
- 0x66,//4 序号4
- 0x6d,//5 序号5
- 0x7d,//6 序号6
- 0x07,//7 序号7
- 0x7f,//8 序号8
- 0x6f,//9 序号9
- 0x00,//无 序号10
- 0x40,//- 序号11
- 0x73,//P 序号12
- };
- void main()
- {
- initial_myself();
- delay_long(100);
- initial_peripheral();
- while(1)
- {
- key_service(); //按键服务的应用程序
- display_service(); //显示的窗口菜单服务程序
- }
- }
- /* 注释一:
- *鸿哥首次提出的"一二级菜单显示理论":
- *凡是人机界面显示,不管是数码管还是液晶屏,都可以把显示的内容分成不同的窗口来显示,
- *每个显示的窗口中又可以分成不同的局部显示。其中窗口就是一级菜单,用ucWd变量表示。
- *局部就是二级菜单,用ucPart来表示。不同的窗口,会有不同的更新显示变量ucWdXUpdate来对应,
- *表示整屏全部更新显示。不同的局部,也会有不同的更新显示变量ucWdXPartYUpdate来对应,表示局部更新显示。
- */
- void display_service() //显示的窗口菜单服务程序
- {
- switch(ucWd)//本程序的核心变量,窗口显示变量。类似于一级菜单的变量。代表显示不同的窗口。
- {
- case 1: //显示输入密码的登录框
- if(ucWd1Update==1)//窗口1要全部更新显示
- {
- ucWd1Update=0;//及时清零标志,避免一直进来扫描
- ucDigShow8=10;//第8位数码管显示无
- ucDigShow7=10;//第7位数码管显示无
- ucDigShow6=10;//第6位数码管显示无
- ucDigShow5=10;//第5位数码管显示无
- ucDigShow4=ucInputPassword[0];//第4位数码管显示输入的密码
- ucDigShow3=ucInputPassword[1];//第3位数码管显示输入的密码
- ucDigShow2=ucInputPassword[2];//第2位数码管显示输入的密码
- ucDigShow1=ucInputPassword[3];//第1位数码管显示输入的密码
- }
- break;
- case 2://显示被按下的键值
- if(ucWd2Update==1)//窗口2要全部更新显示
- {
- ucWd2Update=0;//及时清零标志,避免一直进来扫描
- ucDigShow8=10;//第8位数码管显示无
- ucDigShow7=10;//第7位数码管显示无
- ucDigShow6=10;//第6位数码管显示无
- ucDigShow5=10;//第5位数码管显示无
- ucDigShow4=10;//第4位数码管显示无
- ucDigShow3=10;//第3位数码管显示无
- ucDigShow2=10;//第2位数码管显示无
- ucDigShow1=ucKeyNumber; //第1位数码管显示被按下的键值
- }
- break;
- case 3: //当输入完4个密码后,显示1秒钟的密码登录框,
- if(ucWd3Update==1)//窗口3要全部更新显示
- {
- ucWd3Update=0;//及时清零标志,避免一直进来扫描
- ucDigShow8=10;//第8位数码管显示无
- ucDigShow7=10;//第7位数码管显示无
- ucDigShow6=10;//第6位数码管显示无
- ucDigShow5=10;//第5位数码管显示无
- ucDigShow4=ucInputPassword[0];//第4位数码管显示输入的密码
- ucDigShow3=ucInputPassword[1];//第3位数码管
数码管开机密码 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)