欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

大神们看看这个程序,想利用上位机通过数码管将数显示出来,但错了,求解答,多谢~

更新时间: 2014-01-05 03:14:57 责任编辑: Author_N1

 

大神们看看这个程序,想利用上位机通过数码管将数显示出来,但错了,求解答,谢谢~~

#include<reg52.h>
#include<stdio.h>

#define uchar unsigned char
#define uint unsignend int
void init();
void display(uchar);

uchar code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F};
uchar flag,i,a,u;


void main()
{
        init();
        while(1)
        {
                display(u);
                if(flag==1)
                {
                        ES=0;
                        SBUF=a;
                        while(!TI);
                        TI=0;
                        ES=1;
                        flag=0;
                }
        }
}

void init()
{
        u=0;
        TMOD=0x20;
        PCON|= 0x80;                                                          
        //TH1  = 0xFD;     //baud*2  /* reload value 19200、数据位8、停止位1。效验位无 (11.0592) 
        TH1 = 0xF3;                                        // //baud*2  /*  波特率4800、数据位8、停止位1。效验位无 (12M)
        TL1 = 0xF3;         
        TR1=1;
        REN=1;
        SM0=0;
        SM1=1;
        EA=1;
        ES=1;
}

void display(uchar value)
{
        P0=LED7Code[value];        
}

void ser() interrupt 4
{
        RI=0;
        u=SBUF;
        a=u;
        flag=1;        
}

主要是想利用上位机通过串口调试助手发送一个0~9的数,然后再用一个数码管显示出来,该数码管是阳极的。结果开始时可以显示0,但是当我给非零数时,数码管上的等就全亮了,求解答啊~~谢谢~~~

--参考方法--
引用:
你的意思是让value=5?我曾经做过,数码管显示的就是5.可能是通信的问题,但是我就是不知道哪错了,在串口调试助手上都能显示传过去的是5,但是数码管却是全亮。

但问题是我给定的数组LED7Code根本没有让灯全亮的数值啊= =
--参考方法--

>>问题是你接收的数据value可能为任意数,操作这个数组LED7Code溢出,也就是LED7Code[value]为任意数,当然灯也可能全亮。
  你加个限制条件测试,应该是通信问题导致数据溢出:
void display(uchar value)
{
     if(value>9)value=9;
     P0=LED7Code[value];        
}
--参考方法--
“因为我传过去的值是char型的‘1’,可能要把char型转换成int型”
‘0’-0x30 =0; ‘1’-0x30 =1;....
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:14:57
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20081/
本文WWW.DOC100.NET DOC100.NET版权所有。