“STM8 I2C与PCF8574通讯程序”的版本间的差异
(系统功能使用STM8的I2C与PCF8574通讯,并使用LED作出简单指示!(PCF8574是I2C与并口互转芯片)硬件设计本设计基于内部RC振荡器2M时钟作STM8定时器TIM4的时钟源进行I2C通讯LED控制电路原理图PCF8974原理图软件设计/* ...) |
小 (文本替换 - 替换“www.waveshare.net”为“{{SERVERNAME}}”) |
||
第15行: | 第15行: | ||
<table border="0" cellpadding="0" cellspacing="0" width="120"><tbody><tr><th align="center" bgcolor="#698192" class="white_12px_b" height="20" scope="col" style="font-size: 12px; color: rgb(255, 255, 255); line-height: 20px; font-family: Arial, Helvetica, sans-serif;">软件设计</th></tr></tbody></table> | <table border="0" cellpadding="0" cellspacing="0" width="120"><tbody><tr><th align="center" bgcolor="#698192" class="white_12px_b" height="20" scope="col" style="font-size: 12px; color: rgb(255, 255, 255); line-height: 20px; font-family: Arial, Helvetica, sans-serif;">软件设计</th></tr></tbody></table> | ||
/********************************************************************* | /********************************************************************* | ||
− | 微 雪 电 子 WaveShare <a class="Blue_2_12px_" href="http:// | + | 微 雪 电 子 WaveShare <a class="Blue_2_12px_" href="http://{{SERVERNAME}}/" style="color: rgb(7, 66, 184);">http://www.waveShare.net |
目标系统: 基于STM8单片机 | 目标系统: 基于STM8单片机 |
2019年11月19日 (二) 09:21的版本
<tbody></tbody>
使用STM8的I2C与PCF8574通讯,并使用LED作出简单指示!(PCF8574是I2C与并口互转芯片) | |
---|---|
<tbody></tbody>
| |
<tbody></tbody>
/********************************************************************* 微 雪 电 子 WaveShare <a class="Blue_2_12px_" href="http://wiki.diustou.com/" style="color: rgb(7, 66, 184);">http://www.waveShare.net 目标系统: 基于STM8单片机 应用软件: Cosmic CxSTM8 说 明: 若用于商业用途,请保留此段文字或注明代码来源 深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权
/* ------------------------------------------------------------------- 实验内容: 使用STM8的I2C与PCF8574T通讯,并使用LED作出简单指示。 硬件连接: 将PB口的LED指示灯使能开关切换到"ON"状态。 */
unsigned char i=0;
void I2C_Init(void) { I2C_FREQR=0x0f; I2C_CCRH=0x00; I2C_CCRL=0x50; I2C_TRISER=0x11; I2C_CR1|=0x01; I2C_Ack(); I2C_CR2|=0x08; } void I2C_Start(void) { I2C_busy(); I2C_start(); while(I2C_SBask==0); } void I2C_SendDAdr(u8 Add) { I2C_writebyte(Add); while(I2C_addrask==0); I2C_busy(); } void I2C_SendDat(u8 data) { I2C_writebyte(data); I2C_busy(); while(I2C_TxEask==0); } u8 I2C_RcvDat(void) { u8 i; while(I2C_RxNeask==0); abc: if(I2C_BTF==0x04) {i=I2C_DR;} else goto abc; if(I2C_BTF==0){} else goto abc; return i; } void PCF8574_Init(void) { I2C_Init(); } void PCF8574_WriteAByte(u8 data) { I2C_Start(); I2C_SendDAdr(0x40); I2C_SendDat(data); I2C_stop(); } void main(void) { u8 i=0x4c; PCF8574_Init(); while(1){PCF8574_WriteAByte(i);;i++;delay_ms(100);} } | |
<tbody></tbody>
|