微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第46节:利用AT24C02进行掉电后的数据保存

第46节:利用AT24C02进行掉电后的数据保存

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

  1. if(uiSetData2>if(uiSetData2>9999)
  2. {
  3. uiSetData2=0;//最小值是0
  4. }
  5. write_eeprom_int(2,uiSetData2); //存入EEPROM,由于内部有延时函数,所以此处会引起数码管闪烁
  6. ucWd2Update=1;//窗口2更新显示
  7. break;
  8. case 3:
  9. uiSetData3--;
  10. if(uiSetData3>9999)
  11. {
  12. uiSetData3=0;//最小值是0
  13. }
  14. write_eeprom_int(4,uiSetData3); //存入EEPROM,由于内部有延时函数,所以此处会引起数码管闪烁
  15. ucWd3Update=1;//窗口3更新显示
  16. break;
  17. case 4:
  18. uiSetData4--;
  19. if(uiSetData4>9999)
  20. {
  21. uiSetData4=0;//最小值是0
  22. }
  23. write_eeprom_int(6,uiSetData4); //存入EEPROM,由于内部有延时函数,所以此处会引起数码管闪烁
  24. ucWd4Update=1;//窗口4更新显示
  25. break;
  26. }
  27. ucVoiceLock=1;//原子锁加锁,保护主函数与中断函数的共享变量uiVoiceCnt
  28. uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
  29. ucVoiceLock=0;//原子锁解锁,保护主函数与中断函数的共享变量uiVoiceCnt
  30. ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
  31. break;
  32. case 3:// 切换窗口按键 对应朱兆祺学习板的S9键
  33. ucWd++;//切换窗口
  34. if(ucWd>4)
  35. {
  36. ucWd=1;
  37. }
  38. switch(ucWd)//在不同的窗口下,在不同的窗口下,更新显示不同的窗口
  39. {
  40. case 1:
  41. ucWd1Update=1;//窗口1更新显示
  42. break;
  43. case 2:
  44. ucWd2Update=1;//窗口2更新显示
  45. break;
  46. case 3:
  47. ucWd3Update=1;//窗口3更新显示
  48. break;
  49. case 4:
  50. ucWd4Update=1;//窗口4更新显示
  51. break;
  52. }
  53. ucVoiceLock=1;//原子锁加锁,保护主函数与中断函数的共享变量uiVoiceCnt
  54. uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
  55. ucVoiceLock=0;//原子锁解锁,保护主函数与中断函数的共享变量uiVoiceCnt
  56. ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
  57. break;
  58. }
  59. }
  60. void display_drive(void)
  61. {
  62. //以下程序,如果加一些数组和移位的元素,还可以压缩容量。但是鸿哥追求的不是容量,而是清晰的讲解思路
  63. switch(ucDisplayDriveStep)
  64. {
  65. case 1://显示第1位
  66. ucDigShowTemp=dig_table[ucDigShow1];
  67. if(ucDigDot1==1)
  68. {
  69. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  70. }
  71. dig_hc595_drive(ucDigShowTemp,0xfe);
  72. break;
  73. case 2://显示第2位
  74. ucDigShowTemp=dig_table[ucDigShow2];
  75. if(ucDigDot2==1)
  76. {
  77. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  78. }
  79. dig_hc595_drive(ucDigShowTemp,0xfd);
  80. break;
  81. case 3://显示第3位
  82. ucDigShowTemp=dig_table[ucDigShow3];
  83. if(ucDigDot3==1)
  84. {
  85. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  86. }
  87. dig_hc595_drive(ucDigShowTemp,0xfb);
  88. break;
  89. case 4://显示第4位
  90. ucDigShowTemp=dig_table[ucDigShow4];
  91. if(ucDigDot4==1)
  92. {
  93. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  94. }
  95. dig_hc595_drive(ucDigShowTemp,0xf7);
  96. break;
  97. case 5://显示第5位
  98. ucDigShowTemp=dig_table[ucDigShow5];
  99. if(ucDigDot5==1)
  100. {
  101. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  102. }
  103. dig_hc595_drive(ucDigShowTemp,0xef);
  104. break;
  105. case 6://显示第6位
  106. ucDigShowTemp=dig_table[ucDigShow6];
  107. if(ucDigDot6==1)
  108. {
  109. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  110. }
  111. dig_hc595_drive(ucDigShowTemp,0xdf);
  112. break;
  113. case 7://显示第7位
  114. ucDigShowTemp=dig_table[ucDigShow7];
  115. if(ucDigDot7==1)
  116. {
  117. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  118. }
  119. dig_hc595_drive(ucDigShowTemp,0xbf);
  120. break;
  121. case 8://显示第8位
  122. ucDigShowTemp=dig_table[ucDigShow8];
  123. if(ucDigDot8==1)
  124. {
  125. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  126. }
  127. dig_hc595_drive(ucDigShowTemp,0x7f);
  128. break;

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

网站地图

Top