找回密码
 立即注册

QQ登录

只需一步,快速开始

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

NRF2401无线点菜系统 单片机源码和电路图

  [复制链接]
跳转到指定楼层
楼主
无线点菜系统基于NRF2401无线芯片和51单片机

所有源代码和电路图下载: 无线点菜系统.zip (235.54 KB, 下载次数: 216)

部分源码预览:
  1. #include<stdio.h>
  2. #include"delay.h"
  3. #include"NRF2401.H"

  4. sbit RS = P2^4;
  5. sbit RW = P2^5;
  6. sbit E  = P2^6;
  7. sbit RES = P2^3;
  8. sbit PSB = P2^1;
  9. sbit PAUSE = P3^0;

  10. #define DataPort P0

  11. unsigned char *num[10]={"0","1","2","3","4","5","6","7","8","9"};
  12. unsigned char i=1;                  
  13. unsigned char temp[8];
  14. unsigned char tf =0;
  15. unsigned char RxBuf[20]={0};       

  16. /*------------------------------------------------
  17.                     检测忙位
  18. ------------------------------------------------*/
  19. void Check_Busy()
  20. {  
  21.     RS=0;
  22.     RW=1;
  23.     E=1;
  24.     DataPort=0xff;
  25.     while((DataPort&0x80)==0x80);//忙则等待
  26.     E=0;
  27. }
  28. /*------------------------------------------------
  29.                    写命令
  30. ------------------------------------------------*/
  31. void Write_Cmd(unsigned char Cmd)
  32. {
  33.         Check_Busy();
  34.         RS=0;
  35.         RW=0;
  36.         E=1;
  37.         DataPort=Cmd;
  38.         DelayUs2x(5);
  39.         E=0;
  40.         DelayUs2x(5);
  41. }
  42. /*------------------------------------------------
  43.                     写数据
  44. ------------------------------------------------*/
  45. void Write_Data(unsigned char Data)
  46. {
  47.         Check_Busy();
  48.         RS=1;
  49.         RW=0;
  50.         E=1;
  51.         DataPort=Data;
  52.         DelayUs2x(5);
  53.         E=0;
  54.         DelayUs2x(5);
  55. }
  56. /*------------------------------------------------
  57.                    液晶屏初始化
  58. ------------------------------------------------*/
  59. void Init_ST7920()
  60. {  
  61.    DelayMs(40);           //大于40MS的延时程序
  62.    PSB=1;                 //设置为8BIT并口工作模式
  63.    DelayMs(1);            //延时
  64.    RES=0;                 //复位
  65.    DelayMs(1);            //延时
  66.    RES=1;                 //复位置高
  67.    DelayMs(10);
  68.    Write_Cmd(0x30);       //选择基本指令集
  69.    DelayUs2x(50);         //延时大于100us
  70.    Write_Cmd(0x30);       //选择8bit数据流
  71.    DelayUs2x(20);         //延时大于37us
  72.    Write_Cmd(0x0c);       //开显示(无游标、不反白)
  73.    DelayUs2x(50);         //延时大于100us
  74.    Write_Cmd(0x01);       //清除显示,并且设定地址指针为00H
  75.    DelayMs(15);           //延时大于10ms
  76.    Write_Cmd(0x06);       //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位,光标从右向左加1位移动
  77.    DelayUs2x(50);         //延时大于100us
  78. }
  79. /*------------------------------------------------
  80.                    显示字符串
  81. x:横坐标值,范围0~8
  82. y:纵坐标值,范围1~4
  83. ------------------------------------------------*/
  84. void LCD_PutString(unsigned char x,unsigned char y,unsigned char code *s)
  85. {
  86. switch(y)
  87.      {
  88.           case 1: Write_Cmd(0x80+x);break;
  89.           case 2: Write_Cmd(0x90+x);break;
  90.           case 3: Write_Cmd(0x88+x);break;
  91.           case 4: Write_Cmd(0x98+x);break;
  92.       default:break;
  93.          }
  94. while(*s>0)
  95.    {
  96.       Write_Data(*s);
  97.       s++;
  98.       DelayUs2x(50);
  99.    }
  100. }
  101. /*------------------------------------------------
  102.                    显示菜名
  103. ------------------------------------------------*/
  104. void Dispaly(void)
  105. {
  106.         switch(RxBuf[1])
  107.          {
  108.                   case 1:LCD_PutString(0,i," 01.鱼香肉丝     ");
  109.                          LCD_PutString(7,i,num[RxBuf[2]]);
  110.                                  break;
  111.                   case 2:LCD_PutString(0,i," 02.宫保鸡丁     ");
  112.                          LCD_PutString(7,i,num[RxBuf[2]]);
  113.                                  break;
  114.                   case 3:LCD_PutString(0,i," 03.麻婆豆腐     ");
  115.                          LCD_PutString(7,i,num[RxBuf[2]]);
  116.                                  break;
  117.                   case 4:LCD_PutString(0,i," 04.红烧鲤鱼     ");
  118.                          LCD_PutString(7,i,num[RxBuf[2]]);
  119.                                  break;
  120.                   case 5:LCD_PutString(0,i," 05.老醋花生     ");
  121.                          LCD_PutString(7,i,num[RxBuf[2]]);
  122.                                  break;
  123.                   case 6:LCD_PutString(0,i," 06.炒茼蒿       ");
  124.                          LCD_PutString(7,i,num[RxBuf[2]]);
  125.                                  break;
  126.                   case 7:LCD_PutString(0,i," 07.酱脊骨       ");
  127.                          LCD_PutString(7,i,num[RxBuf[2]]);
  128.                                  break;
  129.                   case 8:LCD_PutString(0,i," 08.拌蕨粉       ");
  130.                          LCD_PutString(7,i,num[RxBuf[2]]);
  131.                                  break;
  132.                   case 9:LCD_PutString(0,i," 09.爆炒腰花     ");
  133.                          LCD_PutString(7,i,num[RxBuf[2]]);
  134.                                  break;
  135.                   case 10:LCD_PutString(0,i," 10.炖牛肉      ");
  136.                          LCD_PutString(7,i,num[RxBuf[2]]);
  137.                                  break;
  138.                   case 11:LCD_PutString(0,i," 11.蒜苗炒肉    ");
  139.                          LCD_PutString(7,i,num[RxBuf[2]]);
  140.                                  break;
  141.                   case 12:LCD_PutString(0,i," 12.葱爆羊肉    ");
  142.                          LCD_PutString(7,i,num[RxBuf[2]]);
  143.                                  break;
  144.                   case 13:LCD_PutString(0,i," 13.葱爆牛肉    ");
  145.                          LCD_PutString(7,i,num[RxBuf[2]]);
  146.                                  break;
  147.                   case 14:LCD_PutString(0,i," 14.孜然羊肉    ");
  148.                          LCD_PutString(7,i,num[RxBuf[2]]);
  149.                                  break;
  150.                   case 15:LCD_PutString(0,i," 15.孜然牛肉    ");
  151.                          LCD_PutString(7,i,num[RxBuf[2]]);
  152.                                  break;
  153.                   case 16:LCD_PutString(0,i," 16.干煸豆角    ");
  154.                          LCD_PutString(7,i,num[RxBuf[2]]);
  155.                                  break;
  156.                   case 17:LCD_PutString(0,i," 17.干煸两样    ");
  157.                          LCD_PutString(7,i,num[RxBuf[2]]);
  158.                                  break;
  159.                   case 18:LCD_PutString(0,i," 18.红烧鸡翅    ");
  160.                          LCD_PutString(7,i,num[RxBuf[2]]);
  161.                                  break;
  162.                   case 19:LCD_PutString(0,i," 19.疙瘩汤      ");
  163.                          LCD_PutString(7,i,num[RxBuf[2]]);
  164.                                  break;
  165.                   case 20:LCD_PutString(0,i," 20.溜肥肠      ");
  166.                          LCD_PutString(7,i,num[RxBuf[2]]);
  167.                                  break;
  168.                   case 21:LCD_PutString(0,i," 21.水煮肉片    ");
  169.                          LCD_PutString(7,i,num[RxBuf[2]]);
  170.                                  break;
  171.                   case 22:LCD_PutString(0,i," 22.水煮鱼      ");
  172.                          LCD_PutString(7,i,num[RxBuf[2]]);
  173.                                  break;
  174.                   case 23:LCD_PutString(0,i," 23.醋溜白菜    ");
  175.                          LCD_PutString(7,i,num[RxBuf[2]]);
  176.                                  break;
  177.                   case 24:LCD_PutString(0,i," 24.角瓜炒肉    ");
  178.                          LCD_PutString(7,i,num[RxBuf[2]]);
  179.                                  break;
  180.                   case 25:LCD_PutString(0,i," 25.五香牛肉    ");
  181.                          LCD_PutString(7,i,num[RxBuf[2]]);
  182.                                  break;
  183.                   case 26:LCD_PutString(0,i," 26.盐水大虾    ");
  184.                          LCD_PutString(7,i,num[RxBuf[2]]);
  185.                                  break;
  186.                   case 27:LCD_PutString(0,i," 27.白菜豆腐    ");
  187.                          LCD_PutString(7,i,num[RxBuf[2]]);
  188.                                  break;
  189.                   case 28:LCD_PutString(0,i," 28.韭菜鸡蛋    ");
  190.                          LCD_PutString(7,i,num[RxBuf[2]]);
  191.                                  break;
  192.                   case 29:LCD_PutString(0,i," 29.蒜台炒肉    ");
  193.                          LCD_PutString(7,i,num[RxBuf[2]]);
  194.                                  break;
  195.                   case 30:LCD_PutString(0,i," 30.红烧排骨    ");
  196.                           LCD_PutString(7,i,num[RxBuf[2]]);
  197.                                  break;
  198.                   default:break;
  199.           }


  200. }
  201. /*------------------------------------------------
  202.                       清屏
  203. ------------------------------------------------*/
  204. void ClrScreen()
  205. {
  206.    Write_Cmd(0x01);
  207.    DelayMs(15);
  208. }
  209. /*------------------------------------------------
  210.                     主程序
  211. ------------------------------------------------*/
  212. void main()
  213. {
  214.        
  215.         init_NRF24L01();
  216.         Init_ST7920();
  217.         DelayMs(500);
  218.         LCD_PutString(0,1," -无线点菜系统- ");
  219.         while(1)         
  220.              {
  221.                   SetRX_Mode();
  222.                   nRF24L01_RxPacket(RxBuf);
  223.               if(RxBuf[0]==0XAA)
  224.                         {       
  225.                                 if(i==5)
  226.                                 {
  227.                                    i=1;                                                          
  228.                                 }
  229.                                  Dispaly();
  230.                                  RxBuf[0] = 0x00;
  231.                                  RxBuf[1] = 0x00;
  232.                              RxBuf[2] = 0x00;
  233.                                  i++;                               
  234.                         }                
  235.               }
  236. }

复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:165526 发表于 2017-2-23 11:17 | 只看该作者
学习了,谢谢
回复

使用道具 举报

板凳
ID:168935 发表于 2017-3-7 20:28 | 只看该作者
学习了 谢谢谢谢
回复

使用道具 举报

地板
ID:182884 发表于 2017-3-23 18:55 | 只看该作者
谁能给我发一下资料 大神们    邮箱 783482920@qq.com     大神们万分感激
回复

使用道具 举报

5#
ID:171009 发表于 2017-3-23 20:09 | 只看该作者
求资料
回复

使用道具 举报

6#
ID:82765 发表于 2017-3-24 12:37 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

7#
ID:257910 发表于 2018-7-9 22:27 来自手机 | 只看该作者
51的单片机,,,
回复

使用道具 举报

8#
ID:369796 发表于 2018-7-11 22:29 | 只看该作者
谢谢。。。。。。。。
回复

使用道具 举报

9#
ID:27254 发表于 2018-8-8 21:18 | 只看该作者
这个可以用于实际么?
回复

使用道具 举报

10#
ID:342294 发表于 2018-8-22 17:11 | 只看该作者
你这个调通了吗
回复

使用道具 举报

11#
ID:355505 发表于 2019-3-3 19:50 | 只看该作者
刚好需要
回复

使用道具 举报

12#
ID:403027 发表于 2019-4-5 10:26 | 只看该作者
好谢谢分享!!!!!!!
回复

使用道具 举报

13#
ID:471375 发表于 2019-4-25 10:31 | 只看该作者
不错不错,终于找到了
回复

使用道具 举报

14#
ID:585455 发表于 2019-7-22 22:19 | 只看该作者
好的作品人人愛  
回复

使用道具 举报

15#
ID:243394 发表于 2019-10-28 13:00 | 只看该作者
好谢谢分享!!!!!!!
回复

使用道具 举报

16#
ID:631363 发表于 2019-10-28 14:42 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

17#
ID:51142 发表于 2019-10-30 00:25 | 只看该作者
这个好,可以学习一下2.4G,
回复

使用道具 举报

18#
ID:660959 发表于 2019-12-10 20:22 | 只看该作者
插眼 谢谢啦
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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