 |
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低电平,然后一堆用户码和键码,最后用引导码和短码表示重复按键
|