藍橋杯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;
}