标题: 程序调试又发现新问题:) [打印本页]
作者: 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 |