把以前的51程序整理一下奉献给大家.业余时间慢慢来不要着急哦
程序功能介绍:
1:可支持st7920串口模式8位并行模式,1602液晶显示(1602的4位模式以后加),驱动函数和功能函数分离,io接口及功能以宏的形式定义方便修改。
2:字符和各类型数据显示函数(u8 u16 s8 s16 u32 s32 float 十六进制显示)
3:7920图形操作显示RAM或ROM图片
4:3个按键的驱动程序,按键抬起、按下、长按键的判断处理。
5:菜单操作包含多级菜单组织,上下滚屏,选中和返回操作函数实现,包含常用的函数比如3按键置数,输入字符转换。
6:库文件形式组织按键和液晶,不的函数不占用ROM存储。
7:综合演示
使用前要更新c51的一个bug,详见http://bbs.ednchina.com/BLOG_ARTICLE_1971431.HTM,我一直以为屏有问题一遇到"数"这个字就出毛病.今天才解决.
程序硬件环境和说明:
stc12C5A60S2实际没有使用stc任何特殊寄存器,应该和51兼容(其它51没有测试).晶振频率18.4M,换用其它晶振请考虑对按键扫描函数的消抖时间影响详细修改参考key.h, 更低的频率对lcd没有影响,高的频率可能会影响lcd的时序而无法运行.按键io使用P2^2,P2^3,P2^4,在key.h中修改.lcd使用P0八位连接DB0~7,rs = P1^0;lcd_rw = P1^1lcd_en = P1^2;库中使用的是8位并行模式,修改io连接或模式需要重新编译库工程.
程序软件只使用了3个按键,其它没有用,提供各种功能的演示,图形部分演示暂缺.
菜单部分按你的需要修改menu1.c就可以了,修改包括三部分
1:meun_1_X是主菜单和各菜单项选中时显示的字符,这里需要注意
每个全角字符必需占据u16对齐的位置,不然会乱码.
2:menu_1_X_fun是此菜单项被选中时执行的函数,按着演示的代码写就行了.
3:结构体Menu1_Item照着描就行了,其它都在库里提供了.
4:main.c中有一个Task_Run的函数,菜单程序调用时会不断调用这个函数以驱动单片机运行,如果你有需要不断执行的程序放到这个函数里,比如ADC触发等等,这个函数不要换别的名字。
附件1:12864演示
附件2:库函数源码
程序肯定有bug,以后改了我会再发新的。
[
本帖最后由 huo_hu 于 2013-12-10 11:39 编辑 ]