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 ******************************************* ......
>>返回讨论的主题
|