仿制“红外线遥控逻辑分析器”中遇到问题,BXAK 大侠请进
本帖最后由 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,所以找了可以改串口的版本。电路搭好之后,没法得到红外波形。请大家帮我分析什么原因
靠,现在上不了附件 说简单一点,我是1Tcpu+11.0592M晶振+com3,有没有支持上面几个条件的上位机软件? 可能你找到的上位机 与 51楼下位机的程序 不兼容,
我有改版的上位机,不知你电脑屏幕的分辨率是多少(因为视觉需要,我把上位机的界面弄得很宽,捕捉分辨率也由原来的20点多us改成了12us)
说说你:
电脑屏幕的分辨率
单片机型号
晶振
搞什么串口啊,搞个红外接收头,接到声卡的MIC输入,用录音软件来分析更方便,例如cooledit marshallemon 发表于 2012-8-22 19:37 static/image/common/back.gif
搞什么串口啊,搞个红外接收头,接到声卡的MIC输入,用录音软件来分析更方便,例如cooledit ...
记得很多年前玩过个 声卡 Line-IN输入的,叫 声卡示波器 {:handshake:} BXAK 发表于 2012-8-22 19:04 static/image/common/back.gif
可能你找到的上位机 与 51楼下位机的程序 不兼容,
我有改版的上位机,不知你电脑屏幕的分辨率是多少(因为 ...
我电脑分辨率是1600*900
单片机想用STC15F104E(或者STC89C52,或者STC12C5A60S2)
晶振只有11.0592的(如果STC15系列的话,可以用22.xxMhz)
如果可能的话,麻烦把上/下位机程序都给我,谢谢 madswan 发表于 2012-8-22 21:17 static/image/common/back.gif
我电脑分辨率是1600*900
单片机想用STC15F104E(或者STC89C52,或者STC12C5A60S2)
...
那就用STC15F104E,
准备休息了,明天再上传 madswan 发表于 2012-8-22 21:17 static/image/common/back.gif
我电脑分辨率是1600*900
单片机想用STC15F104E(或者STC89C52,或者STC12C5A60S2)
...
如果会VB程序,希望进一步改善共享
//此程序只适合STC 15系列 @ 22.1184MHz
typedefunsigned charuint8;
typedefunsigned int uint16;
#include <REG51.H>
sfr AUXR = 0x8E;
#defineCPU_FOSC22118400UL
sbit TXB = P3^1;
sbit LED = P3^2;
sbit IO_in = P3^5; //采样引脚
uint8 BIT8,cnt,Dat;
uint16stemp;
uint8 TBUF; //发送缓存
uint8 TDAT; //发送数据
uint8 TBIT; //发送比特数
bit TING; //开始发送标志
bit TEND; //发送完成标志
/*****************************************************
函数: 延时ms毫秒(STC 1T系列自适应 1MHz ~ 45MHz )
*****************************************************/
void ys_ms( uint16 ms )
{
uint16 n;
do{
n = CPU_FOSC*64/896750;
while( --n );
}while( --ms );
}
void Analyzer_Init()
{
TR1 = 0;
TF1 = 0;
stemp = 0;
BIT8 = 8;
LED = 0; //指示灯开
}
void main()
{
static bit mirror;
ys_ms(400);
TMOD = 0x00; //T0、T1:16位自动重装模式
AUXR = 0xC0; //T0、T1:1T模式
TL0 = (65536-CPU_FOSC/115200);
TH0 = (65536-CPU_FOSC/115200)>>8; // 115200bps
TL1 = (65536-14*CPU_FOSC/1000000); // 14us
TH1 = (65536-14*CPU_FOSC/1000000)>>8;
ET0 = 1;
PT0 = 1; //提高T0的中断优先级
ET1 = 1;
EA= 1;
Analyzer_Init();
TING = 0; //串口初始化
TEND = 1; //串口初始化
TR0 = 1;
while (1)
{
if (!IO_in &&(IO_in != mirror))
{
TR1 = 1; //采样开始
LED = 1;
}
mirror = IO_in;
if (cnt == 0)
{
cnt = 255;
if (++stemp > 4000)Analyzer_Init(); //采样完成后,等待几秒重新开始
}
}
}
void TIME0() interrupt 1 using 1
{
if (TING) //判断是否发送
{
if (TBIT == 0)
{
TXB = 0; //发送起始位
TDAT = TBUF; //加载数据从TBUF至TDAT
TBIT = 9; //初化始发送比特数(8位数据位+1个停止位)
}
else
{
TDAT >>= 1; //位移数据至CY
if (--TBIT == 0)
{
TXB = 1;
TING = 0; //停止发送
TEND = 1; //设置发送完成标志
}
else
{
TXB = CY; //写CY至TX端口
}
}
}
}
void TIME1() interrupt 3
{
if (IO_in) Dat |= 0x01;
if ( --BIT8 == 0 ) //每采集8次发送一次
{
TBUF = Dat;
TING = 1;
BIT8 = 8;
}
Dat <<= 1;
if (cnt) cnt--; //约3ms
} x谢谢,用这个程序终于能采集到波形了。
不过还有个疑问,看程序led亮的时候表示单片机初始化完成,可以进行采集,开始采集的时候LED就灭了。
为什么实际中,我没有开始采集,LED自动在哪里一会亮一会灭的? madswan 发表于 2012-8-23 14:45 static/image/common/back.gif
x谢谢,用这个程序终于能采集到波形了。
不过还有个疑问,看程序led亮的时候表示单片机初始化完成,可以进 ...
???
我这边没这样的情况 BXAK 发表于 2012-8-23 18:46 static/image/common/back.gif
???
我这边没这样的情况
今天试了一下,还是不行,没给他遥控信号,他也自己灭灯。
现在只能趁他亮灯的时候抓紧时间采样。
我led脚(P3.2)接LED管负极,5V直接接LED正极,这个没有影响吧 用纸把红外接收管包起来,也没有改善。
刚才试了一下,断开38khz接收管输出端到P3.5的连线,灯就不会自己灭。
我不按红外遥控器键的时候,用串口助手看,也能接收到CF DF DE DF C8这样一些随机的数字,只是速率很慢
LED加限流电阻;
接收引脚加5K左右的上拉电阻;
换另一型号的一体化接收管;
有些接收管在白天(或者黑暗)环境下无红外信号时,输出端久不久也会有杂乱的信号输出,你自己检查是否是这一原因 按您说的加了电阻,换了接收管,现在有改善,基本上很少自动闪了
页:
[1]