《2022年STM显示驱动程序,,寄存器版 .pdf》由会员分享,可在线阅读,更多相关《2022年STM显示驱动程序,,寄存器版 .pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、头文件#ifndef _12864_H_#define _12864_H_#includesys.h/管脚定义,移植修改区/*/#define LCD12864_GPIO GPIOB/#define GPIOCLK RCC_APB2Periph_GPIOB#define RS PBout(0)#define RW PBout(1)#define EN PBout(2)/#define PSB GPIO_Pin_4/#define RST GPIO_Pin_5/#define Busy GPIO_Pin_15/#define LCD_GPIO_DAT GPIO_Pin_8|GPIO_Pin_9|
2、GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15/#define LCD_GPIO_CMDGPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_5/#define LCD_RS(x)x?GPIO_SetBits(LCD12864_GPIO,RS):GPIO_ResetBits(LCD12864_GPIO,RS)/#define LCD_RW(x)x?GPIO_SetBits(LCD12864_GPIO,RW):GPIO_ResetBits(LCD12
3、864_GPIO,RW)/#define LCD_EN(x)x?GPIO_SetBits(LCD12864_GPIO,EN):GPIO_ResetBits(LCD12864_GPIO,EN)/#define LCD_PSB(x)x?GPIO_SetBits(LCD12864_GPIO,PSB):GPIO_ResetBits(LCD12864_GPIO,PSB)/#define LCD_RST(x)x?GPIO_SetBits(LCD12864_GPIO,RST):GPIO_ResetBits(LCD12864_GPIO,RST)/#define Text_Busy GPIO_ReadInput
4、DataBit(LCD12864_GPIO,Busy)/PBin(7)#define LCD_WriteData(x)GPIOC-BSRR=x&0 x00ff;GPIOC-BRR=(x)&0 x00ff;/高 8 位的数据/#define LCD_WriteData(x)LCD12864_GPIO-BSRR=x&0 x00ff;LCD12864_GPIO-BRR=(x)APB2ENR|=1APB2ENR|=1APB2ENR|=1CRL&=0X00000000;GPIOC-CRL|=0X33333333;GPIOB-CRL&=0XFFFFF000;GPIOB-CRL|=0X00000333;GP
5、IOB-ODR|=0XFF07;C 文件/*f_name:void NOP(void)名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 8 页 -brief:延时函数param:None return:None*/void NOP(void)u8 i;for(i=0;i100;i+);/*f_name:u8 LCD12864_busy(void)brief:检测忙状态param:None return:None*/u8 LCD12864_busy(void)/u8 x;/RS=0;/RW=1;/EN=1;/NOP();/NOP();/x=Text_Busy;/EN=1;/retur
6、n x;/*f_name:void LCD12684_Wcmd(u8 dat)brief:写指令param:u8 dat 输入指令return:None*/void LCD12684_Wcmd(u8 dat)/while(LCD12864_busy();/忙检测RS=0;RW=0;EN=0;NOP();NOP();LCD_WriteData(dat);名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 8 页 -NOP();NOP();EN=1;NOP();NOP();EN=0;NOP();NOP();/*f_name:void LCD12684_Wcmd(u8 dat)brief:
7、写数据param:u8 dat 输入数据return:None*/void LCD12684_Wdat(u8 dat)/while(LCD12864_busy();/忙检测RS=1;RW=0;EN=0;NOP();NOP();LCD_WriteData(dat);NOP();NOP();EN=1;NOP();NOP();EN=0;/*f_name:void LCD12864_Init(void)brief:液晶初始化param:None return:None*/void LCD12864_Init(void)名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 8 页 -/LCD_P
8、SB(1);/并口方式/LCD_RST(0);/液晶复位低电平有效/delay_ms(3);/LCD_RST(1);/置高电平等待复位/delay_ms(3);LCD12864_InitPort();LCD12684_Wcmd(0 x34);/扩充指令操作delay_ms(5);LCD12684_Wcmd(0 x30);/基本指令操作delay_ms(5);LCD12684_Wcmd(0 x0c);/显示开,关光标delay_ms(5);LCD12684_Wcmd(0 x01);/清除 LCD 的显示内容delay_ms(5);/*f_name:void LCD12864_Clr(void)b
9、rief:清屏param:None return:None*/void LCD12864_Clr(void)LCD12684_Wcmd(0 x34);/扩充指令操作“绘图”delay_ms(5);LCD12684_Wcmd(0 x30);/基本指令操作delay_ms(5);LCD12684_Wcmd(0 x01);/清屏delay_ms(5);/*f_name:void LCD12864_Pos(u8 x,u8 y)brief:设置显示位置param:u8 x:X 轴u8 y:Y 轴return:None*/void LCD12864_Pos(u8 x,u8 y)u8 pos;if(x=0)
10、x=0 x80;名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 8 页 -else if(x=1)x=0 x90;else if(x=2)x=0 x88;else if(x=3)x=0 x98;else x=0 x80;pos=x+y;LCD12684_Wcmd(pos);/显示地址/*f_name:void LCD12864_PhotoDis(u8*bmp)brief:显示图形param:u8*bmp 图形数组return:None*/void LCD12864_PhotoDis(u8*bmp)u8 i,j;LCD12684_Wcmd(0 x34);/关闭图形显示for(i=0
11、;i32;i+)LCD12684_Wcmd(0 x80+i);/先写入水平坐标值LCD12684_Wcmd(0 x80);/写入垂直坐标值for(j=0;j16;j+)/再写入两个8 位元的数据LCD12684_Wdat(*bmp+);delay_ms(1);for(i=0;i32;i+)LCD12684_Wcmd(0 x80+i);LCD12684_Wcmd(0 x88);for(j=0;j3)x=0;if(y7)y=0;LCD12864_Pos(x,y);temp=*p;while(temp!=0)LCD12684_Wdat(temp);temp=*(+p);void LCD_Shownu
12、m(u8 x,u8 y,u8 num)u8 number;u8 shi;u8 ge;if(x3)x=0;if(y7)y=0;LCD12864_Pos(x,y);number=num;shi=number/10+0 x30;ge=number%10+0 x30;LCD12684_Wdat(shi);LCD12684_Wdat(ge);void LCD_Shownum1(u8 num)u8 number;u8 shi;u8 ge;number=num;shi=number/10+0 x30;ge=number%10+0 x30;LCD12684_Wdat(shi);LCD12684_Wdat(ge);名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 8 页 -