智能车制作

标题: 51单片机 1602 求助 [打印本页]

作者: liuzhuoran1110    时间: 2011-11-24 17:31
标题: 51单片机 1602 求助
  1. #define N 800           其它省略
  2. sbit KEY = P3^4;        //in
  3. sbit KEY2 = P3^3;        //out
  4. sbit reset = P3^2;        //0

  5. void main()
  6. {
  7.         uint sumin = 0;
  8.         uint sumout = 0;
  9.         uint in = 0;
  10.         uint out = 0;
  11.         uint arrin[3] = {0,1,2};
  12.         uint arrout[3] = {5,6,7};
  13.         uint i;
  14.        
  15.         for (i = 3;i >= 0; i--)
  16.         {                       
  17.                 arrin[i] = arrin[i] + '0';
  18.         }
  19.         for (i = 3; i >= 0; i--)
  20.         {                        
  21.                 arrout[i] = arrout[i] + '0';                       
  22.         }               
  23.         while(1)
  24.                 {
  25.                        
  26.                         L1602_init();
  27.                         L1602_string(1,1,"enter:");
  28.                         L1602_string(1,8,"out:");
  29.                
  30.                         L1602_string(2,1, arrin);
  31.                         L1602_string(2,8, arrout);
  32.                         delay_ms(N);
  33.        
  34.                 }
  35. }

  36. 请问加上for (i = 3;i >= 0; i--)
  37.         {                       
  38.                 arrin[i] = arrin[i] + '0';
  39.         }
  40.         for (i = 3; i >= 0; i--)
  41.         {                        
  42.                 arrout[i] = arrout[i] + '0';                       
  43.         }就什么都不能输出,删掉就可以,为什么啊,
  44. 正如这里,我想输出L1602_string(2,1, arrin);
  45.                         L1602_string(2,8, arrout);两个数组的值,应该如何修改,不胜感激啊!
  46. 驱动:void L1602_string(uchar hang,uchar lie,uchar *p)
  47. {
  48.         uchar a,b=0;
  49.         if(hang == 1) a = 0x80;
  50.         if(hang == 2) a = 0xc0;
  51.         a = a + lie - 1;
  52.         while(1)
  53.         {
  54.                 wcmd(a++);
  55.                 b++;
  56.                 if((*p == '\0')||(b==16)) break;
  57.                 wdata(*p);
  58.                 p++;
  59.         }
  60. }
复制代码

作者: liuzhuoran1110    时间: 2011-11-24 17:31
请问加上for (i = 3;i >= 0; i--)
        {                        
                arrin[i] = arrin[i] + '0';
        }
        for (i = 3; i >= 0; i--)
        {                        
                arrout[i] = arrout[i] + '0';                        
        }就什么都不能输出,删掉就可以,为什么啊,
作者: liuzhuoran1110    时间: 2011-11-24 17:32
正如这里,我想输出L1602_string(2,1, arrin);
                        L1602_string(2,8, arrout);两个数组的值,应该如何修改,不胜感激啊!
作者: wbx2050    时间: 2011-11-24 18:20
i变量的定义是无符号的  你的for循环写有问题  不能退出i>=0判断需要i减到-1是不行的




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2