搜索
bottom↓
回复: 353

产品仿真[源码+电路]:LCD图形显示_菜单管理_PCF8583_TWI_SPI所有C代码公开

  [复制链接]

出0入0汤圆

发表于 2008-5-11 10:20:19 | 显示全部楼层 |阅读模式
 现将2006在一家公司做的一个产品的仿真部分所有源码资料公布,供大家学习和参考!包括参菜单管理算法。菜单翻页可像手机菜单一下,可滚动翻页,并有进度条指示。另还有TWI读写PCF8563的程序。不多说大家看看就知道。以前只公布过protues和hex,反映还可以。今天是源码也公布,希望对大家有帮助。传播请注明作者及出处,谢谢!

图示效果一

(原文件名:效果_1.png)
图示效果二

(原文件名:效果_2.png)
使用手册截图

(原文件名:手册.PNG)

(原文件名:2.PNG)
所有资料打包
点击此处下载 ourdev_274225.rar(文件大小:1.05M) (原文件名:debug.rar)

资料包文件目录
E:\debug>tree /f
卷 WORK 的文件夹 PATH 列表
卷序列号码为 000007BC E4BD:002B
E:.
│  效果_1.png
│  效果_2.png
│  效果_1.jpg
│  效果_2.jpg
│  使用手册V1_0.pdf

├─source
│      Main.h
│      Display.c
│      DotLib.c
│      SPI.h
│      SPI.c
│      Display.h
│      Dotlib.h
│      TWI.h
│      PCF8563.c
│      PCF8563.h
│      TWI.c
│      Includes.h
│      Main.c

└─protues
        LCDBoard.DSN
        Debug.cof
        Debug.hex
        LCDBoard.PWI

出0入0汤圆

 楼主| 发表于 2008-5-11 10:24:07 | 显示全部楼层
程序中的菜单架构提取出来,让大家查看更直观。

/* 菜单架构 */
typedef struct
{
        INT8U KeyTab_MenuIndex;                                                         // 当前状态索引号
        INT8U KeyTab_MaxItems;                                                               // 本级菜单最大条目数
    INT8U KeyTab_PressOk;                                                                // 按下"回车"键时转向的状态索引号
    INT8U KeyTab_PressEsc;                                                               // 按下"返回"键时转向的状态索引号
    INT8U KeyTab_PressDown;                                                              // 按下"向下"键时转向的状态索引号
    INT8U KeyTab_PressUp;                                                            // 按下"向上"键时转向的状态索引号
    void (*CurrentOperate)( void );                                                    // 当前状态应该执行的功能操作
}KeyTabStruct;
void ( *KeyFuncPtr )( void );                                                          // 按键功能指针
/*--------------------------------显示菜单(字库)----------------------------*/
INT8U *TestFace[3]={
        "测试中",                                                                                                                               
        "当前端口",               
        "接触电流"       
};
INT8U *Power[3]={
        "设定电压",                                                                                                                               
        "当前电压",                                                                                                                               
        "工作电流"                                                                                                                               
};
INT8U *MenuRoot[5]={                                                                                                                               
           "一设备类型",                                                                                                                               
        "二端口设定",                                                                                                                               
        "三参数设置",                                                                                                                               
        "四系统设定",                                                                                                                               
        "五关闭系统"                                                                                                                               
};
INT8U MenuRootID[5]={EUTtype,PortSet,Paramete,SystemSet,ShutOff};
INT8U *MenuEutTpye[4] ={
        "壹类",                                                                                                                                        
        "贰类",                                                                  
        "接地",                                                                                                                                        
        "不接地"                                                                                                                                        
};
INT8U MenuPortID[9] ={Port0,Port1,Port2,Port3,Port4,Port5,Port6,Port7,Port8};
INT8U *MenuParam[4] ={
        "电源电压",                                                                                                                               
        "测试时间",                                                                                                                               
        "间隔时间",
        "外部采样"
};
INT8U MenuParamID[4] ={Voltage,Testtime,Spacetime,Exterior};
INT8U *MenuSystem[3] ={
        "时间设定",                                                                                                                                
        "背光设定",                                                                                                                               
        "键音设定"                                                                                                                               
};
INT8U MenuSystemID[3] ={Time,Backlight,Buzzer};
INT8U *MenuBackLight[2] ={
        "绿光",                                                                                                                                                                                        
        "红光"                                                                                                                                       
};
INT8U MenuBackLightID[2] ={Green,Red};
INT8U *Adjust[1]={
        "校正因子"
};
INT8U*Msg[7] = {
        "启动中…",                                                                                                                                       
        "关机中…",                                                                                                                               
        "已保存!",
        "电源电压不稳",                                                                                                                                       
        "请稍等!",
        "合格",       
        "不合格!"               
};
/*-----------------------------------按键架构---------------------------------*/
/*CurMenuID           = 本菜单ID
  MaxMenuItem         = 同级菜单最大项数
  OkMenuID                  = 子菜单层所对应的菜单ID,ID=255为菜单已经到底了
  EscMenuID           = 父菜单层所对应的菜单ID,ID=255为菜单已经到顶了
  DownMenuID          = 弟菜单层所对应的菜单ID,ID=255为菜单是独生子
  UpMenuID            = 兄菜单层所对应的菜单ID,ID=255为菜单是独生子
  CurFunction         = 本菜单所对应的菜单函数指针                                  */                                                  
KeyTabStruct KeyTab[MAX_KEYTABSTRUCT_NUM]={
/* CurID   Max  Ok          Esc         Down        Up         CurFunction    */  
{FACE,      0,        Menu,       Menu,            255,            255,          *FunctionNul     },
{Menu,                5,        EUTtype,    FACE,            PortSet,        ShutOff,  *FunctionNul     },
{EUTtype,        2,        I_type,         Menu,            PortSet,        ShutOff,  *FunctionNul     },
{I_type,        0,        255,                 EUTtype,        II_type,        II_type,  *Function_I            },
{II_type,        0,        255,                EUTtype,        I_type,     I_type,   *Function_II           },
{PortSet,        9,        Port0,             Menu,            Paramete,   EUTtype,  *FunctionNul     },
{Port0,            0,        255,                 PortSet,        Port1,            Port8,           *Function_Port   },
{Port1,            0,        255,                 PortSet,        Port2,            Port0,           *Function_Port   },
{Port2,            0,        255,                 PortSet,        Port3,            Port1,           *Function_Port   },
{Port3,            0,        255,                 PortSet,        Port4,            Port2,           *Function_Port   },
{Port4,         0,        255,                 PortSet,        Port5,            Port3,           *Function_Port   },
{Port5,            0,        255,                 PortSet,        Port6,            Port4,           *Function_Port   },
{Port6,            0,        255,                 PortSet,        Port7,            Port5,           *Function_Port   },
{Port7,            0,        255,                 PortSet,        Port8,            Port6,           *Function_Port   },
{Port8,         0,        255,                 PortSet,        Port0,            Port7,           *Function_Port   },
{Paramete,        3,        Voltage,        Menu,                SystemSet,        PortSet,  *FunctionNul     },
{Voltage,        0,        255,             Paramete,        Testtime,   Exterior, *Function_Paramet},
{Testtime,        0,        255,             Paramete,        Spacetime,  Voltage,  *Function_Paramet},
{Spacetime,        0,        255,             Paramete,        Exterior,   Testtime, *Function_Paramet},
{Exterior,        0,        255,             Paramete,        Voltage,    Spacetime,*Function_Paramet},
{SystemSet,        3,        Time,            Menu,                ShutOff,    Paramete, *Function_System },
{Time,            7,        Year,            SystemSet,        Backlight,        Buzzer,   *FunctionNul     },
{Year,            0,        255,            Time,            Month,            Second,   *Function_Time   },
{Month,            0,        255,            Time,            Day,            Year,     *Function_Time   },
{Day,            0,        255,            Time,            Week,            Month,    *Function_Time   },
{Week,            0,        255,            Time,            Hour,            Day,      *Function_Time   },
{Hour,            0,        255,            Time,            Minute,            Week,     *Function_Time   },
{Minute,        0,        255,            Time,            Second,            Hour,     *Function_Time   },
{Second,    0,        255,            Time,            Year,            Minute,   *Function_Time   },
{Backlight,        2,        Green,                 SystemSet,        Buzzer,            Time,           *FunctionNul     },
{Green,            0,        255,        Backlight,  Red,        Red,          *Function_BkLight},
{Red,           0,        255,            Backlight,        Green,            Green,    *Function_BkLight},
{Buzzer,        2,        Open,                 SystemSet,        Time,            Backlight,*FunctionNul     },
{Open,            0,        255,             Buzzer,     Close,      Close,          *Function_Open   },
{Close,            0,        255,            Buzzer,         Open,            Open,     *Function_Close  },
{ShutOff,        0,        255,            Menu,            EUTtype,        SystemSet,*Function_ShutOff}

出0入0汤圆

发表于 2008-5-11 10:53:27 | 显示全部楼层
菜单挺好的,我借鉴一下

出0入0汤圆

发表于 2008-5-11 11:03:51 | 显示全部楼层
多谢啦

出0入0汤圆

发表于 2008-5-11 11:26:27 | 显示全部楼层
多谢了,记号

出0入8汤圆

发表于 2008-5-11 11:30:25 | 显示全部楼层
多谢!记号

出0入90汤圆

发表于 2008-5-11 11:46:51 | 显示全部楼层
这么经典的实际项目,怎么能够不定?

出0入0汤圆

发表于 2008-5-11 11:57:33 | 显示全部楼层
ding

出0入0汤圆

发表于 2008-5-12 16:03:11 | 显示全部楼层
下载试了下,选atmega32编译不过,说RAM空间小了,要选atmega64才可以编译通过。我看了一下qingwei_cui 阿伟的程序,确实是占RAM空间较大,有待改进,不过有些地方值得借鉴.

出0入0汤圆

发表于 2008-5-12 17:01:15 | 显示全部楼层
谢谢!

出210入8汤圆

发表于 2008-5-12 17:09:34 | 显示全部楼层
太好了,谢谢!

出0入0汤圆

发表于 2008-5-12 17:14:15 | 显示全部楼层
架构复杂,数据结构就复杂,程序空间就少

出0入0汤圆

 楼主| 发表于 2008-5-12 20:01:12 | 显示全部楼层
to 9楼 要使能优化


(原文件名:1.png)

出0入0汤圆

发表于 2008-5-12 21:25:58 | 显示全部楼层
菜单结构蛮好的

出0入0汤圆

发表于 2008-5-12 22:58:26 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-5-13 17:56:24 | 显示全部楼层
这么经典的实际项目,辛苦啦,谢谢
头像被屏蔽

出0入0汤圆

发表于 2008-5-13 18:42:20 | 显示全部楼层
COOL啊!

出0入0汤圆

发表于 2008-5-13 18:51:25 | 显示全部楼层
真羡慕你啊,做出这么好的东西,收下了!

出0入0汤圆

 楼主| 发表于 2008-5-13 21:39:55 | 显示全部楼层
站长这东西够不够格加分呀,我的分太单簿了!

出0入0汤圆

 楼主| 发表于 2008-5-13 21:56:36 | 显示全部楼层
之前老早,也曾发过一个。这个菜单是借鉴手机菜单模式设计的,效果如下:


(原文件名:armok01111706.JPG)


转到原帖[搞定一系统:KS0108+PCF8583+74HC244+74HC573+MOTOR ]http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=612138&bbs_page_no=1&search_mode=3&search_text=qingwei_cui&bbs_id=9999

出0入8汤圆

发表于 2008-5-14 16:30:51 | 显示全部楼层
这个东西咋用呢??
图上还有个M8 O0-O6接哪里了

出0入0汤圆

发表于 2008-5-14 16:49:22 | 显示全部楼层
学习啊!厉害+佩服!

出0入0汤圆

发表于 2008-5-15 08:47:17 | 显示全部楼层
@

出0入0汤圆

发表于 2008-5-17 12:46:17 | 显示全部楼层
下来看看啥好东东

出0入0汤圆

发表于 2008-5-17 16:17:35 | 显示全部楼层
这种类型的实际项目确实很有参考价值,不顶不行啊,谢谢qingwei_cui 阿伟阿。

出0入0汤圆

发表于 2008-5-19 00:48:44 | 显示全部楼层
楼主的东西好酷啊。学习中。感谢!!

出0入0汤圆

发表于 2008-5-19 10:33:33 | 显示全部楼层
楼主在这项目里是只负责液晶菜单的编写部分,还是+上测试控制部分?这样的项目做下来大概多少钱能否透露下?因为我将做一个和它相似的项目.

出0入0汤圆

 楼主| 发表于 2008-5-19 14:46:28 | 显示全部楼层
to 28楼:

如果想做产品,可和我聊聊。E-mail:qingwei_cui@163.com MSN:gary.cui.qw@hotmail.com

上传的东西只是为了秀一下proteus的强大仿真功能,目的是为了让软件工程师用好它,起到很好的辅助开发作用。

实际上产品中控制部分在电路上没有体现出来。

出0入0汤圆

发表于 2008-5-19 15:02:22 | 显示全部楼层
顶了先!!

出0入0汤圆

发表于 2008-5-19 15:53:08 | 显示全部楼层
好的,我已经给qingwei_cui@163.com油箱中发了信件

出0入46汤圆

发表于 2008-5-19 16:49:40 | 显示全部楼层
不错!

出10入95汤圆

发表于 2008-5-19 19:46:16 | 显示全部楼层
好!

出0入0汤圆

发表于 2008-5-19 19:50:33 | 显示全部楼层
厉害,不顶不行

出0入0汤圆

发表于 2008-5-21 13:07:51 | 显示全部楼层
佩服!

出0入0汤圆

发表于 2008-6-2 01:12:32 | 显示全部楼层
谢了!

出0入0汤圆

发表于 2008-6-10 22:36:05 | 显示全部楼层
proteus的确很好玩的

出0入0汤圆

发表于 2008-6-11 11:08:35 | 显示全部楼层
牛人,酷!
我下载了Proteus7.2老是自动退出,谁知道哪里可以下载正常的7.2?给个链接!

出0入0汤圆

发表于 2008-6-15 17:07:14 | 显示全部楼层
顶起

出0入0汤圆

发表于 2008-6-24 10:39:03 | 显示全部楼层
用什么编译器?可以移植到IAR 中吗?

出0入0汤圆

发表于 2008-6-24 11:18:24 | 显示全部楼层

菜单确实不错
非常实用 以后写菜单 就借鉴LZ的咯, 该不会有意见吧!

出0入0汤圆

发表于 2008-6-24 12:53:51 | 显示全部楼层
piaaa

出0入0汤圆

发表于 2008-6-25 15:16:02 | 显示全部楼层
菜单做得不错的
顶!!

出0入93汤圆

发表于 2008-6-25 15:32:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-7-7 09:13:54 | 显示全部楼层
编译出来有很多错误呢。

出0入0汤圆

发表于 2008-7-7 09:25:41 | 显示全部楼层
有没有人能说明一下怎么用ICC6.3编译出来没有错误呢?

出0入0汤圆

 楼主| 发表于 2008-7-8 15:08:17 | 显示全部楼层
请将错误现象说明白!顺便看一下13楼信息。

出0入0汤圆

发表于 2008-7-10 16:50:23 | 显示全部楼层
很多,写不上来,都是定义的找不到之类的错误,是不是那里处理不当呢,不明白

出0入0汤圆

 楼主| 发表于 2008-7-10 17:41:25 | 显示全部楼层
估计是编译器设置问题,请看一下包含路径设置是否正确?

出0入0汤圆

发表于 2008-7-12 09:53:55 | 显示全部楼层
路径没错啊,是C盘的,现在想请教一下怎样能编译多个.C的文件呢?

出0入0汤圆

发表于 2008-7-12 12:14:55 | 显示全部楼层
下了看,謝謝.

出0入0汤圆

发表于 2008-7-13 16:30:31 | 显示全部楼层

出0入10汤圆

发表于 2008-7-13 18:05:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-7-13 23:15:25 | 显示全部楼层
谢了!

出0入0汤圆

发表于 2008-7-15 15:58:29 | 显示全部楼层
不错呀,收藏研究!

出0入0汤圆

发表于 2008-7-15 17:51:47 | 显示全部楼层

出0入0汤圆

发表于 2008-7-15 19:27:30 | 显示全部楼层
记号,谢谢。

出0入0汤圆

发表于 2008-7-15 20:22:45 | 显示全部楼层

出0入0汤圆

发表于 2008-7-15 21:38:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-7-15 22:35:57 | 显示全部楼层
达顶一下!

出0入0汤圆

发表于 2008-7-15 23:01:11 | 显示全部楼层
好东西一定要顶的

出0入0汤圆

发表于 2008-7-18 11:03:16 | 显示全部楼层
lcd   mark

出10入0汤圆

发表于 2008-7-23 21:13:50 | 显示全部楼层
不顶对不住楼主...

出0入0汤圆

发表于 2008-9-1 23:41:11 | 显示全部楼层
顶一下、强人

出0入0汤圆

发表于 2008-9-12 20:07:47 | 显示全部楼层
MARK!

出0入0汤圆

发表于 2008-10-3 10:37:56 | 显示全部楼层
好人呀!先谢谢了,下载看看,学习中...

出0入0汤圆

发表于 2008-10-3 13:03:01 | 显示全部楼层
这个项目不错,记号了

出0入0汤圆

发表于 2008-10-3 21:36:03 | 显示全部楼层
不错,用来借鉴!

出0入0汤圆

发表于 2008-10-4 20:04:17 | 显示全部楼层

出0入0汤圆

发表于 2008-10-4 21:23:36 | 显示全部楼层
等俺把这个移植到51和ARM上去

出0入0汤圆

发表于 2008-10-5 10:57:35 | 显示全部楼层
羡慕

出0入0汤圆

发表于 2008-10-7 17:21:22 | 显示全部楼层
楼主的界面非常漂亮,但程序结构过于复杂

出0入0汤圆

发表于 2008-10-24 16:09:01 | 显示全部楼层
太强了,学习

出0入0汤圆

发表于 2008-10-25 08:07:54 | 显示全部楼层
ding

出0入0汤圆

发表于 2008-10-25 09:01:00 | 显示全部楼层
标志

出0入0汤圆

发表于 2008-11-10 11:36:38 | 显示全部楼层
不错,用来借鉴!

出0入4汤圆

发表于 2008-11-21 20:32:03 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2008-11-22 22:07:33 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-11-23 06:29:26 | 显示全部楼层
支持,不错的东西,收下慢看。

出0入0汤圆

发表于 2008-11-24 13:41:54 | 显示全部楼层
刚想用此软件,不错的资料

出0入0汤圆

发表于 2008-11-26 15:05:23 | 显示全部楼层
这个东西要标记下

出0入0汤圆

发表于 2008-11-26 16:44:05 | 显示全部楼层
支持一下...

出0入0汤圆

发表于 2009-1-8 14:59:17 | 显示全部楼层
不错呀,好好学习!

出0入0汤圆

发表于 2009-1-9 09:10:55 | 显示全部楼层
不错 , 向老乡学习~!

出0入0汤圆

发表于 2009-1-9 09:56:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-1-13 11:13:03 | 显示全部楼层
很强,谢谢

出0入0汤圆

 楼主| 发表于 2009-2-21 14:46:19 | 显示全部楼层
今天整理移动硬盘,找到了当时调试时拍的一些照片。

(原文件名:1.jpg)


(原文件名:2.jpg)


(原文件名:3.jpg)


(原文件名:4.jpg)

出0入0汤圆

发表于 2009-2-21 20:16:09 | 显示全部楼层
看了源码 发下感慨。
搂主的源码 挺整齐的。
结构有够 复杂的 铁个图

(原文件名:test.jpg)


好像菜单的数据和处理 还是合在一起,不知道有没有更好的结构 实现分离。
3年时间过得 好快哦。

出0入0汤圆

 楼主| 发表于 2009-2-21 20:24:31 | 显示全部楼层
谢谢 68 楼 早有这个 当初我写软件设计文档就好写了 呵呵 结构图是工具生成的还是自己绘制的? 如果是工具能说一下是什么工具吗?

出0入0汤圆

发表于 2009-2-23 09:33:26 | 显示全部楼层
这种类型的实际项目确实很有参考价值,谢谢qingwei_cui 阿伟阿,顶!顶!顶!。

出0入0汤圆

发表于 2009-4-8 13:12:14 | 显示全部楼层
楼主太伟大了,大家要向他学习呀。

出0入0汤圆

发表于 2009-4-13 18:37:29 | 显示全部楼层
主太伟大了,大家要向他学习呀。

出0入0汤圆

发表于 2009-4-14 13:50:34 | 显示全部楼层
楼主,MARK一下

出0入0汤圆

发表于 2009-4-14 15:09:47 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-4-15 09:24:30 | 显示全部楼层
太经典了 楼主真是无私  我们都要向他学习

出0入0汤圆

发表于 2009-4-17 11:46:05 | 显示全部楼层
谢谢,先顶了

出0入0汤圆

发表于 2009-4-18 08:01:28 | 显示全部楼层
太好的东西了,强大,记号!

出0入0汤圆

发表于 2009-4-20 15:35:40 | 显示全部楼层
jh

出0入0汤圆

发表于 2009-4-29 18:24:27 | 显示全部楼层
这个值得参考一下,谢谢!

出0入0汤圆

发表于 2009-5-8 11:50:11 | 显示全部楼层
真羡慕你啊,做出这么好的东西,收下了

出0入0汤圆

发表于 2009-5-10 10:50:26 | 显示全部楼层
真是好东西~LZ牛
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 07:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表