7762|3

89

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

我想用12864液晶屏做菜单,但是不知道菜单怎么做? [复制链接]

我想用12864液晶屏做菜单,但是不知道菜单怎么做。以前我做文字的时候就直接打字的但是现在要做菜单了,就不知道怎么打字了,也不知道什么步骤,谁有相关的视频啊,自己 能告诉我下的也好谢谢了,我想自己学习

此帖出自51单片机论坛

最新回复

库文件在那里了  详情 回复 发表于 2018-4-17 13:23
点赞 关注(1)
 

回复
举报

3404

帖子

6

TA的资源

裸片初长成(初级)

沙发
 
做菜单只不过是分步打字而已,为了漂亮点就加个杯具,比如画个框什么的。别让字一次全打出来,按照菜单的显示顺序显示出来就行了!没什么特殊的
此帖出自51单片机论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

板凳
 
以前做过很复杂的菜单,不过不是51的

#include "menu_level1.h"
#include "./Driver/key/key.h"
#include "./Driver/SysInterrupt/SetInterruptStatus.h"
#include "./Driver/LCD12864/ms12864r.h"
#include "./Driver/LCD12864/menu_function.h"

#include "haitun.h"
#include "aaa.h"
//全局变量引入
extern unsigned int menu_list_roll_choice;
extern unsigned int TimeBase128;

const unsigned int hand_bmp1[16]=        //手型字符
{
        0x0000,        0x0180,        0x0360,        0x0550,        0x0558,        0x0554,        0x0554,        0x7554,
        0x4d54,        0x2404,        0x1004,        0x1004,        0x0804,        0x0408,        0x03f8,        0x07f8
};
const unsigned int hand_bmp2[16]=        //手型字符
{
        0x0000,        0x0400,        0x0a00,        0x0a00,        0x0b50,        0x0aa8,        0x0aa8,        0x1aa8,
        0x2aa8,        0x2808,        0x2808,        0x2008,        0x1008,        0x0808,        0x07f0,        0x0ff0
};
//菜单数组
const unsigned int menu_1_0[7][16] =                 //一级菜单
{
        {"1.字符显示演示  "},
        {"2.数据显示演示  "},
        {"3.光标闪烁开关  "},       
        {"4.图形显示演示  "},               
        {"5.动画演示      "},
        {"6.点画图形      "},       
        {"7.版本信息..    "}       
};
const unsigned int menu_1_1[2][16] =        
{
        {"1.字符显示演示  "},
        {"enter 键返回    "}

};
const unsigned int menu_1_2[2][16] =        
{
        {"2.数据显示演示  "},
        {"+,-,enter返回   "}
};
const unsigned int menu_1_3[1][16] =
{
        {"3.光标闪烁开关  "},
};
const unsigned int menu_1_4[2][16] =
{
        {"4.图形显示演示  "},
        {"+,-,enter 返回  "}
};
const unsigned int menu_1_5[0][16] =
{

};
const unsigned int menu_1_6[1][16] =
{
        {"6.点画图形      "},
};
const unsigned int menu_1_7[4][16] =
{
        {"  液晶演示程序  "},
        {"  Version 1.0   "},
        {"  制作人: 虎子  "},
        {"  按enter:返回  "}
};


const unsigned int menu_1_end[]={};                 //此项用于计算用

//菜单字符数组
const unsigned int *menu_level1_address_array[]= {
(unsigned int*)menu_1_0,(unsigned int*)menu_1_1,(unsigned int*)menu_1_2,(unsigned int*)menu_1_3,
(unsigned int*)menu_1_4,(unsigned int*)menu_1_5,(unsigned int*)menu_1_6,(unsigned int*)menu_1_7,
(unsigned int*)menu_1_end
};
//菜单处理函数,与菜单字符数组一一对应
const menu_function menu_level1_dispose_array[]={
menu_1_0_fun,menu_1_1_fun,menu_1_2_fun,menu_1_3_fun,
menu_1_4_fun,menu_1_5_fun,menu_1_6_fun,
menu_1_7_fun
//下一级菜单入口函数

};

//-------------以下是菜单处理函数-------------------------------

void menu_1_0_fun(void)//本级菜单初始化
{
        menu_init((unsigned int *)hand_bmp1);
        menu_addr_array=(unsigned int **)menu_level1_address_array;
        menu_dispose_array=(menu_function *)menu_level1_dispose_array;
        menu_list_display();
        while(1)
        {       
                *P_Watchdog_Clear = C_WDTCLR;
                switch(Key_Get())
                {
                        case KEY_1://enter press
                                menu_chg_windows();                //本级菜单窗口切换
                                break;               
                        case KEY_2://+ key press
                                menu_down_roll();
                                break;
                        case KEY_3://- key press
                                menu_up_roll();
                                break;       
                }
        }
}
void menu_1_1_fun(void)
{
        LCD_disp_string(8,(unsigned int *)"lcd 显示字符");       
while (1)        {
                switch(Key_Get())
                {
                case 1:        //press enter
                        return;
                case 2://+ key press
                        break;
                case 4://- key press
                        break;       
                }//switch end
                LCD_disp_char(24,TimeBase128);        //显示一个汉字字符
                *P_Watchdog_Clear = C_WDTCLR;
        }//while end
}
void menu_1_2_fun(void)
{
        unsigned int tmp=0;
while (1)        {
        *P_Watchdog_Clear = C_WDTCLR;
                switch(Key_Get())
                {
                case 1:       
                        return;       
                        break;
                case 2://+ key press
                        LCD_Set_Mask_bit(tmp++);
                        LCD_disp_string(8,(unsigned int *)"                ");
                        LCD_disp_string(24,(unsigned int *)"                ");                       
                        break;
                case 4://- key press
                        LCD_Set_Mask_bit(tmp--);
                        LCD_disp_string(8,(unsigned int *)"                ");
                        LCD_disp_string(24,(unsigned int *)"                ");       
                        break;       
                }//switch end
        //十进制显示无符号整数数值
        LCD_disp_dec_uint(8,TimeBase128);               
        //十六进制显示整数数值
        LCD_disp_hex_uint(11,TimeBase128);
        //十进制显示有符号整数数值               
        LCD_disp_dec_int(13,(int)TimeBase128);
        //十六进制显示32位整数数值       
        LCD_disp_hex_lint(24,(unsigned long int)TimeBase128);               
        }//while end
}

unsigned int flag=1;
void menu_1_3_fun(void)
{
        if (flag)
        {
                LCD_Cursor_Blink_ON();
                flag=0;
        }
        else
        {
                LCD_Cursor_Blink_OFF();
                flag=1;
        }
}
void menu_1_4_fun(void)       
{
        unsigned int x=0,y=32;
        LCD_disp_word_picture(x,y,(unsigned int *)encoding_000);
while (1)        {
        *P_Watchdog_Clear = C_WDTCLR;
                switch(Key_Get())
                {
                case 1:       
                LCD_disp_word_picture(x,y,(unsigned int *)encoding_001);
                return;                       
                case 2://+ key press
                        LCD_disp_word_picture(x,y,(unsigned int *)encoding_001);
                        x+=16;
                        LCD_disp_word_picture(x,y,(unsigned int *)encoding_000);
                        break;
                case 4://- key press
                        LCD_disp_word_picture(x,y,(unsigned int *)encoding_001);
                        y+=1;
                        LCD_disp_word_picture(x,y,(unsigned int *)encoding_000);       
                        break;       
                default:
                        break;       
                }//switch end
        }//while end
}
void menu_1_5_fun(void)
{
        unsigned int time=TimeBase128;
        while (TimeBase128         {
                LCD_disp_full_screen((unsigned int *)encoding_02);*P_Watchdog_Clear = C_WDTCLR;
                LCD_disp_full_screen((unsigned int *)encoding_03);*P_Watchdog_Clear = C_WDTCLR;
                LCD_disp_full_screen((unsigned int *)encoding_04);*P_Watchdog_Clear = C_WDTCLR;
                LCD_disp_full_screen((unsigned int *)encoding_05);*P_Watchdog_Clear = C_WDTCLR;
                LCD_disp_full_screen((unsigned int *)encoding_06);*P_Watchdog_Clear = C_WDTCLR;
                LCD_disp_full_screen((unsigned int *)encoding_07);*P_Watchdog_Clear = C_WDTCLR;
                LCD_disp_full_screen((unsigned int *)encoding_08);*P_Watchdog_Clear = C_WDTCLR;
                LCD_disp_full_screen((unsigned int *)encoding_00);*P_Watchdog_Clear = C_WDTCLR;
                LCD_disp_full_screen((unsigned int *)encoding_01);*P_Watchdog_Clear = C_WDTCLR;
        }
        LCD_clear_screen();        //清屏
}
void menu_1_6_fun(void)
{
        LCD_disp_string(8,(unsigned int *)"此版本不支持..");
        *P_Watchdog_Clear = C_WDTCLR;
        while(Key_Get()!=1);
        return;
}
void menu_1_7_fun(void)
{
        *P_Watchdog_Clear = C_WDTCLR;
        while(Key_Get()!=1);
        return;
}
此帖出自51单片机论坛
 
 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

4
 
库文件在那里了
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表