电路图

思路

1.向EEPROM中通过I2C总线写入一个字节

2.通过I2C总线读出写入的字节

3.如果写入和读出成功点亮发光二极管

程序

 #include <REGX51.H>

 #define uchar unsigned char
#define uint unsigned int void init();
void start();
void stop();
void write(uchar byte);
void write_add(uchar byte,uchar address);//向指定地址中写入字节
void delay1(uchar x);
uchar read_add(uchar address);
uchar read();//从指定地址中读出字节 void delay()
{;;} sbit led = P0^;
sbit sck = P2^;
sbit sad = P2^; void main()
{
uchar test = ;
init();
write_add(0x01,0xaf);
delay1(); test =read_add(0xaf);
if(test == 0x01)
led = ;
while();
} void init()
{
sck = ;
delay();
sad = ;//数据线和信号线都空闲
delay();
led = ;
}
//起始信号
void start()
{
sad = ;
delay();
sck = ;
delay();
sad = ;
delay();
}
//停止信号
void stop()
{
sad = ;
delay();
sck = ;
delay();
sad = ;
delay();
}
//等待回应
void response()
{
uchar i = ;
sck = ;
delay();
while((sad == ) && (i < ))
i++;
sck = ;
delay();
}
//向指定地址写入一个字节
void write(uchar byte)
{
uchar i = ;
uchar temp = byte; for(; i < ; i++)
{
temp = temp << ;//temp左移一位
sck = ;
delay();
sad = CY;
delay();
sck = ;
delay();
}
sck = ;
delay();//这样就不会产生开始信号或结束信号
sad = ;
delay();
}
//从指定地址读取一个字符
uchar read()
{
uchar i,k;
sck = ;
delay();
sad = ;
delay();
for(; i < ; i++)
{
sck = ;
delay();
k = (k << ) | sad;
sck = ;
delay();
}
return k;
}
//写入一个字节
void write_add(uchar byte,uchar address)
{
start();
write(0xa0);
response();
write(address);
response();
write(byte);
response();
stop();
}
//读出写入的字节
uchar read_add(uchar address)
{
uchar result;
start();
write(0xa0);
response();
write(address);
response();
start();
write(0xa1);
response();
result = read();
stop();
return result;
}
void delay1(uchar x)
{
uchar a,b;
for(a=x;a>;a--)
for(b=;b>;b--);
}

运行结果

I2C总线模拟(郭天祥视屏)的更多相关文章

  1. 51单片机I2C总线

    I2C总线是飞利浦公司推出的一种串行总线,所有器件共用两根信号线,实现数据的传输. 总线接口接了上拉电阻,默认为高电平,所以就可以用"当低电平出现"来标记出一种起始信号.我个人把它 ...

  2. C51单片机模拟I2C总线驱动程序设计

    /********************************** I2C总线驱动 ******************************** 模块名:I2C总线驱动 型号:I2C 功能描述 ...

  3. I2C总线协议的软件模拟实现方法

    I2C总线协议的软件模拟实现方法 在上一篇博客中已经讲过I2C总线通信协议,本文讲述I2C总线协议的软件模拟实现方法. 1. 简述 所谓的I2C总线协议的软件模拟实现方法,就是用软件控制GPIO的输入 ...

  4. I2C总线以及GPIO模拟I2C

    ·I2C总线的一些特征: 1. 只要求两条总线,一条串行数据线(SDA),一条串行时钟线(SCL) 2. 两个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机系统软件设定的地址:主机可 ...

  5. STM32F4XX中断方式通过IO模拟I2C总线Master模式

    STM32的I2C硬核为了规避NXP的知识产权,使得I2C用起来经常出问题,因此ST公司推出了CPAL库,CPAL库在中断方式工作下仅支持无子地址 的器件,无法做到中断方式完成读写大部分I2C器件.同 ...

  6. 51单片机 | 基于I2C总线的秒表模拟应用

    ———————————————————————————————————————————— 参考地址: http://blog.csdn.net/junyeer/article/details/4648 ...

  7. I2C总线完全版——I2C总线的结构、工作时序与模拟编程

    I2C总线的结构.工作时序与模拟编程 I2C总线的结构.工作时序与模拟编程I2C总线(Inter Integrated Circuit)是飞利浦公司于上个世纪80年代开发的一种"电路板级&q ...

  8. Linux设备驱动模型之I2C总线

    一.I2C子系统总体架构 1.三大组成部分 (1)I2C核心(i2c-core):I2C核心提供了I2C总线驱动(适配器)和设备驱动的注册.注销方法,提供了与具体硬件无关的I2C读写函数. (2)I2 ...

  9. i2c总线驱动,总线设备(适配器),从设备,从设备驱动的注册以及匹配

    常用链接 我的随笔 我的评论 我的参与 最新评论 我的标签 随笔分类 ARM裸机(13) C(8) C++(8) GNU-ARM汇编 Linux驱动(24) Linux应用编程(5) Makefile ...

随机推荐

  1. nginx查看日志

    原文:nginx日志格式及自定义日志配置 nginx的log日志分为access log 和 error log 其中access log 记录了哪些用户,哪些页面以及用户浏览器.ip和其他的访问信息 ...

  2. Centos 6.4 安装elasticsearch+kibana

    elasticsearch和kibanna的链接地址:https://www.elastic.co/downloads,我的环境里用的包为kibana-4.1.1-linux-x64.tar.gz和e ...

  3. 用gd库画矩形和椭圆

    画矩形:bool imagerectangle ( resource $image画布资源 , int $x1左上角的坐标 , int $y1 , int $x2 右下角坐标, int $y2 , i ...

  4. php的标记形式

    共三种: 推荐第一种,第三种需要在php.ini中配置 效果: 第三种配置 将short_open_tag=Off改为On重启Apache就可以了

  5. SQLServer 2008数据库查看死锁、堵塞的SQL语句

      --每秒死锁数量 SELECT * FROM sys.dm_os_performance_counters WHERE counter_name LIKE 'Number of Deadlocks ...

  6. WCF与Web API 区别(应用场景)

    Web api  主要功能: 支持基于Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作 请求的回 ...

  7. 在有大量数据时 少用In(数据会丢失) 用left join 代替

    select @From, @To, EffectiveDate, GETDATE(), Rate from Config_Currency_ExchangeRate_Temp where Effec ...

  8. CocoaPods的使用详解

    CocoaPods是什么 当我们开发 iOS 项目时候,会经常使用到第三方类库,并且会使用很多.大家的做法基本上都是到 GitHub 上下载一个一个的类库,然后导入到工程中,并且引入各种的类库,做各种 ...

  9. Css颜色定义的方法汇总color属性设置方式

    颜色的定义方式用rgb()里面带上十进制的数字来定义. color:rgb(211,123,135); 用预定义的颜色名称. color:red; rgba()最后一个参数是不透明度. color:r ...

  10. java集合 collection-list-vector

    import java.util.*; /* 枚举就是Vector特有的取出方式. 发现枚举和迭代器很像. 其实枚举和迭代是一样的. 因为枚举的名称以及方法的名称都过长. 所以被迭代器取代了. 枚举郁 ...