搜索
bottom↓
回复: 63

自学单片机3个月,我的第一个单片机作品无线串口控制小车......

[复制链接]

出0入0汤圆

发表于 2010-12-25 13:46:46 | 显示全部楼层 |阅读模式

(原文件名:IMG0364A.jpg)


(原文件名:IMG0365A.jpg)


(原文件名:1111.jpg)
原理很简单,就是VC写的串口程序,向单片机发数据,单片机接到数据再用红外发射出去,小车接收到红外数据后拖动电机。大二的时候学校开过课,但是一学期下来流水灯都不会。我是自学的,没有任何老师指导,有问题都是自己想或是网上解决的,所以想告诉大家自学单片机是完全可以学出来的。

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-12-25 13:50:31 | 显示全部楼层
当自强!

出0入0汤圆

发表于 2010-12-25 15:19:08 | 显示全部楼层
很不错哟 如果是只学了三个月的话!

出0入0汤圆

发表于 2010-12-25 15:23:39 | 显示全部楼层
支持,虽然我不喜欢小车类的制作

出0入0汤圆

发表于 2010-12-25 16:49:04 | 显示全部楼层
很好啊,加油

出0入0汤圆

发表于 2010-12-25 18:26:41 | 显示全部楼层
哥们能指导下我吗?电子专科毕业5年,只会玩流水灯!呜呜

出0入0汤圆

 楼主| 发表于 2010-12-25 19:29:13 | 显示全部楼层
回复【5楼】cyq155351394
-----------------------------------------------------------------------

每个人都是从流水灯开始的,你可以先开下郭天翔的视频

出0入0汤圆

发表于 2010-12-25 20:17:57 | 显示全部楼层
当自强,菜鸟飞过深有体会

出0入0汤圆

发表于 2010-12-25 23:03:43 | 显示全部楼层
源码啊……

学习下……

出0入0汤圆

发表于 2010-12-25 23:32:58 | 显示全部楼层
放源码~~~~ 学习学习。。。

出0入0汤圆

 楼主| 发表于 2010-12-26 13:32:24 | 显示全部楼层
红外发射模块
#include <reg52.h>
#include<intrins.h>
#define uchar unsigned char       
uchar tabledu[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x00,0xC6,0x40,0x86,0x8E};
uchar tablewe[]={0xfd,0xfe};
sbit led=P1^1;
sbit out=P1^0;
void display(uchar a);
void delay(uchar aa);
void delay_xianshi();
void delayms(uchar aa);//延时程序
void khz(uchar aa);//是发射38KHZ的程序
void chuankouinit();
void fasong(uchar num);
uchar flag;      //发送标志位
uchar i,a,num1;
uchar sbuf;
void main()
{
        chuankouinit();
        while(1)
        {
        display(sbuf);
        if(flag)
        {
        ES=0;
        SBUF=sbuf;
        while(!TI);
        TI=0;
        ES=1;
        flag=0;
        }
        }
}
void delay_xianshi()
{
uchar aa=50;
while(aa--);
}
void display(uchar a)
{
P2=tablewe[1];
P0=tabledu[a/16];
delay_xianshi();
P0=0xff;
P2=tablewe[0];
P0=tabledu[a%16];
delay_xianshi();
P0=0xff;
}
void delay(uchar aa)
{
        uchar bb,cc;
        for(bb=aa;bb>0;bb--)
                for(cc=200;cc>0;cc--);
}
void chuankou() interrupt 4
{
flag=1;
sbuf=SBUF;
fasong(sbuf);
RI=0;
led=0;
delay(200);
led=1;
delay(200);
led=0;
delay(200);
led=1;       
}
void chuankouinit()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SM0=0;
SM1=1;
REN=1;
ES=1;
EA=1;
}
void delayms(uchar aa)
{
for(a=aa;a>0;a--)
        {
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
        }
}
void khz(uchar aa)//是发射38KHZ的程序
{
        for(a=aa;a>0;a--)   //这个for语句可以得到准确的26.3波特率
                {
                        out=0;
                        i=7;                //低了17us
                        while(i>0)i--;                //   38kHZ  
                        out=1;
                                //高了9us      17+9=26us   比26.3快一点点
                }
}
void fasong(uchar num)
{
        khz(116);//发射3ms 38khz
        delayms(125);        //2ms
        for(num1=8;num1>0;num1--) //原来用的是a  后来出错,肯定在这里!
        {
                khz(40);        //1ms
                if(num&0x01)
                        {
                        delayms(93);//delay 1.5ms
                        delayms(93);//delay 1.5ms
                        }
                else
                        {
                        delayms(65);//delay 1ms
                        }
                num=num>>1;
        }
        khz(20);

}

出0入0汤圆

 楼主| 发表于 2010-12-26 13:33:50 | 显示全部楼层
小车程序
#include <reg52.h>
#define uchar unsigned char
uchar tablewe[]={0xf1,0xf2,0xf4,0xf8};                   //P2
uchar tabledu[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x00,0xC6,0x40,0x86,0x8E};                   //P1
sbit ina=P0^0;
sbit inb=P0^1;
sbit inc=P0^2;
sbit ind=P0^3;
void time1init();
void int1init();
void irpros();
void irwork();
void jieshou();
void delay();
void display();
void work();
uchar ircode;
uchar irdata[9];
uchar disp[2];
uchar irrecvok;
uchar irprosok;
uchar start_flag;
uchar bitnum;
uchar irtime;
void main()
{
time1init();
int1init();
while(1)
{
jieshou();
display();
work();
}
}
void time1init()
{
TMOD=0x20;
TH1=0;
TL1=0;
TR1=1;
ET1=1;
EA=1;
}
void int1init()
{
IT1=1;
EX1=1;
EA=1;
}
void time1() interrupt 3
{
        irtime++;       
}
void int1() interrupt 2
{
        if(start_flag)
        {
                 if(irtime>18)
                 {
                         irdata[0]=irtime;
                        bitnum=1;
                        irtime=0;
                 }
                 else
                 {
                         irdata[bitnum]=irtime;
                        irtime=0;
                         bitnum++;
                        if(bitnum==9)
                        {
                                bitnum=0;
                                start_flag=0;
                                irrecvok=1;
                        }
                 
                 }
        }
        else
        {
                start_flag=1;
                irtime=0;
        }
}
void irpros()
{
uchar i,k;
uchar value;
k=1;

for(i=0;i<8;i++)
{
        value>>=1;
        if(irdata[k]>14)
        {
                value|=0x80;
        }
        k++;
}
ircode=value;
irprosok=1;
}
void irwork()
{
disp[0]=ircode/16;
disp[1]=ircode%16;
}
void delay()
{
uchar a=50;
while(a--);
}
void display()
{
P2=tablewe[0];
P1=tabledu[disp[0]];
delay();
P1=0xff;
P2=tablewe[1];
P1=tabledu[disp[1]];
delay();
P1=0xff;
P2=tablewe[2];
P1=tabledu[0];
delay();
P1=0xff;
P2=tablewe[3];
P1=tabledu[0];
delay();
P1=0xff;
}
void jieshou()
{
        if(irrecvok)
        {
        irrecvok=0;
        irpros();
        }
        if(irprosok)
        {
        irprosok=0;
        irwork();
        }
}
void work()
{
if(disp[0]==7&&disp[1]==15)                                 //左
{
        ina=0;
        inb=1;
        inc=1;
        ind=0;
}
if(disp[0]==11&&disp[1]==15)                          //右
{
                ina=1;
        inb=0;
        inc=0;
        ind=1;
}
if(disp[0]==13&&disp[1]==15)                         //前进
{
                 ina=1;
        inb=0;
        inc=1;
        ind=0;
}
if(disp[0]==14&&disp[1]==15)                         //后退
{
                 ina=0;
        inb=1;
        inc=0;
        ind=1;
}
if(disp[0]==15&&disp[1]==7)                                 //停止
{
                  ina=1;
        inb=1;
        inc=1;
        ind=1;
}
}

出0入0汤圆

 楼主| 发表于 2010-12-26 13:40:09 | 显示全部楼层
红外发射部分的原理图

(原文件名:红外发射器.jpg)

出0入0汤圆

发表于 2010-12-27 15:46:24 | 显示全部楼层
mark

出100入0汤圆

发表于 2010-12-27 20:00:48 | 显示全部楼层
哎~想想自己都n久没玩电子没玩单片机了,颓废了,还是在学校的时候有激_情!

出0入0汤圆

发表于 2010-12-28 01:32:29 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-12-28 10:16:53 | 显示全部楼层
常常动动手脑不错不错

出0入0汤圆

发表于 2010-12-28 10:29:14 | 显示全部楼层
就学了3个月,很了不起^_^

   顶一下学习学习

出0入0汤圆

发表于 2010-12-28 10:41:20 | 显示全部楼层
就学了三个月啊! 厉害的!

出0入0汤圆

 楼主| 发表于 2010-12-28 11:14:09 | 显示全部楼层
这两天把小车改了下,小车加了串口下载,红外发射器接了个键盘,和自带电源(就是4节5号电池)串口程序采用了鼠标松开就停车的方式,使小车更容易控制
上几张图给大家看

(原文件名:IMG0366A.jpg)


(原文件名:IMG0369A.jpg)


(原文件名:IMG0370A.jpg)


(原文件名:1111.jpg)

出0入0汤圆

发表于 2010-12-28 13:27:58 | 显示全部楼层
很好很强大啊,我是新手啊,弱弱的问一下,那个vc软件哪里下载的?全名是什么啊?谢谢

出0入0汤圆

 楼主| 发表于 2010-12-28 13:35:50 | 显示全部楼层
百度一下有很多地方可以下的 我用的版本是Microsoft Visual C++ 6.0

出0入0汤圆

发表于 2010-12-28 17:30:27 | 显示全部楼层
henqiang

出0入0汤圆

发表于 2010-12-29 21:31:13 | 显示全部楼层
祝贺祝贺!
小车底盘哪里买的?多钱呢?

出0入0汤圆

 楼主| 发表于 2010-12-30 14:16:31 | 显示全部楼层
淘宝买的,其实就是面包板,呵呵
头像被屏蔽

出0入0汤圆

发表于 2011-1-3 21:28:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2011-1-4 15:58:47 | 显示全部楼层
很强大啊。。。。。。

出0入0汤圆

 楼主| 发表于 2011-1-7 12:00:41 | 显示全部楼层
回复【25楼】ljqdsj
-----------------------------------------------------------------------

呵呵,还没找工作哟,现在大三,一直很想学ARM,想学了ARM再出去找工作...

出0入0汤圆

发表于 2011-1-9 20:32:26 | 显示全部楼层
佩服呀,大三还是自学就学那么好,我也大三了,这是第一次上这个。我是学应用物理的,不过最近有个小项目会用到单片机,还希望各位高手能多多帮助呀!
麻烦看到的各位能否发点学习资料和经验吗?邮箱dzbluerain@163.com

出0入0汤圆

发表于 2011-3-18 10:19:02 | 显示全部楼层
上位机程序和小车部分原理图呢?开源一半等于没开源!

出0入0汤圆

发表于 2011-5-13 11:23:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-13 11:54:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-13 12:35:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-13 14:12:32 | 显示全部楼层
楼主厉害呀!

出0入0汤圆

发表于 2011-5-13 16:04:24 | 显示全部楼层
学ARM要尽快,不然过时了

出0入0汤圆

发表于 2011-5-13 16:23:58 | 显示全部楼层
学会点灯,也算入门了,再复杂的程序,其实就是复杂的点灯程序而已

出0入0汤圆

发表于 2011-5-13 22:51:47 | 显示全部楼层
我也是自学的,如果我说我现在13岁。。。也许有人比我小
单片机自学其实可以的,很容易的

出0入0汤圆

发表于 2011-5-15 10:24:15 | 显示全部楼层
厉害。

出0入0汤圆

发表于 2011-5-26 17:07:31 | 显示全部楼层
挺好

出0入0汤圆

发表于 2011-6-19 16:54:11 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-6-19 21:05:34 | 显示全部楼层
必须的mark

出0入0汤圆

发表于 2011-6-19 21:08:57 | 显示全部楼层
增加了深入学习的信心,赞一个

出0入0汤圆

发表于 2011-6-19 21:20:20 | 显示全部楼层
vc6
好感慨以前读书的时候也玩过,工作没入那行

出0入0汤圆

发表于 2011-6-20 17:02:30 | 显示全部楼层
软件编程自学都挺容易的,noi都是我教我们老师,老师再给别人讲。。。
硬件就不一样了,模电自己看了好长时间,什么也没懂

出0入0汤圆

发表于 2011-6-22 16:17:46 | 显示全部楼层
为什么不用无线串口直接控制小车,省了遥控器了

出0入0汤圆

发表于 2011-7-1 00:25:51 | 显示全部楼层
这个东西好像在哪里见过?

出0入0汤圆

发表于 2011-7-2 18:04:13 | 显示全部楼层
当年我也是花了一个星期编了一个数字时钟,功能十分完善的,一千多行代码,也不懂仿真,就是代码下载,看现象,不满意修改,在下载,十天后,基本就学会了!。。。。。。。。。

出0入0汤圆

发表于 2011-7-4 13:12:26 | 显示全部楼层
太厉害了吧,能教下怎么学的吗

出0入0汤圆

发表于 2012-3-24 13:53:18 | 显示全部楼层
很佩服楼主啊!!

出0入0汤圆

发表于 2012-4-5 23:12:22 | 显示全部楼层
这个挺好的

出0入0汤圆

发表于 2012-4-6 10:50:52 | 显示全部楼层

很好啊,加油

出0入0汤圆

发表于 2012-4-8 12:24:06 | 显示全部楼层
厉害,顶一个

出0入0汤圆

发表于 2012-4-14 13:31:24 来自手机 | 显示全部楼层
求上位机程序…楼主!

出0入0汤圆

发表于 2012-4-14 13:51:29 | 显示全部楼层
我今年都毕业了,只会玩流水灯,惭愧啊。其实我很想学单片机,不知道从哪下手,现在找这面的工作,没人要,因为没工作经验,我到底该咋办啊?

出0入0汤圆

发表于 2012-4-14 14:00:00 | 显示全部楼层
vc上位机还没会用啊。

出0入0汤圆

发表于 2012-4-14 14:52:58 | 显示全部楼层
楼主,找了半天没看到面包板。。。不会是把万用板和面包板搞错了吧?

出0入0汤圆

发表于 2012-4-14 23:56:35 | 显示全部楼层
      mark

出0入0汤圆

发表于 2012-4-15 00:11:08 | 显示全部楼层
强悍,从这儿看到了希望,一直想独立做个东西玩玩,总是拖延,慢慢就黄了。。。。。。

出0入0汤圆

发表于 2012-4-28 20:31:58 | 显示全部楼层
楼主,上位机程序能不能共享一下啊?初学者表示很需要……

出0入0汤圆

发表于 2012-4-28 20:43:37 | 显示全部楼层
cyq155351394 发表于 2010-12-25 18:26
哥们能指导下我吗?电子专科毕业5年,只会玩流水灯!呜呜

单片机是练出来的,不动手啥都学不会,俺学的时候一个月做30个Case就会拉

出0入0汤圆

发表于 2012-4-28 20:48:52 | 显示全部楼层
bbxyliyang08 发表于 2012-4-14 13:51
我今年都毕业了,只会玩流水灯,惭愧啊。其实我很想学单片机,不知道从哪下手,现在找这面的工作,没人要, ...

去看看郭天祥的<十天学会单片机>就可以入门了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 22:56

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

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