蓝桥杯STC基础代码-EEPROM和数模转换

上一章-蓝桥杯STC基础代码-温度传感器

文章地址

EEPROM和数模转换

简介

因为EEPROM跟数模转换都是通过 iic控制的,所以我把这两个放到一起。
利用好赛方给的 iic.c ,iic.h,基本问题不大。

void IIC_Start(void); 
void IIC_Stop(void);  
bit IIC_WaitAck(void);  
void IIC_SendAck(bit ackbit); 
void IIC_SendByte(unsigned char byt); 
unsigned char IIC_RecByte(void); 

iic控制的过程都是有规律的,我把他分为读跟写。
:

等待响应
等待响应
等待响应
等待响应
iic 开始
发送芯片地址
发送数据
iic 停止

:

等待响应
等待响应
等待响应
等待响应
等待响应
答复1
iic 开始
发送芯片地址
iic 开始
发送读取命令
接收数据
iic 停止

EEPROM

EEPROM芯片地址

EEPROM是我们是用AT24C02芯片控制的,可以储存数据,这个在比赛中经常会用到。操作起来不麻烦,分为写跟读操作。
我们首先要知道芯片的地址,忘记了可以查芯片手册。

这里是引用

我们开发板上面的芯片是2K的 ,所以芯片地址是0xa0

EEPROM操作流程

:

等待响应
等待响应
等待响应
iic 开始
发送芯片地址-0x0a0
发送数据
iic 停止
延时200ms

:

等待响应
等待响应
等待响应
等待响应
等待响应
答复1
iic 开始
发送芯片地址-0xa0
发送读取地址
iic 开始
发送读取命令 0xa1
接收数据
iic 停止

EEPROM操作代码

void Write_EERROM(u8 add ,u8  dat)
{
	IIC_Start();
	
	IIC_SendByte(0xa0);
	IIC_WaitAck();

	IIC_SendByte(add);
	IIC_WaitAck();	

	IIC_SendByte(dat);
	IIC_WaitAck();	

	IIC_Stop();
	
	Delay_OneWire(200);
}



u8 Read_EEPROM(u8 add)
{
	u8 temp;
	
	IIC_Start();
	
	IIC_SendByte(0xa0);
	IIC_WaitAck();

	IIC_SendByte(add);
	IIC_WaitAck();	
	
	IIC_Start();
	
	IIC_SendByte(0xa1);
	IIC_WaitAck();
		
	temp  =IIC_RecByte ();
	IIC_SendAck(1);	
	IIC_Stop();	

	return temp;
}

数模转换

简介

数模转换在比赛中也是很常见,比如说ADC读取电压,DAC控制电压。
我们开发板上面用的是PCF8591芯片。

这里是引用

可以看到芯片的地址是0x90

这里是引用

这是pcf芯片控制命令的说明
由于比赛板子,我们一般是单通道3
所以我们的控制命令一般都是 0x43

PCF8591操作流程

DAC:

等待响应
等待响应
等待响应
等待响应
iic 开始
发送芯片地址-0x090
发送命令-0x43
发送DAC数据
iic 停止

ADC:

等待响应
等待响应
等待响应
等待响应
等待响应
答复1
iic 开始
发送芯片地址-0x90
发送命令 0x43
iic 开始
发送读取数据命令-0x91
接收数据
iic 停止

PCF8591代码

void Set_DAC(u8 dac)
{
	IIC_Start();
	
	IIC_SendByte(0x90);
	IIC_WaitAck();
	
	IIC_SendByte(0x43);
	IIC_WaitAck();
	
	IIC_SendByte(dac);
	IIC_WaitAck();
	
	IIC_Stop();

}


u8 pcf_adc;

u8 Read_ADC(void)
{
	u8 temp;
	IIC_Start();
	
	IIC_SendByte(0x90);
	IIC_WaitAck();
	
	IIC_SendByte(0x43);
	IIC_WaitAck();
	
	IIC_Start();
	IIC_SendByte(0x91);
	IIC_WaitAck();
	
	temp = IIC_RecByte();
	IIC_SendAck(1);
	
	IIC_Stop();	
	pcf_adc = temp;
	return temp;
}

下一章-蓝桥杯STC基础代码-超声波和频率测量

文章地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章