搜索
bottom↓
回复: 91

国庆大餐之,LCD1602的菜单生成和显示方法。

[复制链接]

出0入4汤圆

发表于 2006-9-29 11:38:15 | 显示全部楼层 |阅读模式
#include <LCDv3.h>

#include "Config.h"

#include "Menu.h"

#include "LCD_Interface.c"

#include "Input.c"



#define MENU_LINE 2



unsigned char MenuNo(unsigned char No)

{

        if ((No>=0)&&(No<=9))

        {

                return No+'0';

        }

        else if ((No>=10)&&(No<=36))

        {

                return No-10+'A';

        }

        else

        {

                return '?';

        }

}



void ChooseRadioMenu(unsigned char ParamCaptionID,unsigned char MenuDefineID,unsigned char *Value)

{

        flash unsigned char *Caption;

        flash unsigned char *pDefine;

        unsigned char Key;

        unsigned char Pos;

        unsigned int TopMenuItem;

        unsigned int CurrentMenuItem;

        //unsigned char i;

        unsigned char MenuCount;



    delay_ms(10);

    SOUND_STOP;

       

        LCD_WriteCaption(ParamCaptionID,0);

        Pos=LCD_Position()-1;

       

        WriteCGRAM(0x82,1,0);

        WriteCGRAM(0x83,2,0);

        WriteCGRAM(0x84,3,0);

       

        pDefine=SubMenuDefine+(unsigned int)2*(unsigned int)MenuDefineID;

        MenuCount=pDefine[1];

        TopMenuItem=pDefine[0];

        CurrentMenuItem=*Value;

        if (CurrentMenuItem>MenuCount-1)

        {

                CurrentMenuItem=MenuCount-1;

        }

       



        Key=1;

        while (Key!=BT_APPLY)

        {

                if (Key!=0)

                {

                        LCD_Ctrl(LCD_SET_DDRAM|Pos);

                       

                        Caption=Menu+(CAPTION_LENGTH+2)*(TopMenuItem+CurrentMenuItem-1);

                       

                        if (CurrentMenuItem==0)

                        {

                                LCD_Write(3);

                        }

                        else if (CurrentMenuItem==MenuCount-1)

                        {

                                LCD_Write(1);

                        }

                        else

                        {

                                LCD_Write(2);

                        }

                       

                        //LCD_Write(MenuNo(CurrentMenuItem));

                        LCD_Write(' ');

                        LCD_Write('=');

                        LCD_PutStrF(Caption);

                }

               

                Key=GetKey();

               

                if (Key!=0)

                {

                        if (Key==BT_UP)

                        {

                                if (CurrentMenuItem>0)

                                {

                                        CurrentMenuItem--;

                                }

                        }

                        else if (Key==BT_DOWN)

                        {       

                                if (CurrentMenuItem<MenuCount-1)

                                {

                                        CurrentMenuItem++;

                                }

                        }

                        else if (Key==BT_APPLY)

                        {

                                *Value=CurrentMenuItem;

                        }

                        else if (Key==BT_LEFT)

                        {

                                Key=BT_APPLY;

                        }

                       

                        delay_ms(10);

                        SOUND_STOP;  //Sound Stop

                }

               

        }

}



void ShowMenu(void)

{

        flash unsigned char *pMenu;

        flash unsigned char *pDefine;

        flash unsigned char *Caption;

        unsigned char Key;

        unsigned int TopMenuItem;

        unsigned int CurrentMenuItem;

        unsigned char i;

        unsigned char Stack[3][5];

        unsigned char StackIndex;

        unsigned char DrawMenuItem[6]={LCD_SET_DDRAM,0xC0,1,0,0,1};

        unsigned char MenuCount;

        unsigned char j;

        //unsigned char MenuItem;

       

       

        pMenu=Menu;

        pDefine=SubMenuDefine;

       

        TopMenuItem=0;

        CurrentMenuItem=0;

        //MenuItem=0;



        Key=1;

        WriteCGRAM(0x80,0,0);

        WriteCGRAM(0x81,1,0);

        StackIndex=0;

        Stack[0][0]=0;

        Stack[1][0]=0;

        Stack[2][0]=0;

        MenuCount=SubMenuDefine[1];



        while (1)

        {

                if (Key!=0)

                {

                        for (j=0;j<2;j++)

                        {

                                LCD_Ctrl(DrawMenuItem[0+j]);

                               

                                if (DrawMenuItem[(unsigned char)(j+4)]<MenuCount)

                                {

                                        Caption=Menu+(CAPTION_LENGTH+2)*(TopMenuItem+DrawMenuItem[(unsigned char)(j+4)]);

                                       

                                        if (DrawMenuItem[(unsigned char)(j+2)])

                                        {

                                                LCD_PutStrF("     ");

                                                LCD_Write(0);

                                                LCD_Write(MenuNo(DrawMenuItem[(unsigned char)(j+4)]+1));

                                                LCD_Write('.');

                                                LCD_PutStrF(Caption);

                                        }

                                        else

                                        {

                                                LCD_PutStrF("      ");

                                                LCD_Write(MenuNo(DrawMenuItem[(unsigned char)(j+4)]+1));

                                                LCD_Write('.');

                                                LCD_PutStrF(Caption);

                                        }

                                }

                                else

                                {

                                        for (i=0;i<16;i++) LCD_Write(' ');

                                }               

                        }

                }

               

                Key=GetKey();

               

                if (Key!=0)

                {

                        if (Key==BT_UP)

                        {

                                if (DrawMenuItem[3])

                                {

                                        DrawMenuItem[2]=1;

                                        DrawMenuItem[3]=0;

                                }

                                else if (DrawMenuItem[4]>0)

                                {

                                        DrawMenuItem[4]--;

                                        DrawMenuItem[5]--;

                                }

                        }

                        else if (Key==BT_DOWN)

                        {       

                                if (DrawMenuItem[2])

                                {

                                        DrawMenuItem[2]=0;

                                        DrawMenuItem[3]=1;

                                }

                                else if (DrawMenuItem[5]<MenuCount-1)

                                {

                                        DrawMenuItem[4]++;

                                        DrawMenuItem[5]++;

                                }

                        }

                        else if ((Key==BT_APPLY)||(Key==BT_RIGHT))

                        {

                               

                                if (DrawMenuItem[2])

                                {

                                        CurrentMenuItem=TopMenuItem+DrawMenuItem[4];

                                }

                                else

                                {

                                        CurrentMenuItem=TopMenuItem+DrawMenuItem[5];

                                }

                               

                                if (CurrentMenuItem<MENU_COUNT)

                                {

                                        pMenu=Menu+(CAPTION_LENGTH+2)*CurrentMenuItem+CAPTION_LENGTH+1;

                                        if (*pMenu>MENU_SUBITEM)

                                        {

                                                Stack[0][StackIndex]=pDefine-SubMenuDefine;

                                                Stack[1][StackIndex]=DrawMenuItem[2];

                                                Stack[2][StackIndex]=DrawMenuItem[4];

                                                StackIndex++;

                                               

                                                pDefine=SubMenuDefine+(unsigned int)(*pMenu-MENU_SUBITEM)*2;

                                                TopMenuItem=*pDefine -1;

                                                MenuCount=pDefine[1];

                                                DrawMenuItem[2]=1;

                                                DrawMenuItem[3]=0;

                                                DrawMenuItem[4]=0;

                                                DrawMenuItem[5]=1;

                                        }

                                        else if (*pMenu<=MENU_SUBITEM)

                                        {

                                                ExecuteMenu(CurrentMenuItem+1);

                                        }

                                       

                                }

                        }

                        else if (Key==BT_LEFT)

                        {

                                if (StackIndex>0)

                                {

                                        StackIndex--;

                                        pDefine=SubMenuDefine+(unsigned int)(Stack[0][StackIndex]);

                                        TopMenuItem=*pDefine -1;

                                        MenuCount=pDefine[1];

                                        DrawMenuItem[2]=Stack[1][StackIndex];

                                        DrawMenuItem[3]=1-Stack[1][StackIndex];

                                        DrawMenuItem[4]=Stack[2][StackIndex];

                                        DrawMenuItem[5]=Stack[2][StackIndex]+1;

                                }

                        }

                       

                        delay_ms(10);

                        SOUND_STOP;  //Sound Stop

                }

               

        }

}





AVR源程序(CVAVR 1.24.8)



生成AVR菜单的工具

头像被屏蔽

出0入0汤圆

发表于 2006-9-29 11:39:44 | 显示全部楼层
果然是大餐!

出0入4汤圆

 楼主| 发表于 2006-9-29 11:44:06 | 显示全部楼层
这。。。。加裤也太快了。。。。。^o^



发贴相差才1分钟左右。。。。。哈哈哈。。

出0入0汤圆

发表于 2006-9-29 11:49:22 | 显示全部楼层
很好的生成工具

出0入0汤圆

发表于 2006-9-29 12:22:30 | 显示全部楼层
来点图片吧.

出0入0汤圆

发表于 2006-9-29 13:05:30 | 显示全部楼层
能不能说说原理,及其用法

出0入0汤圆

发表于 2006-9-29 14:15:56 | 显示全部楼层
用单色点阵液晶和单片机都会碰这样的问题,呵呵

我2001年在一家公司做的时候,那东西全汇编的,恐怖的代码量,我第一件事就是做一个生成菜单结构的工具,跟楼主的差不多,加一些显示函数,不过不久我就走了,不知道他们后来用不用



后来用C还写过一个架构,底层是API,核心是一个定时器和函数表,做成事件驱动的几层结构,中间是硬件定义和显示控件,最后就差写一个IDE集成开发环境和模拟显示了



到现在我接触的东西,还是涉及架构问题,架构做好能让开发尽量专注于应用逻辑,否则麻烦死了

出0入0汤圆

发表于 2006-9-29 14:30:31 | 显示全部楼层
就是啦,能不能说说原理,及其用法

出0入0汤圆

发表于 2006-9-29 14:46:52 | 显示全部楼层
学习中

出0入4汤圆

 楼主| 发表于 2006-9-29 15:13:03 | 显示全部楼层
标题应该是给我起错了,但我实在不知道应该起什么名字好.



实际的情况如下:



项目名称:频率发生器 v2.0

项目简介:通过LCD上的菜单,实时设置Mega8的三个定时器的各个寄存器,这样,

   就可以通过显波器来监视Mega8的定时器的各个寄存器相互作用.



比如:Mega8的T1定时器,是最难懂的也是比较复杂的定时器之一,而我们可以通过

这个项目,了解到T1定时器所需的各个寄存器的相互作用.

又比如:Mega8的 COM1A/B与WGM1之间的作用,通过这个实时设置,就可以实时的通过示波器

看到.



这个项目没有任何按键,所有的用户交互都是通过电视遥控器和红外接收头来完成的.

出0入4汤圆

 楼主| 发表于 2006-9-29 15:16:43 | 显示全部楼层
本项目中的IRv2原程序,看这里:

http://www.ouravr.com.cn/bbs/bbs_content.jsp?bbs_sn=673341&bbs_page_no=1&bbs_id=1000

出0入0汤圆

发表于 2007-10-1 15:10:30 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2007-10-1 15:31:03 | 显示全部楼层
to 10楼:联接打不开!!!

出0入0汤圆

发表于 2007-10-1 21:49:03 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2007-10-2 19:28:31 | 显示全部楼层
"大餐"

出0入0汤圆

发表于 2007-10-3 18:02:50 | 显示全部楼层
就是啦,能不能说说原理,及其用法

出0入0汤圆

发表于 2007-10-3 18:03:26 | 显示全部楼层
看得眼花

出0入0汤圆

发表于 2007-10-3 18:14:49 | 显示全部楼层
对啊,能不能上个图片看看,谢谢!

出0入0汤圆

发表于 2007-10-3 18:46:25 | 显示全部楼层
有图片才完美!!!支持图片!!!

出0入0汤圆

发表于 2007-11-3 16:28:48 | 显示全部楼层

出0入0汤圆

发表于 2007-11-3 17:46:46 | 显示全部楼层
我的菜单部分代码
用最笨拙的判断语句实现
//************************************************************************************
//函数名称:SIGNAL(SIG_INTERRUPT7)
//函数功能:键盘上有键被按下时触发该中断
//入口参数:无
//出口参数:无
//附注:
//************************************************************************************
void disp_layer_1()
{
        unsigned char i;
        unsigned char manu1[]="电压设置";
        unsigned char manu2[]="角度变比设置";
        unsigned char manu3[]="起始位置设置";
        unsigned char manu4[]="状态查看";
        unsigned char manu5[4][2]={{0xa2,0xb1},{0xa2,0xb2},{0xa2,0xb3},{0xa2,0xb4}};
                                write_command(clr_screen);
                                delay_ms(10);
                                write_command(clr_screen);
                                delay_ms(10);
                                write_command(0x80);
                                for(i=0;i<2;i++)
                                write_data(manu5[0]);
                                write_command(0x81);
                                for(i=0;i<8;i++)
                                write_data(manu1);
                                write_command(0x90);
                                for(i=0;i<2;i++)
                                write_data(manu5[1]);
                                write_command(0x91);
                                for(i=0;i<12;i++)
                                write_data(manu2);
                                write_command(0x88);
                                for(i=0;i<2;i++)
                                write_data(manu5[2]);
                                write_command(0x89);
                                for(i=0;i<12;i++)
                                write_data(manu3);
                                write_command(0x98);
                                for(i=0;i<2;i++)
                                write_data(manu5[3]);
                                write_command(0x99);
                                for(i=0;i<8;i++)
                                write_data(manu4);
                                write_command(0x80);
                                write_command(AC_highlight);
}
void disp_standby()
{
        unsigned char i;
        unsigned char manu2[2]={0xA3,0xAE};
                                write_command(clr_screen);
                                delay_ms(10);
                                write_command(0x92);
                                for(i=0;i<2;i++)
                                write_data(chinese_0_to_9[3]);
                                for(i=0;i<2;i++)
                                write_data(chinese_0_to_9[6]);
                                for(i=0;i<2;i++)
                                write_data(chinese_0_to_9[0]);
                                for(i=0;i<2;i++)
                                write_data(manu2);
                                for(i=0;i<2;i++)
                                write_data(chinese_0_to_9[0]);
                                write_command(AC_highlight_off);
       
}
void disp_voltage_setup(int shi_kuang_ge_shu)
{
        unsigned char i,j;
        unsigned char manu1[]="电压幅度";
        //                                                                -                        +                        实框                虚框
        unsigned char manu2[4][2]={{0xA3,0xAD},{0xA3,0xAB},{0xA1,0xF6},{0xA1,0xF5}};
                                write_command(clr_screen);
                                delay_ms(10);
                                write_command(0x82);
                                for(i=0;i<8;i++)
                                write_data(manu1);
                                write_command(0x90);
                                for(i=0;i<2;i++)
                                write_data(manu2[0]);
                                write_command(0x97);
                                for(i=0;i<2;i++)
                                write_data(manu2[1]);
                                write_command(0x91);
                                for(j=0;j<(shi_kuang_ge_shu);j++)
                                for(i=0;i<2;i++)
                                write_data(manu2[2]);
                                write_command(0x91+shi_kuang_ge_shu);
                                for(j=0;j<(6-shi_kuang_ge_shu);j++)
                                for(i=0;i<2;i++)
                                write_data(manu2[3]);
                                write_command(0x8b);
                                for(i=0;i<2;i++)
                                write_data(chinese_0_to_9[shi_kuang_ge_shu]);
                                write_command(AC_highlight_off);
}
void disp_ratio_warning()
{
        unsigned char i;
        unsigned char manu1[]="提示:设置之前请";
        unsigned char manu2[]="先确认罗盘已变换";
        unsigned char manu3[]="  是否继续操作?";
        unsigned char manu4[]="      是否      ";
                                write_command(clr_screen);
                                delay_ms(10);
                                write_command(0x80);
                                for(i=0;i<16;i++)
                                write_data(manu1);
                                write_command(0x90);
                                for(i=0;i<16;i++)
                                write_data(manu2);
                                write_command(0x88);
                                for(i=0;i<16;i++)
                                write_data(manu3);
                                write_command(0x98);
                                for(i=0;i<16;i++)
                                write_data(manu4);
                                write_command(0x9b);
                                write_command(AC_highlight);
}
void disp_ratio_setup()
{
unsigned char i;
        unsigned char manu1[14]={0xa2,0xb1,0x20,0x20,0xa3,0xb1,0xa3,0xba,0xa3,0xb3,0xa3,0xb6,0xa3,0xb0};
        unsigned char manu2[14]={0xa2,0xb2,0x20,0x20,0xa3,0xb1,0xa3,0xba,0xa3,0xb1,0xa3,0xb8,0xa3,0xb0};
        unsigned char manu3[14]={0xa2,0xb3,0x20,0x20,0xa3,0xb1,0xa3,0xba,0xa3,0xb9,0xa3,0xb0,0x20,0x20};
        unsigned char manu4[14]={0xa2,0xb4,0x20,0x20,0xa3,0xb1,0xa3,0xba,0xa3,0xb6,0xa3,0xb0,0x20,0x20};
        unsigned char manu5[2]={0xA1,0xCC};
                                write_command(clr_screen);
                                delay_ms(10);
                                write_command(0x80);
                                for(i=0;i<14;i++)
                                write_data(manu1);
                                write_command(0x90);
                                for(i=0;i<14;i++)
                                write_data(manu2);
                                write_command(0x88);
                                for(i=0;i<14;i++)
                                write_data(manu3);
                                write_command(0x98);
                                for(i=0;i<14;i++)
                                write_data(manu4);
                                switch(ratio)
                                {
                                        case 360:
                                                        {
                                                                write_command(0x87);
                                                                for(i=0;i<2;i++)
                                                                write_data(manu5);
                                                        };                                                break;
                                        case 180:
                                                        {
                                                                write_command(0x97);
                                                                for(i=0;i<2;i++)
                                                                write_data(manu5);
                                                        };                                                break;
                                        case 90:
                                                        {
                                                                write_command(0x8f);
                                                                for(i=0;i<2;i++)
                                                                write_data(manu5);
                                                        };                                                break;
                                        case 60:
                                                        {
                                                                write_command(0x9f);
                                                                for(i=0;i<2;i++)
                                                                write_data(manu5);
                                                        };                                                break;
                                        default:;               
                                }
                                write_command(0x80);
                                write_command(AC_highlight);
}
void disp_position_warning()
{
        unsigned char i;
        unsigned char manu1[]="      提示      ";
        unsigned char manu2[]="  更改此项有风险";
        unsigned char manu3[]="  是否继续操作?";
        unsigned char manu4[]="      是否      ";
                                write_command(clr_screen);
                                delay_ms(10);
                                write_command(0x80);
                                for(i=0;i<16;i++)
                                write_data(manu1);
                                write_command(0x90);
                                for(i=0;i<16;i++)
                                write_data(manu2);
                                write_command(0x88);
                                for(i=0;i<16;i++)
                                write_data(manu3);
                                write_command(0x98);
                                for(i=0;i<16;i++)
                                write_data(manu4);
                                write_command(0x9b);
                                write_command(AC_highlight);
}
void disp_position_setup()
{
        unsigned char i;
        unsigned char character1[]="初始位置修改";
                                cli();
                                eeprom_add_0=EEPROM_read(0x0000);
                                eeprom_add_1=EEPROM_read(0x0001);
                                eeprom_add_2=EEPROM_read(0x0002);
                                eeprom_add_3=EEPROM_read(0x0003);
                                bai_wei=eeprom_add_0;
                                shi_wei=eeprom_add_1;
                                ge_wei=eeprom_add_2;
                                shifen_wei=eeprom_add_3;  
                                write_command(clr_screen);
                                delay_ms(10);
                                write_command(clr_screen);
                                delay_ms(10);
                                write_command(0x80);
                                for(i=0;i<12;i++)
                                write_data(character1);
                                write_command(0x8a);
                                for(i=0;i<2;i++)
                                write_data(chinese_0_to_9[bai_wei]);
                                for(i=0;i<2;i++)
                                write_data(chinese_0_to_9[shi_wei]);
                                for(i=0;i<2;i++)
                                write_data(chinese_0_to_9[ge_wei]);
                                for(i=0;i<2;i++)
                                write_data(chinese_0_to_9[10]);
                                for(i=0;i<2;i++)
                                write_data(chinese_0_to_9[shifen_wei]);
                                write_command(0x8a);
                                write_command(AC_highlight);
                                sei();
}
void disp_status()
{
{
        unsigned char i;
        unsigned char manu1[]="角度变比";
        unsigned char manu2[]="电压幅度";
        unsigned char manu3[4][10]={        {0xa3,0xb1,0xa3,0xba,0xa3,0xb3,0xa3,0xb6,0xa3,0xb0},
                                                                        {0xa3,0xb1,0xa3,0xba,0xa3,0xb1,0xa3,0xb8,0xa3,0xb0},
                                                                        {0xa3,0xb1,0xa3,0xba,0xa3,0xb9,0xa3,0xb0,0x20,0x20},
                                                                        {0xa3,0xb1,0xa3,0xba,0xa3,0xb6,0xa3,0xb0,0x20,0x20}};
                                write_command(clr_screen);
                                delay_ms(10);
                                write_command(0x80);
                                for(i=0;i<8;i++)
                                write_data(manu1);
                                write_command(0x88);
                                for(i=0;i<8;i++)
                                write_data(manu2);
                                switch(ratio)
                                {
                                        case 360:
                                                {
                                                write_command(0x92);
                                                for(i=0;i<10;i++)
                                                write_data(manu3[0]);
                                                }        ;                                        break;
                                        case 180:
                                                {
                                                write_command(0x92);
                                                for(i=0;i<10;i++)
                                                write_data(manu3[1]);
                                                }        ;                                        break;
                                        case 90:
                                                {
                                                write_command(0x92);
                                                for(i=0;i<10;i++)
                                                write_data(manu3[2]);
                                                }        ;                                        break;
                                        case 60:
                                                {
                                                write_command(0x92);
                                                for(i=0;i<10;i++)
                                                write_data(manu3[3]);
                                                }        ;                                        break;       
                                        default:                                                  ;               
                                }
                                write_command(0x9c);
                                for(i=0;i<2;i++)
                                write_data(chinese_0_to_9[module-2]);
                                write_command(AC_highlight_off);
}
}
SIGNAL(SIG_INTERRUPT7)
{       
        unsigned char a,b,key,i;
        a=TIMSK;                                        //保存定时器中断屏蔽寄存器的状态值
        TIMSK&=~(1<<TOIE1);                //不管先前定时器溢出是否允许,到要将其禁止。程序中有溢出中断,若溢出标志位置位
                                                                //程序将会去等待该按键中断结束(溢出中断的优先级别比外部中断7低)再去实行溢出中断
                                                                //实际上保存此定时器中断屏蔽寄存器的状态值无太多意义,暂时先这样写着
        //测试是否是键盘误抖动
        delay_ms(10);
        if(!(PIND&0x80))                                //软件延时10ms还有键按下
        {               
                //开始键盘扫描
                DDRD|=(1<<DDD7);                        //改变口D的第7位的方向为输出低
                PORTD&=~(1<<PORTD7);       
                DDRF=0x00;                                        //F口输入上拉
                PORTF=0x00;                                       
                delay_us(10);                                //软件延时
                b=PINF;                                                //读断口F的电平值
                b|=0xc0;                                        //屏蔽掉不用的高两位
                if(b==0xFE)                                       
                        key=1;                                        //向上键
                if(b==0xFD)       
                        key=2;                                        //向左键
                if(b==0xFB)
                        key=3;                                        //向右键
                if(b==0xF7)       
                        key=4;                                        //向下键
                if(b==0xEF)
                        key=5;                                        //菜单键
                if(b==0xDF)       
                        key=6;                                        //确定键
                keyboard_init();                        //将各口的输入输出情况翻转过来       
                while(!(PIND&0x80));                //等待键释放
        /*        if(press_num==1)                        //第一次有键被按下,则必须是菜单键才会有响应
                {
                        if(key==5)
                        {
                                write_command(clr_screen);
                                delay_ms(10);
                                write_command(0x80);
                                for(i=0;i<10;i++)
                                write_data(manu1);
                                write_command(0x90);
                                for(i=0;i<14;i++)
                                write_data(manu2);
                                write_command(0x88);
                                for(i=0;i<14;i++)
                                write_data(manu3);
                                write_command(0x98);
                                for(i=0;i<6;i++)
                                write_data(manu4);
                                write_command(0x90);
                                write_command(AC_highlight);
                        }
                }
                }        */
                                                                        //第一次有键被按下,则必须是菜单键才会有响应,显示的是第一层画面,也就是
                                                                        //        1.电压设置        +
                                                                        //        2.角变比
                                                                        //        3.起始位置
                                                                        //        4.状态查看
/*11111111************************************************************************************************************/
                if(press_num==1)
                {
                        if(key==MENU)
                        {
                                disp_layer_1();                        //刷新显示第一层界面
                                layer=1;where=0;        //层标记为1,选中行标记为0
                                press_num=2;
                        }
                }
/*22222222************************************************************************************************************/
                                                                        //再有键被按下,响应的键有UP DOWN  MENU ENTER。LEFT和RIGHT不被响应,这里的响应是指界面不会被刷新
                else if(press_num==2)
                {
                        if(key==MENU)                        //如果是MENU,则返回待机画面。层标记为0,press_num标记复位为1
                        {
                                disp_standby();                //返回待机画面
                                press_num=1;
                                layer=0;
                        }
                        else if(key==ENTER)        //是ENTER,先判断where的值,再确定要跳入的下一个界面,最后层标记为2,选中行标记为0
                        {
                                if(where==0)
                                        disp_voltage_setup(module-2);                //显示“1.电压设置”的子菜单
                                else if(where==1)
                                        disp_ratio_warning();                        //显示“2.角度变比设置”的子菜单“提示:修改此项之前请先确认罗盘是否变化 是否继续操作 是 否”
                                else if(where==2)
                                        disp_position_warning();                //显示“3.初始位置设置”的子菜单
                                else if(where==3)
                                        disp_status();                                //显示“4.状态查看”的内容
                                else
                                ;       
                                press_num=3;               
                                layer=2;
                                where_0_next=0;                               
                                where_1_next=0;                                        //层标记为2,下一子菜单的位置标记默认为0
                                where_2_next=0;       
                        }
                        else if(key==UP)                //是UP,先判断显白的位置也就是where的值,如果where==0则where=3,否则where-=1;然后再依据where的值去刷新显白的位置
                        {
                                if(where==0)
                                        where=3;
                                else
                                        where-=1;
                                write_command(clr_address);                //复位lcm的ac值       
                                if(where==0)                                        //在第一行位置处显白       
                                {
                                        write_command(0x80);
                                        write_command(AC_highlight);
                                }
                                else if(where==1)                                //在第二行位置处显白
                                {
                                        write_command(0x90);
                                        write_command(AC_highlight);
                                }
                                else if(where==2)                                //在第三行位置处显白
                                {
                                        write_command(0x88);
                                        write_command(AC_highlight);
                                }
                                else                                                         //在第四行位置处显白
                                {
                                        write_command(0x98);
                                        write_command(AC_highlight);
                                }
                        }
                        else if(key==DOWN)                //是DOWN,先判断显白的位置也就是where的值,如果where==3则where=0,否则where+=1;然后再依据where的值去刷新显白的位置
                        {
                                if(where==3)
                                        where=0;
                                else
                                        where+=1;
                                write_command(clr_address);                //复位lcm的ac值       
                                if(where==0)                                        //在第一行位置处显白       
                                {
                                        write_command(0x80);
                                        write_command(AC_highlight);
                                }
                                else if(where==1)                                //在第二行位置处显白
                                {
                                        write_command(0x90);
                                        write_command(AC_highlight);
                                }
                                else if(where==2)                                //在第三行位置处显白
                                {
                                        write_command(0x88);
                                        write_command(AC_highlight);
                                }
                                else                                                         //在第四行位置处显白
                                {
                                        write_command(0x98);
                                        write_command(AC_highlight);
                                }                       
                        }
                        else                                        //其余,什么也不做
                        ;       
                }
/*3333333************************************************************************************************************/               
                //再有键被按下,当where=3时响应的键有 MENU ENTER。LEFT和RIGHT不被响应,这里的响应是指界面不会被刷新
                //当where=0,1,2时,响应的键有MENU ENTER LEFT和RIGHT.
                else if(press_num==3)
                {
                                                                                //电压设置的子菜单,也就是显示  
                                                                                //                                        1.30v
                                                                                //                                           2.50v
                                                                                //                                        3.70v
                                                                                //                                        4.90v
                        if(where==0)                               
                        {
                                if(key==MENU)                        //如果是MENU,则返回待机画面。层标记为0,press_num标记复位为1
                                {
                                        disp_standby();                //返回待机画面
                                        press_num=1;
                                        layer=0;
                                }
                                else if(key==ENTER)        //如果是ENTER,则先判断where_next的值然后再进行响应的处理
                                {
                                        if(where_0_next==0)        //30v
                                                module=3;                                //改变调制度
                                        else if(where_0_next==1)       
                                                module=4;
                                        else if(where_0_next==2)       
                                                module=5;       
                                        else if(where_0_next==3)       
                                                module=6;
                                        else if(where_0_next==4)       
                                                module=7;
                                        else if(where_0_next==5)       
                                                module=8;       
                                        else                                        //故障恢复调制度为4
                                                module=4;
                                        //修改完毕返回待机画面
                                        disp_standby();                //返回待机画面
                                        press_num=1;
                                }
                                else if(key==LEFT)                //如果是向左按键
                                {
                                        if(where_0_next!=0)
                                                where_0_next-=1;
                                        disp_voltage_setup(where_0_next+1);                               
                                }
                                else if(key==RIGHT)                //如果是向下按键
                                {
                                        if(where_0_next!=5)
                                                where_0_next+=1;
                                        disp_voltage_setup(where_0_next+1);                                       
                                }
                                else                                        //如果是LEFT和RIGHT键       
                                ;
                        }
                        else if(where==1)
                        {
                                if(key==MENU)                        //如果是MENU,则返回待机画面。层标记为0,press_num标记复位为1
                                {
                                        disp_standby();                //返回待机画面
                                        press_num=1;
                                        layer=0;
                                }
                                else if(key==ENTER)
                                {
                                        if(where_1_next==0)
                                                {
                                                disp_ratio_setup();                        //显示        "1.1:360 ";
                                                                                                        //                "2.1:180 ";
                                                                                                        //                "3.1:90  ";
                                                                                                        //                "4.1:60  ";
                                                press_num=4;               
                                                where_1_next_next=0;                                //层标记为2,下一子菜单的位置标记默认为0
                                                }
                                        else
                                                {
                                                press_num=2;                                //返回上一目录
                                                disp_layer_1();
                                                write_command(0x90);
                                                write_command(AC_highlight);
                                                }
                                }
                                else if(key==LEFT)
                                {
                                        if(where_1_next==0)
                                                where_1_next=1;
                                        else
                                                where_1_next-=1;
                                        if(where_1_next==0)
                                                {
                                                write_command(0x9b);
                                                write_command(AC_highlight);
                                                }
                                        else
                                                {
                                                write_command(0x9c);
                                                write_command(AC_highlight);
                                                }
                                }
                                else if(key==RIGHT)
                                {
                                        if(where_1_next==1)
                                                where_1_next=0;
                                        else
                                                where_1_next+=1;
                                        if(where_1_next==0)
                                                {
                                                write_command(0x9b);
                                                write_command(AC_highlight);
                                                }
                                        else
                                                {
                                                write_command(0x9c);
                                                write_command(AC_highlight);
                                                }                               
                                }
                                else
                                ;
                        }
                        else if(where==2)
                        {
                                if(key==MENU)                        //如果是MENU,则返回待机画面。层标记为0,press_num标记复位为1
                                {
                                        disp_standby();                //返回待机画面
                                        press_num=1;
                                        layer=0;
                                }
                                else if(key==ENTER)
                                {
                                        if(where_2_next==0)
                                                {
                                                disp_position_setup();                        //显示        "1.1:360 ";
                                                press_num=4;               
                                                where_2_next_next=0;                                //层标记为2,下一子菜单的位置标记默认为0
                                                }
                                        else
                                                {
                                                press_num=2;                                //返回上一目录
                                                disp_layer_1();
                                                write_command(0x88);
                                                write_command(AC_highlight);
                                                }
                                }
                                else if(key==LEFT)
                                {
                                        if(where_2_next==0)
                                                where_2_next=1;
                                        else
                                                where_2_next-=1;
                                        if(where_2_next==0)
                                                {
                                                write_command(0x9b);
                                                write_command(AC_highlight);
                                                }
                                        else
                                                {
                                                write_command(0x9c);
                                                write_command(AC_highlight);
                                                }
                                }
                                else if(key==RIGHT)
                                {
                                        if(where_2_next==1)
                                                where_2_next=0;
                                        else
                                                where_2_next+=1;
                                        if(where_2_next==0)
                                                {
                                                write_command(0x9b);
                                                write_command(AC_highlight);
                                                }
                                        else
                                                {
                                                write_command(0x9c);
                                                write_command(AC_highlight);
                                                }                               
                                }
                                else
                                ;
                        }
/***********if(where==3)*******************************************************************************/                       
                        else if(where==3)
                        {
                                if(key==MENU)                        //如果是MENU,则返回待机画面。层标记为0,press_num标记复位为1
                                {
                                        disp_standby();                //返回待机画面
                                        write_command(AC_highlight_off);
                                        press_num=1;
                                }
                                else if(key==ENTER)
                                {
                                        disp_standby();                //返回待机画面
                                        write_command(AC_highlight_off);
                                        press_num=1;
                                }
                                else
                                ;
                        }
                        else
                        ;
                }
/*44444444444****************************************************************************************/
                else if(press_num==4)                        //能进到这一层界面的也就是where==1和where==2这两个
                {
                        if(where==1)                                //能响应的按键有UP DOWN MENU和ENTER,不响应LEFT和RIGHT
                        {
                                if(key==MENU)                        //如果是MENU,则返回待机画面。press_num标记复位为1
                                {
                                        disp_standby();                //返回待机画面
                                        press_num=1;
                                }
                                else if(key==ENTER)        //如果是ENTER,则先判断where_1_next_next的值然后再进行响应的处理
                                {
                                        if(where_1_next_next==0)        //1:360
                                                ratio=360;                                //改变角变比
                                        else if(where_1_next_next==1)        //1:180
                                                ratio=180;
                                        else if(where_1_next_next==2)        //1:90
                                                ratio=90;       
                                        else if(where_1_next_next==3)        //1:60
                                                ratio=60;
                                        else                                        //故障恢复为1:360
                                                ratio=360;
                                        //修改完毕返回待机画面
                                        disp_standby();                //返回待机画面
                                        press_num=1;       
                                }
                                else if(key==UP)                //如果是向上按键
                                {
                                        if(where_1_next_next==0)
                                                where_1_next_next=3;
                                        else
                                                where_1_next_next-=1;
                                        write_command(clr_address);                //复位lcm的ac值       
                                        if(where_1_next_next==0)                                        //在第一行位置处显白
                                        {
                                                write_command(0x80);
                                                write_command(AC_highlight);
                                        }
                                        else if(where_1_next_next==1)                                //在第二行位置处显白
                                        {
                                                write_command(0x90);
                                                write_command(AC_highlight);
                                        }
                                        else if(where_1_next_next==2)                                //在第三行位置处显白
                                        {
                                                write_command(0x88);
                                                write_command(AC_highlight);
                                        }
                                        else                                                         //在第四行位置处显白
                                        {
                                                write_command(0x98);
                                                write_command(AC_highlight);
                                        }                                               
                                }
                                else if(key==DOWN)                //如果是向下按键
                                {
                                        if(where_1_next_next==3)
                                                where_1_next_next=0;
                                        else
                                                where_1_next_next+=1;
                                        write_command(clr_address);                //复位lcm的ac值       
                                        if(where_1_next_next==0)                                        //在第一行位置处显白       
                                        {
                                                write_command(0x80);
                                                write_command(AC_highlight);
                                        }
                                        else if(where_1_next_next==1)                                //在第二行位置处显白
                                        {
                                                write_command(0x90);
                                                write_command(AC_highlight);
                                        }
                                        else if(where_1_next_next==2)                                //在第三行位置处显白
                                        {
                                                write_command(0x88);
                                                write_command(AC_highlight);
                                        }
                                        else                                                         //在第四行位置处显白
                                        {
                                                write_command(0x98);
                                                write_command(AC_highlight);
                                        }                                       
                                }
                                else                                        //如果是LEFT和RIGHT键       
                                ;                       
                        }
                        if(where==2)                                //响应所有的按键
                        {
                                if(key==MENU)                        //如果是MENU,则返回待机画面。press_num标记复位为1
                                {
                                        disp_standby();                //返回待机画面
                                        press_num=1;
                                }
                                else if(key==ENTER)        //如果是ENTER,则先判断where_1_next_next的值然后再进行响应的处理
                                {
                                       
                                        //将修改的数据赋给new_position,同时也赋old_position,保证再次运行时电机是从这个位置开始启动的
                                        old_position=bai_wei*100.0+shi_wei*10.0+ge_wei+shifen_wei*0.1;
                                        new_position=old_position;
                                        //修改完毕返回待机画面
                                        disp_standby();                //返回待机画面
                                        press_num=1;       
                                }
                                else if(key==UP)                //如果是向上按键,先判断光标所处的是哪个位置,百位,十位,个位或者十分位
                                {       
                                        if(where_2_next_next==0)                //百位
                                        {
                                                if(bai_wei==3)
                                                        bai_wei=0;
                                                else
                                                        bai_wei+=1;                       
                                                //确定好百位上的值以后就去刷新该位显示       
                                                write_command(clr_address);
                                                write_command(0x8a);
                                                for(i=0;i<2;i++)
                                                        write_data(chinese_0_to_9[bai_wei]);
                                                write_command(0x8a);
                                                write_command(AC_highlight);
                                        }
                                        else if(where_2_next_next==1)        //十位
                                        {
                                                if(shi_wei==5)
                                                        shi_wei=0;
                                                else
                                                        shi_wei+=1;                       
                                                //确定好百位上的值以后就去刷新该位显示       
                                                write_command(clr_address);
                                                write_command(0x8b);
                                                for(i=0;i<2;i++)
                                                        write_data(chinese_0_to_9[shi_wei]);
                                                write_command(0x8b);
                                                write_command(AC_highlight);
                                        }
                                        else if(where_2_next_next==2)        //个位
                                        {
                                                if(ge_wei==9)
                                                        ge_wei=0;
                                                else
                                                        ge_wei+=1;                       
                                                //确定好百位上的值以后就去刷新该位显示       
                                                write_command(clr_address);
                                                write_command(0x8c);
                                                for(i=0;i<2;i++)
                                                        write_data(chinese_0_to_9[ge_wei]);
                                                write_command(0x8c);
                                                write_command(AC_highlight);
                                        }
                                        else if(where_2_next_next==3)        //十分位
                                        {
                                                if(shifen_wei==9)
                                                        shifen_wei=0;
                                                else
                                                        shifen_wei+=1;                       
                                                //确定好百位上的值以后就去刷新该位显示       
                                                write_command(clr_address);
                                                write_command(0x8e);
                                                for(i=0;i<2;i++)
                                                        write_data(chinese_0_to_9[shifen_wei]);
                                                write_command(0x8e);
                                                write_command(AC_highlight);
                                        }
                                        else                                                        //其他出错不处理
                                        ;
                                }
                                else if(key==DOWN)                //如果是向下按键
                                {
                                        if(where_2_next_next==0)                //百位
                                        {
                                                if(bai_wei==0)
                                                        bai_wei=3;
                                                else
                                                        bai_wei-=1;                       
                                                //确定好百位上的值以后就去刷新该位显示       
                                                write_command(clr_address);
                                                write_command(0x8a);
                                                for(i=0;i<2;i++)
                                                        write_data(chinese_0_to_9[bai_wei]);
                                                write_command(0x8a);
                                                write_command(AC_highlight);
                                        }
                                        else if(where_2_next_next==1)        //十位
                                        {
                                                if(shi_wei==0)
                                                        shi_wei=5;
                                                else
                                                        shi_wei-=1;                       
                                                //确定好百位上的值以后就去刷新该位显示       
                                                write_command(clr_address);
                                                write_command(0x8b);
                                                for(i=0;i<2;i++)
                                                        write_data(chinese_0_to_9[shi_wei]);
                                                write_command(0x8b);
                                                write_command(AC_highlight);       
                                        }
                                        else if(where_2_next_next==2)        //个位
                                        {
                                                if(ge_wei==0)
                                                        ge_wei=9;
                                                else
                                                        ge_wei-=1;                       
                                                //确定好百位上的值以后就去刷新该位显示       
                                                write_command(clr_address);
                                                write_command(0x8c);
                                                for(i=0;i<2;i++)
                                                        write_data(chinese_0_to_9[ge_wei]);
                                                write_command(0x8c);
                                                write_command(AC_highlight);
                                        }
                                        else if(where_2_next_next==3)        //十分位
                                        {
                                                if(shifen_wei==0)
                                                        shifen_wei=9;
                                                else
                                                        shifen_wei-=1;                       
                                                //确定好百位上的值以后就去刷新该位显示       
                                                write_command(clr_address);
                                                write_command(0x8e);
                                                for(i=0;i<2;i++)
                                                        write_data(chinese_0_to_9[shifen_wei]);
                                                write_command(0x8e);
                                                write_command(AC_highlight);
                                        }
                                        else                                                        //其他出错不处理
                                        ;
                                }
                                else if(key==LEFT)                //向左按键
                                {
                                        if(where_2_next_next!=0)
                                                where_2_next_next-=1;
                                        if(where_2_next_next==0)
                                                {
                                                write_command(clr_address);
                                                write_command(0x8a);
                                                write_command(AC_highlight);
                                                }
                                        else if(where_2_next_next==1)
                                                {
                                                write_command(clr_address);
                                                write_command(0x8b);
                                                write_command(AC_highlight);
                                                }       
                                        else if(where_2_next_next==2)
                                                {
                                                write_command(clr_address);
                                                write_command(0x8c);
                                                write_command(AC_highlight);
                                                }
                                        else if(where_2_next_next==3)
                                                {
                                                write_command(clr_address);
                                                write_command(0x8e);
                                                write_command(AC_highlight);
                                                }
                                        else
                                        ;
                                }
                                else if(key==RIGHT)                //向右按键
                                {
                                        if(where_2_next_next!=3)
                                                where_2_next_next+=1;
                                        if(where_2_next_next==0)
                                                {
                                                write_command(clr_address);
                                                write_command(0x8a);
                                                write_command(AC_highlight);
                                                }
                                        else if(where_2_next_next==1)
                                                {
                                                write_command(clr_address);
                                                write_command(0x8b);
                                                write_command(AC_highlight);
                                                }       
                                        else if(where_2_next_next==2)
                                                {
                                                write_command(clr_address);
                                                write_command(0x8c);
                                                write_command(AC_highlight);
                                                }
                                        else if(where_2_next_next==3)
                                                {
                                                write_command(clr_address);
                                                write_command(0x8e);
                                                write_command(AC_highlight);
                                                }
                                        else
                                        ;                               
                                }
                                else                         //key值出现异常处理,什么都不做
                                ;                       
                        }
                }
                else if(press_num==5)       
                {
                ;
                }
                else
                ;
        }                                       
        TIMSK=a;                                                //恢复TIMSK       
       
}

出0入0汤圆

发表于 2007-11-3 17:57:50 | 显示全部楼层
液晶是lcm12864
没有照相机,传个自己画的效果图,有兴趣的朋友可以点击看下
a href=./bbs_upload/files_8/ourdev_179663.doc target='_blank'>点击此处打开ourdev_179663.doc(文件大小:42K)</a>

出0入0汤圆

发表于 2007-11-3 18:00:23 | 显示全部楼层
点击此处打开ourdev_179664.doc(文件大小:42K)

出0入0汤圆

发表于 2009-2-26 15:10:55 | 显示全部楼层
收下了谢谢

出0入0汤圆

发表于 2009-3-10 17:07:46 | 显示全部楼层
学习

出0入134汤圆

发表于 2009-3-10 20:25:16 | 显示全部楼层
好东西啊,够我学习一阵子了

出200入0汤圆

发表于 2009-3-10 21:59:18 | 显示全部楼层
收藏

出0入0汤圆

发表于 2009-3-10 22:16:55 | 显示全部楼层
强人~学习中

出0入0汤圆

发表于 2009-3-10 22:21:02 | 显示全部楼层
mark!

出0入0汤圆

发表于 2009-3-10 22:34:56 | 显示全部楼层
村长对菜单很有研究,学习学习

出0入0汤圆

发表于 2009-3-11 11:06:38 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-3-12 18:05:24 | 显示全部楼层
【21楼】 lzlym182

GUI高手.正在努力.

出0入0汤圆

发表于 2009-3-22 23:12:50 | 显示全部楼层
学习!

出0入0汤圆

发表于 2009-3-23 18:55:52 | 显示全部楼层
mark..

  看来不学AVR不行了。。!!!

出0入0汤圆

发表于 2009-3-31 10:37:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-4-1 08:58:14 | 显示全部楼层
收藏。谢谢

出0入0汤圆

发表于 2009-4-1 12:50:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-4-16 17:49:59 | 显示全部楼层
学习中。

出0入0汤圆

发表于 2009-4-19 16:41:44 | 显示全部楼层
收藏!

出0入0汤圆

发表于 2009-4-21 09:01:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-4-21 09:38:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-4-22 02:21:56 | 显示全部楼层
收藏

出0入0汤圆

发表于 2009-6-18 09:01:28 | 显示全部楼层
ddddddddddddd

出0入0汤圆

发表于 2009-11-20 20:29:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-11-20 20:49:16 | 显示全部楼层
学习

出0入0汤圆

发表于 2009-11-20 22:20:19 | 显示全部楼层
村长又发利市了

出0入0汤圆

发表于 2009-11-20 23:05:02 | 显示全部楼层
好东西。又挖坟了

出0入0汤圆

发表于 2009-11-20 23:14:47 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-9 12:40:58 | 显示全部楼层
回复【19楼】amwdnvfku
-----------------------------------------------------------------------

谢谢分享

出0入0汤圆

发表于 2010-2-17 11:22:01 | 显示全部楼层
好东西

出0入0汤圆

发表于 2010-4-7 13:32:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-13 10:45:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-13 12:57:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-15 00:14:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-1 09:44:01 | 显示全部楼层
下来看看!等一下去使使

出0入0汤圆

发表于 2010-5-1 10:31:21 | 显示全部楼层

出0入0汤圆

发表于 2010-5-1 11:32:10 | 显示全部楼层
学习制作菜单·

出0入0汤圆

发表于 2010-5-1 12:55:26 | 显示全部楼层

出0入0汤圆

发表于 2010-5-1 13:04:06 | 显示全部楼层
好东西啊 记号一下

出0入0汤圆

发表于 2010-5-2 16:00:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-5 17:45:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-27 10:55:45 | 显示全部楼层
mark1

出0入0汤圆

发表于 2010-6-28 12:17:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-28 15:47:40 | 显示全部楼层
留个脚印

出0入0汤圆

发表于 2010-7-7 02:33:33 | 显示全部楼层
标记下,以后慢慢学习!

出0入0汤圆

发表于 2010-7-7 09:10:05 | 显示全部楼层
AVRmenu.exe  也开源吧!~~

出0入0汤圆

发表于 2010-8-26 13:16:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-2 17:12:09 | 显示全部楼层
收藏

出0入0汤圆

发表于 2010-12-2 17:14:18 | 显示全部楼层
cool

出0入0汤圆

发表于 2011-3-10 00:15:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-16 22:42:32 | 显示全部楼层
mark,学习下

出0入0汤圆

发表于 2011-5-16 23:21:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-19 18:50:00 | 显示全部楼层
mark

出100入0汤圆

发表于 2011-5-19 22:35:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-19 22:45:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-20 11:02:04 | 显示全部楼层
hao

出0入0汤圆

发表于 2011-5-20 12:37:03 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-6-15 11:30:34 | 显示全部楼层
收藏了

出0入0汤圆

发表于 2011-7-15 01:35:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-4 18:12:30 | 显示全部楼层
吃村长的大餐。。。。

出0入0汤圆

发表于 2011-10-12 17:35:01 | 显示全部楼层
非常感兴趣

出0入0汤圆

发表于 2012-2-25 22:01:36 | 显示全部楼层
MARK,正在调试1602的菜单的参数设置部分

出0入0汤圆

发表于 2012-7-26 09:15:40 | 显示全部楼层
标记,待有空再详细看完

出0入0汤圆

发表于 2012-9-29 09:38:12 | 显示全部楼层
mark


出0入0汤圆

发表于 2012-9-29 21:27:44 | 显示全部楼层
本帖最后由 orzorzorzorz 于 2012-9-29 21:30 编辑

看起来不错么

出50入0汤圆

发表于 2012-9-30 09:25:19 | 显示全部楼层
这个能不能用在51单片机上啊?老村长大侠

出0入0汤圆

发表于 2013-1-25 16:33:10 | 显示全部楼层
回复支持一下 谢谢分享

出0入0汤圆

发表于 2013-1-27 01:50:41 | 显示全部楼层
学习了,

出0入0汤圆

发表于 2013-4-12 10:56:41 来自手机 | 显示全部楼层
谢谢楼主......

出50入0汤圆

发表于 2013-4-12 11:12:52 | 显示全部楼层
没有下文了

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-6 16:35

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

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