|  | 
          11樓
          巨大八爪鱼
          2014-9-30 23:30
          
          
            以下就是我获得的我的遥控器发射的电平,我做了一点修改而已   | 
    
      |  | 
          12樓
          巨大八爪鱼
          2014-9-30 23:34
          
          
            以下为根据bin文件生成波形图的php程序代码:【portcheck.php】
 <?php
 /* 根据EEPROM内容生成I/O口波形图像
 * 作者:巨大八爪鱼
 * 时间:2013年9月30日15:08:06
 **/
 define("US_PER_PX",50); //每像素表示多少微秒
 define("FILENAME","错误的红外发射.bin");
 header("Content-type:image/png");
 
 function BIT($n)
 {
 return 1<<$n;
 }
 
 $file=fopen(FILENAME,"rb"); # 打开文件
 $time=fread($file,480); # 持续时间
 $port_states=fread($file,30); # 高低电平标识
 fread($file,1); # 该位始终是0x3d,跳过
 $length=ord(fread($file,1)); # 长度
 
 # 计算图片宽度
 $width=0;
 for ($i=0;$i<$length;$i++)
 {
 $t=ord($time[$i*2])*256+ord($time[$i*2+1]);
 $width+=$t;
 }
 $width=ceil($width/US_PER_PX);
 
 $im=imagecreatetruecolor($width,64);
 $back_color=imagecolorallocate($im,251,252,205);
 imagefill($im,10,5,$back_color); # 背景颜色
 
 $color=imagecolorallocate($im,0,64,0);
 $x=$y=0;
 for ($i=0;$i<$length;$i++)
 {
 $lasty=$y;
 $y=10;
 if (ord($port_states[(int)floor($i/8)])&BIT($i%8))
 $y=50; # 如果该位是高电平
 
 # 电平发生跳变时加竖线
 if ($y!=$lasty && $i>0)
 imageline($im,$x,11,$x,49,$color);
 
 # 从第二个电平开始更换颜色
 if ($i==1)
 $color=imagecolorallocate($im,0,0,128);
 
 $t=ord($time[$i*2])*256+ord($time[$i*2+1]);
 $t/=US_PER_PX;
 imageline($im,$x,$y,$x+$t,$y,$color); # 绘制水平线
 $x+=$t;
 }
 
 fclose($file);
 
 imagepng($im);
 imagedestroy($im);
 ?>
 
   | 
    
      |  | 
          13樓
          巨大八爪鱼
          2014-9-30 23:34
          
          
            1.EEPROM倒数第二位在该版本程序中恒为0x3d,这是版本识别码,将来的版本会改变这个识别码2.把“18b20单总线信号.bin”烧写回EEPROM,然后打开单片机,就会发现第142、143、144等多个连续的id号是相同的。通常如果电平变化得太快,小于1us,那么就会出现这种情况。所以程序中port_states数组还是很有必要设置的。
 3.默认在php绘图的时候每像素表示100us,如果绘出的图形太密,比如像“18b20单总线信号_100ms.png”那样,那么请减小US_PER_PX常量的值,比如设为1us,出来的效果就是“18b20单总线信号_1ms.png”
   | 
    
      |  | 
          14樓
          巨大八爪鱼
          2014-9-30 23:38
          
          
            回复:12楼简单说一下这个php程序的使用方法,在自己的电脑上安装php开发环境(相关资料见php吧),然后把这个php文件放进去
 然后用ISP线连接电路板和电脑,打开AVR Fighter,读取EEPROM并保存为bin文件,把这个bin文件放入php文件所在的文件夹,把这个bin文件命名为“错误的红外发射.bin”,当然文件名可以随便取,别忘了改相应的php程序的第7行的那个FILENAME常量的值。
 用浏览器访问这个php页面,就可以得到电平图像了。
 
   | 
    
      |  | 
          15樓
          巨大八爪鱼
          2014-9-30 23:40
          
          
            以下为我通过这个工具得到的一些波形图: 18b20单总线信号_1ms   | 
    
      |  | 
          16樓
          巨大八爪鱼
          2014-9-30 23:41
          
          
            回复:15楼 这个图像太宽了,没法直接看,请右键另存到本地再看  | 
    
      |  | 
          17樓
          巨大八爪鱼
          2014-9-30 23:42
          
          
            18b20单总线信号_5ms:   | 
    
      |  | 
          18樓
          巨大八爪鱼
          2014-9-30 23:42
          
          
            18b20单总线信号_100ms:   | 
    
      |  | 
          19樓
          巨大八爪鱼
          2014-9-30 23:42
          
          
            某51单片机程序P0某口的波形2:   | 
    
      |  | 
          20樓
          巨大八爪鱼
          2014-9-30 23:47
          
          
            以下就是一个典型的遥控器发射的波形:  可以用画图软件量出来,引导码是9ms高电平4.5ms低电平,然后一堆用户码和键码,最后用引导码和短码表示重复按键  |