3189|5

1万

帖子

25

TA的资源

裸片初长成(高级)

楼主
 

STM32F051驱动LCD1602程序,及注意事项。 [复制链接]

本帖最后由 dontium 于 2017-5-18 23:12 编辑

捣鼓STM32F051带的1602屏,屏是新买的,开始怎么也搞不亮,又把我很早使用的屏 ----- 用几个HD44100的屏拿出来,接上去仍然不亮,观察LCD,没有任何加上电的迹象!


反复看手册,VO的偏压端是按照手册上说明的去做的,不应该有问题,但后来还是怀疑了它,就拿了个电位器来这个电压,从5V调到0V,呵呵,发现LCD有反应了。
原来,就是这个VO端的电压不正确所致,正常显示时,电压0.1V多,与手册上说的3~5V相差太远!!  ---------------------是不是有点坑人啊?

现在把那个手册帖出来,
LCD1602A-5V厂家说明书.pdf (348.4 KB, 下载次数: 23)
此帖出自stm32/stm8论坛

最新回复

楼主,如果你在8位机时代就用过1602, 应该记得VLCD那个脚是要接电位器调对比度的。 这里怨不得厂家,你没看仔细,人家写的是 (Vdd-Vo) 范围是 3.0~5.0V,  所以Vo接近0V也差不多。   详情 回复 发表于 2017-5-19 08:05
点赞 关注
 

回复
举报

1万

帖子

25

TA的资源

裸片初长成(高级)

沙发
 
下面给出程序:

  1. /*
  2.   ******************************************************************************
  3.   * File Name          : Lcd.c
  4.   * Author             : dontium
  5.   * Description        : This file contains the procedure for the LCD 1602
  6.   ******************************************************************************
  7. */

  8. #include "F051_hardwaer.h"

  9. #include "lcd.h"


  10. void LcdDelay(uint16_t dl)
  11. {
  12.     uint16_t i;
  13.     for ( i = 0; i < dl ; i++)
  14.     {
  15.         __asm ( " nop ");
  16.         __asm ( " nop ");
  17.         __asm ( " nop ");
  18.     }
  19. }

  20. //mode: =0 write command,  =1 write Data
  21. //dat
  22. void LcdWrite(uint8_t dat,uint8_t mode)
  23. {
  24.     uint16_t temp;

  25.     LcdDelay(500);
  26.    
  27.     LCD_RW_WRITE();
  28.     if ( mode )
  29.         LCD_RSDAT();
  30.     else
  31.         LCD_RSCOM();
  32.     LCD_ENABLE();
  33.    
  34.     temp = (uint16_t) GPIOB->ODR;
  35.     temp &= 0xFF00;
  36.     temp |= dat;
  37.     GPIOB->ODR = temp;


  38.     LCD_DISABLE();
  39.     LcdDelay(1);
  40.     LCD_RW_READ();
  41.    
  42. }
  43. //LCD1602 Initialization
  44. void LcdInit(void)
  45. {
  46.     uint8_t i;
  47.     Delay_mS(15);
  48.         LcdWrite(0x38,0);//16*2 display,5*7 dot matrix,8bit port
  49.     Delay_mS(10);
  50.         LcdWrite(0x0f,0);//display on ,cursor start and flash
  51.     Delay_mS(10);
  52.         LcdWrite(0x06,0);// character Increment , Cursor Increment ,
  53.     Delay_mS(10);
  54.         LcdWrite(0x01,0);// clear

  55.     for( i = 0 ; i < 16 ; i++)
  56.     {
  57.         table1[i] = i+0x30;
  58.         table2[i] = i+0x40;
  59.     }
  60.     table1[2] = ':';
  61.     table1[5] = ':';
  62.    
  63. }

  64. void LcdClear(void)
  65. {
  66.     LcdWrite(1,0);
  67. }
  68. void LcdReturn(void)
  69. {
  70.     LcdWrite(2,0);
  71. }

  72. uint8_t table1[16],table2[16];

  73. //Cursor Location
  74. void lcd162a_LocateXY(uint8_t posx,uint8_t posy)
  75. {            
  76. uint8_t temp;
  77. temp=posx & 0xf;
  78. posy &= 0x01;
  79. if(posy) temp |=0x40;
  80. temp |=0x80;
  81. LcdWrite(temp,0);         
  82. }
  83. // Display a character
  84. //x:0~15
  85. //y:0~1
  86. void LcdWriteChar(void)//uint8_t x,uint8_t y,uint8_t Wdata)
  87. {
  88.     uint8_t i;
  89.     lcd162a_LocateXY(0,0);
  90.     for ( i = 0 ; i < 16 ; i++ )
  91.     {
  92.         LcdWrite(table1[15-i],1);
  93.     }
  94.     lcd162a_LocateXY(0,1);
  95.     for ( i = 0 ; i < 16 ; i++ )
  96.     {
  97.         LcdWrite(table2[i],1);
  98.     }
  99. }

  100. /*********************************      end file     ***********************************/
复制代码

此帖出自stm32/stm8论坛

点评

gpio初始化了吗?  详情 回复 发表于 2017-5-19 00:05
 
 

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

板凳
 
开始也曾怀疑过3.3V器件与5V器件不能匹配的问题,但是,看LCD1602手册上的输入电平要求,STM32完全满足
此帖出自stm32/stm8论坛
 
 

回复

1310

帖子

3

TA的资源

一粒金砂(高级)

4
 
dontium 发表于 2017-5-18 23:10
下面给出程序:

[code]/*
  ******************************************************** ...

gpio初始化了吗?
此帖出自stm32/stm8论坛
 
个人签名

RTEMS

 
 

回复

1379

帖子

2

TA的资源

五彩晶圆(初级)

5
 
楼主,如果你在8位机时代就用过1602, 应该记得VLCD那个脚是要接电位器调对比度的。
这里怨不得厂家,你没看仔细,人家写的是 (Vdd-Vo) 范围是 3.0~5.0V,  所以Vo接近0V也差不多。
此帖出自stm32/stm8论坛

点评

哎呀,原来是我的失误, 它上面又加个括号说明,真的没有在意!!!  详情 回复 发表于 2017-5-19 08:53

赞赏

1

查看全部赞赏

 
 
 

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

6
 
cruelfox 发表于 2017-5-19 08:05
楼主,如果你在8位机时代就用过1602, 应该记得VLCD那个脚是要接电位器调对比度的。
这里怨不得厂家,你没 ...

哎呀,原来是我的失误,  
它上面又加个括号说明,真的没有在意!!!
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表