初级会员

- 积分
- 104
- 金钱
- 104
- 注册时间
- 2013-11-7
- 在线时间
- 5 小时
|
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一直为高,导致串口没有继续输出
|