• 大小: 161KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: 其他
  • 标签: 数码管  多机菜单  

资源简介

数码管多级菜单,51单片机按键扫描!带proteus仿真,提供原理图源程序。程序有详细解释!

资源截图

代码片段和文件信息

#include < reg51.h >
#include 
#define uchar unsigned char
#define uint  unsigned int
sbit ESC    =P1^0;
sbit UP     =P1^1;
sbit DOWN   =P1^2;
sbit ENTER  =P1^3;

uchar layer = 0;            //用于表示显示的哪一级菜单 
uchar sign = 0;     //要显示的菜单号,一共个菜单 
uchar enable = 4;     //闪灯位,为0时不闪 
uchar enabledata;        //操作数用于闪灯    
struct jigou{     
    uchar a;        
    uchar b;
    uchar c;
    uchar d;
    }parameter[] = {{0000}{1111}{2222}{3333}{4444}{5555}{6666}};  //各菜单下的显示参数,实际中读24C02 
uchar LEDData[] = {0xc00xf90xa40xb00x990x920x820xf80x800x980xff};   //数码管显示的值0-9,最后0xff是关显示            
uchar data1[4] = {0123};
uchar dispdata[4] = {0123}; //显示的菜单数据 
void delay(uint ms)   // 延时子程序  
{
uchar k;
while(ms--)
{
  for( k = 0; k < 120; k++ );
}
}
void addparameter( uchar a )   //当layer=2时,被UPKEY键掉用,实现操作数的加 
{
switch(a)
{
  case 0:
  enabledata =++ parameter[sign].a;
  break;
  case 1:
  enabledata =++ parameter[sign].b;
  break;
  case 2:
  enabledata =++ parameter[sign].c;
  break;
  case 3:
  enabledata =++ parameter[sign].d;
  break;
  default:
  break;
}
}
void subparameter( uchar a )   //当layer=2时,被DOWNKEY键调用,实现操作数的减 
{
switch(a)
{
  case 0:
  enabledata =-- parameter[sign].a;
  break;
  case 1:
  enabledata =-- parameter[sign].b;
  break;
  case 2:
  enabledata =-- parameter[sign].c;
  break;
  case 3:
  enabledata =-- parameter[sign].d;
  break;
  default:
  break;  
}
}
void copymenu()        //用五拷贝参数 ,用于esckey键
{
dispdata[0] = sign;
dispdata[1] = 10;
dispdata[2] = 10;
dispdata[3] = 10;
enabledata = sign;      //用于功功能操作灯闪烁 
}
void copy(void)       //拷贝操作项的参数 
{
dispdata[0] = parameter[sign].a;
dispdata[1] = parameter[sign].b;
dispdata[2] = parameter[sign].c;
dispdata[3] = parameter[sign].d;
enabledata = dispdata[enable];  //用于功能操作灯闪烁 

void copyfre(void)       //恢复最初的显示,假设是当前的运行速度 
{
dispdata[0] = data1[0];
dispdata[1] = data1[1];
dispdata[2] = data1[2];
dispdata[3] = data1[3];

void esckey()     //返回键处理程序   
{
if( layer == 0||layer == 2 ) //当操作层在0或2时,反回到1layer

     enable = 0;
  layer = 1;  
  copymenu();
  return;
}
if( layer == 1 )  //当layer在1层时,返回到开机显示的参数 
{
  layer=0;
  enable=4;
  copyfre();
}  
if( layer > 1 )    //当操作层在2时,返回第上级显示界面 
{
  layer = 1;
  enable = 0;
  copymenu();
}

}         
void upkey()     //upkey处理程序
{
if( layer == 0 )   //在层0时,不执行操作 
  return ;    //在层1时,参数项加1
if( layer == 1&&sign < 6 )
{
    ++sign;
    copymenu( );
    return;
  }
  if( layer == 2&&dispdata[enable] <9 ) //如果是在参数操作层,切操作数不大于9,参数相应位加1
  {
   addparameter(enable );
  copy();
  }
}
void downkey()
{
if ( layer == 0 )
  return;
if( layer == 1&&0 < sign )
{
    --sign;
    copymenu();
  }
  if( layer == 2&&0  {
   subparameter( enable );
  copy();
  }
}
void enterkey()      //dnterkey处理程序 
{
if

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      67958  2010-05-24 14:43  数码管多级菜单自己调试\Backup Of snow.DBK

     文件      89253  2010-05-28 14:02  数码管多级菜单自己调试\Backup Of 数码管多级菜单.DBK

     文件       4803  2012-02-28 22:54  数码管多级菜单自己调试\cmian.c

     文件       9287  2012-02-28 22:54  数码管多级菜单自己调试\cmian.LST

     文件      11115  2012-02-28 22:54  数码管多级菜单自己调试\cmian.OBJ

     文件      67959  2010-05-24 15:48  数码管多级菜单自己调试\Last Loaded snow.DBK

     文件      94939  2012-03-05 18:13  数码管多级菜单自己调试\Last Loaded 数码管多级菜单 - 副本.DBK

     文件      94939  2012-02-27 12:44  数码管多级菜单自己调试\Last Loaded 数码管多级菜单.DBK

     文件       9099  2012-02-27 15:47  数码管多级菜单自己调试\ShowMenu.lst

     文件      11048  2012-02-27 15:47  数码管多级菜单自己调试\ShowMenu.obj

     文件      10164  2012-02-27 18:26  数码管多级菜单自己调试\snow

     文件      14472  2012-02-29 23:04  数码管多级菜单自己调试\snow.c

     文件       3485  2012-02-27 18:26  数码管多级菜单自己调试\snow.hex

     文件      29007  2012-02-27 18:26  数码管多级菜单自己调试\snow.LST

     文件      16259  2012-02-27 18:26  数码管多级菜单自己调试\snow.M51

     文件      12454  2012-02-27 18:26  数码管多级菜单自己调试\snow.OBJ

     文件       1490  2012-03-10 19:46  数码管多级菜单自己调试\snow.Opt

     文件        209  2012-03-10 19:50  数码管多级菜单自己调试\snow.plg

     文件        910  2010-05-28 13:07  数码管多级菜单自己调试\snow.PWI

     文件       2013  2012-02-27 18:00  数码管多级菜单自己调试\snow.Uv2

     文件       1492  2012-03-07 21:25  数码管多级菜单自己调试\snow_Opt.Bak

     文件       2132  2010-07-22 11:17  数码管多级菜单自己调试\snow_Uv2.Bak

     文件       4805  2012-03-05 18:18  数码管多级菜单自己调试\Text1.c

     文件       9445  2012-03-05 18:17  数码管多级菜单自己调试\Text1.LST

     文件      11275  2012-03-05 18:17  数码管多级菜单自己调试\Text1.OBJ

     文件       9399  2012-03-05 18:17  数码管多级菜单自己调试\zijiban

     文件       2301  2012-03-05 18:17  数码管多级菜单自己调试\zijiban.hex

     文件      13752  2012-03-05 18:17  数码管多级菜单自己调试\zijiban.M51

     文件       1012  2012-03-07 21:24  数码管多级菜单自己调试\zijiban.Opt

     文件        186  2012-03-07 21:24  数码管多级菜单自己调试\zijiban.plg

............此处省略10个文件信息

评论

共有 条评论