#define uchar unsigned char
#define uint unsigned int
#include <reg52.h>
#include <stdio.h>
#include <absacc.h>
sbit scl=P3^5; //24c02 SCL
sbit sda=P3^4; //24c02 SDA
sbit DOG=P1^7; //狗
uchar x24c02_read(uchar address); //从24c02的地址address中读取一个字节数据
void x24c02_write(uchar address,uchar info); //向24c02的address地址中写入一字节数据info
void x24c02_init(); //24c02初始化子程序
void delay1(uchar x);
void flash();
void x24c01_init();
void start();
void stop();
void writex(uchar j);
uchar readx();
void clock();
/**************显示程序*********/
sbit sda1=P3^0;
sbit clock1=P3^1;
uchar num[6];
uchar sdata1;
/********************************************************/
/**名称:delay1(); **/
/**功能:延时程序 **/
/********************************************************/
void delay1(uchar x)
{
uint i;
for(i=0;i<x;i++);
DOG=~DOG;
}
/********************************************************/
/**名称:flash(); **/
/**功能:闪烁程序 **/
/********************************************************/
void flash()
{
// uchar u;
DOG=~DOG;
}
/********************************************************/
/**名称:x24c02_init() **/
/**功能:x24c02初始化 **/
/********************************************************/
void x24c02_init()
{
scl=1; flash(); sda=1; flash();
}
/********************************************************/
/**名称:start() **/
/**功能:I2C开始 **/
/********************************************************/
void start()
{
sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();
}
/********************************************************/
/**名称:stop() **/
/**功能:I2C停止 **/
/********************************************************/
void stop()
{
sda=0; flash(); scl=1; flash(); sda=1; flash();
}
/********************************************************/
/**名称:writex(uchar j) **/
/**功能:I2C写 **/
/********************************************************/
void writex(uchar j)
{
uchar i,temp;
temp=j;
for (i=0;i<8;i++){
temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();
}
scl=0; flash(); sda=1; flash();
}
/********************************************************/
/**名称:readx() **/
/**功能:I2C读 **/
/********************************************************/
uchar readx()
{
uchar i,j,k=0;
scl=0; flash(); sda=1;
for (i=0;i<8;i++){
flash(); scl=1; flash();
if (sda==1) j=1;
else j=0;
k=(k<<1)|j; scl=0;
}
flash(); return(k);
}
/********************************************************/
/**名称:clock() **/
/**功能:I2C时钟 **/
/********************************************************/
void clock()
{
uchar i=0;
scl=1; flash();
while ((sda==1)&&(i<255))i++;
scl=0; flash();
}
/********************************************************/
/**名称:x24c02_read(uchar address) **/
/**功能:读x24c02 **/
/********************************************************/
uchar x24c02_read(uchar address)
{
uchar i;
start(); writex(0xa0);
clock(); writex(address);
clock(); start();
writex(0xa1); clock();
i=readx(); stop();
delay1(100);
return(i);
}
/********************************************************/
/**名称:x24c02_write(uchar address,uchar info) **/
/**功能:写x24c02 **/
/********************************************************/
void x24c02_write(uchar address,uchar info)
{
EA=0;
start(); writex(0xa0);
clock(); writex(address);
clock(); writex(info);
clock(); stop();
EA=1;
delay1(500);
}
/**************显示程序*********/
void disp(void)
{
uchar dat;
uchar k,i;
uchar code LEDValue[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0-9
uchar data num[6];
num[0]=0;
num[1]=0;
num[2]=0;
num[3]=sdata1/100;
sdata1=sdata1%100;
num[4]=sdata1/10;
num[5]=sdata1%10;
for(k=0;k<=5;k++)
{
dat=LEDValue[num[5-k]];
for (i=1;i<=8;i++)
{
sda1=(bit)(dat&0x01);
clock1=0;
clock1=1;
dat=dat>>1;
}
}
}
void delay11(uint del)
{
for(del;del>0;del--);
}
void main(void)
{
uchar adddd=0x00,i;
x24c02_init();
for(i=0;i<16;i++)
{ x24c02_write(adddd,i);
adddd++;
}
adddd=0x10;
for(i=0;i<16;i++)
{ x24c02_write(adddd,i+16);
adddd++;
}
adddd=0x20;
for(i=0;i<16;i++)
{ x24c02_write(adddd,i+32);
adddd++;
}
adddd=0x00;
for(i=0;i<48;i++)
{sdata1=x24c02_read(adddd);
disp();
delay11(130000);
adddd++;}
while(1);
}
eeprom.rar_89c52_EEPROM读写程序_at89c52_eeprom_i2c for display
版权申诉
111 浏览量
2022-09-20
14:51:44
上传
评论
收藏 2KB RAR 举报
四散
- 粉丝: 49
- 资源: 1万+
最新资源
- 基于STM32F103C8T6单片机蓄电池在线监测系统主板硬件(原理图+PCB)工程文件.zip
- mysql大纲资料.txt
- c++大纲资料.txt
- 效率工具bat脚本实现日志提取
- MyBatis 中动态 SQL 的示例
- STM8L101F3P6单片机+CC1100模块433M遥控器设计硬件(原理图+PCB)工程文件.zip
- 上传下载铁人下载系统 Liuxing 1.0-liuxing1.0.rar
- 南京邮电大学数学实验实力雄厚,凭借其优秀的师资力量、丰富的实践教学资源和卓越的科研成果,成为国内一流的数学实验教学和科研基地
- 【火爆朋友圈的今天吃什么源码 v1.0】随机的为用户带来每一天的用餐选择和推荐.rar
- MPU6050中文版数据手册
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0