基于51单片机的餐饮管理设计 NRF2401加LCD12864
发送端原理图:
接收端原理图:
发送端单片机源程序如下:
- /*****************************************
- *****************************************/
- #include"reg52.h"
- #include"Allhead.h"
- sbit LCD_RS=P3^5;
- sbit LCD_RW=P3^6;
- sbit LCD_EN=P3^4;
- sbit LCD_PSB=P3^7;
- sbit wela=P2^6;
- sbit dula=P2^7;
- sbit k1=P1^0;
- sbit k2=P1^1;
- sbit k3=P1^2;
- sbit k4=P3^3;
- sbit led2=P0^0;
- unchar code dis1[]={"----请您点菜----"};
- unchar code dis2[]={"鱼香肉丝 7 元"};
- unchar code dis3[]={"宫保鸡丁 8 元"};
- unchar code dis4[]={"回锅肉 10元"};
- unchar code dis5[]={"京酱肉丝 8 元"};
- unchar code dis6[]={"红烧肉 9 元"};
- unchar code dis7[]={"------已点------"};
- unchar code dis8[]={"------结账------"};
- unchar code dis9[]={"共计"};
- unchar code dis10[]={"元"};
- unchar k=1,j=1,u=1,n=0,m=0;
- char TxDate[4],sum=0;
- void lcd_display3();
- /*********************主函数***************************/
- void delay_1ms(unint x)
- {
- unint i,j;
- for(j=0;j<x;j++)
- for(i=0;i<110;i++);
- }
- void write_cmd(unchar cmd)
- {
- LCD_RS=0;
- LCD_RW=0;
- LCD_EN=0;
- P0=cmd;
- delay_1ms(5);
- LCD_EN=1;
- delay_1ms(5);
- LCD_EN=0;
- }
- void write_dat(unchar dat)
- {
- LCD_RS=1;
- LCD_RW=0;
- LCD_EN=0;
- P0=dat;
- delay_1ms(5);
- LCD_EN=1;
- delay_1ms(5);
- LCD_EN=0;
- }
- void lcd_pos(unchar X,unchar Y)
- {
- unchar pos;
- if(X==0)
- {X=0X80;}
- else if(X==1)
- {X=0X90;}
- else if(X==2)
- {X=0X88;}
- else if(X==3)
- {X=0X98;}
- pos=X+Y;
- write_cmd(pos);
-
- }
- /************屏幕显示***************/
- void lcd_display() //点菜界面
- {
- unchar i;
- lcd_pos(0,0);
- i=0;
- while(dis1[i]!='\0')
- {
- write_dat(dis1[i]);
- i++;
- }
- if(u==1) //第一页
- {
- lcd_pos(1,1);
- i=0;
- while(dis2[i]!='\0')
- {
- write_dat(dis2[i]);
- i++;
- }
- lcd_pos(2,1);
- i=0;
- while(dis3[i]!='\0')
- {
- write_dat(dis3[i]);
- i++;
- }
- lcd_pos(3,1);
- i=0;
- while(dis4[i]!='\0')
- {
- write_dat(dis4[i]);
- i++;
- }
- }
- else if(u==2) //第二页
- {
- lcd_pos(1,1);
- i=0;
- while(dis3[i]!='\0')
- {
- write_dat(dis3[i]);
- i++;
- }
- lcd_pos(2,1);
- i=0;
- while(dis4[i]!='\0')
- {
- write_dat(dis4[i]);
- i++;
- }
- lcd_pos(3,1);
- i=0;
- while(dis5[i]!='\0')
- {
- write_dat(dis5[i]);
- i++;
- }
-
- }
- else if(u==3) //第三页
- {
- lcd_pos(1,1);
- i=0;
- while(dis4[i]!='\0')
- {
- write_dat(dis4[i]);
- i++;
- }
- lcd_pos(2,1);
- i=0;
- while(dis5[i]!='\0')
- {
- write_dat(dis5[i]);
- i++;
- }
- lcd_pos(3,1);
- i=0;
- while(dis6[i]!='\0')
- {
- write_dat(dis6[i]);
- i++;
- }
-
- }
- }
- void lcd_display2() //看菜界面
- {
- unchar i;
- lcd_pos(0,0);
- i=0;
- while(dis7[i]!='\0')
- {
- write_dat(dis7[i]);
- i++;
- }
- lcd_pos(1,0);
- i=0;
- switch(TxDate[0])
- {
- case 1 :
- while(dis2[i]!='\0')
- {
- write_dat(dis2[i]);
- i++;
- }break;
- case 2 :
- while(dis3[i]!='\0')
- {
- write_dat(dis3[i]);
- i++;
- }break;
- case 3 :
- while(dis4[i]!='\0')
- {
- write_dat(dis4[i]);
- i++;
- }break;
- case 4 :
- while(dis5[i]!='\0')
- {
- write_dat(dis5[i]);
- i++;
- }break;
-
- case 5 :
- while(dis6[i]!='\0')
- {
- write_dat(dis6[i]);
- i++;
- }break;
- default : break;
- }
- lcd_pos(2,0);
- i=0;
- switch(TxDate[1])
- {
- case 1 :
- while(dis2[i]!='\0')
- {
- write_dat(dis2[i]);
- i++;
- }break;
- case 2 :
- while(dis3[i]!='\0')
- {
- write_dat(dis3[i]);
- i++;
- }break;
- case 3 :
- while(dis4[i]!='\0')
- {
- write_dat(dis4[i]);
- i++;
- }break;
- case 4 :
- while(dis5[i]!='\0')
- {
- write_dat(dis5[i]);
- i++;
- }break;
-
- case 5 :
- while(dis6[i]!='\0')
- {
- write_dat(dis6[i]);
- i++;
- }break;
- default : break;
- }
- lcd_pos(3,0);
- i=0;
- switch(TxDate[2])
- {
- case 1 :
- while(dis2[i]!='\0')
- {
- write_dat(dis2[i]);
- i++;
- }break;
- case 2 :
- while(dis3[i]!='\0')
- {
- write_dat(dis3[i]);
- i++;
- }break;
- case 3 :
- while(dis4[i]!='\0')
- {
- write_dat(dis4[i]);
- i++;
- }break;
- case 4 :
- while(dis5[i]!='\0')
- {
- write_dat(dis5[i]);
- i++;
- }break;
-
- case 5 :
- while(dis6[i]!='\0')
- {
- write_dat(dis6[i]);
- i++;
- }break;
- default : break;
- }
-
- }
- void lcd_display3() //算账
- {
- char a,b;
- unchar i;
- sum = 0;
-
- lcd_pos(0,0);
- i=0;
- while(dis8[i]!='\0')
- {
- write_dat(dis8[i]);
- i++;
- }
- switch(TxDate[0])
- {
- case 1 :
- sum=sum+7;break;
- case 2 :
- sum=sum+8;break;
- case 3 :
- sum=sum+10;break;
- case 4 :
- sum=sum+8;break;
-
- case 5 :
- sum=sum+9;break;
- default : break;
- }
- switch(TxDate[1])
- {
- case 1 :
- sum=sum+7;break;
- case 2 :
- sum=sum+8;break;
- case 3 :
- sum=sum+10;break;
- case 4 :
- sum=sum+8;break;
-
- case 5 :
- sum=sum+9;break;
- default : break;
- }
- switch(TxDate[2])
- {
- case 1 :
- sum=sum+7;break;
- case 2 :
- sum=sum+8;break;
- case 3 :
- sum=sum+10;break;
- case 4 :
- sum=sum+8;break;
-
- case 5 :
- sum=sum+9;break;
- default : break;
- }
- a=sum/10;
- b=sum%10;
- lcd_pos(1,0);
- i=0;
- while(dis9[i]!='\0')
- {
- write_dat(dis9[i]);
- i++;
- }
- write_dat(a+0x30);
- write_dat(b+0x30);
- i=0;
- while(dis10[i]!='\0')
- {
- write_dat(dis10[i]);
- i++;
- }
- }
- void lcd_init()
- {
- LCD_PSB=1;
- write_cmd(0x30);
- delay_1ms(5);
- write_cmd(0x0C);
- delay_1ms(5);
- write_cmd(0x01);
- delay_1ms(5);
- }
- /***************键盘扫描************/
- void keyscan()
- {
- if(k1==0)//向下移动光标键
- {
- delay_1ms(1);
- if(k1==0)
- {
- k++;
- j++;
- if(k>3)
- {
- k=3;
- u++;
- if(u==4)
- {
- u=1;
- }
- }
- if(j==6)
- {
- k=1;
- j=1;
- }
- while(!k1);
- write_cmd(0x01);
- delay_1ms(1);
- }
- }
- if(k2==0)//向上移动光标键
- {
- delay_1ms(1);
- if(k2==0)
- {
- k--;
- j--;
- if(k<1)
- {
- k=1;
- u--;
- if(u==0)
- {
- u=3;
- }
- }
- if(j==0)
- {
- k=3;
- j=5;
- }
- while(!k2);
- write_cmd(0x01);
- delay_1ms(1);
- }
- }
- if(k3==0)//选菜
- {
- delay_1ms(10);
- if(k3==0)
- {
- if(m==0)
- {
- TxDate[n]=j;
- n++;
-
- }
- else
- {
- NRFSetTxMode(TxDate);//发送菜单
- while(CheckACK()); //检测是否发送完毕
- while(!k3);
- delay_1ms(5);
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
基于单片机的餐饮管理系统设计.rar
(181.91 KB, 下载次数: 91)
|