搜索
bottom↓
12
返回列表 发新帖
楼主: minier

超强按键显示驱动管理芯片XX7299A

[复制链接]

出0入0汤圆

发表于 2007-4-28 07:24:47 | 显示全部楼层
100

出0入0汤圆

发表于 2007-4-28 09:14:36 | 显示全部楼层
支持楼主,这样做并没什么不好,如果能对升级并且对产品性能负责的话,收费是合理的。当然这不是针对这个键盘显示来说的。我只是支持这种思路。

出0入4汤圆

发表于 2007-4-28 09:20:04 | 显示全部楼层
102

出0入0汤圆

 楼主| 发表于 2007-4-28 14:28:30 | 显示全部楼层
很抱歉很久没有维护这个贴子



这是最新更新的手册:



XX7299A.pdf

出0入0汤圆

 楼主| 发表于 2008-1-28 12:31:35 | 显示全部楼层
软件、手册、电路(在手册里)和应用事例全部公开,请阿莫置酷吧!
点击此处下载ourdev_208196.rar(文件大小:358K)

出0入0汤圆

 楼主| 发表于 2008-1-28 14:13:46 | 显示全部楼层
请阿莫将材料编辑到楼主位,谢谢!

出0入0汤圆

发表于 2008-1-30 09:48:51 | 显示全部楼层
【45楼】 zlei 张磊
MegaIO的代码能给我一份吗:encijia@sohu.com

去这个地址看了,以前也看过AVRLib,大没有注意到MegaIO:http://hubbard.engr.scu.edu/embedded/avr/megaio/index.html

出0入0汤圆

发表于 2008-1-30 11:14:47 | 显示全部楼层
不好意思,已经找到了
就在AVRLib文件里
minier刘老师,能不能把你的XX7299A定制成MegaIO的形式,
这样全齐全了:
XX7299A,是一颗i2c扩展IO口器件;
MegaIO,是一颗ADC和DAC模拟器件
期待中。。。。

出0入0汤圆

发表于 2008-4-21 10:55:24 | 显示全部楼层
原型工程来了!!!!!!!!!!!!!!!!!!!!有心人可以参考
谢谢刘老师:-)

/*---------------------------------readme first---------------------------------
--CPU:ATmega48                 
--GCCAVR20070525下编译通过
--刘海成    2007-8
--ATmega48模拟24系列EEPROM
------------------------------------------------------------------------------*/
#include <avr/io.h>
#include <avr/interrupt.h>

volatile unsigned char IIC_STATE;    //IIC通信状态机
#define  STATE_IIC_ADDR            0xc3
#define  STATE_IIC_WDATA    0xa5
#define  STATE_IIC_RDATA    0x5a
#define  STATE_IIC_STOP            0
volatile unsigned char IIC_ADDR,IIC_DATA;   //当前数据
//------------------------------------------------------------------------------

//------------------------------TWI状态定义-------------------------------------
#define SLA_Device_Addr    0xa0     //定义器件地址
//SR 从机方式接收  ST 从机方式传输  ALL  广播
#define SR_SLA_ACK         0x60
#define SR_ALL_ACK         0x70
#define SR_DATA_ACK               0X80
#define SR_DATA_NOACK      0X88
#define SR_ALL_DATA_ACK    0x90
#define SR_ALL_DATA_NOACK  0x98
#define SR_STOP_RESTART    0xa0
#define ST_SLA_ACK               0xa8
#define ST_DATA_ACK        0xb8
#define ST_DATA_NOACK           0xc0
#define ST_LAST_DATA_ACK   0xc8
//常用TWI操作(从模式写和从模式读)
#define Twi_STATE()            (TWSR&0xf8)
#define SLA_autoACK()           (TWCR=(1<<TWEA)|(1<<TWINT)|(1<<TWEN)|(1<<TWIE))
#define SLA_Send8Bit(x)    {TWDR=(x);TWCR=(1<<TWEA)|(1<<TWINT)|(1<<TWEN)|(1<<TWIE);}
#define SLA_Resume()       (TWCR=(1<<TWEA)|(1<<TWSTO)|(1<<TWINT)|(1<<TWEN)|(1<<TWIE))
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
void Chip_Init(void)
{   //IIC初始化
    TWAR=SLA_Device_Addr;//set slave address,不使用广播地址
    TWCR=0x45;           //使能IIC,并开中断
    asm("sei");          //开总中断
}   
//------------------------------------------------------------------------------
unsigned char eeprom_read_byte(unsigned char uiAddress)
{while(EECR&(1<<EEPE))//等待上一次写操作结束
#define EEARH   _SFR_IO8 (0x22)
EEARH=0x00;
EEARL=uiAddress;       //设置地址寄存器
EECR|=(1<<EERE);      //设置EERE以启动读操作
return EEDR;
}
//------------------------------------------------------------------------------
int main(void)
{
Chip_Init();
while(1)
{ ;
}
}
//------------------------------------------------------------------------------
ISR(TWI_vect)
{unsigned char nc;
nc=Twi_STATE();
if(nc==SR_SLA_ACK)                          //从地址匹配,写传输,ACK已返回
    {   IIC_STATE=STATE_IIC_ADDR;           //下一步接收数据的地址
        SLA_autoACK();
    }
else if(nc==SR_DATA_ACK)//接收主机送来的从机数据地址或数据,ACK已返回
        {   if(IIC_STATE==STATE_IIC_ADDR)   //如果是地址
                    {IIC_ADDR=TWDR;
                         IIC_STATE=STATE_IIC_WDATA;  //下一步接收数据
                    }
                else                                //IIC_nextSTATE==STATE_IIC_WDATA:
                    {   IIC_DATA=TWDR;
                            while(EECR&(1<<EEPE));//等待上一次写操作结束
                    EEARH=0x00;
                EEARL=IIC_ADDR++;      //地址自动+1  
                EEDR=IIC_DATA;
                EECR|=(1<<EEMPE);
                EECR|=(1<<EEPE);      //置位EEPE以启动写操作E
      
                   }   
                SLA_autoACK();
         }
else if((nc==ST_SLA_ACK)||(nc==ST_DATA_ACK))//从地址匹配,读传输,或者是
        {                                          //TWDR里数据已经发送,接收到ACK
                IIC_STATE=STATE_IIC_RDATA;
                IIC_DATA=eeprom_read_byte(IIC_ADDR++); //地址自动+1            
        SLA_Send8Bit(IIC_DATA);            //发送数据
        }
else if(nc==ST_DATA_NOACK)               //TWDR里数据已经发送,接收到NOTACK
        {
                IIC_STATE=STATE_IIC_STOP;
                SLA_autoACK();
           }
else if(nc==SR_STOP_RESTART)            //主机写命令结束或读命令重新开始
        {
                SLA_autoACK();
           }
else
        {
            SLA_Resume();//从机模式到未被寻址状态,恢复TWI响应能力
        }
}
//------------------------------------------------------------------------------

出0入0汤圆

发表于 2009-9-19 09:42:27 | 显示全部楼层
收藏

出0入0汤圆

发表于 2014-1-6 11:10:40 | 显示全部楼层
请问这是一款什么芯片,哪里可以买到?最近用ZLG7290,抗干扰能力太差,I2C总线老是死掉,不会自动恢复,需要一个抗干扰能力强的键盘管理芯片。

出0入0汤圆

发表于 2014-1-6 11:15:07 | 显示全部楼层
这是用单片机实现的吗,驱动能力怎么样,0.56英寸的数码管会不会显示有点暗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-23 22:16

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

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