没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
基于STM32的1602 LCD驱动程序
1602采用标准的16脚接口,其中:
第1脚:VSS为地电源
第2脚:VDD接5V正电源
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15~16脚:空脚。
下面是LCD 1602的中文资料:[attach]21234[/attach]
chuen 发表于 2009-1-30 10:17
驱动程序如下:
#include <stm32f10x_lib.h>
#define DELAY_2N 0
/*------------------------- LED像素定义 ------------------------*/
1602采用标准的16脚接口,其中:
第1脚:VSS为地电源
第2脚:VDD接5V正电源
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15~16脚:空脚。
下面是LCD 1602的中文资料:[attach]21234[/attach]
chuen 发表于 2009-1-30 10:17
驱动程序如下:
#include <stm32f10x_lib.h>
#define DELAY_2N 0
/*------------------------- LED像素定义 ------------------------*/
#define LineLen 16 /* 宽 */
#define NumLines 2 /* 高 */
*/
#define PIN_E ( 1 << 8) //能使端,由高到低,则执行命令
#define PIN_RW ( 1 << 15) //读写信号线
#define PIN_RS ( 1 << 7) //寄存器选择
#define PINS_DATA (0xF0 << 0) //数据接口
const unsigned int SWAP_DATA[16] = { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF};
/* 外围LED时钟能使 */
#define LCD_CLOCK_EN RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE, ENABLE);
/* 设置能使脚为零或者一 */
#define LCD_E(x) GPIOA->ODR = (GPIOA->ODR & ~PIN_E) | (x ? PIN_E : 0);
/* 设置RW脚为零或者一 */
#define LCD_RW(x) GPIOD->ODR = (GPIOD->ODR & ~PIN_RW) | (x ? PIN_RW : 0);
/* 设置RS脚为零或者一 */
#define LCD_RS(x) GPIOD->ODR = (GPIOD->ODR & ~PIN_RS) | (x ? PIN_RS : 0);
/* 读数据 */
#define LCD_DATA_IN SWAP_DATA[(((GPIOE->IDR & PINS_DATA) >> 8) & 0x0F)]
#define NumLines 2 /* 高 */
*/
#define PIN_E ( 1 << 8) //能使端,由高到低,则执行命令
#define PIN_RW ( 1 << 15) //读写信号线
#define PIN_RS ( 1 << 7) //寄存器选择
#define PINS_DATA (0xF0 << 0) //数据接口
const unsigned int SWAP_DATA[16] = { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF};
/* 外围LED时钟能使 */
#define LCD_CLOCK_EN RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE, ENABLE);
/* 设置能使脚为零或者一 */
#define LCD_E(x) GPIOA->ODR = (GPIOA->ODR & ~PIN_E) | (x ? PIN_E : 0);
/* 设置RW脚为零或者一 */
#define LCD_RW(x) GPIOD->ODR = (GPIOD->ODR & ~PIN_RW) | (x ? PIN_RW : 0);
/* 设置RS脚为零或者一 */
#define LCD_RS(x) GPIOD->ODR = (GPIOD->ODR & ~PIN_RS) | (x ? PIN_RS : 0);
/* 读数据 */
#define LCD_DATA_IN SWAP_DATA[(((GPIOE->IDR & PINS_DATA) >> 8) & 0x0F)]
剩余10页未读,继续阅读
ninjacat003
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页