微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第34节:在数码管中实现iphone4S开机密码锁的程序

第34节:在数码管中实现iphone4S开机密码锁的程序

时间:11-22 来源:互联网 点击:

  1. t6;//数码管6的小数点是否显示的标志
  2. unsigned char ucDigDot5;//数码管5的小数点是否显示的标志
  3. unsigned char ucDigDot4;//数码管4的小数点是否显示的标志
  4. unsigned char ucDigDot3;//数码管3的小数点是否显示的标志
  5. unsigned char ucDigDot2;//数码管2的小数点是否显示的标志
  6. unsigned char ucDigDot1;//数码管1的小数点是否显示的标志
  7. unsigned char ucDigShowTemp=0; //临时中间变量
  8. unsigned char ucDisplayDriveStep=1;//动态扫描数码管的步骤变量
  9. unsigned char ucWd1Update=1; //窗口1更新显示标志
  10. unsigned char ucWd2Update=0; //窗口2更新显示标志
  11. unsigned char ucWd3Update=0; //窗口3更新显示标志
  12. unsigned char ucWd=1;//本程序的核心变量,窗口显示变量。类似于一级菜单的变量。代表显示不同的窗口。
  13. unsigned char ucInputPassword[4];//在第1个窗口下,显示输入的4个密码
  14. unsigned char ucPasswordCnt=0; //记录当前已经输入到哪一位密码了
  15. unsigned char ucKeyNumber=1;//在第2个窗口下,显示当前被按下的按键
  16. unsigned intuiNoKeyPushTimer=const_no_key_push;//10秒内无按键按下的计时器
  17. unsigned intuiPasswordTimer=const_0_1s;//显示0.5秒钟全部密码的计时器,让窗口3停留显示0.5秒钟之后自动消失
  18. unsigned char ucTemp1=0;//中间过渡变量
  19. unsigned char ucTemp2=0;//中间过渡变量
  20. unsigned char ucTemp3=0;//中间过渡变量
  21. unsigned char ucTemp4=0;//中间过渡变量
  22. //根据原理图得出的共阴数码管字模表
  23. code unsigned char dig_table[]=
  24. {
  25. 0x3f,//0 序号0
  26. 0x06,//1 序号1
  27. 0x5b,//2 序号2
  28. 0x4f,//3 序号3
  29. 0x66,//4 序号4
  30. 0x6d,//5 序号5
  31. 0x7d,//6 序号6
  32. 0x07,//7 序号7
  33. 0x7f,//8 序号8
  34. 0x6f,//9 序号9
  35. 0x00,//无 序号10
  36. 0x40,//- 序号11
  37. 0x73,//P 序号12
  38. };
  39. void main()
  40. {
  41. initial_myself();
  42. delay_long(100);
  43. initial_peripheral();
  44. while(1)
  45. {
  46. key_service(); //按键服务的应用程序
  47. display_service(); //显示的窗口菜单服务程序
  48. }
  49. }
  50. /* 注释一:
  51. *鸿哥首次提出的"一二级菜单显示理论":
  52. *凡是人机界面显示,不管是数码管还是液晶屏,都可以把显示的内容分成不同的窗口来显示,
  53. *每个显示的窗口中又可以分成不同的局部显示。其中窗口就是一级菜单,用ucWd变量表示。
  54. *局部就是二级菜单,用ucPart来表示。不同的窗口,会有不同的更新显示变量ucWdXUpdate来对应,
  55. *表示整屏全部更新显示。不同的局部,也会有不同的更新显示变量ucWdXPartYUpdate来对应,表示局部更新显示。
  56. */
  57. void display_service() //显示的窗口菜单服务程序
  58. {
  59. switch(ucWd)//本程序的核心变量,窗口显示变量。类似于一级菜单的变量。代表显示不同的窗口。
  60. {
  61. case 1: //显示输入密码的登录框
  62. if(ucWd1Update==1)//窗口1要全部更新显示
  63. {
  64. ucWd1Update=0;//及时清零标志,避免一直进来扫描
  65. ucDigShow8=10;//第8位数码管显示无
  66. ucDigShow7=10;//第7位数码管显示无
  67. ucDigShow6=10;//第6位数码管显示无
  68. ucDigShow5=10;//第5位数码管显示无
  69. ucDigShow4=ucInputPassword[0];//第4位数码管显示输入的密码
  70. ucDigShow3=ucInputPassword[1];//第3位数码管显示输入的密码
  71. ucDigShow2=ucInputPassword[2];//第2位数码管显示输入的密码
  72. ucDigShow1=ucInputPassword[3];//第1位数码管显示输入的密码
  73. }
  74. break;
  75. case 2://显示被按下的键值
  76. if(ucWd2Update==1)//窗口2要全部更新显示
  77. {
  78. ucWd2Update=0;//及时清零标志,避免一直进来扫描
  79. ucDigShow8=10;//第8位数码管显示无
  80. ucDigShow7=10;//第7位数码管显示无
  81. ucDigShow6=10;//第6位数码管显示无
  82. ucDigShow5=10;//第5位数码管显示无
  83. ucDigShow4=10;//第4位数码管显示无
  84. ucDigShow3=10;//第3位数码管显示无
  85. ucDigShow2=10;//第2位数码管显示无
  86. ucDigShow1=ucKeyNumber; //第1位数码管显示被按下的键值
  87. }
  88. break;
  89. case 3: //当输入完4个密码后,显示1秒钟的密码登录框,
  90. if(ucWd3Update==1)//窗口3要全部更新显示
  91. {
  92. ucWd3Update=0;//及时清零标志,避免一直进来扫描
  93. ucDigShow8=10;//第8位数码管显示无
  94. ucDigShow7=10;//第7位数码管显示无
  95. ucDigShow6=10;//第6位数码管显示无
  96. ucDigShow5=10;//第5位数码管显示无
  97. ucDigShow4=ucInputPassword[0];//第4位数码管显示输入的密码
  98. ucDigShow3=ucInputPassword[1];//第3位数码管

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top