STM32F1x系列——12864

      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<number;i++)
	 {
	  	TransferData(*adder1,1);
	   	adder1++;
	 }
}


 int main(void)
 {	
	 delay_init();
	 _Init();
   initinal() ;

	 
	 while(1)
	 {
		 lcd_mesg("日照香炉生紫烟,",0x80,16)  ; 
		 lcd_mesg("遥看瀑布挂前川。",0x90,16)  ;
		 lcd_mesg("飞流直下三千尺,",0x88,16)  ; 
		 lcd_mesg("疑是银河落九天。",0x98,16)  ; 
		  
	
		// TransferData	(0x01,0) ;   //清屏
		 
	 }
 }
 
 

   仿真下载后:


  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值