I2C总线模拟(郭天祥视屏)
电路图

思路
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总线模拟(郭天祥视屏)的更多相关文章
- 51单片机I2C总线
I2C总线是飞利浦公司推出的一种串行总线,所有器件共用两根信号线,实现数据的传输. 总线接口接了上拉电阻,默认为高电平,所以就可以用"当低电平出现"来标记出一种起始信号.我个人把它 ...
- C51单片机模拟I2C总线驱动程序设计
/********************************** I2C总线驱动 ******************************** 模块名:I2C总线驱动 型号:I2C 功能描述 ...
- I2C总线协议的软件模拟实现方法
I2C总线协议的软件模拟实现方法 在上一篇博客中已经讲过I2C总线通信协议,本文讲述I2C总线协议的软件模拟实现方法. 1. 简述 所谓的I2C总线协议的软件模拟实现方法,就是用软件控制GPIO的输入 ...
- I2C总线以及GPIO模拟I2C
·I2C总线的一些特征: 1. 只要求两条总线,一条串行数据线(SDA),一条串行时钟线(SCL) 2. 两个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机系统软件设定的地址:主机可 ...
- STM32F4XX中断方式通过IO模拟I2C总线Master模式
STM32的I2C硬核为了规避NXP的知识产权,使得I2C用起来经常出问题,因此ST公司推出了CPAL库,CPAL库在中断方式工作下仅支持无子地址 的器件,无法做到中断方式完成读写大部分I2C器件.同 ...
- 51单片机 | 基于I2C总线的秒表模拟应用
———————————————————————————————————————————— 参考地址: http://blog.csdn.net/junyeer/article/details/4648 ...
- I2C总线完全版——I2C总线的结构、工作时序与模拟编程
I2C总线的结构.工作时序与模拟编程 I2C总线的结构.工作时序与模拟编程I2C总线(Inter Integrated Circuit)是飞利浦公司于上个世纪80年代开发的一种"电路板级&q ...
- Linux设备驱动模型之I2C总线
一.I2C子系统总体架构 1.三大组成部分 (1)I2C核心(i2c-core):I2C核心提供了I2C总线驱动(适配器)和设备驱动的注册.注销方法,提供了与具体硬件无关的I2C读写函数. (2)I2 ...
- i2c总线驱动,总线设备(适配器),从设备,从设备驱动的注册以及匹配
常用链接 我的随笔 我的评论 我的参与 最新评论 我的标签 随笔分类 ARM裸机(13) C(8) C++(8) GNU-ARM汇编 Linux驱动(24) Linux应用编程(5) Makefile ...
随机推荐
- JForum 2.19源码部署到eclipse
前两天在研究免费论坛,通过oschina和相关的文档查阅,最终选择了jforum,首先他是java写的,其次方便二次开发,而且有些论坛的源码都已经不在维护了,jforum最近几个月还是有更新的,但是从 ...
- nginx 安装部署
1. 安装passenger:sudo gem install passenger 2. 找到passenger的安装目录,一般是 cd /var/lib/gems/2.0.0/gems/passe ...
- innodb对update的处理
当更新非聚集索引上记录 和 聚集索引上的主键时,是标记删除,然后插入新的记录 当更新聚集索引上的非主键列时,是updated-in-place,也就是说原地修改,不会插入新记录. 之前一直以为都是以标 ...
- 关于Eclipse中的开源框架EMF(Eclipse Modeling Framework)
Eclipse项目本身可以划分为4个主要的子项目:Equinox,平台,Java开发工具(Java Development Tools,JDT)和插件开发环境(Plug-in Development ...
- #291 div.2
A.水题 数字翻转,将每一位大于等于5的数字t翻转成9-t,注意不要有前导0,且翻转后数字的位数不变(即9999->9000...刚开始以为应该翻转成0了= =) #include<ios ...
- 练习题之CyclicBarrier与CountDownLatch
一.CyclicBarrier使用 new Thread().start(); new Thread(new Runnable() {},"XXX").start(); publi ...
- oracle“记录被另一个用户锁住”
1.查看数据库锁,诊断锁的来源及类型: select object_id,session_id,locked_mode from v$locked_object; 或者用以下命令: select b. ...
- 使用MVCJqGrid的心得
最近公司网站进行升级,项目要用.net mvc,mysql和轻量级orm框架dapper.由于美工页面出不来啊,让我先写简单写写后台的列表,同事说用MvcJqGrid,也得到了架构的同意. 可是不得不 ...
- VMware下LINUX的虚拟机增加磁盘空间
先关闭虚拟机电源,做如下设置:“ 虚拟机”--“虚拟机设置”--“磁盘”--“扩展” 可以随意添加你需要增到到的磁盘大小(如15Gb,表示磁盘总量,包含原来的磁盘容量); 再重启电源进入系统做如下步骤 ...
- ###学习《C++ Primer》- 3
点击查看Evernote原文. #@author: gr #@date: 2014-10-04 #@email: forgerui@gmail.com Part 3: STL泛型算法(第10章) 一. ...