基于stm32--lcd12864驱动程序

上传人:F****n 文档编号:98814953 上传时间:2019-09-14 格式:DOC 页数:12 大小:41.50KB
返回 下载 相关 举报
基于stm32--lcd12864驱动程序_第1页
第1页 / 共12页
基于stm32--lcd12864驱动程序_第2页
第2页 / 共12页
基于stm32--lcd12864驱动程序_第3页
第3页 / 共12页
基于stm32--lcd12864驱动程序_第4页
第4页 / 共12页
基于stm32--lcd12864驱动程序_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《基于stm32--lcd12864驱动程序》由会员分享,可在线阅读,更多相关《基于stm32--lcd12864驱动程序(12页珍藏版)》请在金锄头文库上搜索。

1、STM32 LCD12864驱动程序(头文件) (2012-05-29 21:25:08)转载标签: 杂谈#ifndef LCD12864_H#define LCD12864_H #define LCD_CONTROL GPIOD /默认LCD12864的控制口在PD口#define LCD_DATAPORT GPIOD /默认LCD12864的数据口在PD口#define LCD_RESET_Pin GPIO_Pin_12 /默认LCD12864的复位引脚连接到PD.12 也可不用#define LCD_RS_Pin GPIO_Pin_13 /默认LCD12864 RS - PD.13#de

2、fine LCD_RW_Pin GPIO_Pin_14 /默认LCD12864 RW - PD.14#define LCD_EN_Pin GPIO_Pin_15 /默认LCD12864 E - PD.15#define LCD_CONTROL_CLOCK RCC_APB2Periph_GPIOD /默认LCD12864的控制口时钟#define LCD_DATAPORT_CLOCK RCC_APB2Periph_GPIOD /默认LCD12864的数据口时钟#define LCD_RS_1 LCD_CONTROL-BSRR &=LCD_RS_Pin;LCD_CONTROL-BSRR |=LCD

3、_RS_Pin /RS置高电平#define LCD_RS_0 LCD_CONTROL-BRR &=LCD_RS_Pin;LCD_CONTROL-BRR |=LCD_RS_Pin /RS置低电平#define LCD_RW_1 LCD_CONTROL-BSRR &=LCD_RW_Pin;LCD_CONTROL-BSRR |=LCD_RW_Pin /RW置高电平#define LCD_RW_0 LCD_CONTROL-BRR &=LCD_RW_Pin;LCD_CONTROL-BRR |=LCD_RW_Pin /RW置低电平#define LCD_EN_1 LCD_CONTROL-BSRR &=L

4、CD_EN_Pin;LCD_CONTROL-BSRR |=LCD_EN_Pin /EN置高电平#define LCD_EN_0 LCD_CONTROL-BRR &=LCD_EN_Pin;LCD_CONTROL-BRR |=LCD_EN_Pin /EN置低电平#define LCD_RESET_0 LCD_CONTROL-BRR = LCD_RESET_Pin / 复位#define LCD_RESET_1 LCD_CONTROL-BSRR = LCD_RESET_Pin / 复位脚拉高#define DATAOUT LCD_DATAPORT-ODR &=0xff00;LCD_DATAPORT-

5、ODR / 数据输出寄存器#define DATAIN LCD_DATAPORT-IDR / 数据输入寄存器#define LCD_BF (DATAIN)& 0x0080) / 忙状态void LCD_delayus(unsigned long n); /延时 n(us)void LCD_delayms(unsigned long n); /延时 n(ms)void LCD_WriteInitcmd(uint8_t initcmd); /写初始化命令void LCD_WaitLaisure(void); /一直等待到LCD内部操作完成,变为空闲状态void LCD_Writecmd(uint8

6、_t cmd); /写命令到LCD12864void LCD_WriteByte(uint8_t byte); /写一字节数据到LCD12864void LCD_pos(uint16_t pos); /LCD显示位置设置void LCD_Setpos(uint16_t row,uint16_t col);/设定LCD12864的显示地址,根据习惯void LCD_DispChar(char ch); /显示一个字符void LCD_Setpos_DispChar(uint16_t row,uint16_t col,char ch);/在指定位置显示一个字符void LCD_DispString

7、(char str); /显示一个字符串,显示位置需提前设定/在指定位置显示一个字符串void LCD_Setpos_DispString(uint16_t row,uint16_t col,char str);void LCD_Dispnum(uint32_t num); /显示一个不超过8位的整数,显示位置需提前设置/在指定位置显示一个不超过8位的整数void LCD_Setpos_Dispnum(uint16_t row,uint16_t col,uint32_t num);void LCD_DispDecimal(uint32_t num,uint16_t dot);/显示一个有效位不

8、超过8位的浮点数,显示位置需要提前设定/在指定位置显示一个有效位不超过8位的浮点数void LCD_Setpos_DispDecimal(uint16_t row,uint16_t col,uint32_t num,uint16_t dot);/显示日历,显示日期与时间void LCD_DispDateTime(uint32_t year,uint16_t month,uint16_t day,uint16_t hour,uint16_t min,uint16_t sec);void LCD_DispPicture(const unsigned char picture); /显示一幅图像 1

9、28*64/屏幕整体左移一格,用于滚动显示void LCD_ShiftLeft(void);/屏幕整体右移一格,用于滚动显示void LCD_ShiftRight(void);/清屏,清除显示void LCD_Clear(void);/使光标还回原点位置void LCD_Return(void);/关显示void LCD_Close(void);/开显示void LCD_Open(void);void LCD_FlickerChar(uint16_t row,uint16_t col);/关闭字符闪烁void LCD_CloseFlicker(void);/屏幕秒闪烁一次void LCD_Fl

10、ickerScreen(void);void LCD_PORT_Init(void); /LCD连接端口初始化void LCD_Init(void); /LCD配置初始化#endif #include stm32f10x.h#include stm32f10x_gpio.h#include LCD12864.h#include picture.h/延时 n(us)void LCD_delayus(unsigned long n) unsigned long j; while(n-) j=8; while(j-); /延时 n(ms)void LCD_delayms(unsigned long

11、n) while(n-) LCD_delayus(1100);/写初始化命令void LCD_WriteInitcmd(uint8_t initcmd) LCD_RS_0; LCD_RW_0; LCD_EN_1; DATAOUT |= initcmd; LCD_delayus(600); LCD_EN_0; LCD_RW_1;/一直等待到LCD内部操作完成,变为空闲状态void LCD_WaitLaisure(void) uint16_t flag=0x00; LCD_RS_0; LCD_RW_1; do LCD_EN_0; LCD_delayus(5); LCD_EN_1; LCD_dela

12、yus(5); flag=(uint16_t)LCD_BF; while(flag);/写命令到LCD12864void LCD_Writecmd(uint8_t cmd) LCD_WaitLaisure(); LCD_RS_0; LCD_RW_0; LCD_EN_1; DATAOUT |= cmd; LCD_delayus(600); /经过测试,取600。550都不可以 LCD_EN_0; LCD_RW_1;/写一字节数据到LCD12864void LCD_WriteByte(uint8_t byte) LCD_WaitLaisure(); LCD_RS_1; LCD_RW_0; LCD_

13、EN_1; DATAOUT |= byte; LCD_delayus(600); LCD_EN_0; LCD_RW_1;void LCD_pos(uint16_t pos) LCD_Writecmd(pos);void LCD_Setpos(uint16_t row,uint16_t col) uint16_t pos=0x00; if(row+13) pos=0x08; if(row & 0x01) pos |= 0x80; else pos |= 0x90; pos += col-1; LCD_Writecmd(pos);void LCD_DispChar(char ch) LCD_Wri

14、teByte(ch);void LCD_Setpos_DispChar(uint16_t row,uint16_t col,char ch) LCD_Setpos(row,col); LCD_WriteByte(ch);void LCD_DispString(char str) uint16_t i; for(i=0;stri!=0;i+) LCD_WriteByte(stri); void LCD_Setpos_DispString(uint16_t row,uint16_t col,char str) LCD_Setpos(row,col); LCD_DispString(str);void LCD_Dispnum(uint32_t num) char str12; uint32_t q; uint16_t wei,i,j,k; if(num=)wei=8; else if(num=)wei=7; else if(num=)wei=6;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号