首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

程序调试又发现新问题:)

程序调试又发现新问题:)

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


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


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


    只改了主程序。

大家好!
程序一:
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;
}
大家好!
请问用IORD(BUTTONS_BASE,0);能不能读按键的值?我的按键在sopc builder里面定义的是7位的输入口,边缘触发方式,命名为buttons
大家好!
返回列表