天桥陨石分享 http://blog.sciencenet.cn/u/chrujun 让地球物理仪器飞起来

博文

将PC窗口菜单程序移植到单片机 问题与解决方案

已有 7222 次阅读 2010-9-29 16:40 |个人分类:地球物理及仪器|系统分类:科研笔记| 单片机, 菜单, 窗口, 8051, PC机

    让基于单片机的仪器具有漂亮的窗口、对话框和菜单,对任何人来说都是一个挑战。特别是多级窗口、菜单和对话框,没有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)编译后,问题得到全部解决。



https://blog.sciencenet.cn/blog-39626-368198.html

上一篇:巧改putchar函数,实现单片机下多形式输出
下一篇:国际学术同仁声援肖传国公开信简评
收藏 IP: .*| 热度|

3 吕喆 杨华磊 zdlh

发表评论 评论 (2 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-23 10:34

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部