搜索
bottom↓
回复: 118

奉献:“超强按键显示驱动管理芯片XX7299A”详细DIY资料,请求置酷

[复制链接]

出0入0汤圆

发表于 2008-1-28 16:10:53 | 显示全部楼层 |阅读模式
XX7299A是一款低价位且具有强抗干扰能力的多功能单片机外围芯片。它整合了数码管显示驱动(8 位数码管或者64 位LED)和键盘扫描(64个)控制,以及片上256字节E2PROM和256字节SRAM ,集成RTC(带有阴历和节气算法)、2路8位ADC(贴片)。XX7299A内置8MHz RC振荡电路,采用两线通信接口(兼容I2C)与单片机通信。特点如下:
   ->高达400kHz速率的I2C总线通信接口(器件地址0x60,内部子地址自动加1);
   ->支持自定制I2C地址:共支持4个该器件连入同一I2C总线;
   ->显示驱动(8 位共阴数码管或者64 位LED)和键盘扫描(64个,内嵌去抖动电路)控制管理,数码管从左到右依次为DIG7~DIG0,支持位寻址和按键中断输出;
   ->显示控制支持多种显示模式,具有译码显示和闪烁控制功能,控制方法灵活。同时具有页显示切换功能,以及基于与、或、非显示特效功能,方便实现消隐等特效,均为该类芯片所特有的功能,方便应用于各类LED显示系统;
   -> 256字节E2PROM,擦写寿命达10万次,且带有32字节写入缓存,实现快速写操作;
   ->256字节SRAM;
   ->RTC(0000~9999年阳历及星期,阴历2001~2050年阴历算法,2001~2050年节气算法,注意需要外加32768Hz晶振作为RTC时钟)和秒中断输出;
   ->芯片可设定工作在睡眠状态,睡眠时芯片停止工作,显示等都被关闭,但是当有两线通信接口(兼容I2C)通信时,或者RTC秒中断发生(当开启RTC)时均会唤醒中断,且支持触键唤醒功能;
   ->连接备用电池,当断电后会自动工作在RTC正常运行的睡眠状态;
   ->采用32脚封装时还有2路8位ADC;
   ->PDIP28和TQFP32两种封装;
   ->芯片供电电压:1.8~5.5V,典型应用为5V和3.3V;
->芯片工作温度:-40~85摄氏度;
->具有工业级抗干扰能力,适合于各类商业和工业类产品设计;

呵呵,大家想到了吧,这可是用仅6元多的M48V作的,已经使用近3年了,一直想推广。现在共享,欢迎提出意见!

固件、手册、电路(在手册里)和应用事例全部公开,请阿莫置酷吧!
点击此处下载XX7299A.rar(文件大小:358K)

sauxo@126.com

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

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2008-1-28 16:21:37 | 显示全部楼层
最好将您的内核源码公开,这样置酷才有意义呀,这样才能有助于提高可靠性与实用性。不过现在好像是用LED的场合不是很多呀。

出0入0汤圆

发表于 2008-1-28 16:30:33 | 显示全部楼层
顶啊!价格多少?

出0入147汤圆

发表于 2008-1-28 16:32:49 | 显示全部楼层
【2楼】 gphs 坚持到底

楼主的包里有固件,找个M48烧进去就行了~~~

出0入0汤圆

发表于 2008-1-28 16:39:04 | 显示全部楼层
To 3楼 给你个hex文件你写到芯片里是可以运行,如果有BUG或者你要加一个功能,那这时你应该怎么做呢,再写一次这个源码吗?

很多事情不是你想的那样,《软件、手册、电路(在手册里)和应用事例全部公开,请阿莫置酷吧! 》楼主这样说了,那就应该公开内核源码呀,这样才是有意义的,否则只能是把DIY者困在笼中了。

在这里我只是替初学者说出他们的心里话,其实这个源码我可以自己写,但是我现在不用LED显示的方案,按键驱动我有自己的方式。所以公开与不公开对我来说没有任何的障碍!

出0入147汤圆

发表于 2008-1-28 16:53:29 | 显示全部楼层
To 4楼
呵呵,我那样说是回2楼的,就是说是一片M48的价格

至于开源,因为一年前看过楼主发过的一个差不多内容的帖子~~现在又看到这个帖子就没动过这念头了

出0入0汤圆

 楼主| 发表于 2008-1-28 17:04:56 | 显示全部楼层
to 4楼:
   该应用已经3年多了,用到了好多公司的产品中,最近1年都没有升级,原因是过去已经不知道升级多少次了!?
毕竟现在是公司的东西,给出固件供大家使用,给出使用方法,不也是很好吗?何必强求呢?我已经向单位提出开源,可是一直都
没有同意,因为一个产品中采用多CPU方案不易被轻易仿制,一旦开源怕会有影响。
   不过我快要换单位了!那时一定开源!供大家排砖!
   加功能好像是不可能了,内部的RAM和Flash资源已经被我榨干了,哈!
  经过一个公司几年锤炼的东西,何必刻意的去强调什么……

   该芯片内部设计了好多有趣且有用的功能,若大家有什么疑问请提出!

出0入0汤圆

发表于 2008-1-28 18:52:27 | 显示全部楼层
我早想用MEGA8仿7289,上周还完成了I2C的MEGA8通讯,我设想的是8LED显示,没楼主功能这么全.
没想到楼主真快,用了几年了,佩服,参考一下
不过我还是会坚持自己做一个的,至少8LED没问题的.到时贴代码

出0入0汤圆

发表于 2008-1-28 21:04:26 | 显示全部楼层
不错 顶
头像被屏蔽

出0入0汤圆

发表于 2008-1-28 21:26:30 | 显示全部楼层
谢谢【楼主位】 minier的贡献。COOL. 期待源码上传 :)

出0入0汤圆

发表于 2008-1-28 22:27:15 | 显示全部楼层
谢谢楼主,同样期待代码

出10入210汤圆

发表于 2008-1-28 22:29:12 | 显示全部楼层
收下了,谢谢!

出0入0汤圆

 楼主| 发表于 2008-1-29 00:06:14 | 显示全部楼层
如果大家真的感兴趣,那你应该先试用,而不是为了收藏,从而提出新的想法!

出0入0汤圆

发表于 2008-1-29 08:41:18 | 显示全部楼层
To 5楼 抱歉看错了,其实能不能开源对我真的没有任何意义,但对于初学者还是有很多的意义的。功能还是可以再增加的,代码还是可以再优化的,没有谁敢说自己的代码没有BUG 百分百的优化率。。。。

出0入0汤圆

发表于 2008-1-29 08:53:34 | 显示全部楼层
这几天正在琢磨用MCU模拟1621一类的片子,被时序搞得乱七八糟,谢谢楼主

出0入0汤圆

发表于 2008-1-29 08:57:51 | 显示全部楼层

出0入0汤圆

发表于 2008-1-29 10:15:08 | 显示全部楼层
很酷的文档

出0入0汤圆

发表于 2008-1-29 11:00:45 | 显示全部楼层
收下了,谢谢。

出0入0汤圆

发表于 2008-1-29 15:08:47 | 显示全部楼层
ding!!!
mark

出0入0汤圆

发表于 2008-1-30 16:24:10 | 显示全部楼层
可能M48还便宜些哈!

出0入0汤圆

发表于 2008-1-31 08:33:25 | 显示全部楼层
这帖很不错,喜欢   楼主的性格……

出0入0汤圆

 楼主| 发表于 2008-3-12 20:52:07 | 显示全部楼层
--芯片名称:XX619A
--采用ATmega48V实现的XX619A的功能:
        ->高达400kHz速率的I2C总线通信接口(器件地址0x62,内部子地址自动加1)
                ->256字节EEPROM,共4页,每页64字节
                ->256字节SRAM,共4页,每页64字节
                ->I/O扩展 PB口和PD口
                ->10位ADC(PC口);
               
--GCCAVR20071221下编译通过

--2008-3-8
  V1.0

--该专用管理芯片的外部接口特征:
1、芯片供电电压:1.8~5.5V;
2、熔丝位(SUT1~0)设置为01的4.1ms快速上升电源。采用内部8M RC时钟和内部复位电路;
3、芯片工作温度:-40~85摄氏度。
--操作该芯片的通信协议如下:
1、先发器件地址字节,并给出读/写位:0x63/0x62
2、紧接其后是所要操作的Reg/SRAM/EEPROM地址或命令:
   (1)地址最高2位,以区别是操作Reg,EEPROM,还是SRAM:
          00操作EEPROM(注意,写1次EEPROM时至少要3.4ms)
          01操作SRAM
          10操作Reg
          11保留
   (2)低6位是Reg、SRAM或EEPROM地址。
   当操作寄存器时,芯片寄存器结构和地址如下:
Reg_DDRB;//0x80
Reg_PORTB;//0x81
Reg_PINB;//0x82
Reg_DDRD;//0x83
Reg_PORTD;//0x84
Reg_PIND;//0x85
Reg_ADMUX;
Reg_ADCSRA;//0x87
Reg_ADCSRB;//0x88
Reg_ADCL;//0x89
Reg_ADCH;//0x8a
   以上每个寄存器的用法与ATMega48同名寄存器用法一致。
Reg_E2pBufCount;//0x8b
  //E2pROM的写缓存还没有完成写的数据个数
  //外部MCU的操作地址:0x8c  
Reg_Page;  //0x8c  
     b7       6        5        4         3        2         1        b0
     -        -    SRAMaddr1 SRAMaddr0    -        -      EEPaddr1 EEPaddr0
    1、b1~b0为选择EEPROM的页,共4页,每页64字节                              
    2、b5~b4为选择SRAM的页,共4页,每页64字节
3、第3、4----个字节就是读或写的数据。
--该专用管理芯片的设计方法和思想如下:
    XX619A的控制和状态查询全部都是通过读/写寄存器实现的,用户只需象读写24C02内的单
元一样即可实现对XX619A的控制。

出0入0汤圆

 楼主| 发表于 2008-3-12 20:56:01 | 显示全部楼层
熔丝配备和使用方法参见XX7299A!欢迎大家测试!固件下载:
点击此处下载ourdev_229415.rar(文件大小:1K)

出0入0汤圆

发表于 2008-3-12 21:31:43 | 显示全部楼层
好!

出0入0汤圆

发表于 2008-3-12 22:39:30 | 显示全部楼层
好贴,顶,期待开源

出0入0汤圆

发表于 2008-3-12 23:07:04 | 显示全部楼层
很好的思路。

出0入0汤圆

发表于 2008-3-13 08:50:17 | 显示全部楼层
有点意思,期待开源~

出0入0汤圆

发表于 2008-3-13 09:21:59 | 显示全部楼层
终于等到了,:-)

出0入0汤圆

发表于 2008-3-13 09:42:40 | 显示全部楼层
支持1楼和27楼的意思

出0入0汤圆

发表于 2008-3-13 10:00:42 | 显示全部楼层
楼主是哪里人呀?看头像好像是我原单位的一个同事。

出0入0汤圆

发表于 2008-3-20 09:31:48 | 显示全部楼层
芯片的通信协议修改如下:
1、先发器件地址字节,并给出读/写位:0x63/0x62
2、紧接其后是ADC通道、转换模式和参考电压的配置字节:
   (1)地址最高2位,bit7和bit6用来选择ADC通道(只使用4ch ADC):
          00:ADC0
          01:ADC1
          10:ADC2
          11:ADC3
   (2)bit6和bit5用来选择ADC转化模式:
          00:连续转换模式
          01:ADC单次转换
          10:定时器0溢出自动转换模式
          11:定时器1溢出自动转换模式
   (3)bit4和bit3保留
   (4)最低2位,bit1和bit0用来配置ADC参考电压:
          00:AREF, 内部Vref 关闭
          01:AVCC, AREF 引脚外加滤波电容
          10:保留
          11:1.1V 的片内基准电压源, AREF 引脚外加滤波电容
3、芯片复位后默认的模式是:ADC0通道,连续转换,外部基准AREF模式。
4、芯片操作时序如下:
   4、1、用户直接进行读操作(不做任何配置),命令字节:0x63;
         芯片返回值:ADCH和ADCL(芯片复位后默认的模式是:ADC0通道,连续转换,外部基准AREF模式。)
   4、2、用户对ADC转换进行配置,命令字节:0x6203(模式是:ADC0通道,连续转换,
         1.1V 的片内基准电压源, AREF 引脚外加滤波电容)。下一次用户直接进行读操作的返回值是:ADC0通道,连续转换,
         1.1V 的片内基准电压源, AREF 引脚外加滤波电容。

出0入0汤圆

发表于 2008-3-20 14:45:12 | 显示全部楼层
好像几年前在这里就看过......


无*.c文件,不能置裤.....^_^

出0入0汤圆

 楼主| 发表于 2008-3-20 19:13:46 | 显示全部楼层
我考虑考虑!!

出0入0汤圆

发表于 2008-3-21 10:17:43 | 显示全部楼层
想再修改一下协议(V0.2):
1、先发器件的默认地址0x62
2、紧接其后是ADC通道、转换模式和参考电压 + 《自定义器件地址》的配置字节:  
   bit0作为配置判断位。
   bit0 = 0,配置自定义器件地址,bit7~bit1为新的器件地址(写入EEROM);
   bit0 = 1,对ADC通道、转换模式和参考电压进行配置(如下):
   (1)地址最高2位,bit7和bit6用来选择ADC通道(只使用4ch ADC):  
          00:ADC0  
          01:ADC1  
          10:ADC2  
          11:ADC3
   (2)bit6和bit5用来选择ADC转化模式:
          00:连续转换模式  
          01:ADC单次转换
          10:定时器0溢出自动转换模式
          11:定时器1溢出自动转换模式
   (3)bit4保留
   (4)bit2和bit1用来配置ADC参考电压:
          00:AREF, 内部Vref 关闭  
          01:AVCC, AREF 引脚外加滤波电容  
          10:保留  
          11:1.1V 的片内基准电压源, AREF 引脚外加滤波电容
3、芯片复位后默认的模式是:默认器件地址0x62,ADC0通道,连续转换,外部基准AREF模式。
4、芯片操作时序如下:
   4、1、用户直接进行读操作(不做任何配置),命令字节:0x63;
         芯片返回值:ADCH和ADCL(芯片复位后默认的模式是:ADC0通道,连续转换,外部基准AREF模式。)
   4、2、用户对ADC转换进行配置,命令字节:0x6207(模式是:ADC0通道,连续转换,
         1.1V 的片内基准电压源, AREF 引脚外加滤波电容)。下一次用户直接进行读操作的返回值是:ADC0通道,连续转换,
         1.1V 的片内基准电压源, AREF 引脚外加滤波电容
   4、3、用户重新定义I2C器件地址,命令字节:0x6254。把I2C器件地址改成0x54.
----------------------------------------------------------------------------------
这样一颗I2C接口的ADC就可以所向无敌了o(∩_∩)o...

出0入0汤圆

发表于 2008-3-21 10:22:47 | 显示全部楼层
我想问下,在按键送开后有中断产生吗?

出0入0汤圆

 楼主| 发表于 2008-3-21 12:23:30 | 显示全部楼层
XX7299A,按键松开后,按键中断自动撤销

出0入0汤圆

发表于 2008-3-21 13:10:44 | 显示全部楼层
哦看样子和ZLG的那个都一样,上次就把我害惨了.

出0入0汤圆

发表于 2008-3-21 15:49:19 | 显示全部楼层
支持开源

出0入0汤圆

发表于 2008-3-21 16:03:17 | 显示全部楼层
随便问下,RTC的误差能做到什么样?频繁断电上电,SRAM数据会出错吗?EPPROM 地址0会不会出错?
如果开源,可以把节气等这些不实用的功能取消,变成再外挂EEPROM等更实用的功能。不用按键或按键比较少的时候,多余IO可以再外扩其它需要的功能。

出0入0汤圆

 楼主| 发表于 2008-3-21 16:23:16 | 显示全部楼层
to:5QYLYqR0Y7

随便问下,RTC的误差能做到什么样?
答:没有温度补偿

频繁断电上电,SRAM数据会出错吗?
答:不会

EPPROM 地址0会不会出错?
答:不会

节气对您不适用,对其他人就一定不适用了吗!

“再外挂EEPROM”,已经是特殊应用了吧!?!

按键的I/O是和扫描显示共用的,并没有多用1个I/O用于按键!

出0入0汤圆

发表于 2008-3-21 17:41:58 | 显示全部楼层
要是有详细的资料就好了,毕竟DIY的话,只是照着做就没什么乐趣的。

出0入0汤圆

发表于 2008-3-21 23:42:35 | 显示全部楼层
Embedtech 陇东大少
积分:505
派别:
等级:------
来自:深圳-福田
哦看样子和ZLG的那个都一样,上次就把我害惨了.

出0入0汤圆

 楼主| 发表于 2008-3-22 14:42:28 | 显示全部楼层
不一样,手册里已经指出差别了!

出0入0汤圆

发表于 2008-3-22 20:46:33 | 显示全部楼层
这么好的帖子以前居然没有注意到.大概春节前时常出差,"讨"钱去了.
源码最好不要公开.我要把这个当题目给牛人来应聘时能力测试用.面试过了,再给2周时间去完成它.如果做不出,
我们也没有吃亏,2周的钱还是要给滴.做出了嘛,我们就赚了.以后钱是要靠"牛人"去赚的,"牛人"呵呵..浑身是力气哦,想着就高兴.

出0入0汤圆

发表于 2008-3-23 21:15:21 | 显示全部楼层
请问楼主:

看你的帖子,我的理解:XX7299A 是在M48里跑键盘扫描和动态显示程序的,不是专用芯片。我的理解有没有错?

如果XX7299A是专用芯片,是哪个公司出品的,能告诉我吗?我以前没听说过。

出10入210汤圆

发表于 2008-3-23 23:57:29 | 显示全部楼层
回楼上,你的理解是正确的,楼主已经说的相当清楚了,是用M48做的通用芯片。
7299A的代号也就是这个了,没有其它公司出这个。

出0入0汤圆

发表于 2008-3-24 08:49:07 | 显示全部楼层
谢谢解答!
若要用RTC功能,是不是得用电池供电?
断电(比如换电池)怎么让时钟继续运行?

出0入0汤圆

 楼主| 发表于 2008-3-24 12:40:57 | 显示全部楼层
to 【47楼】 daydream
你还没有看手册吧!?!

出0入10汤圆

发表于 2008-3-24 13:20:57 | 显示全部楼层
收藏研究

出0入0汤圆

发表于 2008-3-24 23:56:07 | 显示全部楼层
收藏,留个记号

出0入0汤圆

发表于 2008-3-25 01:08:46 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-3-25 09:11:42 | 显示全部楼层
期待源码....

出0入50汤圆

发表于 2008-3-25 09:29:55 | 显示全部楼层
1)支持楼主的设计,

2)源码不方便公开大家不要勉强。


有一点疑问:以M48或M8的驱动能力,驱动8位段码LED的话,亮度很差了,楼主这个设计,驱动能力不会大的,2英寸的LED估计即是亮了,亮度不会很好。我现在驱动7位0.8英寸的LED,电流要100多毫安了,亮度只能说够用,呵呵。我是用其它芯片驱动的。

出10入210汤圆

发表于 2008-3-25 11:53:59 | 显示全部楼层
普通每段为单LED(或多个一串)的工作电流为20mA左右为最佳。
如8段同时亮时为20mA*8=160mA,这个电流AVR是达不到的。
如使用的数码管不是高亮或超亮的就更暗。
应根据实际情况来确定是否要驱动。

出0入0汤圆

发表于 2008-3-25 14:53:34 | 显示全部楼层
以前有人猜7290是PIC仿的,看来是有可能的

出0入0汤圆

 楼主| 发表于 2008-3-26 12:45:30 | 显示全部楼层
7290使用的是飞利浦的51单片机

出0入0汤圆

 楼主| 发表于 2008-3-26 12:46:40 | 显示全部楼层
亮度不是十分耀眼,但是,一般应用(非强光下)效果很好!

出0入0汤圆

发表于 2008-3-26 12:58:07 | 显示全部楼层
哦。谢谢解答
ZLG这招挺绝啊,灌个程序进去就可以加价卖出了

出0入0汤圆

发表于 2008-3-26 14:46:41 | 显示全部楼层
楼主 是我 呵呵
又有新的东西了啊。
我不会让这个帖子沉下去的,
我顶,我顶,我顶顶顶!!!

出0入0汤圆

 楼主| 发表于 2008-3-29 09:58:48 | 显示全部楼层
上传XX7299A原理图和PCB
点击此处下载 ourdev_241602.rar(文件大小:77K) (原文件名:郭强 显示面板.rar)

出0入0汤圆

发表于 2008-4-9 17:19:23 | 显示全部楼层
刘老师,请把《AVR单片机原理及测控工程应用》2.2.5节《ATmega48通过I2C从机模式模拟AT24C02》的代码发给我一份吧
email:encijia@sohu.com

出0入0汤圆

发表于 2008-4-9 18:29:30 | 显示全部楼层
搂主 好啊!!!
    是我 呵呵 这是好东西一定帮你顶下去

出0入0汤圆

发表于 2008-4-9 22:49:55 | 显示全部楼层
我用过TM1623 价格不错1元多。只有按键和LED扫描,有可能是用台系的芯片做的。
单单的用显示和按键 ATMEGA做感到有点奢侈。
不过把时钟和AD加进去,楼主确实很高明。

再加ID码,SPI接口也很好用的。

出0入0汤圆

发表于 2008-4-10 10:44:50 | 显示全部楼层
呵呵,加油。明君留

出0入0汤圆

 楼主| 发表于 2008-4-10 11:52:21 | 显示全部楼层
兄弟们都来捧场了!!!!

出0入0汤圆

发表于 2008-4-10 13:21:30 | 显示全部楼层
有个PROTUES的演示就更好了。

出0入0汤圆

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

/*---------------------------------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汤圆

发表于 2008-4-24 11:48:42 | 显示全部楼层
记号

出0入0汤圆

 楼主| 发表于 2008-4-24 16:45:27 | 显示全部楼层
to【67楼】 ninjia
原型程序是基于状态机编程的!

出0入0汤圆

发表于 2008-4-24 17:16:13 | 显示全部楼层
好像一片mega8 也基本能做到这些更能阿 主要看这个芯片的价钱吸引不 呵呵

出0入0汤圆

 楼主| 发表于 2008-4-25 07:48:40 | 显示全部楼层
to【70楼】 ljxh401 镇关西
ATmega48v更便宜些!

出0入0汤圆

发表于 2008-4-25 08:23:46 | 显示全部楼层
思路想法不错,回头我也学习楼主动手做一下!

出0入0汤圆

发表于 2008-5-12 16:57:42 | 显示全部楼层
这款芯片很好用的,支持刘老师!!!

出0入0汤圆

发表于 2008-5-20 11:46:57 | 显示全部楼层
这次设计要使用这芯片。

出0入0汤圆

发表于 2008-5-21 10:45:27 | 显示全部楼层
问了中发几家柜台都说没有这个芯片,XX7299A是什么公司生产的我怎么也查不到呢?

出0入0汤圆

发表于 2008-5-21 13:02:35 | 显示全部楼层
回:【75楼】 cskl


XX7299A是楼主用Mega48自主研发出来的芯片,XX7299A只不过是楼主给命的一个名字罢了。

不过功能有保证,设计后的XX7299A芯片非常好用。

用过才知道!

出0入0汤圆

发表于 2008-5-21 13:35:14 | 显示全部楼层
哦。

出0入0汤圆

发表于 2008-5-22 12:00:48 | 显示全部楼层
刚学AVR,本打算拿M8做个这样的键盘显示驱动芯片来着,都已经规划好了。
原来有人做了,哈哈!
楼主什么时候公布源程序啊?期待…………

出0入0汤圆

发表于 2008-5-26 08:38:04 | 显示全部楼层
做个记号

出0入0汤圆

发表于 2008-6-1 12:25:09 | 显示全部楼层

出0入0汤圆

发表于 2008-6-1 18:36:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-6-2 11:55:52 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-6-2 20:12:55 | 显示全部楼层
记下了 多谢

出0入0汤圆

发表于 2008-6-12 10:29:15 | 显示全部楼层
顶下  老是来晚。。。。

出0入0汤圆

发表于 2008-6-12 12:17:08 | 显示全部楼层
记号一下。。。。。。

出0入0汤圆

发表于 2008-6-12 12:50:25 | 显示全部楼层
顶一下

出0入0汤圆

发表于 2008-8-1 14:52:40 | 显示全部楼层
很早看过,资料也下了,今天还是让我一顿好找。

MARK一下。

建议刘老师将之前早期有BUG的源码开源,这即方便了技术研讨者,又防止了用心者。

------------------
是“别有用心者”。

出0入0汤圆

发表于 2008-9-2 20:08:42 | 显示全部楼层
呵呵 本来楼上的原型工程就是刘老师自己写的  呵呵 在他自己的书里已经写了思路 呵呵 感觉要是LZ要是不在现在的公司做事 可能代码就可以在他的书中出现了,但好多思路可以在《AVR单片机原理及测控工程应用——基于ATmega48/ATmega16 》里找找 也许会有,但我看了一个ARM的培训视频 好象也是LZ录的  呵呵

出0入0汤圆

发表于 2008-9-3 11:03:25 | 显示全部楼层
楼主的很多思路在《AVR单片机原理及测控工程应用——基于ATmega48/ATmega16 》这本书里都可以找到的!
有时间好好研究研究

出0入0汤圆

发表于 2009-5-11 19:53:29 | 显示全部楼层
太有创意了

出0入0汤圆

发表于 2009-5-24 10:34:06 | 显示全部楼层
没有源码,拿来也没有人敢用呀

出0入0汤圆

发表于 2009-5-25 08:58:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-5-25 15:36:34 | 显示全部楼层
</a>

出0入0汤圆

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

出0入0汤圆

发表于 2009-9-19 10:06:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-20 13:39:40 | 显示全部楼层
mark1

出0入0汤圆

 楼主| 发表于 2009-12-9 15:33:11 | 显示全部楼层
累计已经有25位网友成功应用到产品中,庆祝一下

出0入0汤圆

发表于 2009-12-9 15:45:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-10 10:30:50 | 显示全部楼层
mark

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-8-26 23:45

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

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