24小时热门版块排行榜    

查看: 1163  |  回复: 6

cyi1015

禁虫 (小有名气)

本帖内容被屏蔽

已阅   关注TA 给TA发消息 送TA红花 TA的回帖

Chris_D

银虫 (初入文坛)

程序不全怎么debug。。。
一般来说慢慢查,不会有太大问题,都是在库函数上移植而已。
2楼2015-05-06 12:51:47
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

cyi1015

禁虫 (小有名气)

本帖内容被屏蔽

3楼2015-05-06 14:59:45
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

x593084577

铜虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
Shu[]=getdata1%10;

你把Shu[]定义成一个数组,但是又不告诉编译器这个数组多大,所以就报错了。在定义的时候要确定数组的大小。
4楼2015-05-06 20:36:28
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

fj10

铜虫 (初入文坛)

【答案】应助回帖

引用回帖:
3楼: Originally posted by cyi1015 at 2015-05-06 14:59:45
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
uint getdata=0;
sbit ST=P2^3;                                    
sbit EOC=P2^4;                                    
sbit OE=P2^5;                      ...

#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
uint getdata=0;//这里定义的uint,但是函数形参是uchar ,不匹配;                                    
sbit EOC=P2^4;                                    
sbit OE=P2^5;                                    
sbit CLK=P2^6;                                    
sbit ADDA=P1^0;                                    
sbit ADDB=P1^1;                                    
sbit ADDC=P1^2;                                    
sbit RS=P2^2;                                    
sbit RW=P2^1;                                    
sbit E=P2^0;                                    
sbit red=P1^3;                                                        
sbit green=P1^4;                                                
void delay(uint z);                                 
void init();                           
void LCD_init();                                    
void LCD_writedata(uchar getdata);               
void LCD_writecom(uchar com);                        
write_sfm(add,getdata);//函数声明需要指定形参类型,不能直接给实参,改为write_sfm(uchar add,uchar getdata)
uchar table[]=" The ppm is ";
uchar getdate,add;//getdate没用,你是不是想声明getdata?
/*****????****/
void delay(uint z)
{
  uint i,j;
  for(i=z;i>0;i--)
  for(j=z;j>0;j--);   
}
/****?????****/
void init()
{ TMOD=0x02;                                             
    TH0=216;                                 
    TL0=216;
    EA=1;                                                      
    ET0=1;                                               
    TR0=1;
        ST=0;
        OE=0;
}

void LCD_init()
{
    uchar a;
        WR=0;
        LCD_writecom(0x38);
        LCD_writecom(0x0c);
        LCD_writecom(0x06);
        LCD_writecom(0x01);
        LCD_writecom(0x80);                        
        delay(5);
        for(a=0;a<11;a++)                  
        {
              LCD_writedata(table[a]);
              delay(5);               
        }
    delay(5);                           
}
void t0(void) interrupt 1 using 0
{
   CLK=~CLK;
   
}

void LCD_writecom(uchar com)
{        
    RS=0;
    RW=0;
        P0=com;
        E=0;
        delay(1);
        E=1;
        delay(1);
        E=0;
}

void LCD_writedata(uchar temp)
{  RW=0;                          
        RS=1;
        P0=temp;
        E=0;
        delay(5);
        E=1;
        delay(5);
        E=0;
}
//这个函数肯定是不能正常工作的,你又是迭代又是递归,你是想显示一个数吧?要么用迭代,要么递归,推荐迭代
write_sfm(uchar add,uchar getdata)                        
{        uchar getdata1,getdata2;   
        ui shu[];//ui?uint吧?还有,必须指定数组大小
   uint i;
        getdata1=getdata*256/51;getdata1和getdata2都声明为uchar,小心溢出
        getdata2=getdata*256/51;
        if(getdata2>10000)
        {red=1;
        green=0;
        }
        else
        {
                red=0;
        green=1;
        }
                if(getdata!=0)
    {  
      shu[]=getdata1%10;//这里需要指定下标 shu[?]
                getdata1=getdata1/10;
       add++;
            write_sfm(add,getdata1);
    }
LCD_writecom(0xc0+add);
for(i=5;i>=0;i--)
        {
LCD_writedata(0x30+shu);这里应该是shu
}
        delay(100);
}
main()
{         
    init();
          LCD_init();
        while(1)
   {
          ST=0;ST=1;ST=0;
                  while(EOC==0);
                  OE=1;
                  getdata=P3;
                  add=4;
                  write_sfm(add,getdata);
                  OE=0;
        }
        
}
5楼2015-05-09 23:43:26
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

fj10

铜虫 (初入文坛)

【答案】应助回帖

引用回帖:
3楼: Originally posted by cyi1015 at 2015-05-06 14:59:45
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
uint getdata=0;
sbit ST=P2^3;                                    
sbit EOC=P2^4;                                    
sbit OE=P2^5;                      ...

编辑一下吧,刚刚那个有错
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
uint getdata=0;//这里定义的uint,但是函数形参是uchar ,不匹配;                                    
sbit EOC=P2^4;                                    
sbit OE=P2^5;                                    
sbit CLK=P2^6;                                    
sbit ADDA=P1^0;                                    
sbit ADDB=P1^1;                                    
sbit ADDC=P1^2;                                    
sbit RS=P2^2;                                    
sbit RW=P2^1;                                    
sbit E=P2^0;                                    
sbit red=P1^3;                                                        
sbit green=P1^4;                                                
void delay(uint z);                                 
void init();                           
void LCD_init();                                    
void LCD_writedata(uchar getdata);               
void LCD_writecom(uchar com);                        
write_sfm(add,getdata);//函数声明需要指定形参类型,不能直接给实参,改为write_sfm(uchar add,uchar getdata)
uchar table[]=" The ppm is ";
uchar getdate,add;//getdate没用,你是不是想声明getdata?
/*****????****/
void delay(uint z)
{
  uint i,j;
  for(i=z;i>0;i--)
  for(j=z;j>0;j--);   
}
/****?????****/
void init()
{ TMOD=0x02;                                             
    TH0=216;                                 
    TL0=216;
    EA=1;                                                      
    ET0=1;                                               
    TR0=1;
        ST=0;
        OE=0;
}

void LCD_init()
{
    uchar a;
        WR=0;
        LCD_writecom(0x38);
        LCD_writecom(0x0c);
        LCD_writecom(0x06);
        LCD_writecom(0x01);
        LCD_writecom(0x80);                        
        delay(5);
        for(a=0;a<11;a++)                  
        {
              LCD_writedata(table[a]);
              delay(5);               
        }
    delay(5);                           
}
void t0(void) interrupt 1 using 0
{
   CLK=~CLK;
   
}

void LCD_writecom(uchar com)
{        
    RS=0;
    RW=0;
        P0=com;
        E=0;
        delay(1);
        E=1;
        delay(1);
        E=0;
}

void LCD_writedata(uchar temp)
{  RW=0;                          
        RS=1;
        P0=temp;
        E=0;
        delay(5);
        E=1;
        delay(5);
        E=0;
}
//这个函数肯定是不能正常工作的,你又是迭代又是递归,你是想显示一个数吧?要么用迭代,要么递归,推荐迭代
write_sfm(uchar add,uchar getdata)                        
{        uchar getdata1,getdata2;   
        ui shu[];//ui?uint吧?还有,必须指定数组大小
   uint i;
        getdata1=getdata*256/51;getdata1和getdata2都声明为uchar,小心溢出
        getdata2=getdata*256/51;
        if(getdata2>10000)getdata2被定义为uchar,肯定不能大于10000
        {red=1;
        green=0;
        }
        else
        {
                red=0;
        green=1;
        }
                if(getdata!=0)
    {  
      shu[]=getdata1%10;//这里需要指定下标
                getdata1=getdata1/10;
       add++;
            write_sfm(add,getdata1);
    }
LCD_writecom(0xc0+add);
for(i=5;i>=0;i--)
        {
LCD_writedata(0x30+shu);这里需要指定下标
}
        delay(100);
}
main()
{         
    init();
          LCD_init();
        while(1)
   {
          ST=0;ST=1;ST=0;
                  while(EOC==0);
                  OE=1;
                  getdata=P3;
                  add=4;
                  write_sfm(add,getdata);
                  OE=0;
        }
        
}
6楼2015-05-09 23:50:31
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

chenjiejiang

金虫 (小有名气)

引用回帖:
6楼: Originally posted by fj10 at 2015-05-09 23:50:31
编辑一下吧,刚刚那个有错
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
uint getdata=0;//这里定义的uint,但是函数形参是uchar ,不匹配;                         ...

给力
既然选择了远方 便只顾风雨兼程
7楼2015-05-20 11:27:34
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 cyi1015 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 YLHlRHNwYkce 2026-09-02 8/400 2026-09-03 12:05 by T0rGB46095mJ
[教师之家] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 YLHlRHNwYkce 2026-09-02 8/400 2026-09-03 12:03 by T0rGB46095mJ
[基金申请] 国社科又开始会评了,不知道这次命运如何 +9 雨打竹帘 2026-08-30 13/650 2026-09-03 08:16 by kudofaye
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +8 gdd2018 2026-08-28 13/650 2026-09-03 06:22 by 羽毛枫f
[公派出国] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 ero8OE6tv9cu 2026-09-02 4/200 2026-09-03 03:14 by rM1TE0WVDIIY
[博后之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 ero8OE6tv9cu 2026-09-02 6/300 2026-09-02 23:59 by rM1TE0WVDIIY
[基金申请] 科研人应该花精力去思考如何解决问题,而不是去凝练问题 +7 瞬息宇宙 2026-09-01 14/700 2026-09-02 17:33 by ma0526
[基金申请] 要骂人了,新模版改版就是要淡化问题凝练这种虚的东西,结果有个评委还在说凝练得不够 +9 瞬息宇宙 2026-08-31 17/850 2026-09-02 14:04 by anjeeshine
[基金申请] 基金系统什么内容也没有 30+4 winsaint 2026-08-27 10/500 2026-09-02 11:35 by 大不刘6
[基金申请] 学科评审组评审是指会评吗? +5 瞬息宇宙 2026-08-31 5/250 2026-09-02 10:13 by 雨冰共舞
[基金申请] 面上函评意见出来了,像什么等级? 20+4 Tsingking1 2026-08-27 17/850 2026-09-01 19:51 by 超级无敌华子
[论文投稿] 小白求助 投论文要求的highlights应该如何写 5+3 l1963982152 2026-08-29 4/200 2026-09-01 09:04 by 北京莱茵编辑
[基金申请] 面上意见出来了 +12 黄鸟于飞Chao 2026-08-29 23/1150 2026-08-31 18:57 by 黄鸟于飞Chao
[基金申请] 能否申诉? +7 echo8914667 2026-08-30 8/400 2026-08-31 17:00 by yihongxu
[基金申请] 中青基了要发朋友圈吗? +7 349506619 2026-08-28 7/350 2026-08-31 13:39 by 冼亮淀粉酶
[基金申请] 29号明天会评吗 +4 笨笨唐 2026-08-28 4/200 2026-08-31 09:30 by huixian257
[基金申请] 为什么到现在没收到通知? +5 tannykie 2026-08-29 5/250 2026-08-30 21:05 by purplejack
[考博] 找导师 +6 yuanjiabao 2026-08-29 7/350 2026-08-30 14:40 by 生科新手
[基金申请] 我就是申请一个面上项目而已,这评审意见是按照杰青的条件评的吧? +6 gouxfjh 2026-08-28 11/550 2026-08-30 07:57 by gouxfjh
[基金申请] 国自然评审意见 +13 wangmingqi 2026-08-28 19/950 2026-08-29 10:22 by Poppy1104
信息提示
请填处理意见