单片机4个按键菜单

发布者:美好回忆最新更新时间:2016-08-15 来源: eefocus关键字:单片机  按键菜单 手机看文章 扫描二维码
随时随地手机看文章
#include "main.h"

void PWM_Ctrl(signed char i)        //脉冲宽度设置
{
 }

void OpenTime_Ctrl(signed char i)   //开时间设置
{
}

void CloseTime_Ctrl(signed char i)  //关时间设置
{
}

void ClearData(signed char i)       //清除数据
{
}


void NullMenu(signed char i)        //空操作
{
    ;
}

struct MenuItem

    void (*Display)(void);              //显示函数
    void (*Subs)(signed char i);        //节点函数
    struct MenuItem *ChildrenMenus;     //子菜单
    struct MenuItem *ParentMenus;       //母菜单
};

//本文共计2级菜单

struct MenuItem SetMenu[4];     //设置键子菜单
struct MenuItem StartMenu;       //开始菜单
struct MenuItem (*MenuPoint) = &StartMenu;
struct MenuItem (*last_MenuPoint) = &StartMenu; 

struct MenuItem SetMenu[4] =
{ //   Display               Subs                   ChildrenMenus    ParentMenus
    {  Display_S0,        PWM_Ctrl,          &SetMenu[1],      &StartMenu},
    {  Display_S1,        OpenTime_Ctrl,  &SetMenu[2],      &StartMenu},
    {  Display_S2,        CloseTime_Ctrl,  &SetMenu[3],      &StartMenu},
    {  Display_S3,        ClearData,           &StartMenu,       &StartMenu},
};

struct MenuItem StartMenu =
{
       Display_Count,      NullMenu,         &SetMenu[0],      &StartMenu
};


void Data_manage(void)
{
   ;

}


void Key_Handle(void)
{
    unsigned char key;
    signed char i = 0;
    
    if (key_value == 0)
    {
        return;
    }
    key = key_value;
    key_value = 0;
    
    switch (key)
    {
        case KEY_START:
            MenuPoint = (*MenuPoint).ParentMenus;
            break;
        case KEY_SET:
            MenuPoint = (*MenuPoint).ChildrenMenus;
            pause_flag = 1;    //暂停计数
            break;
        case KEY_UP:
            i = 1;
            break;
        case KEY_DOWN:
            i = -1;
            break;
        default:
            break;
    }
    
    Data_manage();    
    (*(*MenuPoint).Subs)(i);
    (*(*MenuPoint).Display)();
    
    Refresh_flash();
}

void Display(void)
{
    if (time_1s_flag == 1)
    {
        time_1s_flag = 0;
        (*(*MenuPoint).Display)();
    }
}

关键字:单片机  按键菜单 引用地址:单片机4个按键菜单

上一篇:软件延时的误区
下一篇:MSP430看门狗定时器的寄存器定义

推荐阅读最新更新时间:2024-03-16 15:05

单片机无线串行接口电路设计
1 概 述   单片机无线串行接口电路由MICRF102单片发射器芯片、 MICRF007单片接收器芯片组成,工作在300~440 MHz ISM频段;具有ASK调制和解调能力,抗干扰能力强,适合工业控制应用;采用PLL频率合成技术,频率稳定性好;接收灵敏度高达 -96 dBm,最大发射功率达-2.5 dBm;数据速率可达2 Kb/s;低工作电压:4.75~5.5 V;功耗低,接收时电流3 mA,发射时电流7.75 mA,接收待机状态仅为0.5μA,发射待机状态仅为1.0μA;可用于单片机之间的串行数据无线传输,也可在单片机数据采集、遥测遥控等系统中应用。 2 电路组成及工作原理 2.1 无线发射电路   无线发射电路如
[应用]
【自学51单片机】1 -- 初步认识单片机单片机基础知识介绍
初步认识单片机及其学习方法 和 单片机基础知识介绍 1、初识单片机 1.1 单片机是什么? 单片机是一种集成电路芯片,又称单片微控制器。是采用超大规模集成电路技术把CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统。 1.2 单片机的用途 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。遥控器、车载电脑、空调、微波炉、电磁炉、电饭煲、电风扇、计算器、智能充电器、POS机、打印机、扫描仪、无人机、电控门等等,基本上需要插电的稍微有点功能的电器,都有单片机的存在。 1.3 单片机的种类 主流
[单片机]
【自学51<font color='red'>单片机</font>】1 -- 初步认识<font color='red'>单片机</font>和<font color='red'>单片机</font>基础知识介绍
ICL7135与PIC单片机在温度变送器中的应用
引言 在智能仪表设计中,经常用到A/D转换器。在常用的A/D转换中,7135应用最为广泛,它具有41/2位A/D转换精度,抗干扰能力强,价格低廉,主要用于检测参数的测量显示,在智能仪器仪表中,常利用其A/D转换特性,与单片机串行连接,通过简单的人机界面实现对A/D转换数据的智能控制。本文以PIC单片机与ICL7135的实际工程应用为例,介绍一款智能温度控制仪表在温度变送器中的应用。 1 PIC单片机 PIC系列8位CMOS单片机具有独特的RISC结构,数据总线和指令总线分离的哈佛总线(Harvard)结构,使指令具有单字长的特性,且允许指令码的位数可多于8位的数据位数,这与传统的采用CISC结构的8位单片机相比,可以达到2:
[单片机]
ICL7135与PIC<font color='red'>单片机</font>在温度变送器中的应用
51单片机边沿触发中断响应时刻的测量
MCS51单片机系列属于8位单片机,它是Intel公司继MCS48系列的成功设计之后,于1980年推出的产品。由于MCS51系列具有很强的片内功能和指令系统,因而使单片机的应用发生了一个飞跃,这个系列的产品也很快成为世界上第二代的标准控制器。51系列单片机有5个中断源,其中有2个是外部输入中断源INT0和INT1。可由中断控制寄存器TCON的IT1(TCON.2)和IT0(TCON.1)分别控制外部输入中断1和中断0的中断触发方式。若为0,则外部输入中断控制为电平触发方式;若为1,则控制为边沿触发方式。这里是下降沿触发中断。 1 问题的引出 几乎国内所有的单片机资料对单片机边沿触发中断的响应时刻方面的定义都是不明确的或者是错误
[单片机]
STC单片机用户应用程序区和ISP监控程序区的区别
用户应用程序区(AP区): 是指用户自己编写的程序区 ISP监控程序区: ISP区是指芯片出厂时就已经固化在单片机内部的一段程序,STC单片机可以进行ISP串行下载程序,这就是因为芯片在出厂时已经在单片机内部固化了ISP引导码,程序首次上电时先会从ISP区开始执行代码,体现在实际实验中时,就是我们在下载程序时,先要点击下载软件界面上的下载,然后再开启单片机电源,当单片机检测到上位机有下载程序的需要时,便启用ISP下载功能给单片机下载程序。若经过短暂的时间没有检测到上位机有下载程序的需求,单片机便会从用户应用程序区(AP区)开始执行代码。
[单片机]
单片机及外围电路
单片机及外围电路 图5 单片机及外围电路 图5是单片机及外围电路,单片机选用ATMEL公司的AT89C55,内部带有20K字节的程序存储器,是整个故障检测电路的控制核心,它通过运行程序控制检测电路进行电压检测,将检测的结果进行初步处理,产生单元级故障表,送上级进行综合处理。集成电路D2(MAX813)是看门狗,主要功能是监视单片机程序的运行状态,如果程序跑飞超过1.6秒,看门狗就产生一个复位信号,对单片机进行复位,使程序重新进入正常步骤。集成电路D3(MAX485)是RS-485串行通信接口,它实现TTL电平与RS-485电平的相互转换,是检测电路与上级单元的通信接口。二极管V2是故障指示灯,当检测到电源故障时,点亮指
[模拟电子]
<font color='red'>单片机</font>及外围电路
单片机舞台灯设计
任务描述 某企业承担了一个LED舞台灯控制系统设计任务,LED舞台灯控制系统设计硬件参考图是如下图3-2-5所示。此LED舞台灯控制系统由时钟电路、复位电路、8个发光二极管LED灯组成,要求单片机并行端口控制LED灯按照4,5→3,6→2,7→1,8的顺序循环点亮,每个状态停留1秒,循环不止。 硬件电路 元件清单 C语言程序 #include reg51.h void delay1s(); unsigned char LED ={0x18,0x24,0x42,0x81}; void main() { unsigned char i; TMOD=0X10; while(1) { for(i=0;i
[单片机]
<font color='red'>单片机</font>舞台灯设计
瑞萨电子推出超35款全新MCU产品 拓展电机控制嵌入式处理产品阵容
两大产品家族三大系列MCU全新产品为业界带来更广泛的电机控制解决方案 2023 年 5 月 30 日,中国北京讯 - 全球半导体解决方案供应商瑞萨电子今日宣布面向电机控制应用领域发布三个全新MCU产品群,其中超过35种来自于RX和RA家族的新产品。 这些新款MCU扩充了瑞萨包括多种MCU与MPU、模拟和电源解决方案、传感器、通信设备、信号调节器等的卓越电机控制产品组合。 瑞萨推出两款基于Arm® Cortex®-M的RA家族的全新MCU产品群。其中,RA4T1产品群可提供100 MHz性能,以及高达256KB的闪存和40KB的SRAM;全新RA6T3产品群工作频率为200MHz,同时提供256KB的闪存和40KB的S
[嵌入式]
瑞萨电子推出超35款全新<font color='red'>MCU</font>产品 拓展电机控制嵌入式处理产品阵容
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved