/**
* @file gpio.c
* @brief GPIO驱动程序
* @author 王晓荣
* @version
* @date 2014-08-29
*/
#include <STC15F2K60S2.H>
#include "gpio.h"
/**
* @brief 引脚置位
* @param [in]gpio GPIO引脚
* @return None
*/
void gpio_config(struct GPIO gpio)
{
unsigned char pin = 1 << gpio.pin;
switch(gpio.port)
{
case GPIO_P0:
switch(gpio.mode)
{
case GPIO_PULL_UP: P0M1 &= ~pin; P0M0 &= ~pin; break;
case GPIO_IN_FLOATING: P0M1 |= pin; P0M0 &= ~pin; break;
case GPIO_OUT_OD: P0M1 |= pin; P0M0 |= pin; break;
case GPIO_OUT_PP: P0M1 &= ~pin; P0M0 |= pin; break;
default: break;
}
break;
case GPIO_P1:
switch(gpio.mode)
{
case GPIO_PULL_UP: P1M1 &= ~pin; P1M0 &= ~pin; break;
case GPIO_IN_FLOATING: P1M1 |= pin; P1M0 &= ~pin; break;
case GPIO_OUT_OD: P1M1 |= pin; P1M0 |= pin; break;
case GPIO_OUT_PP: P1M1 &= ~pin; P1M0 |= pin; break;
default: break;
}
break;
case GPIO_P2:
switch(gpio.mode)
{
case GPIO_PULL_UP: P2M1 &= ~pin; P2M0 &= ~pin; break;
case GPIO_IN_FLOATING: P2M1 |= pin; P2M0 &= ~pin; break;
case GPIO_OUT_OD: P2M1 |= pin; P2M0 |= pin; break;
case GPIO_OUT_PP: P2M1 &= ~pin; P2M0 |= pin; break;
default: break;
}
break;
case GPIO_P3:
switch(gpio.mode)
{
case GPIO_PULL_UP: P3M1 &= ~pin; P3M0 &= ~pin; break;
case GPIO_IN_FLOATING: P3M1 |= pin; P3M0 &= ~pin; break;
case GPIO_OUT_OD: P3M1 |= pin; P3M0 |= pin; break;
case GPIO_OUT_PP: P3M1 &= ~pin; P3M0 |= pin; break;
default: break;
}
break;
case GPIO_P4:
switch(gpio.mode)
{
case GPIO_PULL_UP: P4M1 &= ~pin; P4M0 &= ~pin; break;
case GPIO_IN_FLOATING: P4M1 |= pin; P4M0 &= ~pin; break;
case GPIO_OUT_OD: P4M1 |= pin; P4M0 |= pin; break;
case GPIO_OUT_PP: P4M1 &= ~pin; P4M0 |= pin; break;
default: break;
}
break;
case GPIO_P5:
switch(gpio.mode)
{
case GPIO_PULL_UP: P5M1 &= ~pin; P5M0 &= ~pin; break;
case GPIO_IN_FLOATING: P5M1 |= pin; P5M0 &= ~pin; break;
case GPIO_OUT_OD: P5M1 |= pin; P5M0 |= pin; break;
case GPIO_OUT_PP: P5M1 &= ~pin; P5M0 |= pin; break;
default: break;
}
break;
default:
break;
}
}
/**
* @brief 引脚置位
* @param [in]gpio GPIO引脚
* @return None
*/
void gpio_set_pin(struct GPIO gpio)
{
switch(gpio.port)
{
case GPIO_P0:
switch(gpio.pin)
{
case GPIO_PIN_0: P00 = 1; break;
case GPIO_PIN_1: P01 = 1; break;
case GPIO_PIN_2: P02 = 1; break;
case GPIO_PIN_3: P03 = 1; break;
case GPIO_PIN_4: P04 = 1; break;
case GPIO_PIN_5: P05 = 1; break;
case GPIO_PIN_6: P06 = 1; break;
case GPIO_PIN_7: P07 = 1; break;
default: break;
}
break;
case GPIO_P1:
switch(gpio.pin)
{
case GPIO_PIN_0: P10 = 1; break;
case GPIO_PIN_1: P11 = 1; break;
case GPIO_PIN_2: P12 = 1; break;
case GPIO_PIN_3: P13 = 1; break;
case GPIO_PIN_4: P14 = 1; break;
case GPIO_PIN_5: P15 = 1; break;
case GPIO_PIN_6: P16 = 1; break;
case GPIO_PIN_7: P17 = 1; break;
default: break;
}
break;
case GPIO_P2:
switch(gpio.pin)
{
case GPIO_PIN_0: P20 = 1; break;
case GPIO_PIN_1: P21 = 1; break;
case GPIO_PIN_2: P22 = 1; break;
case GPIO_PIN_3: P23 = 1; break;
case GPIO_PIN_4: P24 = 1; break;
case GPIO_PIN_5: P25 = 1; break;
case GPIO_PIN_6: P26 = 1; break;
case GPIO_PIN_7: P27 = 1; break;
default: break;
}
break;
case GPIO_P3:
switch(gpio.pin)
{
case GPIO_PIN_0: P30 = 1; break;
case GPIO_PIN_1: P31 = 1; break;
case GPIO_PIN_2: P32 = 1; break;
case GPIO_PIN_3: P33 = 1; break;
case GPIO_PIN_4: P34 = 1; break;
case GPIO_PIN_5: P35 = 1; break;
case GPIO_PIN_6: P36 = 1; break;
case GPIO_PIN_7: P37 = 1; break;
default: break;
}
break;
case GPIO_P4:
switch(gpio.pin)
{
case GPIO_PIN_0: P40 = 1; break;
case GPIO_PIN_1: P41 = 1; break;
case GPIO_PIN_2: P42 = 1; break;
case GPIO_PIN_3: P43 = 1; break;
case GPIO_PIN_4: P44 = 1; break;
case GPIO_PIN_5: P45 = 1; break;
case GPIO_PIN_6: P46 = 1; break;
case GPIO_PIN_7: P47 = 1; break;
default: break;
}
break;
case GPIO_P5:
switch(gpio.pin)
{
case GPIO_PIN_4: P54 = 1; break;
case GPIO_PIN_5: P55 = 1; break;
default: break;
}
break;
default:
break;
}
}
/**
* @brief 引脚清零
* @param [in]gpio GPIO引脚
* @return None
*/
void gpio_clr_pin(struct GPIO gpio)
{
switch(gpio.port)
{
case GPIO_P0:
switch(gpio.pin)
{
case GPIO_PIN_0: P00 = 0; break;
case GPIO_PIN_1: P01 = 0; break;
case GPIO_PIN_2: P02 = 0; break;
case GPIO_PIN_3: P03 = 0; break;
case GPIO_PIN_4: P04 = 0; break;
case GPIO_PIN_5: P05 = 0; break;
case GPIO_PIN_6: P06 = 0; break;
case GPIO_PIN_7: P07 = 0; break;
default: break;
}
break;
case GPIO_P1:
switch(gpio.pin)
{
case GPIO_PIN_0: P10 = 0; break;
case GPIO_PIN_1: P11 = 0; break;
case GPIO_PIN_2: P12 = 0; break;
case GPIO_PIN_3: P13 = 0; break;
case GPIO_PIN_4: P14 = 0; break;
case GPIO_PIN_5: P15 = 0; break;
case GPIO_PIN_6: P16 = 0; break;
case GPIO_PIN_7: P17 = 0; break;
default: break;
}
break;
case GPIO_P2:
switch(gpio.pin)
{
case GPIO_PIN_0: P20 = 0; break;
case GPIO_PIN_1: P21 = 0; break;
case GPIO_PIN_2: P22 = 0; break;
case GPIO_PIN_3: P23 = 0; break;
case GPIO_PIN_4: P24 = 0; break;
case GPIO_PIN_5: P25 = 0; break;
case GPIO_PIN_6: P26 = 0; break;
case GPIO_PIN_7: P27 = 0; break;
default: break;
}
break;
case GPIO_P3:
switch(gpio.pin)
{
case GPIO_PIN_0: P30 = 0; break;
case GPIO_PIN_1: P31 = 0; break;
case GPIO_PIN_2: P32 = 0; break;
case GPIO_PIN_3: P33 = 0; break;
case GPIO_PIN_4: P34 = 0; break;
case GPIO_PIN_5: P35 = 0; break;
case GPIO_PIN_6: P36 = 0; break;
case GPIO_PIN_7: P37 = 0; break;
default: break;
}
break;
case GPIO_P4:
switch(gpio.pin)
{
case GPIO_PIN_0: P40 = 0; break;
case GPIO_PIN_1: P41 = 0; break;
case GPIO_PIN_2: P42 = 0; break;
case GPIO_PIN_3: P43 = 0; break;
case GPIO_PIN_4: P44 = 0; break;
case GPIO_PIN_5: P45 = 0; break;
case GPIO_PIN_6: P46 = 0; break;
case GPIO_PIN_7: P47 = 0; break;
default: break;
}
break;
case GPIO_P5:
switch(gpio.pin)
{
case GPIO_PIN_4: P54 = 0; break;
case GPIO_PIN_5: P55 = 0; break;
default: break;
}
break;
default:
break;
}
}
/**
* @brief 读引脚
* @param [in]gpio GPIO引脚
*
没有合适的资源?快使用搜索试试~ 我知道了~
lcd.zip_STC单片机的LCD显示屏_digitronLCD
共68个文件
h:24个
c:22个
obj:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 22 浏览量
2022-09-20
23:19:41
上传
评论
收藏 181KB ZIP 举报
温馨提示
实现LCD液晶屏的驱动,基于STC15L2K60S2单片机编写,模块化代码易于使用
资源详情
资源评论
资源推荐
收起资源包目录
lcd.zip (68个子文件)
lcd
keil
project.uvopt 14KB
project.uvgui.Lero 140KB
Objects
gpio.obj 22KB
project.hex 23KB
main.obj 24KB
lcd_ssd1289.obj 47KB
lcd_ili9320.obj 47KB
delay.obj 758B
project 87KB
project.lnp 194B
project.build_log.htm 509B
project.uvgui_Lero.bak 137KB
project.uvgui.wxr 154KB
project_uvopt.bak 14KB
Listings
lcd_ssd1289.lst 18KB
main.lst 2KB
gpio.lst 17KB
delay.lst 1KB
lcd_ili9320.lst 16KB
project.m51 37KB
project_uvproj.bak 36KB
project.uvproj 38KB
njut
src
delay.c 287B
lcd_ili9320.c 8KB
digitron.h 562B
key.h 323B
uart_dup.h 283B
main.c 552B
uart_dup.c 2KB
led.h 512B
gpio.h 781B
int_enable.c 370B
lcd_font.h 20KB
clock.c 4KB
led.c 2KB
key.c 2KB
digitron.c 2KB
lcd_ssd1289.h 1KB
gpio.c 11KB
timer_dup.h 499B
exti_dup.c 1KB
delay.h 215B
clock.h 445B
int_enable.h 256B
exti_dup.h 391B
lcd_ili9320.h 1KB
timer_dup.c 2KB
lcd_ssd1289.c 9KB
lib_stc
delay.c 683B
STC15Fxxxx.H 32KB
config.h 627B
PCA.c 6KB
soft_uart.h 151B
ADC.h 1KB
USART.h 2KB
EEPROM.h 2KB
PCA.h 3KB
ADC.c 3KB
delay.h 110B
EEPROM.c 4KB
GPIO.c 3KB
timer.c 4KB
USART.C 6KB
Soft_UART.c 2KB
Exti.c 3KB
timer.h 894B
GPIO.h 908B
Exti.h 613B
共 68 条
- 1
寒泊
- 粉丝: 75
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0