//-----------------------------------------------------------------

//        名称: I2C接口存储器AT24C04读写与显示(4片)

//-----------------------------------------------------------------

//        说明: 按下K1-K4按键时,前两个分别向第1,2片AT24C04中写入400个随机字节

//                  后2个按键分别写第3,4片AT24C04,先写入200个0x01,再写入200个0x02

//                  写入后接着读取并显示.(400个字节的地址范围: 0x0000~0x018F)

//

//-----------------------------------------------------------------

#define INT8U  unsigned char

#define INT16U unsigned int

#include

#include

#include

#include

sbit K1 = P3^3;                //四个操作按键定义

sbit K2 = P3^4;

sbit K3 = P3^5;

sbit K4 = P3^6;

INT16U r = 0;                //满20个字节换行控制变量

//AT24C04相关函数

extern void Random_Write(INT8U Dev_Addr,INT16U mem_addr,INT8U dat);

extern INT8U Random_Read(INT8U Dev_Addr,INT16U mem_addr);

extern void Sequential_Read(INT8U Dev_Addr,INT16U mem_addr,INT16U N);

//-----------------------------------------------------------------

// 延时函数

//-----------------------------------------------------------------

void delay_ms(INT16U x) {INT8U t; while(x--) for(t = 0; t<120; t++);}

//-----------------------------------------------------------------

// 向串口发送1字节

//-----------------------------------------------------------------

void PutChar(INT8U c) {        SBUF = c; while( TI == 0 ); TI = 0;}

//-----------------------------------------------------------------

// 向串口发送字符串

//-----------------------------------------------------------------

void PutStr(INT8U *s) { while(*s) PutChar(*s++); }

//-----------------------------------------------------------------

// sprintf对%2X格式支持不稳定,编译时有时可以输出正确结果,有时则不正常

// sprintf(s,"%02X ",(INT8U)Random_Read(0xA0,i)); PutStr(s);

// 故改用下面的函数实现十六进制形式显示所读取的字节

//-----------------------------------------------------------------

void Show_HEX(INT8U dat)

{

}

//-----------------------------------------------------------------

// 主程序

//-----------------------------------------------------------------

void main()

{

INT16U i; char s[] = "NO.X\r\n";

INT8U n = 0, ChipNo = 0;

//串口配置

SCON = 0x40;        TMOD = 0x20;        PCON = 0;

TH1 = 0xFD;                TL0 = 0xFD;

TI = 0;                        TR1 = 1;

srand(30);                //随机种子

PutStr("\r\n>>> Press K1~K4, Write/Read No.1~4 AT24C04...\r\n ");

while(1)

{        if ((P3 & 0xF0) != 0xF0)                //P3端口高4位按键状态检测

{

} else { delay_ms(10); continue; }

PutStr("\r\n\r\n>>> Write IIC, Waiting.........\r\n\r\n ");

//提示当前读取的AT24C04芯片号1~4(由0~3加1得到)

s[3] = ChipNo + '1'; PutStr(s);

switch (ChipNo)

{        case 0: case 1:         //K1,K2分别向第1,2片写入400个随机字节

case 2: case 3:         //K3,K4分别写第3,4片,写入200个0x01,0x02

}

PutStr("\r\n\r\n>>> Reading From IIC...........\r\n\r\n");

r = 0;                                                        //满20个字节换行显示控制变量归0

//从指定的AT24C04中读取400字节并发送串口显示,下面两种读取方法中,

//随机寻址单字节读取共400字节将明显慢于顺序连续读取400字节

}

}

存储器读写c语言程序,单片机IIC接口存储器AT24C04的读写和显示程序(详细注释)...相关推荐

  1. 51单片机 IIC OLED屏幕驱动+Proteus仿真+实物验证示例程序

    51单片机 IIC OLED屏幕驱动+Proteus仿真+实物验证示例程序 Proteus仿真效果 注意点击运行仿真后,图像刷新出来比较慢. 示例主程序 #include "REG51.h& ...

  2. 格子玻尔兹曼方法书中,计算机代码(Fortran语言)FDM的输出结果是什么,为什么显示程序“[25024] Console1.exe”已退出,返回值为 0 (0x0)。

    格子玻尔兹曼方法书中,计算机代码(Fortran语言)FDM的输出结果是什么,为什么显示程序"[25024] Console1.exe"已退出,返回值为 0 (0x0).

  3. 51单片机生成C语言矩形波,单片机产生方波、锯齿波、三角波程序

    单片机 产生方波.锯齿波.三角波程序 #include#define uchar unsigned char #define uint unsigned int unsigned char x=0,m ...

  4. 单片机三角波c语言程序,单片机产生方波、锯齿波、三角波程序

    单片机产生方波.锯齿波.三角波程序 #include #define uchar unsigned char #define uint unsigned int unsigned char x=0,m ...

  5. 用四位led数码管作显示器的篮球比赛24秒计时器求c语言代码,单片机编程控制LED七段数码管作显示的篮球赛计时计分系统...

    本次设计用由AT89C51编程控制LED七段数码管作显示的球赛计时计分系统.系统应具有赛程定时设置,赛程时间暂停,及时刷新甲.乙双方的成绩以及赛后成绩暂存等功能. 内容包括:显示.键盘.时钟等内容设计 ...

  6. 51单片机独立按键数码管可调时钟显示程序

    /************************************************************************** 独立按键数码管时钟显示程序 ********** ...

  7. c语言期中项目实战二—简易扫雷,思路分析加代码详细注释

    c语言期中项目实战二-简易扫雷,思路分析+代码详细注释 游戏介绍 项目步骤 模块化编程 设置菜单 设置棋盘 打印棋盘 布置雷 排查雷 总结及总代码和详细注释 游戏介绍 扫雷这个经典游戏,直到现在仍有很 ...

  8. kiel实现c语言编程,单片机实验1(Kiel-软件的使用和C程序调试)教学文案(18页)-原创力文档...

    单片机原理与接口技术实验 实验一:Kiel 软件的使用和C程序调试一.实验目的: 1.通过实验学会用C语言进行程序的设计. 2.学会应用keil-uvision集成调试软件对C语言程序进行调试.掌握C ...

  9. PH值检测C语言程序,单片机PH值检测鱼缸自动换水系统程序

    /******************** (C) COPYRIGHT 2015 Silicone shell electronic studio ************************** ...

最新文章

  1. 从Github一开源项目ADSEC【学习域渗透攻防基础】
  2. Hadoop 2.4.1+HBase 0.98.6.1 分布式安装
  3. BootStrap 学习笔记(一)
  4. 10通信端口感叹号_工程现场通信总线布线、压接规范
  5. java 分析java死锁_有益的CountDownLatch和棘手的Java死锁
  6. 实现二维码-完整三种编码流程加代码解析(javascript)
  7. TensorFlow实现卷积、池化操作
  8. salt把返回写入到mysql
  9. asp.net整体运行机制详解
  10. python模块_python模块介绍
  11. 用计算机弹出记事本,为何电脑开机会弹出desktop的记事本出来的
  12. Qt 打印文档(PDF)
  13. TapTap推广统计逻辑
  14. 怎么把记事本内容导出python_怎么把记事本内容导出python
  15. Python的面向对象、模块和包
  16. “(CRON) info (No MTA installed, discarding output)”
  17. 阿丹学理财之财富认知
  18. OpenCV-Python学习(18)—— OpenCV 图像几何变换之图像平移(cv.warpAffine)
  19. 使用svg创建动态水印内容
  20. Windows 安装MySQL 8.0 超详细教程(mysql 8.0.30)

热门文章

  1. 常用于应届生面试的24道面试题
  2. 视频流媒体服务器EasyNVR直播平台如何搭建幼儿园网络监控系统?
  3. 2021第五届蓝帽杯初赛部分题目wp
  4. 再探 set/map
  5. 农场一头母牛,母牛每年生产一头小母牛,小母牛5年后可以产母牛,n年后有多少头牛。递归思维解法
  6. x-studio(Lua调试器,粒子编辑器,UI编辑器,代码编辑器,csb恢复工具)
  7. IDS反病毒与APT的具体介绍
  8. expand linux,Expand和Unexpand命令在Linux下的使用示例
  9. 数学建模美赛写作指导20篇(七)-美赛优缺点英文表达
  10. 将Chrome插件Momentum背景图片设为桌面壁纸