|||
让基于单片机的仪器具有漂亮的窗口、对话框和菜单,对任何人来说都是一个挑战。特别是多级窗口、菜单和对话框,没有1年功夫是搞不定的。 经过几个月的功夫,我成功将PC环境下运行的一个支持菜单和对话框的C程序移植到8051单片机上,可以显示汉字,输入数字和选择项。
先看看单片机系统的硬件配置。系统核心为新华龙8051系列单片机,64K FLASH程序存储器,9K XRAM。输出为支持汉字显示的320*240显示屏,输入为自制扫描键盘,有10个数字和几个功能键。
窗口菜单程序来自网上公开资料,基于C语言,只能显示西文字符,用BORLAND C编译后可以在DOS环境下运行。
第一个步工作是编写getkey()和putchar()函数,getkey()通过中断扫描用户的键盘输入,返回ASCII码。putchar()函数可以显示汉字字符和西文字符。另外一个函数是光标定位函数,指定输出的位置。
第二步工作是修改原程序,很多DOS下的函数,需要想办法替换或屏蔽掉,全部改成单片机C语言可以支持的函数。编译的时候出了N多错误,花了2周时间全部搞定了。
第三步工作是设计要显示的菜单和对话框,确定每个单元要显示的位置。然后将定义好的菜单和对话框结构体放到窗口程序要求的位置,再加上一些必要的代码,整个移植工作就准备待命了。
第四步工作是运行和调试程序。结果几次调试,大功告成,菜单和窗口可以显示了,多级菜单和多级窗口,也可以搞定。
出现的一个大问题是从子对话框返回时,父对话框的变量变了。将编译器的优化级别设置的最低级,按照大模式(64K)编译后,问题得到全部解决。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-23 10:34
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社