你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F303+LCD1602程序问题,不只为什么点不亮?

[复制链接]
加拿大 提问时间:2015-7-4 13:58 /
本帖最后由 加拿大 于 2015-7-4 15:47 编辑

  1. /**************************************************************************
  2. **文件名称:LCD1602.h  for  STM32
  3. **************************************************************************/
  4. #include"stdint.h"
  5. #ifndef  LCD1602_STM32_H
  6. #define  LCD1602_STM32_H

  7. #define LCD_RS_1 GPIO_SetBits(GPIOB, GPIO_Pin_15) //PB.15-(LCD)RS
  8. #define LCD_RS_0 GPIO_ResetBits(GPIOB, GPIO_Pin_15)
  9. #define LCD_RW_1 GPIO_SetBits(GPIOB, GPIO_Pin_14) //PB.14--(LCD)RW
  10. #define LCD_RW_0 GPIO_ResetBits(GPIOB, GPIO_Pin_14)
  11. #define LCD_EN_1 GPIO_SetBits(GPIOB, GPIO_Pin_13) //PB.13--(LCD)E
  12. #define LCD_EN_0 GPIO_ResetBits(GPIOB, GPIO_Pin_13)
  13. #define DATAOUT(x)  GPIO_Write(GPIOA, x)           //PA[0..7]--(LCD)D0~D7

  14. #ifndef uchar
  15. #define uchar unsigned char
  16. #endif
  17. #ifndef uint
  18. #define uint unsigned int
  19. #endif

  20. extern void delay_nms(unsigned long n);
  21. extern void delay_nus(unsigned long n);

  22. uint8_t LCD_busy(void); //读LCD忙碌状态,直到LCD1602不忙为止
  23. void Wait_Leisure(void);//一直等待到LCD1602空闲
  24. void LCD_WriteInitcmd(uchar cmd);//写入LCD初始化时的命令,不可以检测忙状态
  25. void LCD_Writecmd(uchar cmd);//写指令到LCD1602,指令数据占一个字节
  26. void LCD_Writedata(uchar dat);//写一字节数据到LCD1602
  27. void LCD_pos(uchar pos);//设定显示位置 00h~27h,40h~47h
  28. void LCD_Setpos(uchar row,uchar col);//根据习惯设定显示位置
  29. void LCD_DispChar(char ch);//显示一个字符
  30. void LCD_Setpos_DispChar(uchar row,uchar col,char ch);//在指定位置显示一个字符
  31. void LCD_DispString(char str[]);//使LCD1602显示一个字符串,显示位置需提前设定
  32. void LCD_Setpos_DispString(uchar row,uchar col,char str[]);//使LCD1602从指定位置开始显示一个字符串
  33. void LCD_Dispnum(uint32_t num);//显示一个不超过8位的整数,显示位置需提前设置
  34. void LCD_Setpos_Dispnum(uchar row,uchar col,uint32_t num);//在指定位置显示一个不超过8位的整数
  35. void LCD_DispDecimal(uint32_t num,uchar dot);//显示一个有效位不超过8位的浮点数,显示位置需要提前设定
  36. //在指定位置显示一个有效位不超过8位的浮点数
  37. void LCD_Setpos_DispDecimal(uchar row,uchar col,uint32_t num,uchar dot);
  38. //显示日历,显示日期与时间
  39. void LCD_DispDateTime(uint32_t year,uchar month,uchar day,uchar hour,uchar min,uchar sec);
  40. //显示秒表,显示时,分,秒,10毫秒,精确到10ms
  41. void LCD_DispStopWatch(uchar hour,uchar min,uchar sec,uchar tenms);
  42. //显示频率计,动态自动调整频率显示
  43. void LCD_DispFreq(uint32_t freq);
  44. void LCD_ShiftLeft(void);//屏幕整体左移一格,用于滚动显示
  45. void LCD_ShiftRight(void);//屏幕整体右移一格,用于滚动显示
  46. void LCD_Clear(void);//清屏,清除显示
  47. void LCD_Return(void);//使光标还回原点位置
  48. void LCD_Close(void);//关显示
  49. void LCD_Open(void);//开显示
  50. void LCD_FlickerChar(uchar row,uchar col);//使指定位置字符闪烁,不显示光标
  51. void LCD_CloseFlicker(void);//关闭字符闪烁
  52. void LCD_FlickerScreen(void);//屏幕秒闪烁一次
  53. /*********************************************************************
  54. *名    称:LCD_Init()
  55. *功    能:初始化LCD1602
  56. *入口参数:无
  57. *出口参数:无
  58. *常用命令:0x38:16*2显示,5*&点阵显示字符,8位数据;指令执行时间40us
  59. *          0x0C:开显示,关光标   40us
  60. *          0x08:关显示,关光标   40us
  61. *          0x0D:字符闪烁,关光标,接着设定位置,闪烁周期0.4ms左右
  62. *          0x0F:字符闪烁,开光标
  63. *          0x06:写完数据自动右移光标,普通情形,从左向右显示  40us
  64. *          0x04:写完数据自动左移光标,可以从右向左显示  40us
  65. *          0x01:清除显示内容,即清屏  1.64ms
  66. *          0x02:使光标还回起始位置   1.64ms
  67. *          0x18:屏幕上所有字符同时左移一格,适合滚动显示 40us
  68. *          0x1C:屏幕上所有字符同时右移一格,适合滚动显示 40us
  69. *********************************************************************/
  70. void LCD_Init(void);

  71. #endif
复制代码


收藏 评论9 发布时间:2015-7-4 13:58

举报

9个回答
2958155267 回答时间:2015-10-27 08:57:09
1602电压是不是3.3v的
moyanming2013 回答时间:2015-7-4 14:38:25
外加的一个LCD么,是否没移植好?
加拿大 回答时间:2015-7-4 15:13:54
moyanming2013 发表于 2015-7-4 14:38
外加的一个LCD么,是否没移植好?

恩,都设置好了,硬件也连接没错,搞不清哪里问题?
wenyangzeng 回答时间:2015-7-4 15:51:05
本帖最后由 wenyangzeng 于 2015-7-4 15:53 编辑

你在判断忙信号时貌似未将PA的D7位置为输入状态?另外语句DATAOUT(dat);看不出如何将dat送给PA口的D7-D0
lkl0305 回答时间:2015-7-4 22:16:54
帮顶   
你好我好大家好! 回答时间:2015-7-5 08:10:52
妈的,帮顶
beyondcore 回答时间:2015-10-25 17:46:45
绑定
csg123 回答时间:2018-7-18 09:11:21
是否没移植好
Glenxu 回答时间:2020-5-25 08:33:42
没看见你的初始化程序,0x38 后面需要等待至少15ms,而不是40us,建议改40ms试试

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版