搜索
bottom↓
回复: 13

仿制“红外线遥控逻辑分析器”中遇到问题,BXAK 大侠请进

[复制链接]

出0入0汤圆

发表于 2012-8-22 16:15:52 | 显示全部楼层 |阅读模式
本帖最后由 madswan 于 2012-8-22 16:55 编辑

原帖地址在这里http://www.amobbs.com/forum.php?mod=viewthread&tid=3664236&highlight=%E7%BA%A2%E5%A4%96%2B%E5%88%86%E6%9E%90,我用1T单片机,11.0592M晶振,下位机用的51楼的第2个,电脑上用USB转成了com3,由于45楼的两个程序只能用COM1或者com2,所以找了可以改串口的版本。电路搭好之后,没法得到红外波形。请大家帮我分析什么原因

靠,现在上不了附件

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2012-8-22 16:20:29 | 显示全部楼层
说简单一点,我是1Tcpu+11.0592M晶振+com3,有没有支持上面几个条件的上位机软件?

出0入0汤圆

发表于 2012-8-22 19:04:13 | 显示全部楼层
可能你找到的上位机 与 51楼下位机的程序 不兼容,
我有改版的上位机,不知你电脑屏幕的分辨率是多少(因为视觉需要,我把上位机的界面弄得很宽,捕捉分辨率也由原来的20点多us改成了12us)


说说你:
电脑屏幕的分辨率
单片机型号
晶振

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入85汤圆

发表于 2012-8-22 19:37:47 | 显示全部楼层
搞什么串口啊,搞个红外接收头,接到声卡的MIC输入,用录音软件来分析更方便,例如cooledit

出0入0汤圆

发表于 2012-8-22 19:59:26 | 显示全部楼层
marshallemon 发表于 2012-8-22 19:37
搞什么串口啊,搞个红外接收头,接到声卡的MIC输入,用录音软件来分析更方便,例如cooledit ...

记得很多年前玩过个 声卡 Line-IN输入的,叫   声卡示波器   

出0入0汤圆

 楼主| 发表于 2012-8-22 21:17:58 | 显示全部楼层
BXAK 发表于 2012-8-22 19:04
可能你找到的上位机 与 51楼下位机的程序 不兼容,
我有改版的上位机,不知你电脑屏幕的分辨率是多少(因为 ...

我电脑分辨率是1600*900
                单片机想用STC15F104E(或者STC89C52,或者STC12C5A60S2)
               晶振只有11.0592的(如果STC15系列的话,可以用22.xxMhz)
如果可能的话,麻烦把上/下位机程序都给我,谢谢

出0入0汤圆

发表于 2012-8-22 23:19:00 | 显示全部楼层
madswan 发表于 2012-8-22 21:17
我电脑分辨率是1600*900
                单片机想用STC15F104E(或者STC89C52,或者STC12C5A60S2)
       ...

那就用STC15F104E,
准备休息了,明天再上传

出0入0汤圆

发表于 2012-8-23 11:47:40 | 显示全部楼层
madswan 发表于 2012-8-22 21:17
我电脑分辨率是1600*900
                单片机想用STC15F104E(或者STC89C52,或者STC12C5A60S2)
       ...

如果会VB程序,希望进一步改善共享
  1. //此程序只适合STC 15系列 @ 22.1184MHz

  2. typedef  unsigned char  uint8;
  3. typedef  unsigned int   uint16;
  4. #include <REG51.H>

  5. sfr AUXR = 0x8E;

  6. #define  CPU_FOSC  22118400UL



  7. sbit TXB   = P3^1;
  8. sbit LED   = P3^2;
  9. sbit IO_in = P3^5;         //采样引脚

  10. uint8   BIT8,cnt,Dat;
  11. uint16  stemp;

  12. uint8 TBUF;        //发送缓存
  13. uint8 TDAT;        //发送数据
  14. uint8 TBIT;        //发送比特数
  15. bit   TING;        //开始发送标志
  16. bit   TEND;        //发送完成标志

  17. /*****************************************************
  18. 函数: 延时ms毫秒(STC 1T系列自适应 1MHz ~ 45MHz )
  19. *****************************************************/
  20. void ys_ms( uint16 ms )
  21. {
  22.      uint16 n;
  23.       
  24.         do{
  25.          n = CPU_FOSC*64/896750;
  26.          while( --n );     
  27.      }while( --ms );
  28. }

  29. void Analyzer_Init()               
  30. {
  31.         TR1 = 0;
  32.         TF1 = 0;
  33.        
  34.         stemp = 0;
  35.         BIT8 = 8;
  36.         LED = 0;                 //指示灯开
  37. }

  38. void main()
  39. {
  40.         static bit mirror;
  41.        
  42.         ys_ms(400);
  43.        
  44.         TMOD = 0x00;          //T0、T1:16位自动重装模式
  45.         AUXR = 0xC0;          //T0、T1:1T模式
  46.         TL0 = (65536-CPU_FOSC/115200);                 
  47.         TH0 = (65536-CPU_FOSC/115200)>>8;        // 115200bps         
  48.         TL1 = (65536-14*CPU_FOSC/1000000);             // 14us
  49.         TH1 = (65536-14*CPU_FOSC/1000000)>>8;
  50.         ET0 = 1;  
  51.         PT0 = 1;             //提高T0的中断优先级       
  52.         ET1 = 1;
  53.         EA  = 1;
  54.    
  55.         Analyzer_Init();
  56.         TING = 0;                 //串口初始化
  57.         TEND = 1;                 //串口初始化
  58.         TR0 = 1;   

  59.         while (1)
  60.         {
  61.                 if (!IO_in &&(IO_in != mirror))
  62.                 {
  63.                         TR1 = 1;    //采样开始
  64.                         LED = 1;
  65.                 }
  66.                 mirror = IO_in;
  67.                
  68.                 if (cnt == 0)
  69.                 {
  70.                         cnt = 255;
  71.                         if (++stemp > 4000)Analyzer_Init();   //采样完成后,等待几秒重新开始
  72.                 }
  73.         }
  74. }

  75. void TIME0() interrupt 1 using 1
  76. {
  77.         if (TING)                  //判断是否发送
  78.         {
  79.                 if (TBIT == 0)
  80.                 {
  81.                         TXB = 0;           //发送起始位
  82.                         TDAT = TBUF;       //加载数据从TBUF至TDAT
  83.                         TBIT = 9;          //初化始发送比特数(8位数据位+1个停止位)
  84.                 }
  85.                 else
  86.                 {
  87.                         TDAT >>= 1;        //位移数据至CY
  88.                         if (--TBIT == 0)
  89.                         {
  90.                                 TXB = 1;
  91.                                 TING = 0;       //停止发送
  92.                                 TEND = 1;       //设置发送完成标志
  93.                         }
  94.                         else
  95.                         {
  96.                                 TXB = CY;       //写CY至TX端口
  97.                         }
  98.                 }
  99.         }
  100. }

  101. void TIME1() interrupt 3        
  102. {                                                  
  103.         if (IO_in) Dat |= 0x01;   
  104.           if ( --BIT8 == 0 )                    //每采集8次发送一次
  105.         {
  106.                 TBUF = Dat;         
  107.                 TING = 1;
  108.                 BIT8 = 8;             
  109.            }
  110.         Dat <<= 1;
  111.         if (cnt) cnt--;            //约3ms                         
  112. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-8-23 14:45:25 | 显示全部楼层
x谢谢,用这个程序终于能采集到波形了。
不过还有个疑问,看程序led亮的时候表示单片机初始化完成,可以进行采集,开始采集的时候LED就灭了。
为什么实际中,我没有开始采集,LED自动在哪里一会亮一会灭的?

出0入0汤圆

发表于 2012-8-23 18:46:14 | 显示全部楼层
madswan 发表于 2012-8-23 14:45
x谢谢,用这个程序终于能采集到波形了。
不过还有个疑问,看程序led亮的时候表示单片机初始化完成,可以进 ...

???
我这边没这样的情况

出0入0汤圆

 楼主| 发表于 2012-8-24 09:47:39 | 显示全部楼层
BXAK 发表于 2012-8-23 18:46
???
我这边没这样的情况

今天试了一下,还是不行,没给他遥控信号,他也自己灭灯。
现在只能趁他亮灯的时候抓紧时间采样。
我led脚(P3.2)接LED管负极,5V直接接LED正极,这个没有影响吧

出0入0汤圆

 楼主| 发表于 2012-8-24 10:03:49 | 显示全部楼层
用纸把红外接收管包起来,也没有改善。
刚才试了一下,断开38khz接收管输出端到P3.5的连线,灯就不会自己灭。
我不按红外遥控器键的时候,用串口助手看,也能接收到CF DF DE DF C8这样一些随机的数字,只是速率很慢

出0入0汤圆

发表于 2012-8-24 11:20:09 | 显示全部楼层
LED加限流电阻;
接收引脚加5K左右的上拉电阻;
换另一型号的一体化接收管;

有些接收管在白天(或者黑暗)环境下无红外信号时,输出端久不久也会有杂乱的信号输出,你自己检查是否是这一原因

出0入0汤圆

 楼主| 发表于 2012-8-24 12:17:00 | 显示全部楼层
按您说的加了电阻,换了接收管,现在有改善,基本上很少自动闪了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 00:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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