单片机LCD12864无限扩展多级菜单源码

发布者:JoyfulSpirit5最新更新时间:2019-11-18 来源: 51hei关键字:单片机  LCD12864  多级菜单 手机看文章 扫描二维码
随时随地手机看文章

单片机源程序如下:

#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);

//                 

//         

//         

//         

//         

//         }

  }


……………………



关键字:单片机  LCD12864  多级菜单 引用地址:单片机LCD12864无限扩展多级菜单源码

上一篇:检测0~20MA电流传感器报警控制程序
下一篇:单片机+DHT11温湿度检测程序

推荐阅读最新更新时间:2024-11-17 00:45

单片机和DSP等嵌入式系统中串口通信帧的同步方法
串口通信是日前单片机和DSP等嵌入式系统之间,以及嵌入式系统与PC机或无线模块之间的一种非常重要且普遍使用的通信方式在嵌入式系统的硬件结构中,通常只有一个8位或16位的CPU,不仅要完成主流程的工作,同时还要处理随时发生的各种中断,因而嵌入式系统中的串口通信程序设计与PC机有很大的不同若嵌入式系统中。中断服务子程序在系统运行过程中占用了较多的时间,就有可能在中断眼务子程序正运行时,又产生一个同类型或其他类型的中断,从而造成主程序得不到执行或后续中断数据丢失所以,嵌入式系统中的串口通信虽然看似简单,但其中仍有许多问题值得研究,例如串口通信过程中的帧同步问题本文针对该问题给出了逐次比较、基于FIFO队列和基于状态机的3种帧同步方法通过
[单片机]
<font color='red'>单片机</font>和DSP等嵌入式系统中串口通信帧的同步方法
51系列单片机关于时序问题
单片机的基本操作周期为机器周期,一个机器周期分为六个状态,每个状态由两个脉冲组成,也就是所谓的两箱(前一个脉冲P1叫相位1,后一个脉冲P2为相位2)。所以一个机器周期共有12个振荡脉冲。因此可以根据时钟频率计算出一个机器周期的时间。 例如:系统的时钟是11.0592MHZ,那么用它除以12,得到了每秒执行的机器周期书,然后取反就得到了机器周期的时间。
[单片机]
单片机成长之路(51基础篇) - 012 MCS-TMOD T2MOD
TMOD:工作方式控制寄存器 寄存器地址89H,不可位寻址。 位序 B7 B6 B5 B4 B3 B2 B1 B0 位符号 GATE C/T M1 M0 GATE C/T M1 M0 GATE——门控位 当=0时,以TR0(或TR1)状态决定定时器/计数器的启动或禁止 当=1时,以TR0与INT0(或TR1与INT1)状态决定定时器/计数器的启动或禁止 C/T=0 定时/计数工作方式选择位 0为定时器 1为计数器。 M1M0——工作方式选择位 M1M0=00 方式0:是13位计数结构的工作方式,其计数器由TH全部8位和TL的低5位构成。 M1M0=01 方式1:是16位计
[单片机]
STC单片机知识点
1.单片机内部三大资源:FLASH(程序存储空间也叫ROM),RAM(内存),SFR(特殊功能寄存器)。我们对单片机的操作基本都是对SFR的操作。 2.stc89c52 特点:8K FLASH,512B RAM,1个UART,2个定时器,8个中断源,P0口无上拉功能。 3.对FLASH的写操作,一般都是按页擦除,只有先把一页数据擦除后 才能写入,相当于先把数据清理后才能写。 4.对于一款新的单片机,要用sizeof,测试char,short,int等类型所占的空间大小。
[单片机]
Flash、MCU、DRAM,兆易创新三驾马车并驾齐驱
过去一年,在国产替代和政策红利的大背景下,A股半导体上市公司备受资本追捧,涌现出一批破千亿市值的半导体公司。据Wind统计显示,2019年度,A股半导体指数从年初1540.63点,增长至年末2870.35点,整体累计涨幅达85.77%,其中多家半导体产业细分领域的龙头在并购整合之下,公司股价呈倍数增长,市值一路涨超千亿大关。 不过,今年以来,受新冠疫情引发的全球股市震荡等多方面影响,半导体概念股普遍开始“降温”,投资逐渐趋于理性。而A股这批破千亿市值的半导体公司价值逻辑依旧成立,其中有别于靠单项产品拉动企业业绩增长,兆易创新凭借存储+微控制器+传感器三路并进,辅以DRAM进入突破阶段,成长弹性更具优势。 根据最新财报显示,
[嵌入式]
Flash、<font color='red'>MCU</font>、DRAM,兆易创新三驾马车并驾齐驱
基于C8051F020单片机与RTL8019AS的音频峰值采集终端设计
广播信号经节目制作播出、信号传送、发射等环节,最终在听众用户端收听,其中各个环节的系统工作状态都会对最终的播出质量产生影响。为全面监测广播信号播出过程中多个环节的信号质量,同时对高周信号和低周信号(音频基带信号)的音频峰值进行监测,就要求音频峰值监测终端对广播信号播出端、发射端以及解调后的音频信号进行监测。一般电台的制作播出端、发射端、监测控制端不在同一地点。以上海为例:制作播出在虹桥路广播大厦;发射端在东方明珠电视塔;监测中心在北京路外滩。最好的监测方法就是各地点分别采集,再通过内部的局域网将采集的数据传送到监测中心集中分析处理。 1原理框图 C8051F020是美国Silicon Laboratories公司生产的8051
[单片机]
基于C8051F020<font color='red'>单片机</font>与RTL8019AS的音频峰值采集终端设计
AVR单片机(学习ing)—(二)、ATMEGA16的中断系统—02
二、ATMEGA16的中断系统 二—(02)、4*4行列式按键的睡眠模式中断唤醒 废话不多说了,上一篇有这一片所用的寄存器,所以你要想看这篇,还是建议看看上一篇 ,当然要是会~~~ 直接上图~~~ 好了,下面的就是程序了(这里要注意一下,Proteus中的二极管的作用,一定要弄明白~~呵呵,虽然我不明白~~笨死了~~但是有一点我是知道的,防止回流,但是为什么这么接~~我蛋疼了~~不会啊) //------------------------------------------------------------------------------ //4*4行列式按键的睡眠模式中断唤醒实验 //其中睡眠模式再 intri
[单片机]
AVR<font color='red'>单片机</font>(学习ing)—(二)、ATMEGA16的中断系统—02
【GD32 MCU 入门教程】GD32 MCU 常见外设介绍(12)FMC 模块介绍
12.1.FMC 基础知识 闪存控制器(FMC),提供了片上闪存需要的所有功能。FMC 也提供了页擦除,整片擦除,以及32 位整字或 16 位半字编程闪存等操作。 GD32 MCU 支持不同类型编程的具体说明如下表 GD32 MCU 不同系列编程区别所示。 12.2.FMC 功能 支持 32 位整字或 16 位半字编程,页擦除和整片擦除操作; 支持 CPU 执行指令零等待区域(code area)和非零等待区域(data area); 大小为 16 字节的可选字节块可根据用户需求配置; 具有安全保护状态,可阻止对代码或数据的非法读访问; 相关术语说明 GD32F10x 和 F30x 分别有 MD(中容量) 、HD(大容量)、X
[单片机]
【GD32 <font color='red'>MCU</font> 入门教程】GD32 <font color='red'>MCU</font> 常见外设介绍(12)FMC 模块介绍
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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