佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1965|回复: 18

8051 program?

[复制链接]
发表于 30-11-2008 03:59 PM | 显示全部楼层
原帖由 pic 于 27-11-2008 01:53 PM 发表
观摩这家美国公司开发的Pololu 3pi Mobile Robot, 我个人是觉得很强了。
机械部分也很完美, 他做line following robot是高速过弯也不跑飞。。。(不过那个line 也有够粗啦)
http://www.pololu.com/picture/thum ...


这架有用 PID 的(严格来说只有 PD)。而且它的 line sensor 是 patent 起来了的

那个 line 是用 electrical tape 粘的。就是拿来包电线的那种 (18mm 的)。

[ 本帖最后由 waiweng83 于 30-11-2008 04:01 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 18-11-2008 01:34 AM | 显示全部楼层
我UPLOAD 2 个PIC, 不知有用吗?
请帮帮看一下。谢谢
回复

使用道具 举报

发表于 30-11-2008 03:39 PM | 显示全部楼层
rothman已经解释了基本operation.
关于你的code.
  1. while(1) {
  2.     P3|= 0x0f;
  3.     Run();
  4. }
复制代码


P3|= 0x0f; -->这一行多余,可以删掉。pin 3.0, 3.1, 3.2, 3.3是input,只要一开始set P3.0, P3.1, P3.2, P3.3成为high 就可以了(一开始你已经P3&0xff了)。P3.4, P3.5, P3.6, P3.7 or 0是没有意义的。

  1. Run()
  2. {
  3.    char sensors;
  4.    sensors = (P3 &=0x0f);

  5.        if((sensors & 0x01)==0) {
  6.         TurnRight();
  7.         flag = 1;              }

  8. else  if((sensors & 0x08)==0) {
  9.          TurnLeft();
  10.          flag = 2;             }
  11. else  if(sensors == 0x09)    {
  12.         Forward(high);
  13.         flag = 0;              }

  14. else  if(((sensors==0x0b)||(sensors==0x0d))&&(flag==0))
  15.           Forward(low);

  16. }
复制代码

sensor input是靠sensors = (P3 &=0x0f);。不管P3.4,5,6,7是什么value,用来做什么, 你只是拿P3.0,1,2,3的value.不过你的P3&=0x0f,你连P3.4,5,6,7的value都改了。如果这四支pin有其他用途的话,这个会导致问题。 应该用sensors = (P3 &0x0f);

你的algo 好像怪怪的。 根据你的图片, s1在左边,接去P3.0。
  1. if((sensors & 0x01)==0) {
  2. TurnRight();
  3. flag = 1; }
复制代码

如果这时候S1在线上,就代表P3.0 = 0. 那么这个condition就true也就是robot会turn right.
不过如果s1 在线上,就代表robot偏右,如果又在turn right,不就更偏了吗?所以你要turn left才对。
可能我误解了你的algo, 不过根据我看是这样的。
回复

使用道具 举报

 楼主| 发表于 14-11-2008 04:37 PM | 显示全部楼层

回复 7# rothmans 的帖子

ooo。。。还LM324,resistor, capacitor.......
我现在做line following robot.但是programming part我不大明白。
我想用c++ program..
回复

使用道具 举报

发表于 15-11-2008 05:29 PM | 显示全部楼层
原帖由 korean 于 15-11-2008 03:36 PM 发表
concept我知道,我不会program吧了。。
我不懂要怎样program input&output..


concept你知道,问题就在我不知道你的concept啊。。。。。
我不知道你在想什么和你要什么, 要怎样跟你解释。
我解释了也不知道到底对不对,也不知道适不适合你。
回复

使用道具 举报

发表于 27-11-2008 10:40 AM | 显示全部楼层
原帖由 korean 于 19-11-2008 12:06 AM 发表
不知这2个pic能表达一切
请看看。。


这两张图片已经表达好多讯息了。



[ 本帖最后由 rothmans 于 27-11-2008 11:00 AM 编辑 ]

评分

参与人数 1积分 +30 收起 理由
pic + 30 热心贡献。

查看全部评分

回复

使用道具 举报

Follow Us
 楼主| 发表于 13-11-2008 04:43 PM | 显示全部楼层 |阅读模式
请问有没有人可以讲解这个program..
以下program是我从internet copy 下来的。
这个program是来控制line following robot.

  1. #include d:\mc51\8051io.h
  2. #include d:\mc51\8051reg.h
  3. extern register unsigned char speedleft,speedright;
  4. register unsigned char high,low,flag,time;

  5. main()
  6. {
  7.   P1=0x40;
  8.   P3=0xff;
  9.   high = 80;
  10.   low  = 30;
  11.   flag = 0;
  12.   time = 50;
  13.   Start();
  14.     while(1) {
  15.               P3|= 0x0f;
  16.               Run();
  17.               }
  18. }

  19. Start()
  20. {
  21.   char exit,key;
  22.   exit =1;
  23.      while(exit)
  24.       {
  25.         key = P1;
  26.         if((key & 0x40)==0) exit=0;
  27.       }
  28. }         

  29. Run()
  30. {
  31.    char sensors;
  32.    sensors = (P3 &=0x0f);

  33.        if((sensors & 0x01)==0) {
  34.         TurnRight();
  35.         flag = 1;              }

  36. else  if((sensors & 0x08)==0) {
  37.          TurnLeft();
  38.          flag = 2;             }
  39. else  if(sensors == 0x09)    {
  40.         Forward(high);
  41.         flag = 0;              }

  42. else  if(((sensors==0x0b)||(sensors==0x0d))&&(flag==0))
  43.           Forward(low);

  44. }

  45. Forward(char speed)
  46. {
  47.   P1=0x64;
  48.   speedright = speed+10;
  49.   speedleft  = speed;
  50.   delay(time);
  51. }

  52. TurnRight()
  53. {
  54.   P1=0x68;
  55.   speedright = low+5;
  56.   speedleft  = low;
  57.   delay(time);
  58. }

  59. TurnLeft()
  60. {
  61.   P1=0x54;
  62.   speedright = low+5;
  63.   speedleft  = low;
  64.   delay(time);
  65. }

  66. Reverse(char speed)
  67. {
  68.   P1=0x58;
  69.   speedright = speed;
  70.   speedleft  = speed+5;
  71.   delay(time);

  72. }
复制代码






[ 本帖最后由 fritlizt 于 30-11-2008 03:15 PM 编辑 ]
回复

使用道具 举报

发表于 13-11-2008 06:41 PM | 显示全部楼层
原帖由 korean 于 13-11-2008 04:43 PM 发表
请问有没有人可以讲解这个program..
以下program是我从internet copy 下来的。
这个program是来控制line following robot.

#include d:\mc51\8051io.h
#include d:\mc51\8051reg.h
extern register unsigned  ...


对我来说,看人家的程序真的是一个头,两个大。因为资料不齐全,也没有原理图,再说没有注解。也许贴上网的是劣货。

这程序是你要用的吗?
这程序里有没有力要的部分?是哪部分?。看人家的程序,只能当参考而已,要了解及灵活应用,就要多练习写,不要光抄袭。
在此,我给出些心得,如果有心要学 MCU,自己先  看懂+学写+试验。不了解的部分再发问。不然解释了你还是捉不到技巧。
其实这里的大大都很乐意协助,不过主要还是得靠自己的努力才会有好的成绩。

[ 本帖最后由 rothmans 于 13-11-2008 06:44 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 13-11-2008 10:21 PM | 显示全部楼层

回复 2# rothmans 的帖子

是的我要用的。
请问0x40,0xff,0x40什么来的?
回复

使用道具 举报

发表于 13-11-2008 11:43 PM | 显示全部楼层
原帖由 korean 于 13-11-2008 10:21 PM 发表
是的我要用的。
请问0x40,0xff,0x40什么来的?



没有完整的资料很难回答你。 能的的话post schematics上来,解释你的用途。过后我们才能清楚地回答你的问题。

以现在有的资料, 只能回答你0x40, 0xff是hexadecimel. 那个程式把P1 set 成0x40, P3set 成0xff
在Port 1, P1.4 = high (5v)其余的等于 0(0v)
在Port 3,全部 = high (5v)
回复

使用道具 举报

发表于 14-11-2008 08:35 AM | 显示全部楼层
原帖由 korean 于 13-11-2008 10:21 PM 发表
是的我要用的。
请问0x40,0xff,0x40什么来的?


不如这样好了,就别管那个程序的操作在执行什么结果,先说出你要做的是什么项目?
用什么零件或有什么零件,再说出你要得到什么结果。才来分析这个程序你是否还用得着。
回复

使用道具 举报

 楼主| 发表于 14-11-2008 03:08 PM | 显示全部楼层
我用4个ir sensor,L923D,AT80c51 ....
回复

使用道具 举报

发表于 14-11-2008 04:02 PM | 显示全部楼层
原帖由 korean 于 14-11-2008 03:08 PM 发表
我用4个ir sensor,L923D,AT80c51 ....


呵呵!你也未免太草率了吧!就这么多了啊!一行就搞定。 。。那你要怎么做?
回复

使用道具 举报

发表于 15-11-2008 12:17 AM | 显示全部楼层
原帖由 korean 于 14-11-2008 04:37 PM 发表
ooo。。。还LM324,resistor, capacitor.......
我现在做line following robot.但是programming part我不大明白。
我想用c++ program..


我不会c++ for 8051.我会c for 8051而已。
line following robot concept怎样跑你知道吗?
你解释看看你所了解到的东西。 我再来补充。
先从concept谈, 然后再进入比较深一点。没有的话你会mong cha cha.
回复

使用道具 举报

 楼主| 发表于 15-11-2008 03:36 PM | 显示全部楼层

回复 9# fritlizt 的帖子

concept我知道,我不会program吧了。。
我不懂要怎样program input&output..
回复

使用道具 举报

 楼主| 发表于 19-11-2008 12:06 AM | 显示全部楼层

回复 11# fritlizt 的帖子

不知这2个pic能表达一切
请看看。。
回复

使用道具 举报


ADVERTISEMENT

发表于 26-11-2008 11:07 PM | 显示全部楼层
请你用心让人帮忙你,我也看不过眼了,请写长一点仔细一点,有头有尾,要不你就别问了,浪费大家的时间,问自己吧,来回发了那么多帖,你得到了什么?
回复

使用道具 举报

发表于 26-11-2008 11:53 PM | 显示全部楼层
原帖由 korean 于 19-11-2008 12:06 AM 发表
不知这2个pic能表达一切
请看看。。


楼主, 最近很忙 有空才update你。
回复

使用道具 举报

发表于 27-11-2008 01:53 PM | 显示全部楼层

回复 1# korean 的帖子

观摩这家美国公司开发的Pololu 3pi Mobile Robot, 我个人是觉得很强了。
机械部分也很完美, 他做line following robot是高速过弯也不跑飞。。。(不过那个line 也有够粗啦)


http://www.youtube.com/watch?v=P8T_ZZwOmIs


[ 本帖最后由 pic 于 30-11-2008 05:15 PM 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 25-4-2024 08:43 PM , Processed in 0.077601 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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