蓝桥杯STC基础代码
上一章-蓝桥杯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控制的过程都是有规律的,我把他分为读跟写。
写:
读:
EEPROM
EEPROM芯片地址
EEPROM是我们是用AT24C02芯片控制的,可以储存数据,这个在比赛中经常会用到。操作起来不麻烦,分为写跟读操作。
我们首先要知道芯片的地址,忘记了可以查芯片手册。
我们开发板上面的芯片是2K的 ,所以芯片地址是0xa0
EEPROM操作流程
写:
读:
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:
ADC:
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;
}