使用6818芯片,编写C语言函数int led(),使得D7与D10发光二极管出现同时亮同时灭的现象,D7对应的是GPIOB26,D10对应的是GPIOC12
时间: 2023-06-26 20:08:09 浏览: 68
以下是使用6818芯片,编写C语言函数int led()的代码:
```
#include "wiringPi.h"
int led() {
wiringPiSetup(); // 初始化wiringPi库
pinMode(26, OUTPUT); // 设置GPIOB26为输出引脚,对应D7
pinMode(71, OUTPUT); // 设置GPIOC12为输出引脚,对应D10
while (1) {
digitalWrite(26, HIGH); // D7发光二极管亮
digitalWrite(71, HIGH); // D10发光二极管亮
delay(500); // 延时0.5秒
digitalWrite(26, LOW); // D7发光二极管灭
digitalWrite(71, LOW); // D10发光二极管灭
delay(500); // 延时0.5秒
}
return 0;
}
```
在函数中,我们使用了wiringPi库来控制GPIO引脚。首先,我们需要初始化wiringPi库。接着,使用pinMode()函数将GPIOB26和GPIOC12设置为输出引脚,对应D7和D10。然后,我们通过digitalWrite()函数来控制GPIO引脚输出高低电平,从而控制D7和D10发光二极管的亮灭。最后,使用delay()函数来实现延时效果,使得D7和D10发光二极管同时亮同时灭。
相关问题
编写C语言函数int led(),使得D7与D10发光二极管出现同时亮同时灭的现象,D7对应的是GPIOB26,D10对应的是GPIOC12
假设你使用的是STM32单片机,可以按照以下方式编写函数:
```c
#include "stm32f10x_gpio.h"
int led(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// 使能GPIOB和GPIOC的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);
// 配置GPIOB26和GPIOC12为推挽输出模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_Init(GPIOB, &GPIO_InitStructure);
while (1)
{
// D7和D10同时亮
GPIO_SetBits(GPIOC, GPIO_Pin_12);
GPIO_SetBits(GPIOB, GPIO_Pin_14);
delay_ms(500);
// D7和D10同时灭
GPIO_ResetBits(GPIOC, GPIO_Pin_12);
GPIO_ResetBits(GPIOB, GPIO_Pin_14);
delay_ms(500);
}
}
```
需要注意的是,在上述代码中使用了一个名为`delay_ms`的函数,它用于延时。如果你的工程中没有此函数,可以自行编写。例如:
```c
void delay_ms(uint16_t ms)
{
uint16_t i,j;
for(i=0;i<ms;i++)
for(j=0;j<1141;j++);
}
```
此函数会让程序暂停一段时间,以实现延时效果。
详见6818芯片手册,试编写C语言函数int led(),使得下图D7与D10发光二极管出现同时亮同时灭的现象?
首先,需要明确D7和D10分别接在6818芯片的哪些引脚上,以及这些引脚的电平控制方式。假设D7接在P1口的第3个引脚上,D10接在P1口的第6个引脚上,且这些引脚是通过输出高低电平来控制发光二极管的亮灭。
那么,可以编写如下的C语言函数来实现D7和D10同时亮同时灭:
```c
#include <reg6818.h>
#define LED_DELAY 50000
int led()
{
while (1) {
P1 |= (1 << 3) | (1 << 6); // P1.3和P1.6输出高电平,D7和D10同时亮
for (int i = 0; i < LED_DELAY; i++); // 延时一段时间
P1 &= ~((1 << 3) | (1 << 6)); // P1.3和P1.6输出低电平,D7和D10同时灭
for (int i = 0; i < LED_DELAY; i++); // 延时一段时间
}
}
```
该函数包含一个无限循环,其中通过控制P1口的第3个和第6个引脚的输出状态来实现D7和D10的亮灭。为了让D7和D10同时亮同时灭,需要在两个输出状态的设置之间加入一个适当的延时,这里使用了一个简单的计数器循环来实现。