数码之家

标题: 玩个低价的投影机镜头模组 [打印本页]

作者: wjxhone    时间: 2020-1-22 17:39
标题: 玩个低价的投影机镜头模组
本帖最后由 wjxhone 于 2020-1-22 17:41 编辑

这次的主角就是这个玩意儿,X宝上不到10元钱一个,但驱动板网上不好找,我是看到一个关于驱动另一款LCOS模组的资料,才知道了TVP5150这个芯片的用法,在此感谢原作者。至于光源的驱动,测试了SY7200,CL6808,XL4001这几种芯片,发现在5V电压下,只有XL4001能用。因不知灯珠的功率,安全起见,设置为0.6A。手头有好多新唐的单片机,所以对TVP5150和液晶屏的初始化就用了N76E003。看到板子还有空间,顺便加了个MD8002的音频功放。在全黑的环境下,投个100寸的亮度还能接受。贴上驱动板的制作资料,包括源代码和kicad画的PCB工程文件。[attach]580805[/attach][attach]580806[/attach][attach]580807[/attach]


作者: leijun211    时间: 2020-1-22 19:54
佩服,不过这分辨率感人啊。还有,5V0.6A全黑投100寸的亮度还能接受,真的假的?我一台坚果J7,DLP的,总功率超过100W,晚上投100寸还行,白天环境光太亮就不行
作者: aacyxjz    时间: 2020-1-22 19:59
牛掰了,谢谢分享,我就围观一下
作者: zzy_85569381    时间: 2020-1-22 20:54
真的够小的
作者: lcy960    时间: 2020-1-22 21:59
投影驱动板比这个投影机镜头模组 还要贵
作者: wjxhone    时间: 2020-1-22 22:08
lcy960 发表于 2020-1-22 21:59
投影驱动板比这个投影机镜头模组 还要贵

单片机1元,TVP5150两元多点,音频功放0.1元,LED驱动0.5元,其它的阻容加起来也没几元,板子要是自己焊的话,成本跟模组差不多。
作者: 网络孤客    时间: 2020-1-23 08:34
分辨率是多少?
看错了。

作者: wjxhone    时间: 2020-1-23 09:46
网络孤客 发表于 2020-1-23 08:34
分辨率是多少?
看错了。

没有模组的详细资料,都是参考网上类似的屏的数据,大概是320x240
作者: blxylbx    时间: 2020-1-23 14:05
楼主,买套件,过完年弄出来造福坛友吧
作者: 西早    时间: 2020-1-25 22:09
楼主可以分享下tft的资料吗
作者: wjxhone    时间: 2020-1-26 09:45
西早 发表于 2020-1-25 22:09
楼主可以分享下tft的资料吗

模组带的屏型号未知,网上搜索  TD015THEB2   ,样子跟它很接近。
作者: 东京的士    时间: 2020-1-27 14:08
网络孤客 发表于 2020-1-23 08:34
分辨率是多少?
看错了。

估计眼神好的看屏幕就都能数过来
作者: 落花萧然    时间: 2020-1-28 18:12
楼主出套件吧,我来2套玩玩儿
作者: mcs0702    时间: 2020-1-29 10:59
谢谢楼主免费分享
作者: pancy    时间: 2020-1-30 14:23
直接出套件还好了
作者: zlf小飞    时间: 2020-1-30 20:57
分辨率如果能再提高些就更好了
作者: 清池    时间: 2020-1-31 12:50
wjxhone 发表于 2020-1-26 09:45
模组带的屏型号未知,网上搜索  TD015THEB2   ,样子跟它很接近。

大神,厉害啊,试下640*480和1024*768,以及720p分片率看看呢
作者: 潮流酷玩    时间: 2020-1-31 23:00
膜拜大佬,大佬牛批
作者: 寂寞的人!!/    时间: 2020-2-10 18:27
有联系方式没想要驱动板

作者: 寂寞的人!!/    时间: 2020-2-11 17:17
想要套件最好能手机同屏
作者: dmhs31    时间: 2020-2-11 19:43
谢谢分享,下载附件看看
作者: zhuhongyu121121    时间: 2020-5-14 10:21
就是PCB文件 打不开 :cry:
作者: lmy2003    时间: 2020-5-14 21:44
谢谢分享,原来还能这样玩
作者: msold5    时间: 2020-5-15 01:13
如果只投影到眼镜镜片上,是否可以缩小体积?
作者: zjtzhy    时间: 2020-5-15 16:06
楼主够厉害,不知实际使用效果如何?我也去淘一个玩玩:lol:

作者: 1065307738    时间: 2020-5-15 16:36
又被骗35M币,这个电路图打开什么都没有。空白的。
作者: wjxhone    时间: 2020-5-15 20:16
要是打不开PCB文件的话,可能软件不配套,可以到这里下载   https://mirrors.tuna.tsinghua.edu.cn/kicad/windows/stable/    根据操作系统选5.1.6的32位或64位版本。
作者: zhuhongyu121121    时间: 2020-5-23 09:03
楼主你好,那个单片机的源代码是哪一个哦,解压后看到程序里面有好多个文件,不知道是哪一个是源代码的文件。
作者: wjxhone    时间: 2020-5-23 10:53
zhuhongyu121121 发表于 2020-5-23 09:03
楼主你好,那个单片机的源代码是哪一个哦,解压后看到程序里面有好多个文件,不知道是哪一个是源代码的文件 ...
  1. #include "N76E003.h"
  2. #include "SFR_Macro.h"
  3. #include "Function_define.h"
  4. #include "Common.h"
  5. #include "Delay.h"

  6. #define H (1)
  7. #define L (0)

  8. #define TVP_RESETB  P12

  9. #define GRSTB  P04
  10. #define CS  P15
  11. #define SDAT  P00
  12. #define SCLK  P10

  13. #define I2C_CLOCK                        0x27 //Fclk = Fsys / (4*(prescalar + 1))

  14. #define I2C_ACK                        0
  15. #define I2C_NACK                1

  16. #define timeout_count                1000


  17. void Delay10ms()                //@16MHz
  18. {
  19.         unsigned char i, j;

  20.         _nop_();
  21.         i = 208;
  22.         j = 200;
  23.         do
  24.         {
  25.                 while (--j);
  26.         } while (--i);
  27. }

  28. void I2C_init(void)
  29. {
  30.         I2CLK = I2C_CLOCK;
  31.         set_I2CEN;
  32. }

  33. void I2C_start(void)
  34. {
  35.         signed int t = timeout_count;
  36.        
  37.         set_STA;                                
  38.   clr_SI;
  39.   while((SI == 0) && (t > 0))
  40.         {
  41.                 t--;
  42.         };     
  43. }

  44. void I2C_stop(void)
  45. {
  46.         signed int t = timeout_count;
  47.        
  48.         clr_SI;
  49.   set_STO;
  50.         while((STO == 1) && (t > 0))
  51.         {
  52.                 t--;
  53.         };     
  54. }

  55. unsigned char I2C_read(unsigned char ack_mode)
  56. {
  57.         signed int t = timeout_count;
  58.         unsigned char value = 0x00;

  59.         set_AA;                             
  60.   clr_SI;
  61.   while((SI == 0) && (t > 0))
  62.         {
  63.                 t--;
  64.         };          
  65.        
  66.         value = I2DAT;

  67.         if(ack_mode == I2C_NACK)
  68.         {
  69.                 t = timeout_count;
  70.                 clr_AA;   
  71.                 clr_SI;
  72.                 while((SI == 0) && (t > 0))
  73.                 {
  74.                         t--;
  75.                 };                  
  76.         }
  77.        
  78.         return value;
  79. }

  80. void I2C_write(unsigned char value)
  81. {
  82.         signed int t = timeout_count;
  83.        
  84.         I2DAT = value;
  85.         clr_STA;           
  86.         clr_SI;
  87.         while((SI == 0) && (t > 0))
  88.         {
  89.                 t--;
  90.         };  
  91. }

  92. unsigned char TVP5150_read(unsigned char address)
  93. {
  94.         unsigned char value = 0x00;

  95.         I2C_start();
  96.         I2C_write(0xB8);
  97.         I2C_write(address);

  98.         I2C_start();
  99.         I2C_write(0xB9);
  100.         value = I2C_read(I2C_NACK);
  101.         I2C_stop();
  102.        
  103.         return value;
  104. }

  105. void TVP5150_write(unsigned char address, unsigned char value)
  106. {
  107.         I2C_start();
  108.         I2C_write(0xB8);
  109.         I2C_write(address);
  110.         I2C_write(value);
  111.         I2C_stop();
  112. }

  113. void TVP5150_init(void)
  114. {
  115.     I2C_init();
  116.        
  117.         TVP_RESETB = L;
  118.         Delay10ms();
  119.         TVP_RESETB = H;
  120.         Delay10ms();

  121.         TVP5150_write(0x03, 0xFD);//端口信号输出
  122.         TVP5150_write(0x04, 0x00);//制式自动检测范围
  123.         TVP5150_write(0x0D, 0x47);//视频输出格式
  124.         //TVP5150_write(0x12, 0x04);//AVID无效
  125.         TVP5150_write(0x13, 0x01);//AVID 结束位置
  126.         TVP5150_write(0x14, 0x02);//AVID 结束位置
  127.         TVP5150_write(0x16, 0x8c);//HSYNC 初始位置
  128.         TVP5150_write(0x09, 0xB1);//明度       
  129.         TVP5150_write(0x0A, 0xC8);//色度饱和度       
  130.         TVP5150_write(0x0C, 0xC8);//亮度对比度
  131. }

  132. void lcd_init()
  133. {
  134.     CS=H;
  135.     SDAT=L;
  136.     SCLK=L;
  137.        
  138.     GRSTB=L;
  139.     Delay10ms();
  140.         GRSTB=H;
  141.         Delay10ms();

  142. }

  143. void spi_write(unsigned char addr, unsigned char val)
  144. {
  145.         int i;
  146.         SCLK=L;
  147.         SDAT=L;
  148.         CS=L;
  149.        
  150.         //addr
  151.         for(i=0;i<6;i++)
  152.         {
  153.                 SCLK=L;
  154.                 if((addr << i) & 0x20)
  155.                 {
  156.                         SDAT=H;
  157.                 }
  158.                 else
  159.                 {
  160.                         SDAT=L;
  161.                 }
  162.                 SCLK=H;
  163.         }
  164.         //addr
  165.        
  166.         //R/W HiZ
  167.         SCLK=L;
  168.         SDAT=L; //L write
  169.         SCLK=H;
  170.        
  171.         SCLK=L;
  172.         SDAT=H;
  173.         SCLK=H;
  174.         //R/W HiZ
  175.        
  176.         //WRITE
  177.         for(i=7;i>=0;i--)
  178.         {
  179.                 SCLK=L;
  180.                 if((val >> i) & 0x1)
  181.                 {
  182.                         SDAT=H;
  183.                 }
  184.                 else
  185.                 {
  186.                         SDAT=L;
  187.                 }
  188.                 SCLK=H;
  189.         }
  190.         //WRITE
  191.        
  192.         SDAT=L;
  193.         SCLK=L;       
  194.         CS=H;       
  195. }
  196.        
  197. void main (void)
  198. {       
  199.        
  200.         Set_All_GPIO_Quasi_Mode;                // Define in Function_define.h       
  201.         TVP5150_init();
  202.         lcd_init();
  203.        
  204.         if (P30==0)
  205.     {                        
  206.        spi_write(0x2, 0x0d); //YUV模式  PAL制式                                                                                                                                     
  207.     }

  208.   while(1)
  209.   {
  210.        
  211.   }

  212. }
复制代码

作者: zhuhongyu121121    时间: 2020-5-23 13:27
wjxhone 发表于 2020-5-23 10:53

谢了楼主,把这个源码复制进去生成hex文件就可以了对吧。
作者: wjxhone    时间: 2020-5-23 16:22
zhuhongyu121121 发表于 2020-5-23 13:27
谢了楼主,把这个源码复制进去生成hex文件就可以了对吧。

原来你是要hex文件呀,Output文件夹内就有一个编译后生成的GPIO.hex,烧写到单片机内就可以了。
作者: zhuhongyu121121    时间: 2020-5-23 18:39
wjxhone 发表于 2020-5-23 16:22
原来你是要hex文件呀,Output文件夹内就有一个编译后生成的GPIO.hex,烧写到单片机内就可以了。 ...

谢谢楼主,无意看到你的帖子,闲来无聊也想做一个玩玩,我自己用你的工程文件用keil软件生成了一个hex文件在卖单片机的那里让代烧录一下,没把LED屏点亮,失败了,可能是单片机文件没烧好吧
作者: lmy2003    时间: 2020-5-24 20:31
谢谢分享,这个好像不好玩
作者: 充电宝之家    时间: 2023-2-8 22:26
液晶屏的颗粒感太严重了,像果粒橙一样一颗一颗的,这像素只能玩玩吧
作者: lht    时间: 2023-2-9 21:48
这种低分辨率,已经没有多大的实用价值了。记得以前玩过卡西欧的早期液晶小彩电,分辨率比VCD还低,观看几分钟眼睛就开始花了。




欢迎光临 数码之家 (https://www.mydigit.cn/) Powered by Discuz! X3.4