一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 3556|回复: 9
收起左侧

看看这个C程序~编译不过去呢!?

[复制链接]
发表于 2012-10-30 23:51 | 显示全部楼层 |阅读模式
本帖最后由 为了毕业设计 于 2012-10-30 23:53 编辑

这是我在论坛里下的一个程序,但是变异的时候总显示55.C(74): error C202: 'Table': undefined identifier

然后我在上面是声明中放入  uchar Table[];后又显示
55.C(42): error C216: subscript on non-array or too many dimensions

C学的不太好,这没弄明白,希望大家能帮我看看~

#include<reg52.h>
#include <stdio.h>
#include"zimo.h"
#define uchar  unsigned char
#define uint   unsigned int
#define SPEED  5 //定义速度与速度成反比
#define LIGHT  9  //定义亮度:取值范围0--10
#define NUMBER 10   //定义要显示总32X32汉字个数,计算方法:NUMBER=汉字个数

#define RAD1         0    //0123全为红色 0101橙色  
#define RAD2         1    //2301全为绿色
#define GREEN1      2   //0231上红下绿
#define GREEN2      3   //2103下红上绿

uchar word=0,col=0,col1=0,disrow=0;//wor为要显字变量,col为位移变量,col1为字节偏移量,disrow为行变量
uchar BUFF__UP[17];    //上半屏显示缓冲 上下缓冲字节数取值=[2*板点阵宽度/8]+1比较保险,即两倍板的点阵字节数.
uchar BUFFDOWN[17];    //下半屏显示缓冲
uchar R_G[6];          //调整颜色
sbit G1=P2^0;
sbit G2=P2^1;//红色数据

sbit R1=P2^2;
sbit R2=P2^3;//绿色数据

sbit CLK=P2^4;
sbit STB=P2^5;
sbit OE =P2^6;//74HC138使能:低有效
uchar Recive=1;
//根据列指针由双字节合并为单字节的子程序模块
uchar Combine_2byte(uchar h1,uchar h2)
{
uchar T_date,tempcol;
tempcol=col1;
T_date=(h1>>tempcol)|(h2<<(8-tempcol));
return T_date;
}      

//分别装载上、下半屏点阵数据
void Load_one_line(void)
{
BUFF__UP[0]=Table[word][disrow*4+0];//装载上半屏一线点阵数据
BUFF__UP[1]=Table[word][disrow*4+1];
BUFF__UP[2]=Table[word][disrow*4+2];
BUFF__UP[3]=Table[word][disrow*4+3];
BUFF__UP[4]=Table[word+1][disrow*4+0];
BUFF__UP[5]=Table[word+1][disrow*4+1];
BUFF__UP[6]=Table[word+1][disrow*4+2];
BUFF__UP[7]=Table[word+1][disrow*4+3];
BUFF__UP[8]=Table[word+2][disrow*4+0];
BUFF__UP[9]=Table[word+2][disrow*4+1];
BUFF__UP[10]=Table[word+2][disrow*4+2];
BUFF__UP[11]=Table[word+2][disrow*4+3];
BUFF__UP[12]=Table[word+3][disrow*4+0];
BUFF__UP[13]=Table[word+3][disrow*4+1];
BUFF__UP[14]=Table[word+3][disrow*4+2];
BUFF__UP[15]=Table[word+3][disrow*4+3];
BUFF__UP[16]=Table[word+4][disrow*4+3];

BUFFDOWN[0]=Table[word][64+disrow*4+0];//装载下半屏一线点阵数据
BUFFDOWN[1]=Table[word][64+disrow*4+1];
BUFFDOWN[2]=Table[word][64+disrow*4+2];
BUFFDOWN[3]=Table[word][64+disrow*4+3];
BUFFDOWN[4]=Table[word+1][64+disrow*4+0];
BUFFDOWN[5]=Table[word+1][64+disrow*4+1];
BUFFDOWN[6]=Table[word+1][64+disrow*4+2];
BUFFDOWN[7]=Table[word+1][64+disrow*4+3];
BUFFDOWN[8]=Table[word+2][64+disrow*4+0];
BUFFDOWN[9]=Table[word+2][64+disrow*4+1];
BUFFDOWN[10]=Table[word+2][64+disrow*4+2];
BUFFDOWN[11]=Table[word+2][64+disrow*4+3];
BUFFDOWN[12]=Table[word+3][64+disrow*4+0];
BUFFDOWN[13]=Table[word+3][64+disrow*4+1];
BUFFDOWN[14]=Table[word+3][64+disrow*4+2];
BUFFDOWN[15]=Table[word+3][64+disrow*4+3];
BUFFDOWN[16]=Table[word+4][64+disrow*4+3];
}

//发送屏一线点阵数据
void Send_one_line(void)
{
char s;
uchar TEMP0,TEMP1,i,inc;
if(col<8)            inc=0;
if(8<=col&&col<16)   inc=1;
if(16<=col&&col<24)  inc=2;
if(24<=col&&col<32)  inc=3;
for(s=0+inc;s<=8+inc;s++)
{
TEMP0=Combine_2byte(BUFFDOWN,BUFFDOWN[s+1]);
TEMP1=Combine_2byte(BUFF__UP,BUFF__UP[s+1]);

for(i=0;i<8;i++)
{
R_G[0]=~(TEMP1>>i)&0x01;   //取出最高位
R_G[1]=~(TEMP0>>i)&0x01;   //取出最高位
R_G[2]=0xff;
R_G[3]=0xff;
R_G[4]=0x00;
R_G[5]=0x00;

R1=R_G[RAD1];
R2=R_G[RAD2];

G1=R_G[GREEN1];
G2=R_G[GREEN2];

CLK=0;
CLK=1;                 //移位时钟
}
}
}
//亮度调节延时
void delay(unsigned int i)
{
unsigned int j;
for(;i>0;i--)
{for(j=5;j>0;j--)
;
}  
}
//亮度调整
void PWM_LIGHT(uchar p)
{
OE=0;
delay(p);
OE=1;
delay(10-p);
}

void UART() interrupt 4

{

   EA=1;
       if (RI)       //RI接受中断标志
   
   {

   RI=0;
    //清除RI接受中断标志

   Recive=SBUF;
//SUBF接受/发送缓冲器
       //PWM_LIGHT(Recive);
       }

   EA=1;
}

//主函数入口
void main(void)
{
uchar i,move;
        SCON = 0x50;      //REN=1允许串行接受状态,串口工作模式1   
      
   

    TMOD|= 0x20;      //定时器工作方式2                    

PCON|= 0x80;                                                         

TH1 = 0xE6;
// //baud*2  /*  波特率9600、数据位8、停止位1。效验位无 (12M)
   
TL1 = 0xE6;         

TR1  = 1;                                                            

ES   = 1;        //开串口中断                  

EA   = 1;        // 开总中断

TR1=1;                //启动定时器1

    PS=1;                 //串口中断优先
R1=0;//数据初始化
R2=0;
G1=0;
G2=0;
while(1)
{  

for(col=0;col<32;col++)//循环32次,点亮并移动一个汉字,步进是一位,
{
col1=col%8;
for(i=0;i<SPEED;i++)//汉字在屏幕上的停留时间(即移动速度快慢)
{
for(disrow=0;disrow<16;disrow++)//扫描16行   
{
Load_one_line();//装载上下两屏各一线点阵数据

Send_one_line();//发送一线点阵数据

STB=0;               
STB=1;    // 输出锁存                 
P1=disrow;// 行扫描
LIGHT
PWM_LIGHT(LIGHT);
}
}
}
word=word+1;// 一个汉字移动后,指向下一个汉字
if(word>=NUMBER)
{
word=0;//移动完NUMBER个汉字后重新开始
}   
}
}
发表于 2012-10-31 08:45 | 显示全部楼层
能把全部编译结果贴出来吗?
能把源码什么的也贴出来吗?
能在大家出主意后告诉个结果吗?
发表于 2012-10-31 08:48 | 显示全部楼层
看样子这个的定义应该在 zimo.h中,你下载的这个是单个的C文件,还是工程包,如果是工程包,需要用打开工程的方式打开,而不能只打开C文件

而且这个是两维数组,你定义的是一维的,当然不行,就算你定义了二维数组,里面也没有数据,没有可显示的东西
 楼主| 发表于 2012-10-31 08:59 | 显示全部楼层
回复 3# xhicq


   下载的里面都是一些编译产生的文件,还有个字模的头文件,但是我已经放在keil的INC里了! 未命名.jpg 就这些文件了!如果定义Table为一维数组,编译又产生新的error,定义为二维数组又不行~愁啊~
 楼主| 发表于 2012-10-31 09:35 | 显示全部楼层
回复 2# 199003326


   我重新装了一下KEIL,这次编译时可以通过了, 未命名.jpg

不过接线的时候发现,这个没有定义A,B,C,D接口怎么连线啊~怎么办?
发表于 2012-10-31 11:23 | 显示全部楼层
回复  xhicq


   下载的里面都是一些编译产生的文件,还有个字模的头文件,但是我已经放在keil的INC里 ...
为了毕业设计 发表于 2012-10-31 08:59 https://www.yleee.com.cn/images/common/back.gif



    先搞懂#include"zimo.h"这一句里边的引号是什么意思再说吧。UTFG
发表于 2012-10-31 11:28 | 显示全部楼层
回复  199003326


   我重新装了一下KEIL,这次编译时可以通过了,

不过接线的时候发现,这个没有定 ...
为了毕业设计 发表于 2012-10-31 09:35 https://www.yleee.com.cn/images/common/back.gif



    先搞懂点阵屏的驱动原理,然后在程序里找。
像这种最基本的问题自己RTFS就能解决,在这里问基本上不会得到详细的答复。
发表于 2012-11-1 11:15 | 显示全部楼层
回复 5# 为了毕业设计


   [ 不过接线的时候发现,这个没有定义A,B,C,D接口怎么连线啊~怎么办?]
P1=disrow;// 行扫描

估计A B C D是P10 P11 P12 P13,只能自己试试了。
 楼主| 发表于 2012-11-17 15:55 | 显示全部楼层
本帖最后由 为了毕业设计 于 2012-11-17 15:58 编辑

回复 2# 199003326


   这个问题我刚解决了,是前面少个定义,应该加一句   uchar code Table[][];   因为这个程序也是我在论坛里找的,当初的帖子 我没保存,既然版主让我把结果贴出来,那就贴了,这里感谢写这个程序的 作者吧! 新建 文本文档.txt (4.76 KB, 下载次数: 367)
还有,这个我不知道怎么能让 回复这个帖子的人都看到,点击1L的编辑说 超过6000分钟不能编辑,所以就在这回复了!有不便处,深表歉意!
 楼主| 发表于 2012-11-17 15:56 | 显示全部楼层
回复 8# shqi2003


   前一阵忙着考试了,感谢版主

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-22 00:00 , Processed in 0.069401 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表