3.stm32 LCD

发布者:CrystalRose最新更新时间:2025-03-05 来源: jianshu关键字:stm32  LCD 手机看文章 扫描二维码
随时随地手机看文章

    GPIOB->BSRR |=  GPIO_PIN_8; 

    __nop();

    __nop();

    __nop();

    GPIOB->BSRR |=  GPIO_PIN_9; }/*******************************************************************************

* Function Name  : LCD_ReadRAM

* Description    : Reads the LCD RAM.

* Input          : None

* Output         : None

* Return         : LCD RAM Value.

*******************************************************************************/u16 LCD_ReadRAM(void){

    u16 temp;


    GPIOB->BRR  |=  GPIO_PIN_9; 

    GPIOB->BRR  |=  GPIO_PIN_8; 

    GPIOB->BSRR |=  GPIO_PIN_5; 


    GPIOC->ODR = R34;     

    GPIOB->BRR  |=  GPIO_PIN_5;  

    __nop();

    __nop();

    __nop();  

    GPIOB->BSRR |=  GPIO_PIN_5; 

    GPIOB->BSRR |=  GPIO_PIN_8; 


    LCD_BusIn();

    GPIOA->BRR |=  GPIO_PIN_8;

    __nop();

    __nop();

    __nop();    

    temp = GPIOC->IDR;  

    GPIOA->BSRR |=  GPIO_PIN_8; 

    

    LCD_BusOut();

    GPIOB->BSRR |=  GPIO_PIN_9; 

                         

    return temp;}/*******************************************************************************

* Function Name  : LCD_PowerOn

* Description    : Power on the LCD.

* Input          : None

* Output         : None

* Return         : None

*******************************************************************************/void LCD_PowerOn(void){

    LCD_WriteReg(R16, 0x0000);

    LCD_WriteReg(R17, 0x0000); 

    LCD_WriteReg(R18, 0x0000);

    LCD_WriteReg(R19, 0x0000); 

    Delay_LCD(20);             

    LCD_WriteReg(R16, 0x17B0); 

    LCD_WriteReg(R17, 0x0137);

    Delay_LCD(5);             

    LCD_WriteReg(R18, 0x0139); 

    Delay_LCD(5);             

    LCD_WriteReg(R19, 0x1d00); 

    LCD_WriteReg(R41, 0x0013); 

    Delay_LCD(5);             

    LCD_WriteReg(R7, 0x0173);}/*******************************************************************************

* Function Name  : LCD_DisplayOn

* Description    : Enables the Display.

* Input          : None

* Output         : None

* Return         : None

*******************************************************************************/void LCD_DisplayOn(void){

    LCD_WriteReg(R7, 0x0173);}/*******************************************************************************

* Function Name  : LCD_DisplayOff

* Description    : Disables the Display.

* Input          : None

* Output         : None

* Return         : None

*******************************************************************************/void LCD_DisplayOff(void){

    LCD_WriteReg(R7, 0x0); }/*******************************************************************************

* Function Name  : LCD_CtrlLinesConfig

* Description    : Configures LCD Control lines.

                   Push-Pull mode.

* Input          : None

* Output         : None

* Return         : None

*******************************************************************************/void LCD_CtrlLinesConfig(void){

    GPIO_InitTypeDef GPIO_InitStruct = {0};

    

  __HAL_RCC_GPIOC_CLK_ENABLE();

  __HAL_RCC_GPIOA_CLK_ENABLE();

  __HAL_RCC_GPIOB_CLK_ENABLE();

    

    GPIO_InitStruct.Pin = GPIO_PIN_5 | GPIO_PIN_8 | GPIO_PIN_9;

    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

  GPIO_InitStruct.Pull = GPIO_NOPULL;

  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 


    GPIO_InitStruct.Pin =  GPIO_PIN_8 ;

    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

  GPIO_InitStruct.Pull = GPIO_NOPULL;

  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 


    LCD_BusOut();


    GPIOA->BSRR |= 0x0100;

    GPIOB->BSRR |= 0x0220;}/*******************************************************************************

* Function Name  : LCD_BusIn

* Description    : Configures the Parallel interface for LCD(PortC)

* Input          : None

* Output         : None

* Return         : None

*******************************************************************************/void LCD_BusIn(void){   

    GPIO_InitTypeDef GPIO_InitStruct = {0};

    

    GPIO_InitStruct.Pin = GPIO_PIN_All;

  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;

  GPIO_InitStruct.Pull = GPIO_NOPULL;

  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);       }/*******************************************************************************

* Function Name  : LCD_BusOut

* Description    : Configures the Parallel interface for LCD(PortC)

* Input          : None

* Output         : None

* Return         : None

*******************************************************************************/void LCD_BusOut(void){

    GPIO_InitTypeDef GPIO_InitStruct = {0};

    

    GPIO_InitStruct.Pin = GPIO_PIN_All;

  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;

  GPIO_InitStruct.Pull = GPIO_NOPULL;

  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);   }/*******************************************************************************

* Function Name  : LCD_DrawPicture

* Description    : Displays a 16 color picture.

* Input          : - picture: pointer to the picture array.

* Output         : None

* Return         : None

*******************************************************************************/void LCD_DrawPicture(const u8* picture){

    int index;

    LCD_SetCursor(0x00, 0x0000); 


    LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */


    for(index = 0; index < 76800; index++)

    {

        LCD_WriteRAM(picture[2*index+1]<<8|picture[2*index]);   

    }}



[1] [2] [3] [4] [5]
关键字:stm32  LCD 引用地址:3.stm32 LCD

上一篇:4.stm32 ADC与DAC
下一篇:2.stm32串口

推荐阅读最新更新时间:2026-03-24 22:55

STM32 通过 I2C PCF8574 使用 4线LCD1602不显示文字?
问题产生环境和现象: 1、STM32F1 MCU 中通过GPIOA使用PA6、 PA7实现I2C通信,I2C通信部分代码测试没有问题; 2、LCD1602接3.3V,SCL、SDA分别接STM32F1的PA6和PA7引脚,PA7有电压; 3、1602屏亮,MCU下载程序后,1026会闪一下屏,之后一直亮屏无文字。 问题原因: LCD1602对显示比度不对,即文字和屏底色一样了。 问题解决: LCD1602 屏后有个旋钮,用螺丝刀调整一下即可。
[单片机]
基于stm32的多功能时钟5——LCD12864库函数的建立
在上一章中,小编实现了多功能时钟的测距功能。在这一章中,小编本来打算介绍人机交互界面的设计。但是,后来还是想了一下,先将LCD库函数建立起来,因为真正的技术重点在这里。至于UI的设计,咱们将在下一章介绍。但至于UI设计的美观程度,我只能尽力而为,毕竟咱们的LCD12864液晶分别率只有128*64,而且是单色的,先天不足。 1.模块介绍 LCD12864液晶显示屏 液晶显示器种类很多,本人目前用过LCD1602、LCD12864、Nokia5110等,还有些比如TFT彩屏,OLED都没有用过。而此块LCD12864是一款基于ST7567的128*64的1.7英寸的图形点阵式液晶。而LCD12864液晶有的可以
[单片机]
嵌入式开发:STM32 FSMC接口驱动TFT-LCD设计
TFT-LCD技术是微电子技术和LCD技术巧妙结合的高新技术。随着人们对图像清晰度、刷新率、保真度的要求越来越高,TFT-LCD的应用范围越来越广。本文提出了一种能直接驱动数字液晶屏的设计方案,方案先介绍了TFT数字彩屏的工作原理,利用STM32处理器的FSMC接口设计的硬件电路和软件程序均能对显示控制芯片进行有效的控制。在实际应用中显示清晰流畅,并且CPU有足够的时间来处理用户程序。该方案能成功应用在电脑横机的人机界面显示中,且其硬件电路结构简单、控制方式灵活、对于其他型号的接口芯片也能提供参考。 0 引言 随着电子产品的不断更新,各种显示界面的开发越来越多,由于TFT彩屏的性价比高,因而被广泛用在各种电子设备上作为显示屏。目前
[单片机]
嵌入式开发:<font color='red'>STM32</font> FSMC接口驱动TFT-<font color='red'>LCD</font>设计
STM32学习笔记(6.2):LCD的显示
7.程序源代码 main.c文件中的代码: #include stm32f10x_lib.h #include stm32f10x_lcd.h extern unsigned char LCD_Image_BIT ; extern unsigned char LCD_Image_HIT ; void RCC_cfg(); void FSMC_cfg(); void LCD_cfg(); void GPIO_cfg(); void LCD_Show(unsigned char * LCD_Image); int main() { RCC_cfg(); GPIO_cfg(); FSMC_cfg(); LCD_cfg();
[单片机]
STM32学习笔记(6):LCD的显示
1.LCD/LCM的基本概念 液晶显示器(Liquid Crystal Display: LCD)的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。 LCM(LCD Module)即LCD显示模组、液晶模块,是指将液晶显示器件,连接件,控制与驱动等外围电路,PCB电路板,背光源,结构件等装配在一起的组件。 在平时的学习开发中,我们一般使用的是LCM,带有驱动IC和LCD屏幕等多个模块。 2.FSMC的基本概念 在STM32上开发LCD显示,可以有两种方式来对LCD进行操作,一种是通过普通的IO口,连接LCM的相应引脚来
[单片机]
STM32STM32驱动 LCD12864程序代码(串行方式)
引言: 这里我们只讲解接线和代码实现,具体的原理在上一篇博客中已经讲解,如果想了解具体原理可以查看上一篇博客 《STM32 LCD12864 串行通信模式 (从原理让你理解)》 下方代码的实现也是基于上一篇的讲解顺序来的 设备: STM32F407ZGT6 引脚接线: VSS——GND VDD——VCC(5V or 3.3V) V0 亮度调节 不接 CS ——接VCC,持续高电平,一直选通。 SID ——接PE1 SCLK ——接PE0 PSB——接GND 串行模式 或者飞线与1脚相连 BLA——VCC(5V or 3.3V) 或者飞线与2脚相连 BLK——
[单片机]
Proteus仿真STM32实现--DS18B20和LCD1602显示
proteus仿真stm32103r6,实现18B20温度值在1602上显示,可测量正负温度。程序及仿真工程已上传附件,利用proteus仿真18b20温度为0和-0.1时返回值均为零,新手上路,请多指教。使用proteus8.8版本进行仿真。 原理图 时序 原理图 单片机部分程序如下: #include stm32f10x.h #include bsp-lcd1602.h #include delay.h #include sys.h #include ds18b20.h #include stdio.h #include math.h short tem,tem1; u8 a,b,c,t
[单片机]
Proteus仿真<font color='red'>STM32</font>实现--DS18B20和<font color='red'>LCD</font>1602显示
STM32驱动LCD12864显示屏
我们做一个电子产品,往往需要实现人机交互的功能。那么人机交互的方式除了输出到上位机通过电脑去显示,显示器也是一个很不错的方式,可用于一些不能使用电脑的场合。LCD12864显示器中的一种,具有价格低廉,操作简单的优点。今天就为大家带来一个STM32驱动12864的例程,使用SPI串行通信,仅仅需要三根数据线就可以完成通信。废话不多说,进入正题。 接线: RS----PB15 RW----PB14 EN----PB13 PSB---GND 1.初始化IO口以及显示屏 void Lcd_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2P
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved