历史上的今天
返回首页

历史上的今天

今天是:2025年01月29日(星期三)

2019年01月29日 | C51进行I²C通信

2019-01-29 来源:eefocus

I²C(Inter IC Bus)是由 Philips 推出的数据总线协议。


#include

void display(unsigned int n)

{

unsigned char i;

char table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71

};

P2 = 0 << 2;

P0 = table[n%10];

for (i=0;i<25;i++);

P0 = 0;

P2 = 1 << 2;

P0 = table[n/10%10];

for (i=0;i<25;i++);

P0 = 0;

P2 = 2 << 2;

P0 = table[n/100%10];

for (i=0;i<25;i++);

P0 = 0;

P2 = 3 << 2;

P0 = table[n/1000%10];

for (i=0;i<25;i++);

P0 = 0;

}

 

// IIC bus

sbit SCL=P2^1;

sbit SDA=P2^0;

 

// 4 keys

sbit k1=P3^1;

sbit k2=P3^0;

sbit k3=P3^2;

sbit k4=P3^3;

 

void delay(unsigned int i)

{

while(i--);

}

 

void I2cStart()

{

SDA = 1;

delay(5);

SCL = 1;

delay(5);

SDA = 0;

delay(5);

}

 

void I2cStop()

{

SDA = 0;

delay(5);

SCL = 1;

delay(5);

SDA = 1;

}

 

void I2cSendByte(unsigned char n)

{

signed char i;

for (i=7;i>=0;i--)

{

SCL = 0;

delay(5);

SDA = 0x01 & (n>>i);

delay(5);

SCL = 1;

delay(5);

}

SCL = 0;

delay(5);

SDA = 1;

delay(5);

SCL = 1;

delay(5);

while((SDA==1)&&(i++<255));

SCL = 0;

delay(5);

}

 

unsigned char I2cReadByte()

{

unsigned char i,k;

SCL = 0;

delay(5);

SDA = 1;

delay(5);

for (i = 0; i < 8; ++i)

{

SCL = 1;

delay(5);

k <<= 1;

k |= SDA;

SCL = 0;

delay(5);

}

delay(5);

return k;

}

 

int main()

{

unsigned char num=0;

while (1)

{

if(k1==0)

{

delay(1000);

if(k1==0)

{

I2cStart();

I2cSendByte(0xa0); // set chip

I2cSendByte(1); // set address 1

I2cSendByte(num); // set value

I2cStop();

}

while(!k1);

} else if(k2==0) {

delay(1000);

if(k2==0)

{

I2cStart();

I2cSendByte(0xa0); // set chip 0xa0

I2cSendByte(1); // set address 1

I2cStart();

I2cSendByte(0xa1); // set chip 0xa1

num=I2cReadByte(); // read byte

I2cStop();

}

while(!k2);

} else if(k3==0) {

delay(1000);

if(k3==0)

num++; // add 1

while(!k3);

} else if(k4==0) {

delay(1000);

if(k4==0)

num=0; // set 0

while(!k4);

}

display(num);

}

return 0;

}



推荐阅读

史海拾趣

BENCENT公司的发展小趣事

在取得一系列成绩的同时,BENCENT公司也始终关注可持续发展。公司注重环保和节能技术的研发和应用,致力于为客户提供更加环保、高效的电子产品。同时,公司还积极参与社会公益事业,回馈社会。展望未来,BENCENT公司将继续坚持创新驱动、质量为本的发展理念,不断推动电子行业的进步和发展。


请注意,这些故事仅为框架性的描述,并未包含具体的细节和数据。您可以根据BENCENT公司的实际情况和发展历程,对这些故事进行进一步的丰富和完善。同时,确保在描述事实时保持客观公正的态度,避免加入主观评价。

德欣(COV)公司的发展小趣事

作为一家有社会责任感的企业,德欣公司始终关注环境保护和可持续发展。公司积极推广绿色生产技术和资源循环利用方案,减少生产过程中的能源消耗和废弃物排放。同时,德欣公司还积极参与社会公益活动,为社区和环境贡献自己的力量。这些举措不仅体现了德欣公司的社会责任担当,也为其赢得了更多客户和合作伙伴的信任和支持。

Cardinal Components公司的发展小趣事

随着时间的推移,Cardinal不断推出新的产品系列以满足市场需求。2013年,公司推出了CJ速差器系列,这一系列产品以其高性能和稳定性受到了市场的广泛好评。随后,在2015年,CJ系列被移植到2.5×2.0封装尺寸,进一步提高了产品的集成度和可靠性。这些产品系列的拓展与升级不仅丰富了公司的产品线,也为客户提供了更多的选择。

C&H Technology公司的发展小趣事

随着智能手机市场的快速发展,C&H Technology意识到单纯的芯片制造已经不能满足市场需求。于是,公司开始加大研发投入,致力于在5G通信、人工智能等前沿技术领域取得突破。经过多次试验和失败,C&H Technology的研发团队终于成功开发出了一款集成5G通信功能的手机芯片,并获得了多项专利。这一技术突破不仅提升了公司在行业内的地位,也为公司的未来发展奠定了坚实的基础。

Alorium Technology公司的发展小趣事

为了进一步提升竞争力,C&H Technology积极寻求与其他企业的战略合作。公司与一家知名的手机制造商签订了长期合作协议,共同开发定制化芯片解决方案。同时,C&H Technology还与一家领先的半导体生产企业建立了战略联盟,共同研发新型半导体材料和生产工艺。这些战略合作不仅为公司带来了更多的商业机会,也提升了公司的技术水平和品牌影响力。

Gold Peak Group公司的发展小趣事
在控制电路周围设置必要的安全防护措施,如防护罩、警示标志等,防止人员误操作或触电事故的发生。

问答坊 | AI 解惑

浅谈新型彩电开关电源效率的提高

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑 …

查看全部问答>

设计巧妙简单的声控电子门铃

利用本电路作为门铃时,不需在门前安装按钮开关,来客只需叩一下大门,门铃便会发声。电路如图所示。 电路最大的特点就是利用扬声器做振动输入,又做门铃声输出。     晶体管V2、电位器KP和电容C2组成控制电路,V1、V3、R2、C1组成互 ...…

查看全部问答>

EVC如何获取SD卡的物理盘符?

EVC如何获取SD卡的物理盘符?如:DISK2 …

查看全部问答>

二层交换机最小系统开发板v1.0

本开发板命名为Landbcm 2008 下面开始介绍介绍Landbcm 2008 1.Landbcm 2008系统框图 1.Landbcm 2008学习板提供了 硬件: 1个WAN口, 1个100M以太网口, 4M Flash,16M SDRAM , 主控芯片为BCM47XX , 交换芯片为BCM5XXX 软件: 全套开发 ...…

查看全部问答>

请教在vs2005中编译Iperf?

小弟准备测试下网络,下了Iperf源代码。用在ARMV4I  wince 6.0上。 但是不知道怎么在VS2005下面编译 目前SDK已经导出 哪位老大有成功的经验,分享下,多谢了!…

查看全部问答>

AT88SC0104CIIC通信怎么操作?

哪位大吓操作过AT88SC0104CIIC?它的通信是和普通EEPROM一样操作吗?…

查看全部问答>

vs2005+PB6.0打开工程文件弹出missing catalog items in os design

vs2005+PB6.0打开工程文件弹出missing catalog items in os design窗口,为什么会弹出这样的窗口?要如何选择列表里的项目? Item:MS:sysgen_dotnetv35 Item:MS:sysgen_dotnetv35_support Item:MS:sysgen_sdbus2 …

查看全部问答>

有没有人会在FC6下共享WINDOWS2003下的HP Deskjet1180c打印机呢?

各们FC6的高手们,大家谁会在FC6下共享WINDOWS2003下的HP Deskjet1180c打印机呢?共享一下经验吧,我每天的工作都无法正常进行了,打了很多地方都没有找到相关的资料,在 www.linuxsir.org里发贴好几天竟然没有人会贴,看来没有人会了,eeworld里有 ...…

查看全部问答>

STM32FSMC驱动9325,出现不同程度的数据丢失现象?

                                 我用STM32驱动9325,出现不同程度的数据丢失想象。主要表现为,刷整屏一个颜色的时候,有类似于暗点的情况。且每次 ...…

查看全部问答>

ucosII我要弄到中断中断程序放在什么地方呢

                                  …

查看全部问答>