实验(十二)AT24C02驱动实验

一.实验目的、内容、仪器

实验目的:了解AT24C02芯片以及原理

实验内容:1.通过按键驱动AT24C02在数码管上显示数字。

                    2.通过按键对存储的数字进行加,减,清零等操作

实验仪器:7SEG-MPX8-CC:八位数码管共阴极,AT89C52:52单片机,RESPACK-8:排阻,RES:电阻,74HC138:译码器,74HC245:总线收发器,AT24C02:2K位串行CMOS E2PROM。

二.硬件原理

 

 

三.程序流程图

 

 四.代码实现

#include "public.h"
#include "24c02.h"
#include "key.h"
#include "smg.h"
#define EEPROM_ADDRESS	0	//定义数据存入EEPROM的起始地址
/*
* 函 数 名       : main
* 函数功能		 : 主函数
*/
void main()
{	
	u8 key_temp=0;
  u8 save_value=0;
	u8 save_buf[3];

	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[2]=save_value/100;
		save_buf[1]=save_value%100/10;
		save_buf[0]=save_value%100%10;
		smg_display(save_buf,6);
	}		
}

五.实验步骤

(1)了解AT24C02芯片以及原理

(2)搭建仿真电路,勾选debug,建立keil工程,选择单片机型号

(3)给工程创建源码文件,并以.c结尾,添加文件到源组里

(4)生成hex文件,点击魔术棒,在output中勾选Create HRX_File

(5)对代码进行编译,调试debug,点击USE,在下拉菜单里选中“Proteus VSM Monitor 一 51 ”进行设置

(6)将程序导入到单片机中运行,双击单片机,选择生成的hex文件

(7)在keil中启动调试,开始运行,观察proteus中的电路

(8)点开串口助手,选择接口,调节波特率,选择生成的hex文件进行下载。

(9)打开串口,点击文字模式,发送数据

六.结果及讨论

AT24C02通信方式为IIC通信,是EEPROM芯片,可以实现数据的掉电保存,对其写入和读取数据时只需对它的地址写入和读出就行,读出的数据可以保存在数组里面,操作只需对数组进行操作

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AT24C256是一种串行EEPROM存储芯片。驱动代码需要实现读取和写入AT24C256的功能。 首先,需要定义本次驱动所使用的I2C总线地址、读写命令、以及AT24C256的内存地址。代码如下: ``` #include <Wire.h> #define EEPROM_I2C_ADDR 0x50 #define READ_CMD B01000000 #define WRITE_CMD B01000000 #define START_MEM_ADDR 0x0000 ``` 然后,需要实现写入函数,实现向AT24C256写入数据的功能。代码如下: ``` void writeEEPROM(int addr, byte data) { Wire.beginTransmission(EEPROM_I2C_ADDR); Wire.write(WRITE_CMD | ((addr >> 8) & 0x7)); Wire.write((byte)(addr & 0xFF)); Wire.write(data); Wire.endTransmission(); delay(20); } ``` 该函数的参数代表写入的内存地址和数据。首先,函数通过I2C总线向AT24C256发送一个开始信号,然后写入内存地址和数据,最后发送结束信号。 接下来是读取函数,实现从AT24C256读取数据的功能。代码如下: ``` byte readEEPROM(int addr) { Wire.beginTransmission(EEPROM_I2C_ADDR); Wire.write(READ_CMD | ((addr >> 8) & 0x7)); Wire.write((byte)(addr & 0xFF)); Wire.endTransmission(); delay(20); Wire.requestFrom(EEPROM_I2C_ADDR, 1); byte data = Wire.read(); return data; } ``` 该函数的参数代表读取的内存地址。首先,函数通过I2C总线向AT24C256发送读取命令和内存地址,然后等待20ms避免溢出。接下来从AT24C256读取1个字节的数据并返回。 最后,需要在主程序中通过调用这两个函数来实现AT24C256的读写功能。例如,写入数据"10010"到AT24C256的地址0x05: ``` void setup() { Wire.begin(); Serial.begin(9600); writeEEPROM(0x05, B10010); } void loop() { byte data = readEEPROM(0x05); Serial.println(data); delay(500); } ``` 以上就是关于AT24C256驱动代码的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值