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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版