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

发布者:MysticalGlow最新更新时间:2015-11-18 来源: eefocus关键字:MDK编译器  STM32  12864液晶 手机看文章 扫描二维码
随时随地手机看文章
里附上的是主程序部分和电路连接[转载]基于MDK编译器 <wbr>STM32与12864液晶显示程序 <wbr>和电路连接

[转载]基于MDK编译器 <wbr>STM32与12864液晶显示程序 <wbr>和电路连接
 
这里用的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);
}
关键字:MDK编译器  STM32  12864液晶 引用地址:基于MDK编译器 STM32与12864液晶显示程序 和电路连接

上一篇:STM32驱动TFT显示屏ILI9325
下一篇:STM32由boot跳转到应用程序地址

推荐阅读最新更新时间:2024-03-16 14:40

STM32-PA13、PA14、PA15、PB3、PB4等默认为仿真功能引脚重映射为普通IO
如果对仿真不是比较熟悉,我们可能不小心就在这里郁闷了半天,“玄学,配置的没问题啊,这个引脚(PA13、PA14、PA15、PB3、PB4)怎么不能用呢?” 这是因为这些引脚默认功能是作为仿真引脚的。如下图(芯片手册截图) 如果要使用这些引脚为普通IO,需要重映射为普通IO,比如下边这两行是释放PB3、PB4、PA15引脚。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); 其中可以使用的参数如下,分别对应了“只释放PB4”、“释放PB3、P
[单片机]
STM32-PA13、PA14、PA15、PB3、PB4等默认为仿真功能引脚重映射为普通IO
stm32开发板开发笔记(2)-开发板jlink烧录
开发板上留出了jtag烧录口,引出了TCK测试时钟,TDI测试数据串行输入,TMS测试模式选择,TDO测试数据串行输出, NJTRST 测试系统复位信号 如图所示: nRST是接芯片的复位脚,板上的实物是20针的JTAG接口 20针JTAG接口 1 VTref   目标板参考电压,接电源 2 VCC   接电源 3 nTRST   测试系统复位信号 4、6、8、10、12、14、16、18、20  GND 接地 5 TDI   测试数据串行输入 7 TMS   测试模式选择 9 TCK   测试时钟 11 RTCK  测试时钟返回信号// 这个没有接 13 TDO   测试数据串行输出 15 n
[单片机]
<font color='red'>stm32</font>开发板开发笔记(2)-开发板jlink烧录
把GuiLite移植到STM32
1 Gui移植结果 一些演示效果: 2 GuiLite介绍 GuiLite是一个开源的图形用户界面框架,只依赖于一个单一的头文件库(GuiLite.h),不需要很复杂的文件管理,代码量平易近人。 GuiLite由4千行C++代码编写,单片机上也能流畅运行,其最低的硬件运行要求如下: GuiLite具有很强的跨平台特性: 支持的操作系统:iOS/macOS/WatchOS,Android,Linux(ARM/x86-64),Windows(包含VR),RTOS… 甚至无操作系统的单片机 支持的开发语言:C/C++, Swift, Java, Javascript, C#, Golang… 支
[单片机]
把GuiLite移植到<font color='red'>STM32</font>上
stm32和电机开发(从架构图到文档编写)
很多同学不喜欢写文档,总觉得写文档耽误事,影响开发效率。实际上,不一定是那么回事。在实际开发中,编写文档的目的主要是为了厘清自己的思路,在开发代码前把所有的事情都考虑到,防止代码写了一半,需要推倒重来的情形发生。 当然,很多时候编写文档的确是枯燥的,那么有没有什么好的办法,可以让文档编写稍微变得容易一点,答案就是先写架构图。因为文档本身就可以看成是架构图+文字的格式。 1、先编写架构图 架构图是软件的魂。我们拿到软件开发需求后,第一步要做的就是模块拆分、流程抽象和接口设计。这部分可以找一些合适的软件来完成,比如visio、openoffice draw、processon都可以。总之,只要能达到目的就行。比如我们写一个网站
[单片机]
<font color='red'>stm32</font>和电机开发(从架构图到文档编写)
stm32驱动超声波模块源码
  下面是关于stm32驱动超声波模块的一段代码,有需要的朋友可以复制参考,希望对大家能够有所帮助和启发。   #define HCSR04_PORT GPIOB   #define HCSR04_CLK RCC_APB2Periph_GPIOB   #define HCSR04_TRIG GPIO_Pin_8   #define HCSR04_ECHO GPIO_Pin_9   #define TRIG_Send(n) do{   if(n == 0)   GPIO_ResetBits(HCSR04_PORT,HCSR04_TRIG);   else if(n == 1)   GPIO_SetBits(HCSR04_PORT
[单片机]
STM32的BootLoader 从SD卡更新固件
1. 前言自从几个月前接触到有Bootloader这回事,就有一种强烈的冲动,想写一个BootLoader出来。很快在飞思卡尔的Cortex-M4单片机上实现,已经是好几个月前的事情了。然后关于BootLoader的事搁在一边好久了,这次弄个STM32的BootLoader出来,Cortex-M3的,顺便发表下博客,跟大家分享一下。 又过了大半年了吧,慢慢对BootLoader的认识也有点长进啦。特别是跟网友讨论后发现BootLoader的实现还是需要靠BootLoader程序和App程序的配合才能正常使用。在这里特别感谢网友cary_yingj ,对本BootLoader的研究后发现App程序需要重定位中断向量表,才能正常工作。
[单片机]
<font color='red'>STM32</font>的BootLoader 从SD卡更新固件
stm32定时器1的2路互补PWM
void TIM1_PWM_Ini(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_BDTRInitTypeDef TIM_BDTRInitStructure; //开启时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //使能定时器3时钟 RCC_APB2PeriphClockC
[单片机]
STM32基础知识:中断系统
中断系统 1 数据传输方式 无条件传输 :处理器不必了解外部设备状态,直接进行数据传输,用于指示灯和按键等简单设备.。 查询方式 :传输前,一方先查询另一方的状态,若已经准备好就传输,否则就继续查询。 中断方式 :一方通过申请中断的方式与另一方进行数据传输,收发双方可以并行工作。 直接存储器访问 :处理器内部建立片内外设和内存之间的数据传输通道,传输过程不需要处理器参与。 2 中断系统的基本概念 2.1 中断全过程 中断发生: 当CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理。 中断处理: CPU暂停当前的工作,转去处理事件B。 中断返回: 当CPU将事件B处理完毕后,再回到事件A中被暂停的地方继
[单片机]
<font color='red'>STM32</font>基础知识:中断系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved