搜索
bottom↓
回复: 4

各位大侠帮帮忙吧 基于单片机的排队叫号系统 需要用A7105

[复制链接]

出0入0汤圆

发表于 2012-4-2 18:31:54 | 显示全部楼层 |阅读模式
    各位大哥大姐,帮帮忙吧,真的是想破头都没法解决这个问题,我们老师要求设计一个基于单片机的排队叫号系统,这个还好办,但是关键是他要求我用无线通信模块A7105   我之前都没听说过  根本不知道如何实现A7105和单片机之间的信号的传递   程序根本不晓得怎样写,大哥们帮帮小弟吧,小弟在这感激不尽   
  

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

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入134汤圆

发表于 2012-4-2 18:44:49 | 显示全部楼层
百度第一个不是就有吗

http://www.micrelchip.com/cgi-bin/RF/A7105.html


跟NRL24L01差不多吧

出0入0汤圆

发表于 2012-4-2 18:48:41 | 显示全部楼层
用得着想破头吗?百度上很多A7105的资料啊!

出0入0汤圆

 楼主| 发表于 2012-4-2 19:33:51 | 显示全部楼层
elecfun 发表于 2012-4-2 18:44
百度第一个不是就有吗

http://www.micrelchip.com/cgi-bin/RF/A7105.html

大哥  这个我也看到了  我是个初学单片机的  我已经把有线传输的单片机排队叫号系统完成了  但是就是不知道怎样来实现无线传输  特别是程序方面我不会写  这个是有线传输的数据  大哥先看看
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^0;
sbit rw=P2^1;
sbit e=P2^2;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit key5=P1^4;
sbit sounder=P3^7;

uchar prompt1[]="Your No.is 00!";   
uchar prompt2[]="No.00 Go To Win.0";  
uchar prompt3[]="Queue is full ";      
uchar prompt4[]="Queue is empty !";  

uint num_count=0;                  //排队叫的号码
uint rank_number[20]={0};          //排队叫号存储的数组
uint num=0;                        //窗口消的号码
int RankFlag=0;                    //叫号的标志
int ClearNumFlag=0;                //消号的标志
uint LengthFlag=0;                 //队列长度 叫一次号时+1,消一次号时-1

/*延时函数*/
void delay(uint n)
{
   while (n--);
}

/*****************************************
LCD1602 *显示屏命令写入函数*
*****************************************/
void LCD_write_com(uchar com)
{  
   e=0;
   rs=0;
   rw=0;
   P0= com;
   delay(1000);
   e=1;
   delay(1000);
   e=0;
}
/*****************************************
LCD1602 *显示屏数据写入函数*
*****************************************/
void LCD_write_data(uchar dat)
{
   e=0;
   rs=1;
   rw=0;
   P0 = dat;
   delay(1000);
   e=1;
   delay(1000);
   e=0;
}
/*****************************************
LCD1602 *显示屏清空显示*
*****************************************/
void LCD_clear(void)
{
   LCD_write_com(0x01);
   delay(1000);
}
/*****************************************
LCD1602 显示屏初始化函数
*****************************************/
void LCD_init(void)
{
   LCD_write_com(0x38);    /*显示模式设置*/
   delay(100);
   LCD_write_com(0x38);
   delay(100);
   LCD_write_com(0x38);
   delay(100);
   LCD_write_com(0x38);  
   LCD_write_com(0x08);    /*显示关闭*/
   LCD_write_com(0x01);    /*显示清屏*/
   LCD_write_com(0x06);    /*显示光标移动设置*/
   delay(100);
   LCD_write_com(0x0C);    /*显示开及光标设置*/
}
/*简单的蜂鸣器提示音*/
void sound()
{ uint a;
for(a=0;a<500;a++)
{
        sounder=0;
        delay(61);
        sounder=1;
}
}
/*获取键值函数*/
uint sweep_key()
{  
   uint jianzhi;                    
   if(key1==0)
{        delay(1000);
        if(key1==0)
        jianzhi=1;
        RankFlag=1;
}
        if(key2==0||key3==0||key4==0||key5==0)
{   delay(1000);
        if(key2==0)
        jianzhi=2;
        if(key3==0)
        jianzhi=3;
        if(key4==0)
        jianzhi=4;
        if(key5==0)
        jianzhi=5;
        ClearNumFlag=1;
}
        return (jianzhi);
}
/*****************************************
叫号机 按一次一号键变量+1,最大为20                        
*****************************************/
void QueueNumProcess()
{
  
   if(RankFlag==1)             //判断叫号标志是否有效
   {
      if ( LengthFlag<20)
      {   
                 num_count++;
             rank_number[LengthFlag] = num_count;
      }
      LengthFlag++;
   }
}
/*****************************************
窗口消号处理函数
*****************************************/
void ClearNumProcess()
{
   uint i;
   if (ClearNumFlag==1)     //判断消号标志是否有效
   {
      num=rank_number[0];   //把消的号赋给全局变量num
      for(i=0;i<19;i++)     //让数组整体左移一个存储单元,即把消得号删除
      {
             rank_number=rank_number[i+1];
      }
      LengthFlag--;
   }
}
/*****************************************
检测到按键后,检测函数处理及LCD显示处理
*****************************************/
void CheckButtonProcess(uint m)  //m代表检测到的键值
{
   uint jz,i;
   jz=m;
   if((jz==1) && (RankFlag==1))
   {  
           // 当队列人数达到20时,提示
          // Queue is full
          if( LengthFlag>=20 )               
          {
             LCD_clear();
             LCD_write_com(0x80+0x02);
         delay(100);
         for(i=0;i<16;i++)
         {
            LCD_write_data(prompt3);
                delay(100);
         }
          }
          else
          {
             QueueNumProcess();
                       
             prompt1[11]=(num_count)/10+'0';
             prompt1[12]=(num_count)%10+'0';
          
             LCD_clear();
             LCD_write_com(0x80+02);
         delay(100);
         for(i=0;i<15;i++)
         {
            LCD_write_data(prompt1);  //"Your No.is 00!";
                delay(100);
         }
         RankFlag=0;
          }
   }
   
   if((jz==2||jz==3||jz==4||jz==5) && ClearNumFlag==1)
   {       
          if(LengthFlag==0)
          {
             LCD_clear();
             LCD_write_com(0x80+0);
         delay(1000);
         for(i=0;i<16;i++)
         {
            LCD_write_data(prompt4);//"Queue is empty ";
                delay(100);
         }
                        delay(65535);                                //无人排队时屏幕自动清屏,计数归零
                        LCD_clear();
                        num_count=0;
          }
          else
          {
             ClearNumProcess();       //消号处理,营业员操作
                    sound();
             prompt2[3]=num/10+'0';
             prompt2[4]=num%10+'0';
                 prompt2[15]=(jz-1)+'0';
             LCD_clear();
             LCD_write_com(0x80+0);
         delay(100);
         for(i=0;i<16;i++)
         {
            LCD_write_data(prompt2); //"No.00 come to No.0";
            delay(100);
         }
             ClearNumFlag=0;
          }
   }  
}
/*****************************************
main 函数
*****************************************/
void main()
{
   uint Kvalue;
   LCD_init();
   while(1)
   {       
      Kvalue=sweep_key();       //获取键值
          if (RankFlag==1 || ClearNumFlag==1)//判断叫号标志和消号标志是否有效
             CheckButtonProcess(Kvalue);
          delay(200);
          RankFlag=0;             //使叫号标志无效
          ClearNumFlag=0;         //使消号标志无效
          Kvalue=0;               //键值清0
   }  
}

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-6-2 23:41

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

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