Board logo

标题: 程序调试又发现新问题:) [打印本页]

作者: xuexiacao    时间: 2006-6-1 09:20     标题: 程序调试又发现新问题:)

各位仁兄:我把下面的“程序一”下载到板上时,在lcd(128*64)的第一行和第四行上可以正常显示文字。fficeffice" />


现在把它改成“程序二”,想用按键来控制lcd显示:按键1时只显示第一行的文字,按键2时只显示第四行的文字。程序通过编译,也能下载到板上了,可无论怎么按按键,lcd就是什么也不显示,百思不得其解,怎么回事啊?帮帮忙啊,谢啦:)


(程序的颜色和排版是粘贴时所致,在源程序是正常的)


    只改了主程序。


作者: xuexiacao    时间: 2006-6-1 09:21

程序一:
int main(void)
{
lcd_clean(0);
/*line-one*/
lcd_display_character(&ch_1,0,2*16,0,1);
lcd_display_character(&ch_2,0,3*16,0,1);
lcd_display_character(&ch_3,0,0*16,1,0);
lcd_display_character(&ch_4,0,1*16,1,0);
/*line-four*/
lcd_display_character(&ch_9,6,1*16,0,1);
lcd_display_character(&ch_10,6,2*16,0,1);
lcd_display_character(&ch_11,6,3*16,0,1);
lcd_display_character(&ch_12,6,0*16,1,0);
lcd_display_character(&ch_13,6,1*16,1,0);
lcd_display_character(&ch_14,6,2*16,1,0);

lcd_close();
lcd_open();
return 0;
}

程序二:
int main(void)
{
int buttons,buttonsLast=0x000F; //按键变量
lcd_clean(0);

while(1)
{
buttons=IORD(BUTTONS_BASE,0); //读取按键数据输入码
if(buttons!=buttonsLast && buttonsLast==0x000F) //判断是否有按键按下
{
switch(buttons & 0x000F)
{
case 0x000E: //按键1按下,只显示第一行
lcd_display_character(&ch_1,0,2*16,0,1);
lcd_display_character(&ch_2,0,3*16,0,1);
lcd_display_character(&ch_3,0,0*16,1,0);
lcd_display_character(&ch_4,0,1*16,1,0);

lcd_close();
lcd_open();
break;

case 0x000D: //按键2按下,只显示第四行
lcd_display_character(&ch_9,6,1*16,0,1);
lcd_display_character(&ch_10,6,2*16,0,1);
lcd_display_character(&ch_11,6,3*16,0,1);
lcd_display_character(&ch_12,6,0*16,1,0);
lcd_display_character(&ch_13,6,1*16,1,0);
lcd_display_character(&ch_14,6,2*16,1,0);

lcd_close();
lcd_open();
break;

case 0x000F: //没有按键按下
buttons=buttonsLast=0x000F;
break;
default:
break;
}
}

buttonsLast=buttons; //保存当前按键值到buttonsLast变量
}

return 0;
}

作者: xuexiacao    时间: 2006-6-1 11:18

请问用IORD(BUTTONS_BASE,0);能不能读按键的值?我的按键在sopc builder里面定义的是7位的输入口,边缘触发方式,命名为buttons




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0