历史上的今天
返回首页

历史上的今天

今天是:2024年11月18日(星期一)

正在发生

2019年11月18日 | 单片机LCD12864无限扩展多级菜单源码

2019-11-18 来源:51hei

单片机源程序如下:

#include "delay.h"

#include "12864.h"

#include "fun.h"

#include "key.h"

#include "wakeup.h"

u8  func_index=0;


void (*current_operation_index)(); //执行当前显示函数

typedef struct

   {

        u8 current;        //当前状态号

        u8  up;//向上翻索引号

        u8 down;//向下翻索引号

        u8 enter;//确认索引号

        u8 num_ent;//编码器确认键

        void (*current_operation)(); //要执行的函数

        } key_table;


         key_table table[21]=

{

  {0,3,1,4,15,(*fun1)},//运行状态

         {1,0,2,6,1,(*fun2)}, //历史记录

        {2,1,3,10,2,(*fun3)},//版本信息

        {3,2,0,11,3,(*fun4)},//功能设置

        {4,5,5,15,4,(*fun5)},//运行参数

        {5,4,4,0,5,(*fun6)}, //运行时间

         {6,9,7,0,1,(*fun7)},//故障记录

        {7,6,8,0,1,(*fun8)},//7天记录

        {8,7,9,0,1,(*fun9)},//今年记录

        {9,8,6,0,1,(*fun10)}, //往年记录

         {10,0,0,0,2,(*fun11)},//版本信息

        {11,14,12,19,3,(*fun12)},//设置通讯地址

        {12,11,13,0,3,(*fun13)},//设置语言

        {13,12,14,0,3,(*fun14)}, //设置时间

         {14,13,11,0,3,(*fun15)},//更多

        {15,18,16,0,15,(*fun16)},//主画面

        {16,15,17,0,15,(*fun17)},//输入数据

        {17,16,18,0,15,(*fun18)}, //输出数据

         {18,17,15,0,15,(*fun19)},//功率参数

        {19,17,15,0,11,(*fun20)},//通讯地址

};

        

        int main(void)

{

        u8 num;

        SystemInit();                //系统初始化

        delay_init(72);             //延时初始化

        LCD12864_InitPort(); //端口初始化

        LCD12864_Init();         //液晶初始化

  Key_Init();//按键初始化

        

        

//  LCD12864_Pos(3,5);

        LCD12684_Wdat(0x35);


                while(1)

         {

                 num=KEY_Scan();//得到键值

                if(num==3)


//                {

//                switch(num)

//                        { 

//                                case 1:

//                                func_index=table[func_index].up;  break;  //向上翻

//                                case 2:

//                                func_index=table[func_index].down; break;   //向下翻

//                                case 3:

//                                func_index=table[func_index].enter; break;   //确认

//                                case 4:

//                                func_index=table[func_index].num_ent; break; 

//                                }           

//         LCD12864_Clr();    //clear all dots

//                 }                                

//                current_operation_index=table[func_index].current_operation;

//                (*current_operation_index)();//执行当前操作函数

//   }

        { 

                 delay_ms(500);

                Sys_Enter_Standby();

        }

         

//         if(KEY_Scan()==1)

//         {

//                RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);

//                 

//         

//         

//         

//         

//         }

  }


……………………



推荐阅读

史海拾趣

Cembre SPA公司的发展小趣事

为了满足全球客户的需求,Cembre SPA制定了国际化战略,开始在全球范围内拓展业务。公司设立了多个海外分支机构,与当地的合作伙伴建立了紧密的合作关系。通过全球化的销售网络和本地化的服务支持,Cembre SPA的产品逐渐打入了国际市场,赢得了全球客户的信赖。

HIT(日立)公司的发展小趣事
对于可能产生热量的元件(如可控硅),应采取适当的散热措施,防止元件过热损坏。
高通(GENITOP)公司的发展小趣事

进入90年代,超霸电池开始拓展内地市场,先后在北京、上海、广州等十多个主要城市设立销售点。与此同时,公司业务也逐步向多元化发展,除了电池生产外,还涉足电缆、汽车配线、扬声器等领域。这一时期,超霸电池推出了可循环再用的镍氢充电电池和充电器,满足了市场对环保、高效电池产品的需求,进一步巩固了其在电池行业的领先地位。

川晶科技公司的发展小趣事

川晶科技注重团队建设和人才培养。公司建立了完善的培训体系和发展机制,为员工提供丰富的培训机会和广阔的发展空间。通过引进高素质的人才和内部培养相结合的方式,川晶科技打造了一支高素质、专业化的团队。团队成员之间团结协作、互相支持,共同推动公司的持续成长和发展。同时,公司还建立了良好的激励机制和企业文化氛围,激发员工的工作积极性和创造力。

Aces Electronics Co Ltd公司的发展小趣事

随着技术的不断进步和产品的日益成熟,Aces开始将目光投向国际市场。公司积极参与国际电子展会和技术交流,与多家国际知名企业建立了合作关系。通过引进国外先进的技术和管理经验,Aces不断提升自身竞争力,逐渐在国际市场上占据了一席之地。同时,公司还积极拓展海外市场,将产品销往全球多个国家和地区。

Codeco Corporation Of Vermont公司的发展小趣事

在国内市场取得成功后,Codeco开始将目光投向国际市场。他们积极拓展海外业务,与多家国际知名企业建立合作关系。通过参加国际展会、设立海外分支机构等方式,Codeco的产品逐渐打入国际市场,赢得了广泛的认可。这一过程中,Codeco不仅提升了品牌知名度,也积累了丰富的国际化运营经验。

问答坊 | AI 解惑

半导体业自主创新要理顺多层关系

近几年中国IC产业快速增长的主要动力来源于:中国市场的增长,投资环境的改善,优惠政策的吸引,半导体产业向中国的转移,产产业的集聚效应,海归的回国创业等,以上这些动力来源将继续存在并带动今后产业的高速成长。总结这几年中国集成电电路产业 ...…

查看全部问答>

单片机系统中红外通信接口的设计

在许多基于单片机的应用系统中,系统需要实现遥控功能,而红外通信则是被采用较多的一种方法。一般市场上的遥控器协议简单、保密性不强、抗干扰能力较弱。这里,我们介绍一种基于字节传输的红外遥控系统,可以适合于各种复杂的应用场合。  红外通 ...…

查看全部问答>

电子琴

1.实验任务 (1).由4X4组成16个按钮矩阵,设计成16个音。 (2).可随意弹奏想要表达的音乐。 2.电路原理图                            &nbs ...…

查看全部问答>

?ARM9200求合作 高薪聘请

   项目工程,寻找合作伙伴,大概情况是这样的:ATmel芯片的ARM9200板子已经做好了,可以正常的启动,程序也可以运行。 现在这个板子的USB口可以识别FAT和FAT32格式的硬盘,不能识别NTFS格式的硬盘。板子的上所有的应用程序是在linux2.6 ...…

查看全部问答>

100分求助:WINCE下如何设置触摸屏有效范围???

请问各位:     如何设置触摸屏的有效触摸范围,如原来320*240 现在想让触摸屏的有效触摸范围小一圈如:315*235 在有效范围之外不会触发中断 请问如何设置或者修改 谢谢各位!…

查看全部问答>

无接触式人体体温计

比赛使用过这个传感器,一直想做好,但是没做,呵呵…

查看全部问答>

【LaunchPad】 MSP430 LaunchPad新手引导贴

最近很多新同学都拿到了团购的开发板,但是很多同学和我一样第一次接触MSP430,拿到板子之后感觉无从下手,但是感谢论坛的各位大大,为我们提供了非常多的资料和教程,所以just follow~~~step1:下载并安装开发环境。MSP430的开发环境有IAR和CCS两 ...…

查看全部问答>

这个函数是怎么写半字节到 LCD 的?

void  DispDataWrOneNibble (CPU_INT08U data){    CPU_INT32U  value;    BSP_LCD_DISP_RW_LO();                             ...…

查看全部问答>

求助关于ATMEGA16的TWI的读写问题,请救各位AVR高手

只测试TWI的写的功能,分别写器件地址,寄存器地址,数据三个数,但是从示波器看只看到器件地址和数据的2个数据,看不到寄存器地址这是为什么呢?????求各位高手解答#include <iom16v.h>#include <macros.h>void I2C_init(){  TWS ...…

查看全部问答>

ALTERA Cyclone V 评估板 电路图 共36张

PDF文件: [ 本帖最后由 dontium 于 2012-12-6 14:42 编辑 ]…

查看全部问答>