蓝桥杯单片机进阶

您所在的位置:网站首页 pcf8591测电压 蓝桥杯单片机进阶

蓝桥杯单片机进阶

2023-11-11 02:06| 来源: 网络整理| 查看: 265

pcf8591芯片电路:

在板子上的位置:

 

打开蓝桥杯竞赛官方提供的芯片手册可以找到以上两个图, 从第三个图我们可以知道芯片的地址前面4位是固定的1001即为9,后面分别是A2,A1,A0,从上面第一个图我们可以看到A2,A1,A0是接地的,所以为000,最后一位R/W是读写控制位,当我们给它发0的时候是写,发1的时候是读。

所以我们可以由上面知道:当我们需要通过单片机给pcf8591写的时候指令为0x90;需要读取pcf8591上的数据的时候指令为0x91。

单片机和pcf8591(A/D,D/A转换芯片)进行通信时,采取的是双总线iic通信。由上面第一个图我们可以知道,pcf8591芯片上的数据总线SDA与单片机的引脚P2^1连接,时钟总线SCL与单片机的引脚P2^0相连接。

由于比赛所用单片机无iic总线硬件设施,我们需要用软件来模拟iic通讯,当然在比赛的时候提供的资料包括了iic总线的底层驱动程序,我们只需要把它加进来调用已经封装好的函数就行了。

下面是官方提供的iic.c文件:

/* 程序说明: IIC总线驱动程序 软件环境: Keil uVision 4.10 硬件环境: CT107单片机综合实训平台 8051,12MHz 日 期: 2011-8-9 */ #include "reg52.h" #include "intrins.h" #define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();} #define SlaveAddrW 0xA0 #define SlaveAddrR 0xA1 //总线引脚定义 sbit SDA = P2^1; /* 数据线 */ sbit SCL = P2^0; /* 时钟线 */ //总线启动条件 void IIC_Start(void) { SDA = 1; SCL = 1; somenop; SDA = 0; somenop; SCL = 0; } //总线停止条件 void IIC_Stop(void) { SDA = 0; SCL = 1; somenop; SDA = 1; } //应答位控制 void IIC_Ack(bit ackbit) { if(ackbit) { SDA = 0; } else { SDA = 1; } somenop; SCL = 1; somenop; SCL = 0; SDA = 1; somenop; } //等待应答 bit IIC_WaitAck(void) { SDA = 1; somenop; SCL = 1; somenop; if(SDA) { SCL = 0; IIC_Stop(); return 0; } else { SCL = 0; return 1; } } //通过I2C总线发送数据 void IIC_SendByte(unsigned char byt) { unsigned char i; for(i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3