导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[wjb444]一个极简单的用C实现的LCD菜单显示例子



No.83857
作者:wjb444
邮件:wjb444@mail.china.com
ID:41980
登陆:9次
文章数:4篇
最后登陆IP:125.116.40.155
最后登陆:2010/3/22 9:23:06
注册:2005/9/19 23:10:22
财富:118
发帖时间:2005/9/19 23:18:50
发贴者IP:60.179.42.7
标题:wjb444:一个极简单的用C实现的LCD菜单显示例子
摘要:No.83857一个极简单的用C实现的LCD菜单显示例子 我是一个初学者,这个菜单在我的板子上能正常使用,很直观,很简单,适合初学者,但可能存在隐患,因为函数递归调用,有可能会耗尽RAM资源,希望各位大大指正
LCD:12232
MCU:SST89C52RC                            QQ:36835984
//////////////////////////////////////////////////////////////////////////////////////////////
/*****************************************************


      //--菜单11
    --设置时间--
      //--菜单12
                    --时间日期--   
      --菜单21
    --设置闹钟--
      --菜单22
主界面---
      --菜单31
    --菜单3--
      --菜单32
    --主菜单2--
      --菜单41
    --菜单4--
      --菜单42

******************************************************/


#include   <reg52.h>  
#define uchar unsigned char 
extern uchar code jiantou_shang[];      //上
extern uchar code jiantou_zhong[];      //中
extern uchar code jiantou_xia[];  //下
extern uchar code xiegang[];   ///
extern uchar code henggang[];   //-
extern uchar code maohao[];    //:
extern uchar code zhu[];    //主
extern uchar code cai[];    //菜
extern uchar code dan[];    //单
extern uchar code yan[];    //演 
extern uchar code si[];     //示
extern uchar code cheng[];    //程
extern uchar code xu[];     //序
extern uchar code shi[];    //时
extern uchar code jian[];    //间
extern uchar code ri[];     //日
extern uchar code qi[];     //期
extern uchar code she[];    //设
extern uchar code zi[];     //置
extern uchar code nao[];    //闹
extern uchar code zhong[];    //钟
extern uchar code pic0[];    //图片
extern uchar code num0[];    //0
extern uchar code num1[];    //1
extern uchar code num2[];    //2
extern uchar code num3[];    //3
extern uchar code num4[];    //4
extern uchar code num5[];    //5
extern uchar code num6[];    //6
extern uchar code num7[];    //7
extern uchar code num8[];    //8
extern uchar code num9[];    //9


extern void Get1302(uchar ucCurtime[]);
extern void Set1302(uchar *pClock);
extern void settime_year(void);
extern void start(void);

extern unsigned char key_scan_once();
extern unsigned char key_scan_cyc();
extern void Set1302(uchar *pClock);
extern void Get1302(uchar ucCurtime[]);
extern void init_lcd (void);
extern void delay (unsigned int us);  
extern void delay1 (unsigned int ms);
extern void disphz (uchar code *chn,uchar page,uchar line);
extern void dispzf (uchar code *eng,uchar page,uchar line);
extern void dispjt (uchar code *jiantou,uchar page);
extern void disptu (uchar code *img);
extern void wrlattice (uchar data1,uchar data2);
                        //00 //32 //23  //19 //12 //07 //05
            //秒  //分 //时 //日  //月  //星期//年
uchar  time_set[7]=      {0x00,0x32,0x15,0x18,0x12,0x07,0x05};
uchar  time_get[7];

//////////////////////////////////////////////////////////////
void zhujiemian(void);
void zhu_menu1(void);
void zhu_menu2(void);
void menu1(void);
void menu2(void);
void menu3(void);
void menu4(void);
void menu1_1(void);
void menu1_2(void);
void menu2_1(void);
void menu2_2(void);
void menu3_1(void);
void menu3_2(void);
void menu4_1(void);
void menu4_2(void);
void disptime(void);
uchar gewei(uchar zhi);
uchar shiwei(uchar zhi);

/////////////////////////////////////////////////////////////
/*********************************************************
 函 数 名:zhu_menu1()
 功    能:显示1级菜单的第一行
 说    明:
 调    用:disphz (uchar code *chn,uchar page,uchar line),
    dispzf (uchar code *eng,uchar page,uchar line);
    dispjt (uchar code *jiantou,uchar page);
 入口参数:无       
 返 回 值:无
 设    计: 汪建斌                    日    期:2005-09-11  
**********************************************************/
void zhu_menu1()                         
{
 wrlattice (0x00,0x00);          //清屏    
// dispjt (jiantou_shang,0);    //箭头上
 dispjt (jiantou_xia,1);  //箭头下
 disphz (jiantou_zhong,0,0); //箭头中(指向该行)
    disphz (shi,0,1);  //菜单标题         //时间日期
 disphz (jian,0,2);  //菜单标题
 disphz (ri,0,3);  //菜单标题
 disphz (qi,0,4);
     //第一行
////////////////////////////
 disphz (zhu,1,1);  //第二行
 disphz (cai,1,2);
 disphz (dan,1,3);
 dispzf (num2,1,10);
 while(1)
  {
   if (key_scan_once()==11) menu1();   //"#"
   if (key_scan_once()==10)
     {
     wrlattice (0x00,0x00);
     start();    //"*"
    }
   if (key_scan_once()==7)  zhu_menu2(); //上
   if (key_scan_once()==9)  zhu_menu2(); //下
  }
}
////////////////////////////////////////////////
/*********************************************************
 函 数 名:zhu_menu2()
 功    能:显示1级菜单的第二行
 说    明:
 调    用:disphz (uchar code *chn,uchar page,uchar line),
    dispzf (uchar code *eng,uchar page,uchar line);
    dispjt (uchar code *jiantou,uchar page);
 入口参数:无       
 返 回 值:无
 设    计: 汪建斌                    日    期:2005-09-11  
**********************************************************/
void zhu_menu2()
{
 wrlattice (0x00,0x00);          //清屏    
 dispjt (jiantou_shang,0);    //箭头上
// dispjt (jiantou_xia,1);  //箭头下
// disphz (jiantou_zhong,0,0); //箭头中(指向该行)
    disphz (shi,0,1);  //菜单标题         //时间日期
 disphz (jian,0,2);  //菜单标题
 disphz (ri,0,3);  //菜单标题
 disphz (qi,0,4);
     //第一行
////////////////////////////
 disphz (jiantou_zhong,1,0);
 disphz (zhu,1,1);  //第二行
 disphz (cai,1,2);
 disphz (dan,1,3);
 dispzf (num2,1,10);
 while(1)
  {
   if (key_scan_once()==11) menu3();   //"#"
   if (key_scan_once()==10)
    {
     wrlattice (0x00,0x00);
      start();    //"*"
    }
   if (key_scan_once()==7)  zhu_menu1(); //上
   if (key_scan_once()==9)  zhu_menu1(); //下
  }
}
/////////////////////////////////////////
/*********************************************************
 函 数 名:menu1()
 功    能:显示2级菜单的第一行
 说    明:
 调    用:disphz (uchar code *chn,uchar page,uchar line),
    dispzf (uchar code *eng,uchar page,uchar line);
    dispjt (uchar code *jiantou,uchar page);
 入口参数:无       
 返 回 值:无
 设    计: 汪建斌                    日    期:2005-09-11  
**********************************************************/
void menu1()          //设置时间
{
 wrlattice (0x00,0x00);
// dispjt (jiantou_shang,0);
 dispjt (jiantou_xia,1);
 disphz (jiantou_zhong,0,0);
 disphz (she,0,1);
 disphz (zi,0,2);
 disphz (shi,0,3);
 disphz (jian,0,4);
//////////////////////
// disphz (jiantou_zhong,1,0);
 disphz (she,1,1);
 disphz (zi ,1,2);
 disphz (nao ,1,3);
 disphz (zhong ,1,4);
 while(1)
  {
   if (key_scan_once()==11) 
    {
     settime_year();
     //Set1302(time_set);
    }
   if (key_scan_once()==10) zhu_menu1();
   if (key_scan_once()==7)  menu2();
   if (key_scan_once()==9)  menu2();
  }
}
///////////////////////////////////////////////
/*********************************************************
 函 数 名:menu2()
 功    能:显示2级菜单的第二行
 说    明:
 调    用:disphz (uchar code *chn,uchar page,uchar line),
    dispzf (uchar code *eng,uchar page,uchar line);
    dispjt (uchar code *jiantou,uchar page);
 入口参数:无       
 返 回 值:无
 设    计: 汪建斌                    日    期:2005-09-11  
******************************************* ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:33毫秒 最大:3859毫秒 查询6次