/*EEPROM24C02, 程序将对存储器进行读和写,因此涉及到键盘程序,比较复杂,耐心学,
例子读取 24C02 内部数据,在数码管上显示,可通过按键来进行不同地址数据的读取和保
存*/
#include <reg51.h>
#include <intrins.h>
#define W24C02 0xA0 //存储器的写地址
#define R24C02 0xA1 //存储器的读地址
#define MSB 0x80 //8 位二进制最高位置 1
#define LSB 0x01 //8 位二进制最低位置 1
/********************/
sbit SDA=P3^6; //AT24C02 串行数据 5 脚
sbit SCL=P3^7; //AT24C02 串行时钟 6 脚
sbit SPK=P3^4; //蜂鸣器,按键用时蜂鸣
void I2C_write(unsigned char tmp); //向 I2C 总线写数据
unsigned char I2C_read(); //向 I2C 总线读数据
void I2C_ACK(bit tmp); //ACK 应答
void I2C_start(void); //I2C 传送数据的开始
void I2C_stop(void); //I2C 传送数据的结束
void _24c02menu(void); //当我们按下按键进入处理 I2C 数据时用的函数
void _24c02wdate(unsigned char tmp); // 当我们对 24C02 存储器进行写数据用到的函数
void display(unsigned char *lp,unsigned char lc);// 显示,在键盘程序里用过
void displaystr(unsigned char *lp,unsigned char lc);// 字符的显示函数,同上
void delay();// 延时子函数
void ReadKey(void); //扫描键盘 获取键值
unsigned char l_key=0xFF; //定义变量,存放键值
unsigned char l_keyold=0; //做为按键松开否的凭证
code unsigned char l_24C02[5]={0x5b,0x66,0x39,0x3f,0x5b};// 定义数组常量在数码管上显示
24C02
unsigned char l_address=0; //读 24C02 的地址变量
unsigned char l_tmpdate[6]={0,0,0x10,0,0,0}; //数组变量
code unsigned char table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};
//共阴数码管 0-9 a-f - 表
评论0
最新资源