搜索
bottom↓
回复: 28

一个UCGUI的简单应用(基于ARM系统)

[复制链接]

出0入0汤圆

发表于 2011-7-19 18:13:02 | 显示全部楼层 |阅读模式
先上传测试图片:

(原文件名:图片 001.jpg)


(原文件名:图片 002.jpg)


(原文件名:图片 003.jpg)


(原文件名:图片 004.jpg)


(原文件名:图片 005.jpg)


(原文件名:图片 006.jpg)


(原文件名:图片 007.jpg)


(原文件名:图片 009.jpg)

下面是code:
  Codeourdev_659181PECHUF.rar(文件大小:7.67M) (原文件名:test1 LED_Contrler.rar)

    本示例比价简单,设计了3个RADIO,两个Button,
   3个RADIO控制对应位上的LED
   Button控制整体状态:
  主程序比较简单,这里不做介绍。大家可用该示例设计一些功能移植到自己的系统上。

  请大家关注此贴,作者会继续发一些复杂的应用示例!


下code是该示例的主要代码:

static void _cbCallback(WM_MESSAGE * pMsg)
{
  int Sel;
  int NCode, Id;
  WM_HWIN hDlg, hItem;

  hDlg = pMsg->hWin;
  switch (pMsg->MsgId) {
    case WM_INIT_DIALOG:
      hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0);           //´´½¨Dialog
      EDIT_SetDecMode(hItem, 30,   30, 999, 0, 0);      /* Select decimal mode */
      WM_DisableWindow(hItem);
      break;

    case WM_KEY:
      switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) {
        case GUI_ID_ESCAPE:
          GUI_EndDialog(hDlg, 1);
         
          break;
        case GUI_ID_ENTER:
          GUI_EndDialog(hDlg, 0);
          break;
      }
      break;

    case WM_NOTIFY_PARENT:
      Id    = WM_GetId(pMsg->hWinSrc);      /* Id of widget */
      NCode = pMsg->Data.v;                 /* Notification code */
      switch (NCode) {
        case WM_NOTIFICATION_RELEASED:      /* React only if released */
          if (Id == GUI_ID_OK) {            /* OK Button */
            GUI_EndDialog(hDlg, 0);                //¹Ø±Õ¶Ô»°¿ò
                            LED1_Clr();
                LED2_Clr();
                LED3_Clr();
                    LED4_Clr();  

          }
          if (Id == GUI_ID_CANCEL) {        /* Cancel Button */
            GUI_EndDialog(hDlg, 1);                 //²»´¦Àí
                           LED1_Set();
               LED2_Set();
                           LED3_Set();
               LED4_Set();
          }
          break;
        case WM_NOTIFICATION_VALUE_CHANGED:
             
          hItem = WM_GetDialogItem(hDlg, GUI_ID_RADIO0);
          Sel   = RADIO_GetValue(hItem);
                  hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0);
          WM_SetEnableState(hItem, Sel == 0);
//====================================================================
//               ÎҵĴ¦Àíº¯Êý
//====================================================================
                  switch(Sel){
                     case 1:
                           LED1_Clr();
                           LED2_Set();
               LED3_Clr();
                   LED4_Clr();
                          break;
                         case 2:
                           LED1_Clr();
                           LED2_Clr();
               LED3_Set();
                   LED4_Clr();
                          break;
                        case 0:
                           LED1_Set();                          
                           LED2_Clr();
               LED3_Clr();
               LED4_Clr();          
                            break;   
                  }      
         break;
      }
      break;
    default:
      WM_DefaultProc(pMsg);
  }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2011-7-19 18:25:09 | 显示全部楼层
mark,赞一个

出0入0汤圆

发表于 2011-7-19 18:52:49 | 显示全部楼层
不错,学习

出0入0汤圆

发表于 2011-7-19 22:26:16 | 显示全部楼层
ma

出0入0汤圆

发表于 2011-7-19 22:30:18 | 显示全部楼层
不错~~~

出0入0汤圆

 楼主| 发表于 2011-7-20 18:55:16 | 显示全部楼层
在上传一个界面,其在源代码的基础上添加了两个Edit文本框!

(原文件名:图片 001[1].jpg)


(原文件名:图片 002[1].jpg)

出0入0汤圆

 楼主| 发表于 2011-7-25 11:06:22 | 显示全部楼层
AT24C256中文资料(参考笔记)

特性
1  与1MHz I2C 总线兼容
2  1.8 到6.0 伏工作电压范围
3  低功耗CMOS 技术
4  写保护功能当WP 为高电平时进入写保护状态
5  64 字节页写缓冲器
6  自定时擦写周期
7  100,000 编程/擦写周期
8  可保存数据100 年
9  8 脚DIP SOIC 封装
10 温度范围商业级工业级和汽车级

概述
CAT24WC256 是一个256K 位串行CMOS E2PROM 内部含有32768 个字节每字节为8 位
CATALYST 公司的先进CMOS 技术实质上减少了器件的功耗CAT24WC256 有一个64 字节页写缓冲器
该器件通过I2C 总线接口进行操作

管脚描述
管脚名称 功能
A0 A1 地址输入
SDA 串行数据/地址
SCL 串行时钟
WP 写保护
Vcc +1.8V 6.0V 电源
Vss 地
NC 未连接

极限参数
工作温度工业级-55 +125
商业级0 +75
贮存温度-65 +150
各管脚承受电压-2.0V Vcc+2.0V
Vcc 管脚承受电压-2.0V +7.0V
封装功率损耗Ta=25 1.0W
焊接温度(10 秒) 300
口输出短路电流100mA

功能描述
CAT24WC256 支持I2C 总线数据传送协议I2C 总线协议规定任何将数据传送到总线的器件作为
发送器任何从总线接收数据的器件为接收器数据传送是由产生串行时钟和所有起始停止信号的主器
件控制的CAT24WC256 是作为从器件被操作的主器件和从器件都可以作为发送器或接收器但由主
器件控制传送数据发送或接收的模式

管脚描述
SCL 串行时钟
CAT24WC256 串行时钟输入管脚用于产生器件所有数据发送或接收的时钟这是一个输入管脚
SDA 串行数据/地址
双向串行数据/地址管脚用于器件所有数据的发送或接收SDA 是一个开漏输出管脚可与其它开
漏输出或集电极开路输出进行线或wire-OR

WP 写保护
当WP 脚连接到Vcc 所有内存变成写保护只能读当WP 引脚连接到Vss 或悬空允许器件进
行读/写操作
A0 A1 器件地址输入
这些管脚为硬连线或者不连接对于单总线系统最多可寻址4 个CAT24WC256 器件参阅器件寻
址当这些引脚没有连接时其默认值为0

I2C 总线协议
I2C 总线协议定义如下
1 只有在总线空闲时才允许启动数据传送
2 在数据传送过程中当时钟线为高电平时数据线必须保持稳定状态不允许有跳变时钟线
为高电平时数据线的任何电平变化将被看作总线的起始或停止信号
起始信号
时钟线保持高电平期间数据线电平从高到低的跳变作为I2C 总线的起始信号
停止信号
时钟线保持高电平期间数据线电平从低到高的跳变作为I2C 总线的停止信号

器件寻址
主器件通过发送一个起始信号启动发送过程然后发送它所要寻址的从器件的地址8 位从器件地
址的高5 位固定为10100 见图5 接下来的2 位A1 A0 为器件的地址位最多可以连接4 个器件
到同一总线上这些位必须与硬连线输入脚A1 A0 相对应从器件地址的最低位作为读写控制位1
表示对从器件进行读操作0 表示对从器件进行写操作在主器件发送起始信号和从器件地址字节后
CAT24WC256 监视总线并当其地址与发送的从地址相符时响应一个应答信号通过SDA 线
CAT24WC256 再根据读写控制位R/W 的状态进行读或写操作

应答信号
I2C 总线数据传送时每成功地传送一个字节数据后接收器都必须产生一个应答信号应答的器
件在第9 个时钟周期时将SDA 线拉低表示其已收到一个8 位数据
CAT24WC256 在接收到起始信号和从器件地址之后响应一个应答信号如果器件已选择了写操作
则在每接收一个8 位字节之后响应一个应答信号
当CAT24WC256 工作于读模式时在发送一个8 位数据后释放SDA 线并监视一个应答信号一旦
接收到应答信号CAT24WC256 继续发送数据如主器件没有发送应答信号器件停止传送数据并等待
一个停止信号

写操作
字节写
在字节写模式下主器件发送起始信号和从器件地址信息R/W 位置0 给从器件在从器件送回
应答信号后主器件发送两个8 位地址字写入CAT24WC256 的地址指针主器件在收到从器件的应答信
号后再发送数据到被寻址的存储单元CAT24WC256 再次应答并在主器件产生停止信号后开始内部
数据的擦写在内部擦写过程中CAT24WC256 不再应答主器件的任何请求

页写
在页写模式下单个写周期内CAT24WC256 最多可以写入64 个字节数据页写操作的启动和字节
写一样不同在于传送了一字节数据后主器件允许继续发送63 个字节每发送一个字节后
CAT24WC256 将响应一个应答位且内部低6 位地址加1 高位地址保持不变如果主器件在发送停止
信号之前发送大于64 个字节地址计数器将自动翻转先前写入的数据被覆盖
当所有64 字节接收完毕主器件发送停止信号内部编程周期开始此时所有接收到的数据在单
个写周期内写入CAT24WC256

应答查询
可以利用内部写周期时禁止数据输入这一特性一旦主器件发送停止位指示主器件操作结束时
CAT24WC256 启动内部写周期应答查询立即启动包括发送一个起始信号和进行写操作的从器件地址
如果CAT24WC256 正在进行内部写操作将不会发送应答信号如果CAT24WC256 已经完成了内部写
操作将发送一个应答信号主器件可以继续对CAT24WC256 进行下一次读写操作

写保护
写保护操作特性可使用户避免由于不当操作而造成对存储区域内部数据的改写当WP 管脚接高时
整个寄存器区全部被保护起来而变为只可读取CAT24WC256 可以接收从器件地址和字节地址但是装
置在接收到第一个数据字节后不发送应答信号从而避免寄存器区域被编程改写

读操作
CAT24WC256 读操作的初始化方式和写操作时一样仅把R/W 位置为1 有三种不同的读操作方式
立即/当前地址读选择/随机读和连续读
立即/当前地址读
的地址计数器内容为最后操作字节的地址加1 也就是说如果上次读/写的操作地址为N 则立即
读的地址从地址N+1 开始如果N=E 此处E=32767 则计数器将翻转到0 且继续输出数据CAT24WC256
接收到从器件地址信号后R/W 位置1 它首先发送一个应答信号然后发送一个8 位字节数据主
器件不需发送一个应答信号但要产生一个停止信号

选择/随机读
选择/随机读操作允许主器件对寄存器的任意字节进行读操作主器件首先通过发送起始信号从器
件地址和它想读取的字节数据的地址执行一个伪写操作在CAT24WC256 应答之后主器件重新发送起
始信号和从器件地址此时R/W 位置1 CAT24WC256 响应并发送应答信号然后输出所要求的一
个8 位字节数据主器件不发送应答信号但产生一个停止信号

连续读
连续读操作可通过立即读或选择性读操作启动在CAT24WC256 发送完一个8 位字节数据后主器
件产生一个应答信号来响应告知CAT24WC256 主器件要求更多的数据对应每个主机产生的应答信号
CAT24WC256 将发送一个8 位数据字节当主器件不发送应答信号而发送停止位时结束此操作
从CAT24WC256 输出的数据按顺序由N 到N+1 输出读操作时地址计数器在CAT24WC256 整个
地址内增加这样整个寄存器区域在可在一个读操作内全部读出当读取的字节超过E 此处E=32767
计数器将翻转到零并继续输出数据字节

出0入0汤圆

发表于 2011-7-25 11:28:34 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-8-5 08:07:25 | 显示全部楼层
作者声明:
   由于这段时间很忙,UCGUI帖子暂停发布,作者会在9月初继续发布UCGUI的实例程序,敬请关注。UCGUI不管您是不是用在您的项目中,它的设计思想很值得开发者学习。了解它对您使用其他方法设计界面也是一个提升!

出0入0汤圆

发表于 2011-8-5 09:23:47 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-8-16 09:56:24 | 显示全部楼层
m

出0入0汤圆

发表于 2011-8-26 16:29:21 | 显示全部楼层
m

出0入0汤圆

发表于 2011-9-13 11:05:14 | 显示全部楼层
dddd

出0入0汤圆

发表于 2011-9-18 00:48:06 | 显示全部楼层
标记!

出0入0汤圆

发表于 2012-4-19 13:20:21 | 显示全部楼层
厉害,学习了

出0入0汤圆

发表于 2012-4-20 23:32:32 来自手机 | 显示全部楼层
嗯好,学习了

出0入0汤圆

发表于 2012-4-21 02:30:21 | 显示全部楼层
m a r k  !!!

出0入0汤圆

发表于 2012-4-21 19:05:21 | 显示全部楼层
厉害,学习了

出0入0汤圆

发表于 2012-6-18 13:53:50 | 显示全部楼层
不错,标记下

出0入0汤圆

发表于 2012-6-27 22:07:52 | 显示全部楼层
谢谢分享,正要学习这个

出0入0汤圆

发表于 2012-7-3 13:26:37 | 显示全部楼层
学习一下!!

出0入0汤圆

发表于 2013-4-28 19:40:38 | 显示全部楼层
嗯好,学习了

出0入0汤圆

发表于 2013-5-11 20:56:03 | 显示全部楼层

出0入0汤圆

发表于 2013-9-4 15:24:21 | 显示全部楼层

出0入0汤圆

发表于 2013-9-5 10:13:39 | 显示全部楼层
看过了……

出0入0汤圆

发表于 2013-9-5 11:39:17 | 显示全部楼层
好东西,谢谢...

出0入0汤圆

发表于 2016-1-25 21:06:46 | 显示全部楼层
是一个不错的参考。

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-26 17:52

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

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