51开发板如何把pc端串口发送的字符串储存在at24c02
时间: 2024-02-13 17:07:25 浏览: 69
首先,您需要在51开发板上连接一个AT24C02 EEPROM。然后,您需要编写51单片机的程序以实现串口通信和EEPROM的读写操作。
以下是实现串口通信和EEPROM读写操作的一些基本步骤:
1. 配置串口通信参数,包括波特率、数据位、停止位和校验位等。
2. 在程序中实现串口接收中断,以便在接收到PC端发送的字符串时能够及时处理。
3. 在接收到PC端发送的字符串后,将其存储到一个缓冲区中,然后将缓冲区中的数据写入EEPROM。
4. 实现EEPROM的读取操作,以便在需要时能够读取存储的字符串。
下面是一个简单的示例程序,可以实现串口通信和EEPROM读写操作:
```c
#include <reg51.h>
#define EEPROM_ADDR 0xA0
sbit SDA = P2^0;
sbit SCL = P2^1;
void delay(int n)
{
int i;
while(n--)
{
for(i=0; i<100; i++);
}
}
void i2c_start()
{
SDA = 1;
SCL = 1;
delay(5);
SDA = 0;
delay(5);
SCL = 0;
}
void i2c_stop()
{
SDA = 0;
SCL = 1;
delay(5);
SDA = 1;
delay(5);
}
void i2c_send(unsigned char dat)
{
unsigned char i;
for(i=0; i<8; i++)
{
SDA = (dat & 0x80) >> 7;
dat <<= 1;
SCL = 1;
delay(5);
SCL = 0;
delay(5);
}
SDA = 1;
SCL = 1;
delay(5);
SCL = 0;
}
unsigned char i2c_recv()
{
unsigned char i, dat = 0;
SDA = 1;
for(i=0; i<8; i++)
{
SCL = 1;
delay(5);
dat = (dat << 1) | SDA;
SCL = 0;
delay(5);
}
return dat;
}
void eeprom_write(unsigned char addr, unsigned char dat)
{
i2c_start();
i2c_send(EEPROM_ADDR);
i2c_send(addr);
i2c_send(dat);
i2c_stop();
delay(10);
}
unsigned char eeprom_read(unsigned char addr)
{
unsigned char dat;
i2c_start();
i2c_send(EEPROM_ADDR);
i2c_send(addr);
i2c_start();
i2c_send(EEPROM_ADDR | 0x01);
dat = i2c_recv();
i2c_stop();
return dat;
}
void uart_init()
{
TMOD = 0x20;
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1;
SM0 = 0;
SM1 = 1;
REN = 1;
EA = 1;
ES = 1;
}
void uart_send(unsigned char dat)
{
SBUF = dat;
while(!TI);
TI = 0;
}
void uart_recv() interrupt 4
{
static unsigned char buf[32];
static unsigned char idx = 0;
unsigned char ch = SBUF;
if(ch == '\r')
{
buf[idx] = '\0';
for(unsigned char i=0; i<idx; i++)
{
eeprom_write(i, buf[i]);
}
uart_send('\n');
idx = 0;
}
else
{
buf[idx++] = ch;
}
}
void main()
{
uart_init();
while(1);
}
```
这个程序实现了串口通信和EEPROM的读写操作。当接收到PC端发送的字符串后,程序会将其存储到EEPROM中。当需要读取存储的字符串时,可以使用`eeprom_read()`函数来读取指定地址上的数据。
阅读全文