N76E003 IIC OLED

#include "N76E003.h"#include "Common.h"#include "Delay.h"#include "SFR_Macro.h"#include "Function_define.h"#include "math.h"#include "oledfont.h"#define u8 unsigned char #define u32 unsigne...
摘要由CSDN通过智能技术生成

在这里插入图片描述

#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"
#include  "math.h"
#include "oledfont.h"


#define u8 unsigned char 
#define u32 unsigned int 

/*SCL    P1.3
SDA      P1.4*/
#define OLED_SCLK_Clr() SCL=0
#define OLED_SCLK_Set() SCL=1
#define OLED_SDIN_Clr() SDA=0
#define OLED_SDIN_Set()	SDA=1


#define SYS_CLK_EN              0
#define SYS_SEL                 2
#define SYS_DIV_EN              0                   //0: Fsys=Fosc, 1: Fsys = Fosc/(2*CKDIV)
#define SYS_DIV                 1
#define I2C_CLOCK               2
#define TEST_OK                 0x00
bit I2C_Reset_Flag;

#define OLED_CMD  0	//写命令
#define OLED_DATA 1	//写数据
#define OLED_MODE 0
#define SIZE 16
#define XLevelL		0x02
#define XLevelH		0x10
#define Max_Column	128
#define Max_Row		64
#define	Brightness	0xFF 
#define X_WIDTH 	128
#define Y_WIDTH 	64	


/**********************************************
//IIC GPIO Init
(必须配置为开漏模式,并加上拉电阻)
**********************************************/
void Init_I2C(void)
{
		P13_OpenDrain_Mode;					// Modify SCL pin to Open drain mode. don't forget the pull high resister in circuit
		P14_OpenDrain_Mode;					// Modify SDA pin to Open drain mode. don't forget the pull high resister in circuit
	
    /* Set I2C clock rate */
    I2CLK = I2C_CLOCK; 

    /* Enable I2C */
    set_I2CEN;                                   
}


/**********************************************
//IIC Start
**********************************************/
void IIC_Start()
{

	OLED_SCLK_Set() ;
	OLED_SDIN_Set();
	OLED_SDIN_Clr();
	OLED_SCLK_Clr();
}

/**********************************************
//IIC Stop
**********************************************/
void IIC_Stop()
{
	OLED_SCLK_Set() ;
	OLED_SDIN_Clr();
	OLED_SDIN_Set();	
}

/****************************************
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
使用N76E003开发I2C(或称为IIC)功能可以通过以下步骤进行: 1. 硬件连接:将N76E003的I2C引脚(SDA和SCL)连接到目标设备的I2C总线上。确保使用正确的电平转换电路(如电平转换器或电阻分压器)。 2. 配置I2C功能:在代码中配置N76E003的I2C功能。您需要设置I2C总线的时钟频率、从器件地址以及其他相关参数。可以使用N76E003的官方库或者自行编写I2C相关的驱动代码。 3. 初始化I2C:在代码的初始化部分,初始化I2C模块。这包括设置I2C引脚为I2C模式、配置I2C时钟等。 4. 发送数据:使用I2C发送数据到目标设备。这可以通过调用适当的函数,将数据写入I2C数据寄存器并发送到目标设备。 5. 接收数据:使用I2C接收来自目标设备的数据。这可以通过调用适当的函数,从I2C数据寄存器中读取数据。 6. 处理错误:在使用I2C通信时,可能会出现错误或超时情况。您可以在代码中处理这些错误情况,并采取适当的措施。 以下是一个简单的示例代码,用于向一个假设的I2C设备发送数据并接收响应: ```c #include <N76E003.h> #include <SFR_Macro.h> #include <Function_Define.h> #define I2C_SLAVE_ADDR 0x50 // 假设I2C从器件地址为0x50 void I2C_Init() { P03_OpenDrain_Mode; P04_OpenDrain_Mode; set_EI2C; I2CLK = 0x10; // 设置I2C时钟频率 set_EA; } void I2C_Start() { clr_SI; set_STA; // 启动I2C起始信号 while (!SI) ; clr_STA; } void I2C_Stop() { clr_SI; set_STO; // 发送I2C停止信号 } void I2C_WriteData(unsigned char data) { clr_SI; I2DAT = data; // 写入数据到I2C数据寄存器 while (!SI) ; } unsigned char I2C_ReadData() { clr_SI; set_AA; while (!SI) ; return I2DAT; // 从I2C数据寄存器中读取数据 } void main(void) { I2C_Init(); while (1) { I2C_Start(); I2C_WriteData(I2C_SLAVE_ADDR); I2C_WriteData(0x01); // 写入要发送的数据 I2C_Stop(); I2C_Start(); I2C_WriteData(I2C_SLAVE_ADDR | 0x01); // 设置读取模式 unsigned char receivedData = I2C_ReadData(); // 读取接收到的数据 I2C_Stop(); } } ``` 请注意,这只是一个简单的示例代码,具体的I2C开发需要根据目标设备的协议和要求进行详细的编写和调试。在编写代码之前,请确保您已经理解了N76E003的I2C功能和相关寄存器的使用方法,并参考相应的文档和参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值