IT技术互动交流平台

基于MDK编译器STM32与12864液晶显示程序和电路连接

作者:hcj2013  发布日期:2012-12-24 09:03:26

这里附上的是主程序部分和电路连接

这里用的12864液晶是5v的,电路链接部分 RS PE2 RW PE4 EN PE6  15口PSB串并 PE3

#include "stm32f10x.h"  
 
 
GPIO_InitTypeDef GPIO_InitStructure;  
#define RS_SET  GPIO_SetBits(GPIOE, GPIO_Pin_2)  
#define RS_CLR  GPIO_ResetBits(GPIOE, GPIO_Pin_2)  
   
#define RW_SET  GPIO_SetBits(GPIOE, GPIO_Pin_4)  
#define RW_CLR  GPIO_ResetBits(GPIOE, GPIO_Pin_4)  
 
 
#define EN_SET  GPIO_SetBits(GPIOE, GPIO_Pin_6)  
#define EN_CLR  GPIO_ResetBits(GPIOE, GPIO_Pin_6)  
 
 
#define PSB_SET  GPIO_SetBits(GPIOE, GPIO_Pin_3)  
#define PSB_CLR  GPIO_ResetBits(GPIOE, GPIO_Pin_3)  
 
 
#define DATA_IO GPIOC->ODR  
 
 
void RCC_Configuration(void);  
void LCD12864_Config(void);  
void Delay_nus(__IO uint32_t nCount);  
void Delay_mus(__IO uint32_t nCount);  
uint8_t table[]="做我女朋友吧!";  
 
 
void write_12864com(uint8_t com)  
{  
RW_CLR;  
RS_CLR;  
Delay_nus(500);  
DATA_IO=com;  
EN_SET;  
Delay_nus(1000);  
EN_CLR;  
Delay_nus(1000);  
}  
 
 
void write_12864dat(uint8_t dat)  
{  
RW_CLR;  
RS_SET;  
Delay_nus(500);  
DATA_IO=dat;  
EN_SET;  
Delay_nus(1000);  
EN_CLR;  
Delay_nus(1000);  
}  
 
 
void init12864lcd(void)  
{  
Delay_mus(500);  
write_12864com(0x30);  
Delay_nus(500);  
write_12864com(0x30);  
Delay_nus(500);  
write_12864com(0x0f);  
Delay_nus(500);  
write_12864com(0x01);  
Delay_nus(25);  
write_12864com(0x06);  
Delay_nus(2500);  
write_12864com(0x0c);  
Delay_nus(500);  
}  
 
 
void display(void)  
{  
uint8_t i;  
write_12864com(0x80);  
for(i=0;i<14;i++)  
{  
write_12864dat(table[i]);  
Delay_mus(50);  
}  
}  
   
void LCD12864_Config(void)  
{  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOC , ENABLE);  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_6;    
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  GPIO_Init(GPIOE, &GPIO_InitStructure);    
    
  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_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  GPIO_Init(GPIOC, &GPIO_InitStructure);  
}  
 
 
   
int main(void)  
{  
  RCC_Configuration();   //系统时钟配置  
  LCD12864_Config();   
  PSB_SET;   
  init12864lcd();  
  while (1)  
  {  
      display();  
  }  
}  
 
 
   
void RCC_Configuration(void)  
{     
  SystemInit();  
}  
 
 
   
void Delay_nus(uint32_t nCount)  
{  
 uint32_t j;  
 while(nCount--)  
 {   
    j=8;  
    while(j--);  
 }  
}  
 
 
   
void Delay_mus(uint32_t nCount)  
{  
    while(nCount--)  
    Delay_nus(1100);  
}  

 

Tag标签: MDK编译器   STM32   12864液晶显示  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规