标题: 送女朋友的生日礼物(TFT屏的触摸电子相册+真人语音闹铃的万年历) [打印本页]

作者: jiujiu    时间: 2014-12-19 02:19
标题: 送女朋友的生日礼物(TFT屏的触摸电子相册+真人语音闹铃的万年历)
DIY TFT屏的触摸电子相册+真人语音闹铃的万年历电子时钟+温湿度检测。


主电路模块


由于引脚不够用了两块单片机,做了两层结构。

         




用木板做了个框架


用家里的颜料给上颜色


通过读取SD卡内的相片数据,在TFT屏显示。
当初在淘宝的时候看见这2.2寸TFT屏和LCD5110都没用个,所以都一起买了,用上去练一下手。


还写了一个贪吃蛇的游戏进去,但效果不怎么好,就放着了。


用手机电池供电,不用触摸屏的话,可以连续工作三天。


还可以用USB供电同时给手机电池充电。有一小麦克风可以用来录音做闹铃


喇叭+温湿度传感器。



LCD5110屏的控制程序+DS1302时钟芯片: 时钟.zip (5.19 MB, 下载次数: 207)
TFT屏的程序: 电子相册 触摸 手写.zip (209.21 KB, 下载次数: 100)
TFT屏驱动芯片的技术文档: 控制器HX8340-B_T_DS_preliminary_v01_071203.rar (4.51 MB, 下载次数: 85)

作者: jiujiu    时间: 2014-12-19 02:20
下面是主程序文件预览:
  1. #include<reg51.h>
  2. #include"define.h"
  3. #include"delay.h"
  4. #include"DS1302.h"
  5. #include"5110.h"
  6. #include"key.h"
  7. #include"dht11.h"

  8. bit flag1,flag_clock,flag,flag_c,flag7,flag_arm,flag_0=1,flag_1=1,flag_2=1,flag_c0;
  9. uchar flag_dht;
  10. uchar year,month,date,day,second,hour,min;
  11. uchar monthday[]={0,31,0,31,30,31,30,31,31,30,31,30,31};
  12. uchar *week[]={"SUN","MON","TUS","WEN","THU","FRI","SAT"};
  13. uchar flag_dis;
  14. void init_T0(void)
  15. {
  16.     TMOD = 0x01;
  17.     TH0 = 0x3C;
  18.     TL0 = 0x0B0;
  19.     EA = 1;
  20.     ET0 = 1;
  21.     TR0 = 1;
  22. }

  23. void main()
  24. {
  25.         P1=0XFF;
  26.         _nop_();
  27.         P0=0XFF;
  28.         _nop_();
  29.         P2=0XFF;
  30.         _nop_();
  31.         P3=0X84;
  32.         EX0=1;
  33.         IT0=1;
  34.         delay_ms(1);
  35.         time_init();
  36.         LCD_clear();
  37.         LCD_init();
  38.         init_T0();
  39.         while(1)
  40.         {
  41.                 if(flag_n==0)
  42.                 {
  43.                         delay_ms(10);
  44.                         if(flag_n==0)
  45.                         {
  46.                                 while(flag_n==0);
  47.                                 bl=1;
  48.                                 flag=0;
  49.                         }
  50.                 }
  51.            if(flag)
  52.            {
  53.                         alarm();
  54.                 }
  55.                 clock();
  56.                 key_scan();
  57.         //        changeweek();
  58.         if(flag_display)
  59.         {
  60.                 switch(flag_dis){
  61.                         case 0:
  62.                                 if(flag_0){
  63.                                         LCD_clear();
  64.                                         flag_2=1;
  65.                                         flag_0=0;
  66.                                 }
  67.                                 LCD_tuan(0,0);
  68.                                 flag_c0=0;
  69.                                 break;
  70.                         case 1:
  71.                                 if(flag_1){
  72.                                         LCD_clear();
  73.                                         flag_0=1;
  74.                                         flag_1=0;
  75.                                 }
  76.                                 flag_c0=1;
  77.                                 break;
  78.                         case 2:
  79.                                 if(flag_2){
  80.                                         LCD_clear();
  81.                                         changeweek();
  82.                                         flag_1=1;
  83.                                         flag_2=0;
  84.                                 }
  85.                                 delay(200);
  86.                                 Get_data();
  87.                                 other_display();
  88.                                 flag_c0=0;
  89.                                 break;
  90.                 }
  91.         }
  92.         }  

  93.        
  94. }

  95. void IN0()interrupt 0
  96. {
  97.         PCON=0;
  98.         TH0 = 0x3C;
  99.     TL0 = 0x0B0;
  100.         ET0=1;
  101.         TR0=1;
  102. }

  103. void TIME0()interrupt 1
  104. {
  105.         uchar x,y,z;
  106.         TH0 = 0x3C;
  107.     TL0 = 0x0B0;
  108.         TR0=0;
  109.         x++;
  110.         if(x==20){
  111.                 y++;
  112.                 x=0;
  113.                 if(y==5){                       
  114.                         y=0;
  115.                         z++;
  116.                         flag_dis++;
  117.                         if(flag_dis>2){
  118.                                 flag_dis=0;
  119.                         }
  120.                   if(z==6)
  121.                           {
  122.                                 z=0;
  123.                                 bl=0;

  124.                         }
  125.                 }
  126.         }

  127.         TR0=1;
  128. }
复制代码

作者: 大头菜    时间: 2014-12-19 11:05
为了女友也是拼了  赞一个
作者: 大头菜    时间: 2014-12-19 11:06
文件不全
作者: 南窗忆    时间: 2015-1-7 12:28
厉害
作者: wyn2014    时间: 2015-1-10 22:09
楼主好人
作者: wyn2014    时间: 2015-1-10 22:09
楼主长命百岁
作者: sglf0201    时间: 2015-1-13 22:47
强强强
作者: whrui5033    时间: 2015-1-22 16:24
冯绍峰归属感
作者: delay    时间: 2015-1-23 15:13
厉害呀
作者: xyz1015231411    时间: 2015-1-28 11:39
高手,值得学习,
作者: 8023love    时间: 2015-4-1 17:21
看看,学学,谢谢分享
作者: lb688    时间: 2015-4-3 14:43
厉害。
作者: 袁洁栋    时间: 2015-4-19 09:57
好东西 参考下
作者: gemxie    时间: 2015-12-9 13:35
溜溜的。。。
作者: lyx651218    时间: 2015-12-20 20:05
谢谢楼主分享,51hei有你更精彩!!
作者: april007    时间: 2015-12-26 00:19
点赞 但是积分不够 想做一个 但是下不下来
作者: greatfun2006    时间: 2016-5-14 20:31
非常不错的制作,赞一个!
作者: 金色年华    时间: 2016-8-14 16:07
楼主好人
作者: dxa572862121    时间: 2016-9-20 16:57
看介绍的功能,确实很强大,但是写一个贪吃蛇真的不简单
作者: 後輪追前輪    时间: 2016-9-20 23:34
厉害厉害
作者: lhuijiang    时间: 2018-1-16 15:22
学习中,多谢分享!
作者: hefanghua    时间: 2018-2-10 22:12
请问语音部分是怎么实现的?
作者: aking888    时间: 2018-2-12 15:04
好东西啊,谢谢版主分享
作者: Yinfeng_Wang    时间: 2018-3-15 10:33
纯手工制作,没有华丽的外表,虽然不美观,但表达了你的真心,你女朋友一定会感动的
作者: fsj5098    时间: 2018-8-6 22:36

高手,值得学习,
作者: xsj1877578806    时间: 2018-8-8 06:37
厉害的楼主,谢谢分享




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1