作者:小熊在线—Asimove
最近是全国大学生电子设计竞赛,这是一个朋友在竞赛时候顺手做的。觉得有点儿意思,发来大家看看,咱有些方面不比老外差多少。本作品利用89c52系列单片机自制小系统,I/O口足够,可直接接键盘,出于方便本作品利用ZLG7289键盘控制芯片,由中断方式检测按键,用12864M液晶显示。
可贵之处,没有用扩展RAM。
##center#######0-#######/center##
程序设计
由于12864M的显示为四行,每行显示十六个符号或八个汉字,这样用字库并不能实现,所以程序中要把64个格都编辑成图形方式存到数组再调用。
##center#######1-#######/center##
标志位的设计
一般会想到的的方法,要设置两个数组,一个是全开的图,一个是要显示的图,然后通过按键改变要显示的数组,不过实验过就会发现,由于单片机内部寄存器的空间不够,编辑一个8X8的图需要数组包含512个字节,而定义到外部寄存器的数组“unsignedcharcodetab”却不能修改。本作品可贵之处没有用扩展RAM,而是采用标志位的方式控制8X8的方格显示,在没有被操作过的方格位置上标志位设为0,已被点开的方格位置上设置为1,标志雷的方格上标志为2,每次要操作时只要检测标志位即可。
##center#######2-#######/center##
光标显示及移动的设计
由于游戏上的要求,必须在要操作的位置设置光标。不过这样就要求对按键控制的左右上下移动要有不同的子程序进行处理。下面进行具体的介绍:因为12864M对图形的显示,行(0~63)是以位为单位,列是以字为单位,上半屏为0~7,下半屏为8~15。
转自:CNBETA。