找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7316|回复: 5
收起左侧

入门级自制51单片机主控蓝牙遥控

[复制链接]
ID:380534 发表于 2018-11-4 12:52 | 显示全部楼层 |阅读模式
之前为了控制小车做的51主控的遥控器 ,源码上传了 , PCB 压缩了 ,但太大 传不上来, 奉献一下,也希望有黑币奖赏, 以后会常给大家带点小制作出来 。

制作出来的实物图如下:

小车

小车
IMG_0751.JPG IMG_0750.JPG IMG_0749.JPG

单片机源程序:
  1. /*
  2. 海风吹着凉
  3. */

  4. #include "nokia_5110.h"
  5. #include "bmp_pixel.h"

  6. //***********************************
  7. #define                delay_time        25767
  8. int a=-30000;        //初值110ms
  9. int b=-85000;        //初值85ms
  10. sbit shang=P2^4;
  11. sbit xia=P2^0;
  12. sbit zuo=P2^3;
  13. sbit you=P2^1;
  14. sbit zhong=P2^2;
  15. int anjianzhi;
  16. char Tdata;     //串口发数据
  17. char Rdata=10;     //串口收数据           初始化不用的值
  18. int AJflag;
  19. int biaozhi=0;




  20. /********************************************************************/
  21. void zhongduanInit();
  22. void Delay();


  23. /******************************************************************************/

  24. void main(void)
  25. {
  26.         LCD_init(); //初始化液晶   
  27.         LCD_clear();
  28.         LCD_write_english_string(4,0," SEA BREEZE ");
  29.         zhongduanInit();
  30.         while(1)  
  31.         {
  32. /*************** 按键显示  ******************/

  33.                 if(anjianzhi==2)
  34.                 {
  35.                         LCD_write_english_string(0,1,"    shang ");        
  36.                 }
  37.                 else if(anjianzhi==8)
  38.                 {
  39.                         LCD_write_english_string(0,1,"    xia   ");
  40.                 }
  41.                 else if(anjianzhi==4)
  42.                 {
  43.                            LCD_write_english_string(0,1,"    zuo   ");
  44.                 }
  45.                 else if(anjianzhi==6)
  46.                 {
  47.                            LCD_write_english_string(0,1,"    you   ");
  48.                 }
  49.                 else if(anjianzhi==5)
  50.                 {
  51.                         LCD_write_english_string(0,1,"    zhong ");
  52.                 }
  53.                 else if(anjianzhi==0)
  54.                 {
  55.                         LCD_write_english_string(0,1," NO       ");
  56.                 }
  57.                 else if(anjianzhi==1)
  58.                 {
  59.                         LCD_write_english_string(0,1," yaokong  ");
  60.                 }
  61.                 else if(anjianzhi==3)
  62.                 {
  63.                         LCD_write_english_string(0,1," xunji    ");
  64.                 }
  65.                 else if(anjianzhi==7)
  66.                 {
  67.                         LCD_write_english_string(0,1," bizhang  ");
  68.                 }

  69. /*************    接收显示    **************/
  70.                
  71.                 if(Rdata=='0')
  72.                 {
  73.                         LCD_write_english_string(0,2," succse ");        
  74.                 }
  75.                 else if(Rdata=='2')
  76.                 {
  77.                         LCD_write_english_string(0,2," qianjin ");
  78.                 }
  79.                 else if(Rdata=='8')
  80.                 {
  81.                         LCD_write_english_string(0,2," houtui  ");                        
  82.                 }
  83.                 else if(Rdata=='4')
  84.                 {
  85.                         LCD_write_english_string(0,2," zuozhuan ");
  86.                 }
  87.                 else if(Rdata=='6')
  88.                 {
  89.                         LCD_write_english_string(0,2," youzhuan ");
  90.                 }
  91.                 else if(Rdata=='5')
  92.                 {
  93.                         LCD_write_english_string(0,2," tingzhi  ");
  94.                 }
  95.                 else if(Rdata=='1')
  96.                 {
  97.                         LCD_write_english_string(0,3," yaokong  ");
  98.                 }
  99.                 else if(Rdata=='3')
  100.                 {
  101.                         LCD_write_english_string(0,3," xunji    ");
  102.                 }
  103.                 else if(Rdata=='7')
  104.                 {
  105.                         LCD_write_english_string(0,3," bizhang  ");
  106.                 }
  107.                 else
  108.                 {
  109.                         LCD_write_english_string(0,2," fail     ");
  110.                 }
  111.         }         
  112. }

  113. void Delay(unsigned int ims )
  114. {
  115.         unsigned int i;
  116.         for(;ims>0;ims--)
  117.         {
  118.                 for(i=0;i<124;i++){;}   
  119.         }
  120. }

  121. void zhongduanInit()
  122. {
  123.         TMOD=0X21;
  124.         TH0=a/256;
  125.         TL0=a%256;
  126.         ET0=1;
  127.         TR0=1;

  128.         
  129.         PCON=0;
  130.         SCON=0X50;
  131.         TH1=0XFD;
  132.         TL1=0XFD;
  133.         ES=1;
  134.         TR1=1;

  135.         EX0=1;
  136.         IT0=1;

  137.         EX1=1;
  138.         IT1=1;


  139.         
  140.         EA=1;
  141.                         
  142. }


  143. void ZD0() interrupt 0
  144. {
  145.         biaozhi++;
  146.         Delay(150);
  147.         biaozhi=biaozhi%3;
  148.         if(biaozhi==0)
  149.         {
  150.                 anjianzhi=1;
  151.                 AJflag=0;
  152.         }
  153.         else if(biaozhi==1)
  154.         {
  155.                 anjianzhi=3;
  156.                 AJflag=0;
  157.         }
  158.         else if(biaozhi==2)
  159.         {
  160.                 anjianzhi=7;
  161.                 AJflag=0;        
  162.         }        
  163. }

  164. void ZD1() interrupt 2
  165. {
  166.         
  167. }

  168. void anjian() interrupt 1
  169. {
  170.         TH0=a/256;
  171.         TL0=a%256;
  172.         if(AJflag==0)
  173.         {
  174.                   if(shang==0)
  175.                 {
  176.                         Delay(10);
  177.                         if(shang==0)
  178.                         {
  179.                                 anjianzhi=2;
  180.                         }
  181.                 }
  182.                 else if(xia==0)
  183.                 {
  184.                         Delay(10);
  185.                         if(xia==0)
  186.                         {
  187.                                 anjianzhi=8;
  188.                         }
  189.                 }
  190.                 else if(zuo==0)
  191.                 {
  192.                         Delay(10);
  193.                         if(zuo==0)
  194.                         {
  195.                                  anjianzhi=4;
  196.                         }
  197.                 }
  198.                 else if(you==0)
  199.                 {
  200.                         Delay(10);
  201.                         if(you==0)
  202.                         {
  203.                                 anjianzhi=6;        
  204.                         }
  205.                 }
  206.                 else if(zhong==0)
  207.                 {
  208.                         Delay(10);
  209.                         if(zhong==0)
  210.                         {
  211.                                 anjianzhi=5;        
  212.                         }
  213.                 }
  214.                 else if (shang==0&&xia==0)
  215.                 {
  216.                         anjianzhi=0;
  217.                 }
  218.                 switch(anjianzhi)
  219.                 {
  220.                         case(0):Tdata=0+48;SBUF=Tdata;        while(!TI);                break;
  221.                         case(2):Tdata=2+48;SBUF=Tdata;        while(!TI);                break;                                     //按键上
  222.                         case(8):Tdata=8+48;SBUF=Tdata;        while(!TI);                break;                                         //按键下
  223.                         case(4):Tdata=4+48;SBUF=Tdata;        while(!TI);                break;                                         //按键左
  224.                         case(6):Tdata=6+48;SBUF=Tdata;        while(!TI);                break;                                         //按键右
  225.                         case(5):Tdata=5+48;SBUF=Tdata;        while(!TI);                break;                                         //按键中
  226.                         case(1):Tdata=1+48;SBUF=Tdata;        while(!TI);                break;                                         //按键中
  227.                         case(3):Tdata=3+48;SBUF=Tdata;        while(!TI);                break;                                         //按键中
  228.                         case(7):Tdata=7+48;SBUF=Tdata;        while(!TI);                break;                                         //按键中
  229.                         default:        break;
  230.                 }
  231.                 AJflag=1;                                         
  232.         }
  233.         else if(AJflag==1)
  234.         {
  235.                 if(shang==0||xia==0||zuo==0||you==0||zhong==0)
  236.                 {
  237.                         Delay(10);
  238.                         if(shang==0||xia==0||zuo==0||you==0||zhong==0)
  239.                         {
  240.                                 AJflag=0;                        
  241.                         }               
  242.                 }
  243.                 TI=0;                                                   //这边清零                        
  244.         }
  245.         
  246.                
  247. }

  248. void dingshi1() interrupt 3
  249. {
  250.                
  251. }

  252. void chuankou() interrupt 4
  253. {
  254.         Rdata=SBUF;
  255.         RI=0;               
  256. }
复制代码

所有资料51hei提供下载:
遥控程序.rar (57.75 KB, 下载次数: 48)

评分

参与人数 2黑币 +115 收起 理由
杨雪飞 + 15 多谢分享,板子做的很好。
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:380534 发表于 2018-11-4 12:54 | 显示全部楼层
初来,多多照顾
回复

使用道具 举报

ID:380534 发表于 2018-11-4 12:55 | 显示全部楼层
有不清楚的,尽管提问。
回复

使用道具 举报

ID:1 发表于 2018-11-4 14:36 | 显示全部楼层
pcb把历史文件夹删掉,一般大小就很小了
回复

使用道具 举报

ID:544484 发表于 2019-8-12 15:40 | 显示全部楼层
可以提供下硬件原理图吗
回复

使用道具 举报

ID:83285 发表于 2020-5-2 11:19 | 显示全部楼层
可以提供下硬件原理图吗?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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