一种用C51实现的单片机系统菜单管理方案
C51实现的单片机系统菜单管理
第3卷第3 0期yo’ o l3№ 3
计
算机
工
程
2 0年2 04月Fe r ar 0 b u y 2 04
Co pu e gi e r n m t rEn n e i g
开发研究与设计技术 文缩 o _4 (0 o— l— 2 章号t o 3 8o ) 9 l 2243 l一
文识 蜊示码t A
中分号 P1圈类 t 3l T
种用C 1 5实现的单片机系统菜单管理方案黄声野,陈秀华},王东生.
(.清华大学精密仪器系,北京 l0 8;2北京汉王科技有限公司,北京 l0 8 ) 1 00 4 . 0 04接要:介绍的菜单管理方案灵活应用C5中的指针和结构体数据类型,使得菜单程序和主程序之间、各级菜单之间相对独立,实现了方便 l地修改菜单的同时不会对主程序有任何影响。文中详细描述和举例说明了这种菜单管理方案,并说明了菜单修改的方法。 关t词:菜单;C l 5;指针变量
A i g e h p S se M e u M a a e n a i e t 1 S n l c i y t m n n g me t Re l d wih C5 zH UANG h n y。 CHEN Xi h a, W ANG n s e g S e g e, u u2 Do g h n '
(.D p. f I T ig H nvri, e ig0 0 4 2 B in a w n i t .B in 0 0 4 1 e to M, s h a U ies y B in 10 8; . e i P n t j j gH n a gLmiCo, e igl0 8 ) j| sr c】T ep prnrd csau i ra adpat a meh 0 n s ng B sn one dsrcueo l ge ti nv l n Ab la! h ae t ue nv sl n rci l to rr i o e c d me u ae. yu igP itr n t tr f la u.hs o e me u ma a u C5 n ma a e n U C S f l e a ae h nu p o r m fo t e m an p o r m,a d ma e h u me u n e e d n i m a h o h r n g me tS C E SuI s p r t s t e me r g a y r m h i r g a n k s t e s b n s i d p n e tt o e c t e De a l a d - ti n s
ca l,s la n d i me o r
rvdd x mpe a l me umo母 s we s t da po ie. h e 【 ywo d lMe u C5: one ai i Ke r s n; l P itr r t n v ao
l概述采用单片机系统的仪器设备中经常采用菜单的方式进行
菜单环境;如果当前处于最末一级,对它的确认就是执行某项任务,那么“进入下级菜单”操作应运行执行程序来完成
人机对话在采用汇编语言单片机应用系统中,用制表的…方法可以较好地编写菜单程序。但是汇编语言本身可读性和移植性较差。单片机高级语言c 不仅能够克服汇编语言 5的这些缺点,在编写菜单程序时,还可以使用C语的各种指针和数据结构灵活地实现菜单管理 J常情况下,。通菜单数据的全部或部分往往被直接写在主程序中,导致程序错综复杂,难以进行多级菜单的维护和扩展。本文介绍的菜单管理方案将菜单程序和主程序分开,而用指针变量将二者联系起来,即使有很多级的菜单也能方便地修改或扩展。I ki U n}
某项具体的任务。基于这种理解,首先定义如下结构体数据类型 s u t n,其成员是3 t c meu r 个函数指针。s r tm e tuc nu
{od( p rn) ) od( bohr) )vi ci (:} v i aet(;v i rte ( od( hl ): d)
然后把每一级菜单定义成meu n结构体的一个变量 (简称 m n变量)。为便于区分和理解,约定meu量以“ eu n变 M”开头。比如主菜单定义为:s ut e uM— i. t c m n Man r 每一级菜单就是一个 m n变量,它拥有3 eu个指向菜单函数的指针成员。菜单函数是实现菜单操作的子程序,每个 meu量都有 3 n变个菜单函数分别对应着前面所说的3菜单种操作。比如M_ i Man菜单的3个菜单操作函数为v i Man ae t ) od Ma B oh r;odMan h l ) od iP rn(; i i rte() i v n v iC i (; d
-- -、~~一~
。一一
扎L 一// "
函数名中的Man i表示这是M— i Ma n下属的操作函数, P rn, rte, hl aetBoh rC i d表示3不同的操作。这样的命名规则种~…—
有助于理解和记忆。
i
,
\t、l- vaie:=S _>- o。 l… I/一一。 I - ,一一 n0 g. .一 一 【 r — I一
~,
、
!
一
1
I ;●~,,一
、f n./ iic et:\.I 1 I? d。 c0:ir . l - f l - V衄 u’ o f、~一
一
…
~
\
L
}
Can h nel、、
\ . 一2
iCan I . _ hne ,j -" J,●,. II um J¨ S
:“ J fh』 ff f J 、、~
..
一
一
/
__ _一 一一
}
主程序中对菜单进行操作时,只需调用相应 m n变量 eu的指针成员所指的菜单函数,至于菜单操作的具体实现,菜单标题的显示等工作都由菜单函数来完成。 主程序中定义了指向结构体类型s ut n的全局指针 t cmeu r 变量 p t u和用于保存当前菜单项编号的全局字符型变 t sr r量 i m . m. t n主程序通过这两个全局变量进行菜单的有关操 e u作,实现了它和菜单程序之间的相对独立性。实际上 im— t e.
/=,F c tl l u1 ̄= d . t u, 1 u a I u I.. .. .
t。
u --v I Vi hne 1‘ o d --an 1 0,
_一一; I l,
一…
一….
n m也起到指针的作用,不同的是,p _t指向一个结构体 u t su r r变量,也就是指向某一级菜单,而 im n m指向该级菜单下 t—u e
的某一菜单项。要实现返回上级和进入下级菜单的操作,就在菜单操作函数中让指针 prs u向上级或下级meu t t指 r n变量;要在本级菜单的菜单项中滚动,就保持 t s u pr t不变, r
\
=、
I}t tlll 1ll i ll 2 - I~一
/= V i h n e 2:‘ odcan l0’ f一一……
一
田I树状菜单结构
而在操作函数中让im nm本级的几个菜单项的编号之间 t u在 e作者简介:黄声野 ( 7一 ),男,硕士生,主要研究方向:光学 14 9工程;陈秀华,工程师;王东生,教授
菜单的结构为形如图 1的树状结构。菜单的操作有以下3 种:返回上级
菜单,在本级菜单的菜单项中滚动,进入下级菜单。如果当前处于主菜单,“回上级菜单”操作将退出 返
收一日期: 030一 20—l 7 2
Em i uns0@m i.i ha d.l— a:hagy2 ass gu. u l l ltn c C
C51实现的单片机系统菜单管理
循环。在菜单初始化时令指针prs u指向主菜单M— i, t t _r Man且 i m n m=l t e u,指向第一一个菜单项。另外还把每级菜单的—
单项菜单标题。以M S mpe的菜操作为例,在操作函数 a l Smp Prn ) a l ae t中用以下语句实现返 k【 e ( -: '缄的操作:【prsr l t u=& M Man i:i m l l t e l l U l= S m plNum; a e
菜单项总数、菜单项编号、菜单项标题都定义成宏,以便菜单修改。
/歌 l级菜单M Man/: i
2用C 1 5描述一个菜单要用C l 5程序来描述一个菜单,首先定义一个结构体类型,然后为各级菜单定义结构体变量,并声明菜单操作函数,最后对结构体变量进行初始化,让它们的指针成员指向 相应的操作函数。所有这些工作都放在一个头文件meuh n. 里。请注意操作函数在meuh n .中只进行声明,它们的定义放往另一个文件m nfn .。 e uu c中 c用图l所示的菜单为例。这个菜单的第一级是主某单 M Man i,它有两个子项“ a l”和“ an l,表示子项 Smpe Chn e”数目的宏Man u iS m定义为2。给两个子项的编号和标题也部分别在程序中定义了宏。 “ a l Mo e导出二级菜单 M S mpe“ hn e导 Smpe d” a l, C an l”出二级菜单 M hn e. C a n1
/项” a i Moe编号为 S mpe n/子 S mpe d” …… 此处隐藏:6523字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高等教育]一年级家长课程教案
- [高等教育]封丘县人民医院深入推进纠正医药购销领
- [高等教育]2017年6月大学英语四级真题试卷及答案(
- [高等教育]2017年北京第二外国语学院文学院824中
- [高等教育]7 高中历史第7单元1861年俄国农奴制改
- [高等教育]【K12学习】4、实际测量-苏教版六年级
- [高等教育]药具培训试卷题库及部分参考答案
- [高等教育]本土电子元器件目录分销商如何赢得生意
- [高等教育]七年级岭南版美术教案
- [高等教育]书作文之书法活动通讯稿
- [高等教育]Endnote X 软件使用入门和用法总结(LS)
- [高等教育]嵌入式系统的现状及发展状况
- [高等教育]2012抗菌药物专项整治活动方案解读
- [高等教育]人教版新课本一年级数学下册期末试卷
- [高等教育]爱课程民法学观后感
- [高等教育]930机组使用说明书1
- [高等教育]煤气设备设施点检标准
- [高等教育]常见室内观叶植物图解
- [高等教育]312党员群众路线心得体会
- [高等教育]小学信息(苗版)第一册全册教案
- 在市---局2010党建大会上的讲话
- 《科哲》提纲及补充阅读材料(2010.7)
- 苏州高博软件技术职业学院论文开题报告
- 兼职导游管理的困境及对策探讨
- 基于通用设计理念的现代厨房产品语义研
- 康乐一中2010年至2011年度鼓号队、花束
- 第10章_数据收集整理与描述_期末复习课
- 2008年黑龙江林甸商贸购物中心营销策划
- 水硬度的测定实验报告
- 五分钟教你拍摄夜景光绘照
- 2014年临床妇产科三基三严试题及答案
- 0第二课 纾解压力第一站了解压力
- 解析建筑工程电气设备安装施工技术要点
- 地方性应用型本科高校“双师型”师资队
- 高考语文专题复习课件:小说阅读指导
- 装饰工程投标书2
- 大学生就业难问题探讨及对策
- English and Its History
- 青岛市城市房屋修缮工程质量监督管理办
- 初中英语形容词和副词的用法和练习题




