OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7467|回复: 7

关于液晶12864并口显示的问题

[复制链接]

2

主题

14

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2021-3-16
在线时间
8 小时
发表于 2021-5-6 11:13:35 | 显示全部楼层 |阅读模式
1金钱
屏上无显示,调了很久不知道问题在哪
  1. //各位大神,我运行如下代码,怎么调液晶都没有显示,但是PB口像有数据在变化,导致PB5有个红灯有点闪烁

  2. #include "sys.h"
  3. #include "delay.h"

  4. #define RS PCout(0)
  5. #define RW PCout(1)
  6. #define EN PCout(2)
  7. //#define PSB PCout(3) 直接连VCC
  8. #define                        LINE1                0x80//第一行
  9. #define                        LINE2                 0x90//第二行
  10. #define                        LINE3                 0x88//第三行
  11. #define                        LINE4                 0x98//第四行
  12. u16 temp;

  13. void IO_Init(void)
  14. {
  15.         GPIO_InitTypeDef GPIO_InitStructure;
  16.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);
  17.        
  18.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  19.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2| GPIO_Pin_3;
  20.         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  21.         GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_SetBits(GPIOC,GPIO_Pin_3);
  22.        
  23.         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;
  24.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  25.         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  26.         GPIO_Init(GPIOB,&GPIO_InitStructure);       
  27.        
  28.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
  29.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;//设为开漏输出,外接上拉电阻,形成准双向IO口
  30.         GPIO_Init(GPIOB,&GPIO_InitStructure);       
  31. }
  32. //LCD初始化
  33. void LCD_Init()
  34. {
  35.         delay_ms(50);           //等待液晶自检>40ms£
  36.         LCD_wcmd(0x30);        //选择基本指令集
  37. delay_ms(1);//Ñóê±>100us
  38.         LCD_wcmd(0x30);        //选择8bit数据
  39. delay_ms(1);        //
  40.   LCD_wcmd(0x0c);        //开显示
  41. delay_ms(1);        //>100us
  42.   LCD_wcmd(0x01);        //清屏
  43. delay_ms(30);        //>10ms
  44.         LCD_wcmd(0x06);
  45. }
  46. //忙检测
  47. void CheckBusy(void)
  48. {
  49.         u8 status;//GPIO_InitTypeDef GPIO_InitStructure;
  50.         /*GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
  51.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//GPIO_Mode_IN_FLOATING,GPIO_Mode_IPU
  52.         GPIO_Init(GPIOB,&GPIO_InitStructure);*/
  53.         RS=0;
  54.         RW=1;
  55.         EN = 1;
  56.         delay_us(2);
  57.         GPIOB->ODR = 0x80;//ÏèÖÃ1£¬¾YËμàûóú¶áêy
  58.         do
  59.         {
  60.                 status = PBin(7);//ÅD¶ÏBFλ
  61.         }while(status & 0x80);
  62.         EN=0;
  63. }
  64. //LCD写命令
  65. void LCD_wcmd(u8 cmd)
  66. {
  67.         CheckBusy();
  68.         RS=0;
  69.         RW=0;
  70.         delay_ms(5);
  71.         temp=(temp&0xff00)|cmd;
  72.         GPIO_Write(GPIOB,temp);
  73.         EN=1;
  74.         delay_ms(5);
  75.         EN=0;
  76. }
  77. //LCD写数据
  78. void LCD_wdat(u8 dat)
  79. {
  80.         CheckBusy();
  81.         RS=1;
  82.         RW=0;
  83.         delay_ms(5);
  84.         temp=(temp&0xff00)|dat;
  85.         GPIO_Write(GPIOB,temp);
  86.         EN=1;
  87.         delay_ms(5);
  88.         EN=0;
  89. }
  90. //向12864写入一行数据
  91. void LCD_Wmessage(u8* message,u8 address)
  92. {
  93.         LCD_wcmd(address);//显示位置
  94.        
  95.         while(*message>0)//判断数据是否结束
  96.         {
  97.                 LCD_wdat(*message);
  98.                 message++;
  99.         }
  100. }

  101. int main(void)
  102. {       
  103.     IO_Init();
  104.    LCD_Init();
  105.         while(1)
  106.         {
  107.                 u8 str1[]="人面桃花相映红";
  108.                       LCD_Wmessage(str1,LINE1);       
  109.         }
  110. }
复制代码

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

2147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4894
金钱
4894
注册时间
2015-1-10
在线时间
612 小时
发表于 2021-5-7 09:32:30 | 显示全部楼层
你要显示的是中文,你的12864带字库吗?
回复

使用道具 举报

13

主题

644

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1999
金钱
1999
注册时间
2021-4-16
在线时间
510 小时
发表于 2021-5-7 09:40:31 | 显示全部楼层
先试试能不能显示ASCII字符吧。
回复

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2021-3-16
在线时间
8 小时
 楼主| 发表于 2021-5-7 20:49:54 | 显示全部楼层
阿侑kevin 发表于 2021-5-7 09:32
你要显示的是中文,你的12864带字库吗?

带字库的,用串口方式直接显示中文都没问题
回复

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2021-3-16
在线时间
8 小时
 楼主| 发表于 2021-5-7 20:50:45 | 显示全部楼层
疾如风 发表于 2021-5-7 09:40
先试试能不能显示ASCII字符吧。

简单的字母这些都试过了,一样没显示。
回复

使用道具 举报

11

主题

2147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4894
金钱
4894
注册时间
2015-1-10
在线时间
612 小时
发表于 2021-5-8 09:06:59 | 显示全部楼层
dzxuh 发表于 2021-5-7 20:49
带字库的,用串口方式直接显示中文都没问题

12864是3.3V的吗
回复

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2021-3-16
在线时间
8 小时
 楼主| 发表于 2021-5-8 22:13:44 | 显示全部楼层

5V,开发板上有5V输出端口组
回复

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2021-3-16
在线时间
8 小时
 楼主| 发表于 2021-5-8 22:14:29 | 显示全部楼层

5V,开发板上有5V端口
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 08:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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