仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- /**************************************************************************************
- 实验名称:I2C-EEPROM实验
- 接线说明:
- 实验现象:下载程序后,数码管右3位显示0,按K1键将数据写入到EEPROM内保存,
- 按K2键读取EEPROM内保存的数据,按K3键显示数据加1,按K4键显示数据清零,
- 最大能写入的数据是255。
- 注意事项:
- ***************************************************************************************/
- #include "public.h"
- #include "24c02.h"
- #include "key.h"
- #include "lcd1602.h"
- #include "stdio.h"
- #define EEPROM_ADDRESS 0 //定义数据存入EEPROM的起始地址
- /*******************************************************************************
- * 函 数 名 : main
- * 函数功能 : 主函数
- * 输 入 : 无
- * 输 出 : 无
- *******************************************************************************/
- void main()
- {
- char buffer[10];
- u8 key_temp=0;
- int save_value=0;
- int save_buf[3];
- lcd1602_init();//LCD1602初始化
- lcd1602_show_string(0,0,"24c02save");//第二行显示
- while(1)
- {
- key_temp=key_scan(0);
- if(key_temp==KEY1_PRESS)
- {
- at24c02_write_one_byte(EEPROM_ADDRESS,save_value);
- }
- else if(key_temp==KEY2_PRESS)
- {
- save_value=at24c02_read_one_byte(EEPROM_ADDRESS);
- }
- else if(key_temp==KEY3_PRESS)
- {
- save_value++;
- if(save_value==255)save_value=255;
- }
- else if(key_temp==KEY4_PRESS)
- {
- save_value=0;
- }
- save_buf[0]=save_value/100;
- save_buf[1]=save_value%100/10;
- save_buf[2]=save_value%100%10;
- sprintf(buffer,"%d%d%d",save_buf[0],save_buf[1],save_buf[2]);
- lcd1602_show_string(0,1,buffer);//第二行显示
- }
- }
复制代码
Keil代码与Proteus8.13仿真下载:
I2C-EEPROM实验LCD显示存储情况protues仿真.7z
(74.4 KB, 下载次数: 32)
|