OpenEdv-开源电子网

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

液晶屏显示问题请教

[复制链接]

11

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2013-11-7
在线时间
5 小时
发表于 2014-7-29 09:53:52 | 显示全部楼层 |阅读模式
5金钱
我在使用ks0108控制器的12864液晶屏,我调试的时候发现程序在忙状态检测的时候死在了do while循环里面,我用串口打印在do while的最后一句发现temp与上0x90后temp的值始终是0x90,这是什么原因?是因为我的液晶屏一直没有正常工作嘛,我选择的是支持3.3伏ks0108液晶屏,只是我的复位管脚直接是拉高的,电路上焊死了,这个会有影响吗?求大侠指教哇!!!!!!!急,下面是状态检测函数:check_BF()
void DataIO_INPIUT(void)
{
GPIO_InitTypeDef   GPIO_InitStructure;
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;//数码管的段选信号端 
GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
void DataIO_OUTIUT(void)
{
GPIO_InitTypeDef   GPIO_InitStructure;
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;//数码管的段选信号端 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
void check_BF(void)
{
 uint8_t temp;
 DataIO_INPIUT();
 delay1ms(2);

 LCD_WR = 1;
 LCD_RS = 0;    //指令或数据使能
 do
 {
LCD_EN = 1; //高电平才能送数据
temp=DATA_PORT_IN&0xff;
delay1ms(2);
LCD_EN = 0;
COM1_Send_Fill(temp);
temp = temp & 0x90; //仅当第4,7位为0时才可操作
 }while(!(temp==0x00));
  DataIO_OUTIUT();
  delay1ms(2);
}

最佳答案

查看完整内容[请看2#楼]

问题已经解决,屏幕已经显示,出现以上问题主要还是复位管脚定义为RESET了,与串口的复位管脚重名了,由于显示屏正常工作时需要拉高RESET,导致串口检测RESET一直为高,导致串口没有继续输出
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2013-11-7
在线时间
5 小时
 楼主| 发表于 2014-7-29 09:53:53 | 显示全部楼层
问题已经解决,屏幕已经显示,出现以上问题主要还是复位管脚定义为RESET了,与串口的复位管脚重名了,由于显示屏正常工作时需要拉高RESET,导致串口检测RESET一直为高,导致串口没有继续输出
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-29 10:53:16 | 显示全部楼层
帮顶....
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-7-29 12:49:27 | 显示全部楼层
这里改成这样看下
do
 {
LCD_EN = 1; //高电平才能送数据
temp=DATA_PORT_IN&0xff;
//delay1ms(2);

//COM1_Send_Fill(temp);
//temp = temp & 0x90; //仅当第4,7位为0时才可操作
 }while((temp & 0x90)==0x00);
LCD_EN = 0;
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

11

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2013-11-7
在线时间
5 小时
 楼主| 发表于 2014-7-30 15:01:04 | 显示全部楼层
老师您好,我现在遇到一个很奇怪的问题,程序中每次执行write_dat或者write_cmd时都会调用到check_busy,在初始化时会调用write_cmd命令,我用串口打印信息发现只会在执行第一条write_cmd时执行了check_busy,这时有串口打印出来,在紧接着执行第二条write_cmd时,调用check_busy函数则无串口数据打印出来,不知道程序跑哪里去了,接下的程序也都执行不下去了,可以遇到过这种情况啊!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-4 15:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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