51单片机C语言编程,4×4键盘控制LCD12864显示菜单,如何设计

51单片机C语言编程,4×4键盘控制LCD12864显示菜单,如何设计,第1张

有switchcase 语句。设置好键盘后,在主函数里面写选择函数。

比如

switch(a)

{

case 1:

clear ();

delay();

display();

}

大概就这样的格式,至于写什么函数就看你自己了

你设计的程序有问题:

1:每次执行while(1)时,v都会被重新定义一次,这样很不好,应该将变量定义放到while(1)外面。

2:case里面的 while(v==0x**) v=keyscan()有问题,例如第一个case里面的while(v==0x41) v=keyscan(),你的意思是按一次键就加1,防止被加多次,但是你这个while语句退出的条件是下一个按键必须与当前按键不同,这与现实情况相符吗?主队不能连续得分吗?这个你自己考虑一下,也许你设置的比赛规则是这样的。

3:还是 while(v==0x**) v=keyscan()这句,你的意思就是case语句退出的条件是检测到下一个按键必须与当前按键不同,但是你的while(1)循环第一句也是扫面键盘,这样就有可能出错。

建议你如下修改:

1:v的定义放到while(1)外面。

2:删除每一个case语句中的while(v==0x**) v=keyscan(),在执行完case语句后,将v的值赋成0x00,或者一个不可能的键盘值即可,然后直接退出case语句。

case 0x41:

{

hpoint++ //主队加分

point_lcd(0x00,hpoint)

v = 0x00把v的值置成一个初值或者一个不可能的键盘值。

} //分数显示更新

break

case 0x81:

{

hpoint--

point_lcd(0x00,hpoint)

v = 0x00把v的值置成一个初值或者一个不可能的键盘值。

}

break

case 0x12:

{

rpoint++ //客队加分

point_lcd(0x03,rpoint) //分数显示更新

v = 0x00把v的值置成一个初值或者一个不可能的键盘值。

}

break

case 0x22:

{

rpoint--

point_lcd(0x03,rpoint)

v = 0x00把v的值置成一个初值或者一个不可能的键盘值。

}

break


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11566679.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存