历史上的今天
今天是: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;
}
下一篇:(C51学习三)按键
史海拾趣
|
利用本电路作为门铃时,不需在门前安装按钮开关,来客只需叩一下大门,门铃便会发声。电路如图所示。 电路最大的特点就是利用扬声器做振动输入,又做门铃声输出。 晶体管V2、电位器KP和电容C2组成控制电路,V1、V3、R2、C1组成互 ...… 查看全部问答> |
|
本开发板命名为Landbcm 2008 下面开始介绍介绍Landbcm 2008 1.Landbcm 2008系统框图 1.Landbcm 2008学习板提供了 硬件: 1个WAN口, 1个100M以太网口, 4M Flash,16M SDRAM , 主控芯片为BCM47XX , 交换芯片为BCM5XXX 软件: 全套开发 ...… 查看全部问答> |
|
小弟准备测试下网络,下了Iperf源代码。用在ARMV4I wince 6.0上。 但是不知道怎么在VS2005下面编译 目前SDK已经导出 哪位老大有成功的经验,分享下,多谢了!… 查看全部问答> |
|
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,出现不同程度的数据丢失想象。主要表现为,刷整屏一个颜色的时候,有类似于暗点的情况。且每次 ...… 查看全部问答> |




