找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 40462|回复: 77
打印 上一主题 下一主题
收起左侧

stm32驱动lcd1602液晶方式 程序调试成功

  [复制链接]
跳转到指定楼层
#
最近在搞DIY小玩意 用到了lcd1602液晶显示 最后调试成功,希望对有需要的人有所帮助!



1602液晶驱动程序的主要部分:
  1. #include "lcd1602.h"
  2. #include "delay.h"
  3. #include "stdio.h"
  4. void GPIO_Configuration(void)
  5. {
  6.         GPIO_InitTypeDef        GPIO_InitStructure;
  7.         
  8.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOD,ENABLE);//使能PB,PD端口时钟

  9.         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;
  10.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //普通输出模式
  11.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出
  12.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //IO口速度为50MHz
  13.         GPIO_Init(GPIOD, &GPIO_InitStructure);                                //初始化GPIOD0~7

  14.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;
  15.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //普通输出模式
  16.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出
  17.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //IO口速度为50MHz
  18.         GPIO_Init(GPIOB, &GPIO_InitStructure);                                //初始化GPIB15,14,13
  19. }

  20. /* 等待液晶准备好 */
  21. void LCD1602_Wait_Ready(void)
  22. {
  23.         u8 sta;
  24.         
  25.         DATAOUT(0xff);
  26.         LCD_RS_Clr();
  27.         LCD_RW_Set();
  28.         do
  29.         {
  30.                 LCD_EN_Set();
  31.                 delay_ms(5);        //延时5ms,非常重要
  32.                  sta = GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_7);//读取状态字
  33.                 LCD_EN_Clr();
  34.         }while(sta & 0x80);//bit7等于1表示液晶正忙,重复检测直到其等于0为止
  35. }

  36. /* 向LCD1602液晶写入一字节命令,cmd-待写入命令值 */
  37. void LCD1602_Write_Cmd(u8 cmd)
  38. {
  39.         LCD1602_Wait_Ready();
  40.         LCD_RS_Clr();
  41.         LCD_RW_Clr();
  42.         DATAOUT(cmd);
  43.         LCD_EN_Set();
  44.         LCD_EN_Clr();
  45.     //printf("%d",cmd);
  46. }

  47. /* 向LCD1602液晶写入一字节数据,dat-待写入数据值 */
  48. void LCD1602_Write_Dat(u8 dat)
  49. {
  50.         LCD1602_Wait_Ready();
  51.         LCD_RS_Set();
  52.         LCD_RW_Clr();
  53.         DATAOUT(dat);
  54.         LCD_EN_Set();
  55.         LCD_EN_Clr();
  56. }

  57. /* 清屏 */
  58. void LCD1602_ClearScreen(void)
  59. {
  60.         LCD1602_Write_Cmd(0x01);
  61. }

  62. /* 设置显示RAM起始地址,亦即光标位置,(x,y)-对应屏幕上的字符坐标 */
  63. void LCD1602_Set_Cursor(u8 x, u8 y)
  64. {
  65.         u8 addr;
  66.         
  67.         if (y == 0)
  68.                 addr = 0x00 + x;
  69.         else
  70.                 addr = 0x40 + x;
  71.         LCD1602_Write_Cmd(addr | 0x80);
  72. }

  73. /* 在液晶上显示字符串,(x,y)-对应屏幕上的起始坐标,str-字符串指针 */
  74. void LCD1602_Show_Str(u8 x, u8 y, u8 *str)
  75. {
  76.         LCD1602_Set_Cursor(x, y);
  77.         while(*str != '\0')
  78.         {
  79.                 LCD1602_Write_Dat(*str++);
  80.         }
  81. }

  82. /* 初始化1602液晶 */
  83. void LCD1602_Init(void)
  84. {
  85.     GPIO_Configuration();
  86.         LCD1602_Write_Cmd(0x38);        //16*2显示,5*7点阵,8位数据口
  87.         LCD1602_Write_Cmd(0x0c);        //开显示,光标关闭
  88.         LCD1602_Write_Cmd(0x06);        //文字不动,地址自动+1
  89.         LCD1602_Write_Cmd(0x01);        //清屏

  90. //    LCD1602_Write_Cmd(0X02);               
  91. //    LCD1602_Write_Cmd(0X06);            
  92. //        LCD1602_Write_Cmd(0X00);              
  93. //        LCD1602_Write_Cmd(0X0C);

  94. //        LCD1602_Write_Cmd(0X38);              
  95. //        LCD1602_Write_Cmd(0x01);               
  96.   
  97. }

复制代码

下载:
lcd1602显示.7z (294.08 KB, 下载次数: 1492)



评分

参与人数 4黑币 +20 收起 理由
z72287 + 5 很给力!
zqs222 + 5 很给力!
sdfasfsdfsdf + 5 很给力!
cheeselala + 5 很给力!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏16 分享淘帖 顶5 踩
回复

使用道具 举报

来自 77#
ID:220748 发表于 2018-12-12 21:27 | 只看该作者
祝贺stm32驱动lcd1602液晶方式程序调试成功!
但没有看见电路图,所以不知液晶显示什么?输入什么信号?看标题好像是检测指纹,对么?
1602液晶数据端口接到STM32d的什么引脚?
回复

使用道具 举报

来自 76#
ID:220748 发表于 2018-12-13 20:50 | 只看该作者
编译时出现两个错误,请帮助解决!









谢谢!!
回复

使用道具 举报

75#
ID:92810 发表于 2022-3-31 12:02 | 只看该作者
lanhua520 发表于 2018-12-13 20:50
编译时出现两个错误,请帮助解决!

还有错误去啊??
回复

使用道具 举报

74#
ID:922777 发表于 2021-5-20 18:54 | 只看该作者
线都接好了,为啥它不亮,它不亮,不亮,亮啊.....
回复

使用道具 举报

73#
ID:716305 发表于 2021-3-17 19:18 | 只看该作者
lanhua520 发表于 2018-12-13 20:50
编译时出现两个错误,请帮助解决!

加个void就行了
回复

使用道具 举报

72#
ID:92810 发表于 2020-8-12 18:09 | 只看该作者
下载看看可不可以先
回复

使用道具 举报

71#
ID:730656 发表于 2020-4-16 16:05 | 只看该作者
很有用                                                                                                                                                                           
回复

使用道具 举报

70#
ID:723156 发表于 2020-4-11 16:56 | 只看该作者
这个程序是移植的金沙滩51里面的,虽然能用但是代码有点问题,sta = GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_7);//读取状态字 while(sta & 0x80);这个循环没有意义
回复

使用道具 举报

69#
ID:674461 发表于 2019-12-26 13:56 | 只看该作者
高手,这是高手
回复

使用道具 举报

68#
ID:211964 发表于 2019-12-26 08:29 | 只看该作者
非常感谢分享
回复

使用道具 举报

67#
ID:57810 发表于 2019-12-4 15:47 | 只看该作者
好东西,可以看下么?
回复

使用道具 举报

66#
ID:641873 发表于 2019-11-14 14:05 | 只看该作者
很给力!
回复

使用道具 举报

65#
ID:601567 发表于 2019-9-25 09:44 | 只看该作者
学习一下
回复

使用道具 举报

64#
ID:600147 发表于 2019-8-14 17:07 | 只看该作者
为什么等待液晶准备时,将数据端口全置为1呢?DATAOUT(0xff)#define        DATAOUT(x)        GPIO_Write(GPIOD, x)
回复

使用道具 举报

63#
ID:589814 发表于 2019-7-25 16:24 | 只看该作者
谢谢分享,学习了!
回复

使用道具 举报

62#
ID:160995 发表于 2019-7-25 14:14 | 只看该作者

很好,资料不错,谢谢分享
回复

使用道具 举报

61#
ID:477269 发表于 2019-7-23 21:43 | 只看该作者
不错,正好需要,看看能不能用
回复

使用道具 举报

60#
ID:223999 发表于 2019-7-12 14:50 | 只看该作者
不错,线学习一下
回复

使用道具 举报

59#
ID:419858 发表于 2019-6-27 20:47 | 只看该作者
非常感谢,非常有帮助
回复

使用道具 举报

58#
ID:268288 发表于 2019-6-27 12:09 | 只看该作者
刚好需要  非常感谢
回复

使用道具 举报

57#
ID:444457 发表于 2019-5-26 21:18 | 只看该作者
有没有STM32F103的
回复

使用道具 举报

56#
ID:223999 发表于 2019-5-8 09:34 | 只看该作者
先下载看看学习一下,谢谢楼主
回复

使用道具 举报

55#
ID:510679 发表于 2019-4-12 17:52 | 只看该作者
学习了,下辖
回复

使用道具 举报

54#
ID:504266 发表于 2019-4-10 12:49 | 只看该作者
需要看一下
回复

使用道具 举报

53#
ID:470289 发表于 2019-4-5 15:20 | 只看该作者
感谢分享
回复

使用道具 举报

52#
ID:147427 发表于 2019-4-1 09:51 | 只看该作者
很不错
回复

使用道具 举报

51#
ID:147427 发表于 2019-4-1 09:50 | 只看该作者
很不错
回复

使用道具 举报

50#
ID:324282 发表于 2019-4-1 00:45 | 只看该作者
好厉害
回复

使用道具 举报

49#
ID:475541 发表于 2019-2-16 21:33 | 只看该作者
资料很好,非常感谢楼主的分享!
回复

使用道具 举报

48#
ID:223274 发表于 2019-2-16 09:16 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

47#
ID:477035 发表于 2019-2-16 09:02 | 只看该作者
下载看看
回复

使用道具 举报

46#
ID:476493 发表于 2019-2-14 15:00 | 只看该作者
感谢楼主分享
回复

使用道具 举报

45#
ID:118365 发表于 2019-1-23 14:34 | 只看该作者
这个是真能用,值得这5黑币。。这两天移植到HAL库上,搞了两天都没弄好,希望这个能有所帮助。谢谢楼主分享
回复

使用道具 举报

44#
ID:81138 发表于 2018-12-13 22:25 | 只看该作者
都能调试程序了,我还在学习
回复

使用道具 举报

43#
ID:315259 发表于 2018-11-26 15:28 | 只看该作者
有点问题
回复

使用道具 举报

42#
ID:426741 发表于 2018-11-17 20:56 | 只看该作者
可以参考参考
回复

使用道具 举报

41#
ID:20672 发表于 2018-11-13 08:39 | 只看该作者
技多不压身,谢谢~~~
回复

使用道具 举报

40#
ID:259517 发表于 2018-11-8 21:16 | 只看该作者
很好,资料不错,谢谢分享
回复

使用道具 举报

39#
ID:420871 发表于 2018-11-5 09:25 | 只看该作者
感谢楼主分享!
回复

使用道具 举报

38#
ID:403971 发表于 2018-9-29 11:37 | 只看该作者
感谢楼主分享!
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表