12864显示变量

2019-07-15 15:04发布

我这个程序是实现每次按键按一下  数字加一 并在12864上显示   可是每按下一次就会出现加几十减几十的现象   请大神帮我弄解决一下
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit EN=P3^4;
sbit RS=P3^5;
sbit RW=P3^6;
sbit PSB=P3^7;
sbit S=P3^0;
sbit du=P2^6;
sbit we=P2^7;
uchar num=0;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
    for(y=114;y>0;y--);
}
uchar keyscan()
{
  if(S==0)
  {
    delay(10);
        if(S==0)
        {
         while(!S)
          num++;
        }
  }
  return num;
}
void write_com(uchar com)
{
  RS=0;
  RW=0;
  EN=0;
  P0=com;
  delay(5);
  EN=1;
  delay(5);
  EN=0;
}
void write_date(uchar dat)
{
  RS=1;
  RW=0;
  EN=0;
  P0=dat;
  delay(5);
  EN=1;
  delay(5);
  EN=0;
}
void init()
{
  PSB=1;     //并口方式
  EN=0;
  RW=0;
  write_com(0x30);
  delay(5);
  write_com(0x0c);
  delay(5);
  write_com(0x01);
  delay(5);
}
void main()
{
  init();
  du=0;
  we=0;
  delay(10);
  while(1)
  {       
    keyscan();
    write_com(0x90+3);
    write_date(num/100+'0');
    write_com(0x90+4);
    write_date(num%100/10+'0');
    write_com(0x90+5);
    write_date(num%10+'0');
  }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
雪花微风
1楼-- · 2019-07-15 15:32
你那个while(!s)  num++;   你自己看看,该怎么改你自己去试。。。 最佳答案
九道杠
2楼-- · 2019-07-15 17:11
试试把函数keyscan中的延时调用放在num++之后,再适当设置延时长度
伪装者
3楼-- · 2019-07-15 21:16
肯定的,
cp1225
4楼-- · 2019-07-15 22:47
 精彩回答 2  元偷偷看……
liujinyi016
5楼-- · 2019-07-16 01:48
while(!S);  num++;

while后,再加个分号
何谓正义
6楼-- · 2019-07-16 04:04
标点符号问题……………………

一周热门 更多>