lpc2138的iic实验
时间: 2024-06-17 11:05:06 浏览: 14
LPC2138是一款基于ARM7TDMI-S核心的微控制器,具有丰富的外设和功能。其中,I2C总线接口(也称为IIC)是LPC2138的一个重要外设。它可以用于连接各种I2C器件,如温度传感器、EEPROM存储器等。
在LPC2138上进行I2C实验,需要先配置LPC2138的GPIO口和I2C接口。具体步骤如下:
1. 配置GPIO口
要使用I2C接口,需要先配置好SCL和SDA两个引脚。在LPC2138中,这两个引脚的GPIO口可以选择P0.0和P0.1,也可以选择P0.19和P0.20。配置时需要将这两个GPIO口设置为开漏输出模式。
2. 配置I2C接口
在LPC2138中,I2C接口由I2C0和I2C1两个模块组成。在使用前需要先使能对应的模块,并设置好时钟和波特率。具体的配置可以参考LPC2138的用户手册。
3. 进行I2C实验
一般来说,I2C实验需要连接一个I2C器件,如温度传感器。通过I2C接口发送指令,读取传感器数据,然后进行处理和显示。具体的实验流程可以参考相应的实验教材或者网上的教程。
相关问题
lpc1788 iic例程
你好!关于LPC1788的IIC例程,你可以参考以下示例代码来进行开发:
```c
#include "lpc17xx_i2c.h"
#include "lpc17xx_pinsel.h"
#define I2CDEV LPC_I2C2
void i2c_init(void)
{
PINSEL_CFG_Type PinCfg;
I2C_Init(I2CDEV, 100000); // 设置I2C速率为100kHz
PinCfg.OpenDrain = PINSEL_PINMODE_OPENDRAIN;
PinCfg.Pinmode = PINSEL_PINMODE_PULLUP;
PinCfg.Funcnum = PINSEL_FUNC_2;
PinCfg.Pinnum = 10;
PinCfg.Portnum = 0;
PINSEL_ConfigPin(&PinCfg); // 配置SCL引脚
PinCfg.Pinnum = 11;
PINSEL_ConfigPin(&PinCfg); // 配置SDA引脚
I2C_Cmd(I2CDEV, ENABLE);
}
void i2c_start(void)
{
I2C_M_SETUP_Type transferMCfg;
uint8_t start_buf[1] = {0x00};
transferMCfg.sl_addr7bit = SLAVE_ADDR;
transferMCfg.tx_data = start_buf;
transferMCfg.tx_length = 1;
transferMCfg.rx_data = NULL;
transferMCfg.rx_length = 0;
transferMCfg.retransmissions_max = 3;
I2C_MasterTransferData(I2CDEV, &transferMCfg, I2C_TRANSFER_POLLING);
}
void i2c_stop(void)
{
I2C_M_SETUP_Type transferMCfg;
uint8_t stop_buf[1] = {0x00};
transferMCfg.sl_addr7bit = SLAVE_ADDR;
transferMCfg.tx_data = stop_buf;
transferMCfg.tx_length = 1;
transferMCfg.rx_data = NULL;
transferMCfg.rx_length = 0;
transferMCfg.retransmissions_max = 3;
I2C_MasterTransferData(I2CDEV, &transferMCfg, I2C_TRANSFER_POLLING);
}
```
以上代码是一个简单的LPC1788的IIC初始化及发送起始信号和停止信号的例程。请注意,这只是一个基本的例子,你需要根据你的具体设备和需求来进行修改和扩展。
希望能对你有所帮助!如果你还有其他问题,请随时提问。
lpc2138流水灯代码
LPC2138是一款ARM7内核的微控制器,下面是LPC2138的流水灯代码:
```
#include<lpc213x.h>
void delay(unsigned int count)
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<1000;j++);
}
int main()
{
unsigned int i;
IO1DIR=0xffffffff; //配置P1.16~P1.23为输出
while(1)
{
for(i=16;i<24;i++) //从P1.16灯开始亮
{
IO1SET=(1<<i); //将当前灯点亮
delay(100); //延时
IO1CLR=(1<<i); //将当前灯熄灭
}
}
return 0;
}
```
这段代码通过控制LPC2138的GPIO,依次点亮P1.16~P1.23的LED灯,实现流水灯效果。其中`IO1SET`用于将指定的GPIO置高,`IO1CLR`用于将指定的GPIO置低,`IO1DIR`用于配置GPIO为输入或输出方向,具体使用可以参考LPC2138的数据手册。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)