×
单片机 > 单片机程序设计 > 详情

使用PCF8574扩展C8051F的I/O端口

发布时间:2024-05-01 发布时间:
|

系统功能

使用PCF8574扩展C8051F的I/O端口。


硬件设计

使用PCF8574扩展C8051F的I/O端口电路原理图


软件设计


下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解!

I2C(SMBus)详细程序请查看C8051F I2C(SMBus)程序。


//目标系统: 基于C8051F单片机

//应用软件: Silicon IDE / Keil

/*01010101010101010101010101010101010101010101010101010101010101010101

----------------------------------------------------------------------

实验内容:

使用PCF8574的输出端口接上8位LED指示灯查看CPU输出到PCF8574的数据是否正常

----------------------------------------------------------------------

硬件连接:

将PCF8574的P0~P7口和8位LED指示灯相连。

DVK501(PCF8574PrlPort) F320 EX

VCC --------- VCC

GND --------- GND

SDA --------- P1.0

SCL --------- P1.1

----------------------------------------------------------------------

注意事项:

(1)若有加载库程序,请将光盘根目录下的“library”下的“C8051F”文件夹拷到D盘

(2)请详细阅读:光盘根目录下的“说明书首页.htm”里的相应产品说明

----------------------------------------------------------------------

10101010101010101010101010101010101010101010101010101010101010101010*/


#define _DVK501_F320_EX_


#include

#include <..>

#include <..>

#include <..>

#include <..>


void main(void)

{

uchar wRdat; // Test counter

//uchar *rDdat;


PCA0MD &= ~0x40; // Clear watchdog timer enable

clock_external(); // Set oscillator in external,the clock is 12M

delay_ms(100);

Check_SDA();

XBR1 = 0x40; // Enable crossbar and weak pull-ups

SMBus_Init();

Enb_Interrupt();

wRdat = 0; // Output data counter


while (1)

{

/*Read_PCF8574(rDdat); // Read data

P2 = rDdat;*/

Write_PCF8574(wRdat); // Write data

wRdat++;

delay_ms (500);

}

}


void Write_PCF8574(uchar Data)

{

SMBus_Write(0x40,Data,0,1);

}


void Read_PCF8574(uchar *Data)

{

SMBus_Read(0x41,Data,1);

}



系统调试

把PCF8574的输出端口的前4个端口接到VCC,后4个端口接到GND,连接P2与8位LED指示灯查看现象。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机的抗干扰措施有哪些