关于1602液晶显示数字变量的问题

2019-03-24 18:47发布

各路大神帮忙看一下:

#include "cry1602.h"
#include "show.h"
#include

        unsigned char i=68;
        BYTE disp[];

void main(void)
{
        IT0=1;
        EX0=1;
        EA=1;

        while(1)
        {        
        disp[0]=(i/10);
        disp[1]=((i/10)%10);
        show("The number is:",disp);
        }
}

void int0(void) interrupt 0 using 1
{
        EX0=0;
        i++;
        EX0=1;
}

设置外部下降沿中断,INT0连接到按键上,每按一次数字加一。
头文件是写好的没问题,宏定义BYTE代表unsigned char,show(BYTE disp1,BYTE disp2)分别显示第一行和第二行;显示固定字符没有问题。
i 的类型不对所以没法显示,请问怎么解决? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
seudzy
1楼-- · 2019-03-25 17:22
原来是加48啊,我试试。。不过我之前也想到这个了,貌似按照ASCII表减了30,结果还是不能显示。。
seudzy
2楼-- · 2019-03-25 19:39
改了一下,还是第二行没显示。。然后我以为少了换行符,加了:
        disp[0]='';
        disp[1]=8;
        disp[2]=6;

干脆直接赋给disp[],还是不能显示。。。
seudzy
3楼-- · 2019-03-25 22:09
终于改好了,初始化disp[]时需给定位数,否则后面逐位赋值后,不知道数组长度,show()函数就没法判断""在哪,所以显示不了了。。还有,上面一跟帖有个低级错误,把 " 和 ' 弄混了。下面是最终程序:

#include "cry1602.h"
#include "show.h"
#include <reg51.h>

        BYTE i;
        BYTE disp[]={"00"};

void main(void)
{
        IT0=1;
        EX0=1;
        EA=1;
        i=0;

        while(1)
        {
        show("The number is:",disp);
        delay(100);
        }
}

void int0(void) interrupt 0
{
        EX0=0;
        i++;
        disp[1]=(i%10)+0x30;
        disp[0]=((i/10)%10)+0x30;
        EX0=1;
        delay(20);
}
seudzy
4楼-- · 2019-03-26 02:30
 精彩回答 2  元偷偷看……
idy2000
5楼-- · 2019-03-26 07:00
好難喔窩

一周热门 更多>