找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2921|回复: 2
打印 上一主题 下一主题
收起左侧

单片机与电脑串口通信控制,附带遥控控制

[复制链接]
跳转到指定楼层
楼主
ID:105323 发表于 2016-2-22 02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. /******单片机与电脑串口通信控制,附带遥控控制********/
  2. /****** 单片机接收电脑串口发出的指令并执行相应动作。同时,也接收无线遥控发出的信号,并执行动作**************/
  3. #include <REG51.H>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管编码,预留    
  7. uchar code ACT[4]={0xfe,0xfd,0xfb,0xf7};//数码管显示相关,预留
  8. /*************************************************************/
  9. uchar code as[]=" shoudao zhiling :\0";
  10. uchar a=0x30,b;
  11. sbit  D1=P2^3;
  12. sbit  D2=P2^4;   
  13. //****************************************************
  14. void init(void)   
  15. {
  16.    
  17. TMOD=0x20;   
  18. TH1=0xfd;   
  19. TL1=0xfd;   
  20. SCON=0x50;   
  21. TR1=1;   
  22. ES=1;   
  23. EA=1;
  24. }   
  25. //************************
  26. void delay(uint k)  
  27. {   
  28. uint data i,j;  
  29. for(i=0;i<k;i++)
  30. {   
  31. for(j=0;j<121;j++){;}  
  32. }   
  33. }
  34. //**************************************
  35. void main(void)   
  36. {
  37. uchar i,temp;
  38. P2=0xff;
  39. delay(3000);/******因为单片机上电后IO脚成高电平状态,所以延时一下,下面把需要的引脚清0******、
  40. P1=0x00;
  41. D1=0;//要控制的引脚,清0.防止上电动作后不能复原
  42. D2=0;
  43. init();  
  44.     while(1)
  45.     {
  46. if(P1!=0x00)   //无线遥控接收脚状态扫描
  47. {delay(10);
  48. if(P1!=0x00)
  49.     temp=P1;
  50. }
  51.   
  52. switch(temp )//遥控接收处理
  53. {
  54. case 0x01:D1=1;break;
  55. case 0x02:D1=0;break;
  56. case 0x04:D2=1;break;
  57. case 0x08:D2=0;break;
  58. default:break;
  59. }  
  60. switch(b)//串口接收数据处理

  61. {
  62. case 0x31:D1=1;break;
  63. case 0x32:D1=0;break;
  64. case 0x33:D2=1;break;
  65. case 0x34:D2=0;break;
  66. case 0x35:D1=0;D2=0;break;
  67. default:break;
  68. }
  69.      delay(1);
  70.   if(RI)  
  71.   {
  72.   RI=0;i=0;
  73.   while(as[i]!='\0'){SBUF=as[i];while(!TI);TI=0;i++;} //串口发送数据
  74.   SBUF=b;while(!TI);TI=0;   //回应串口指令内容
  75.   EA=1;
  76.   }
  77.     }     
  78. }  
  79. //*****************************************
  80. void serial_serve(void) interrupt 4 //串口中断
  81. {     
  82. a=SBUF;
  83. b=a;  
  84. EA=0;   
  85. }  
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

板凳
ID:184243 发表于 2017-3-28 19:52 | 只看该作者
  程序有问题,39行最后结尾的"、"应该是"/"
回复

使用道具 举报

沙发
ID:167215 发表于 2017-3-28 15:51 | 只看该作者
程序有问题,39行最后结尾的"、"应该是"/"
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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