找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2064|回复: 1
打印 上一主题 下一主题
收起左侧

高三内宿辅助工具制作 附单片机代码

[复制链接]
跳转到指定楼层
楼主
高二后的暑假做了一个辅助内宿的东西,用了半年非常稳定,充一次电正常用一星期完全没问题发出来分享一下
主要功能:

看/改时间,做题计时,考试倒计时,打电话,高考倒计时
但当电量低于70%时不建议打电话
两个按键是电容键,背面的微动按键可以用于掉电模式唤醒
外壳=塑料板+502
纯手工接线方便实惠
代码公开在附件,因为全部自写,不习惯加注释,可以提供参考
还有108天就高考了,蝙蝠让我们成为特殊的一批高三生
刷题去了

制作出来的实物图如下:

IMG_20191214_182842(1).jpg (4.46 MB, 下载次数: 124)

IMG_20191214_182842(1).jpg

IMG_20191214_183826(1).jpg (3.65 MB, 下载次数: 136)

IMG_20191214_183826(1).jpg

IMG_20191229_195945.jpg (2.42 MB, 下载次数: 138)

一般用于做题计时

一般用于做题计时

default.jpg (274.34 KB, 下载次数: 139)

老版本的高考计时画面

老版本的高考计时画面

IMG_20191013_095056.jpg (2.62 MB, 下载次数: 136)

内部

内部

IMG_20190817_182454.jpg (1.78 MB, 下载次数: 124)

外壳=502胶水和塑料板

外壳=502胶水和塑料板

IMG_20190817_182430.jpg (2.15 MB, 下载次数: 137)

GSM模块,天线可以不加

GSM模块,天线可以不加

IMG_20200220_174115.jpg (2.54 MB, 下载次数: 123)

原理图

原理图

IMG_20200220_174130.jpg (2.25 MB, 下载次数: 142)

设计简图

设计简图

IMG_20200220_174329.jpg (2.51 MB, 下载次数: 139)

背面

背面

内宿辅助.zip

136.37 KB, 下载次数: 10, 下载积分: 黑币 -5

代码

评分

参与人数 1黑币 +15 收起 理由
1339337425 + 15 很给力!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:183450 发表于 2020-2-20 18:19 | 只看该作者
状态栏下面的计时是按学校时刻表下一个节点倒计时,比如下课倒计时,上课倒计时,起床倒计时,晚饭倒计时等

单片机源程序如下:
  1. #include"head.h"

  2. main()
  3. {
  4. oled_init1();//初始化OLED屏
  5. //oled_dis2(32,0,16,2,4073);
  6. //oled_dis2(48,0,16,2,4105);
  7. //oled_dis2(64,0,16,2,4137);
  8. //oled_dis2(80,0,16,2,4169);
  9. while(!P36);//等待射频芯片初始化
  10. uart_init1();//初始化串口通讯
  11. ds1302_init();//初始化实时时钟
  12. key_init();//使能按键
  13. adc_get2();//获取电源电压
  14. //if(adc_c<20)//低电量处理
  15. //{
  16. //ES=0;
  17. //IT0 = 1;                    //设置INT0的中断类型:仅下降沿
  18. //EX0 = 1;                    //使能INT0中断
  19. //while(adc_c<30)
  20. //{
  21. //gsm_off();
  22. //EX0 = 1;                    //使能INT0中断
  23. //oled_off();
  24. //PCON = 0x02;
  25. //oled_on();
  26. //adc_get2();
  27. //}
  28. //ES=1;
  29. //}
  30. gsm_init();//移动电话初始化
  31. oled_fill1(0x00);//清屏
  32. ds1302_read();//读取时间
  33. down_time();//高考倒计时计算

  34. while(1)
  35. {          


  36. //if((!ring)&&(fun!=10))//有电话打入时
  37. //{
  38. //cfun=fun;
  39. //fun=10;
  40. //enter1(fun);
  41. //}

  42. if(lock)
  43. {
  44. if(enter){PCON |= 0x02;delayms(1);}
  45. else
  46. {
  47. enter=1;
  48. IT0 = 1;                    //设置INT0的中断类型:仅下降沿
  49. EX0 = 1;                    //使能INT0中断
  50. EA=1;
  51. oled_off();
  52. ES=0;
  53. kp=1;
  54. //PCON |= 0x02;
  55. delayms(1);
  56. }
  57. }
  58. else
  59. {
  60. if(enter)
  61. {
  62. ds1302_work();//时钟驱动
  63. uart_work();//串口驱动
  64. key_scan();//按键驱动
  65. if(time5)
  66. {
  67. mark_tim();//学校时刻表计算
  68. adc_get2();//刷新电量
  69. oled_dis8();//状态栏
  70. if(flag_h) //我的计时
  71. {time_h++;}
  72. if(flag_w)        //同桌计时
  73. {time_w++;}
  74. if(flag_h||flag_w)//计时时防止关机
  75. {offt=0;}

  76. }
  77. if(time8){down_time();}//高考倒计时更新

  78. if(close_time==5)//关机时间延长
  79. {
  80. if(k01||k11||k21)
  81. {close_time=60;}
  82. }
  83. switch(fun)
  84. {
  85. case 0:fun0();break;
  86. case 1:fun1();break;
  87. case 2:fun2();break;
  88. case 3:fun3();break;
  89. case 4:fun4();break;
  90. case 5:fun5();break;
  91. case 10:fun10();break;
  92. default :fun=0;break;
  93. }
  94. //if(fun==0){fun0();}
  95. //else if(fun==1){fun1();}
  96. //else if(fun==2){fun2();}
  97. //else if(fun==3){fun3();}
  98. //else if(fun==4){fun4();}
  99. //else if(fun==5){fun5();}
  100. //else if(fun==10){fun10();}
  101. if(kp){sys_lock();}
  102. }
  103. else
  104. {oled_init1();oled_fill1(0x00);enter=1;EX0 = 0;ds1302_read();down_time();adc_get2();mark_tim();oled_dis8();enter1(fun);close_time=5;offt=0;ES=1;}
  105. if(time5)
  106. {
  107. offt++;
  108. if(ring==0)
  109. {
  110. offt=0;
  111. }
  112. if(offt>close_time)
  113. {
  114. offt=0;
  115. sys_lock();
  116. }
  117. }
  118. }

  119. if(com&&(fun!=10))
  120. {
  121. cfun=fun;
  122. fun=10;
  123. enter1(fun);
  124. }



  125. //结尾游历/////////////////////////////////////////////////////////////////////////////////////////////////////////////
  126. if(k01){k01=0;}
  127. if(k11){k11=0;}
  128. if(k21){k21=0;}
  129. if(k02){k02=0;}
  130. if(k12){k12=0;}
  131. if(k22){k22=0;}
  132. if(k03){k03=0;}
  133. if(k13){k13=0;}
  134. if(k23){k23=0;}

  135. if(!P30){IAP_CONTR = 0x60;}
  136. if(time5){time5=0;}
  137. if(time8){time8=0;}
  138. }
  139. }
复制代码


回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表