ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:18.33KB ,
资源ID:10735826      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10735826.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(stm3212864液晶菜单设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

stm3212864液晶菜单设计.docx

1、stm3212864液晶菜单设计/*menu.h*/#ifndef _MENU_H#define _MENU_H#include stm32f10x.h#include SysTick.h#include #include 12864.h#include AdcDisplay.h#include key.h#include spi_tm7705.h#include eeprom.htypedef struct menu/定义一个菜单 u8 range_from,range_to; /当前显示的项开始及结束序号 u8 itemCount;/项目总数 u8 selected;/当前选择项 u8 *

2、menuItems17;/菜单项目 struct menu *subMenus;/子菜单 struct menu *parent;/上级菜单 ,如果是顶级则为null void (*func)();/选择相应项按确定键后执行的函数Menu;void MainDisplay(void);void DisplayMenu(u8 line);void func(void);void Unitch1(void);void Unitch2(void);void Unitch3(void);void Unitch4(void);void DiaChange(void);void MlChange(void

3、);u16 NumLoop(u16 num,u8 pm);u8 Change(u8 Sval,uint8_t* title);void MenuInit(void);#endif /* _MENU_H */*menu.h*/*menu.c*/* * * 文件名 :menu.c * 描述 :液晶菜单函数库 * 实验平台: * 硬件连接 - * * * * - * 库版本 :ST3.0.0 */#include menu.h/菜单与AD结果显示变量,0为AD,1为菜单extern u8 MenuDis=0;/typedef struct menu/定义一个菜单/ u8 range_from,ran

4、ge_to; /当前显示的项开始及结束序号/ u8 itemCount;/项目总数/ u8 selected;/当前选择项/ u8 *menuItems17;/菜单项目/ struct menu *subMenus;/子菜单/ struct menu *parent;/上级菜单 ,如果是顶级则为null/ void (*func)();/选择相应项按确定键后执行的函数/Menu;Menu MainMenu = /定义主菜单 0,3,4,0,/默认显示0-3项,总共4项,当前选择第0项 单位设置 x10, 直径设置 x10, 模量设置 x10, 关于 ;Menu UnitMenu = /单位设置

5、菜单 0,3,4,0, 应变量 , 锁模力KN , 锁模力Ton, 取消 ;u8 UnitCh;/单位选择,0为变形量,1为应变量,2为锁模力FMenu DiaMenu = /单位设置菜单 0,0,1,0, 主999 mm ;Menu MlMenu = /模量设置菜单 0,0,1,0, 主999 KN/mm2 ;u8 DiaVal;/直径数值u8 MlVal;/模量数值/菜单与AD结果显示变量,0为AD,1为菜单u8 MenuDis;/复位前指数u16 BaseAD4;/横截面积u16 mianji;/横截直径u16 zhijing;/模量u16 moliang;/按键返回值u8 keyval

6、;uint8_t* title1=单位:MM;uint8_t* title2=单位:KN/MM2;extern u16 ADResult4;/存储AD结果的数组extern uint16_t VirtAddVarTabNumbOfVar;/eepromMenu *currentMenu;/当前的菜单void MainDisplay(void) if (MenuDis=0) AdUi(); keyval=KeyScan(); switch(keyval) case 0: /什么都不干 Delay_ms(50); break; case 1:/向上 if(MenuDis=1) if(current

7、Menu-selected = 0)/到了第一项 break; else currentMenu-selected-; DisplayMenu(currentMenu-selected); break; case 2:/向下 if(MenuDis=1) if(currentMenu-selected = currentMenu-itemCount-1) break; else currentMenu-selected+; DisplayMenu(currentMenu-selected); break; case 3:/确认 if(MenuDis=0) MenuDis=1; LCD_Init(

8、); DisplayMenu(currentMenu-selected); else if(currentMenu-subMenuscurrentMenu-selected !=NULL) LCD_Init(); currentMenu = currentMenu-subMenuscurrentMenu-selected; DisplayMenu(currentMenu-selected); else if(currentMenu-funccurrentMenu-selected != NULL) LCD_Init(); currentMenu-funccurrentMenu-selected

9、();/执行相应的函数 currentMenu-selected=0; DisplayMenu(currentMenu-selected);/返回后恢复原来的菜单状态 break; case 4:/取消 if(MenuDis=1) if(currentMenu-parent!=NULL)/父菜单不为空,将显示父菜单 LCD_Init(); currentMenu = currentMenu-parent; currentMenu-selected=0; DisplayMenu(currentMenu-selected); else MenuDis=0; /currentMenu = MainM

10、enu; currentMenu-selected=0; LCD_Init(); AdUi(); Delay_ms(100); else Clr_Scr(); Delay_ms(50); Write_Char(0,0x30);/关闭扩展指令 /复位归零 BaseAD0=ADResult0; BaseAD1=ADResult1; BaseAD2=ADResult2; BaseAD3=ADResult3; AdUi(); break; default: break; /用于显示菜单项void DisplayMenu(u8 line) /显示菜单项并设置选中的项反白 int i; line = 3-

11、(currentMenu-range_to-line); for(i = 0;imenuItemsi+currentMenu-range_from); WhiteLineInit(); White_Line(line,0,8);/反白显示指定行void func(void) uint8_t* s=为人民服务; LCD_Write_String(1,0,s); Delay_ms(3000);void Unitch1(void) UnitCh=0; LCD_Init(); currentMenu = currentMenu-parent; currentMenu-selected=0; Displ

12、ayMenu(currentMenu-selected);void Unitch2(void) UnitCh=1; LCD_Init(); currentMenu = currentMenu-parent; currentMenu-selected=0; DisplayMenu(currentMenu-selected);void Unitch3(void) UnitCh=2; LCD_Init(); currentMenu = currentMenu-parent; currentMenu-selected=0; DisplayMenu(currentMenu-selected);void

13、Unitch4(void) LCD_Init(); currentMenu = currentMenu-parent; currentMenu-selected=0; DisplayMenu(currentMenu-selected);void DiaChange(void) uint8_t* s=单位:MM; /测试代码 u16 a=0; int i=0; /u16 tmp1; LCD_Init(); LCD_Write_String(0,0,s); zhijing=Change(zhijing,title1); mianji=3.14*(zhijing/2)*(zhijing/2); EE

14、_WriteVariable(VirtAddVarTab0, zhijing); /测试代码/ for(i=0;i=9) num=0; else num=num+1; else if (num3) loc=loc-1; else loc=3; WhiteLineInit(); White_Line(2,loc,1); else switch (loc) case 3: baiwei=NumLoop(baiwei,1); LCD_Init(); break; case 4: shiwei=NumLoop(shiwei,1); LCD_Init(); break; case 5: gewei=Nu

15、mLoop(gewei,1); LCD_Init(); break; default: break; break; case 2:/向下 if (clicked=0) if (locselected=0; DisplayMenu(currentMenu-selected); /返回新的数值 Dval=baiwei*100+shiwei*10+gewei; return Dval; break; default: break; / LCD_Init(); LCD_Write_String(0,0,title); Dval=baiwei*100+shiwei*10+gewei; LCD_Write

16、_Tri_Value(2,3,Dval); Delay_ms(20); /初始化菜单:void MenuInit(void) MainMenu.subMenus = malloc(sizeof(&MainMenu)*4); MainMenu.subMenus0 = &UnitMenu;/第1项没有子菜单置null,选择后程序会调用func中相应项中的函数 MainMenu.subMenus1 = NULL;/&DiaMenu;直接执行设置函数 MainMenu.subMenus2 = NULL;/&MlMenu;直接执行设置函数 MainMenu.subMenus3 = NULL; MainM

17、enu.func = malloc(sizeof(&func)*4); MainMenu.func0 = &func; MainMenu.func1 = &DiaChange; MainMenu.func2 = &MlChange;/当选择了并按了确定,会执行func函数 MainMenu.func3 = NULL; MainMenu.parent = NULL;/表示是顶级菜单 UnitMenu.subMenus = malloc(sizeof(&UnitMenu)*4); UnitMenu.subMenus0 = NULL; UnitMenu.subMenus1 = NULL; UnitM

18、enu.subMenus2= NULL; UnitMenu.subMenus3= NULL; UnitMenu.func = malloc(sizeof(&Unitch1)*4); UnitMenu.func0 = &Unitch1; UnitMenu.func1 = &Unitch2; UnitMenu.func2 = &Unitch3; UnitMenu.func3 = &Unitch4; UnitMenu.parent = &MainMenu;/上一级菜单是MainMenu.进入查询子菜单后按返回键,将会显示这个菜单项/ DiaMenu.subMenus = malloc(sizeof(&DiaMenu)*1);/ DiaMenu.subMenus0 = NULL;/ DiaMenu.func = malloc(sizeof(&func)*1);/ DiaMenu.func0 = &func;/ DiaMenu.parent = &MainMenu;/上一级菜单是MainMenu.进入查询子菜单后按返回键,将会显示这个菜单 项/ / MlMenu.subMenus = malloc(sizeof(&MlMenu)*1);/ MlMenu.subMenus0 = NULL

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1