STM32F1x系列——12864

2019-07-14 01:47发布

      12864的引脚图:
      由图可知PSB一开始要拉高,可以接到电源上,VCC接5v电源,VSS接地,要是12864产生背光,将BLA接5v电源,BLK接地。其余引脚可以自定义接到STM32的IO上。       在接STM32的IO后,程序中应首先要对IO进行初始化,进行端口使能等操作,12864有其自带的中文字库,在程序中对字库初始化,同时写好传送数据指令的函数,输出显示内容,下面是关于12864的代码:
#include "stm32f10x.h" #include "delay.h" #include "stm32f10x_gpio.h" #define V0 PCout(1) #define RS PCout(3) #define WRD PAout(8) #define E PAout(9) #define DB0 PAout(0) #define DB1 PAout(1) #define DB2 PAout(2) #define DB3 PAout(3) #define DB4 PAout(4) #define DB5 PAout(5) #define DB6 PAout(6) #define DB7 PAout(7) #define NC PEout(10) #define RES PEout(12) #define VOUT PBout(14) void _Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOE, ENABLE); //使能PB,PE端口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; //LED0-->PB.5 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOA GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_3; 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_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOE, &GPIO_InitStructure); } unsigned int temp ; void TransferData(char data1,unsigned char DI) //传送数据或者命令,当DI=0是,传送命令,当DI=1,传送数据. { WRD=0; RS=DI; delay_ms(1); temp = (temp&0xff00)|data1 ; GPIO_Write(GPIOA,temp) ; E=1; delay_ms(1); E=0; } void initinal(void) //LCD字库初始化程序 { delay_ms(40); RES=0; //复位 delay_ms(1); RES=1; //复位置高 delay_ms(10); TransferData(0x30,0); //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF delay_ms(100); TransferData(0x30,0); //Function Set delay_ms(37); TransferData(0x08,0); //Display on Control delay_ms(100); TransferData(0x10,0); //Cursor Display Control光标设置 delay_ms(100); TransferData(0x0C,0); //Display Control,D=1,显示开 delay_ms(100); TransferData(0x01,0); //Display Clear delay_ms(10); TransferData(0x06,0); //Enry Mode Set,光标从右向左加1位移动 delay_ms(100); } void lcd_mesg(unsigned char *adder1 ,unsigned char locate,unsigned int number) { unsigned char i; TransferData(locate,0); //Set Graphic Display RAM Address delay_ms(100); for(i=0;i
   仿真下载后: